# Path: nlp/ls/linesearch.py
# class LineSearch(object):
# class ArmijoLineSearch(LineSearch):
# class ArmijoWolfeLineSearch(ArmijoLineSearch):
#     def __init__(self, linemodel, name="Generic Linesearch", **kwargs):
#     def linemodel(self):
#     def name(self):
#     def value(self):
#     def step(self):
#     def stepmin(self):
#     def trial_value(self):
#     def iterate(self):
#     def slope(self):
#     def check_slope(self, slope):
#     def __iter__(self):
#     def __next__(self):
#     def next(self):
#     def __init__(self, *args, **kwargs):
#     def ftol(self):
#     def bkmax(self):
#     def decr(self):
#     def bk(self):
#     def next(self):
#     def __init__(self, *args, **kwargs):
#     def gtol(self):
#     def wmax(self):
#     def incr(self):
#     def trial_slope(self):
#     def next(self):


from math import sqrt
from nlp.ls.linesearch import LineSearch, LineSearchFailure
from nlp.ls._strong_wolfe_linesearch import dcsrch
import numpy as np
# -*- coding: utf8 -*-
u"""Strong Wolfe linesearch.

A translation of the original Fortran implementation of the Moré and Thuente
linesearch ensuring satisfaction of the strong Wolfe conditions.

The method is described in

J. J. Moré and D. J. Thuente
Line search algorithms with guaranteed sufficient decrease

# Path: nlp/ls/linesearch.py
# class LineSearch(object):
# class ArmijoLineSearch(LineSearch):
# class ArmijoWolfeLineSearch(ArmijoLineSearch):
#     def __init__(self, linemodel, name="Generic Linesearch", **kwargs):
#     def linemodel(self):
#     def name(self):
#     def value(self):
#     def step(self):
#     def stepmin(self):
#     def trial_value(self):
#     def iterate(self):
#     def slope(self):
#     def check_slope(self, slope):
#     def __iter__(self):
#     def __next__(self):
#     def next(self):
#     def __init__(self, *args, **kwargs):
#     def ftol(self):
#     def bkmax(self):
#     def decr(self):
#     def bk(self):
#     def next(self):
#     def __init__(self, *args, **kwargs):
#     def gtol(self):
#     def wmax(self):
#     def incr(self):
#     def trial_slope(self):
#     def next(self):


# Path: nlp/ls/wolfe.py
from math import sqrt
from nlp.ls.linesearch import LineSearch, LineSearchFailure
from nlp.ls._strong_wolfe_linesearch import dcsrch
import numpy as np

# -*- coding: utf8 -*-
u"""Strong Wolfe linesearch.

A translation of the original Fortran implementation of the Moré and Thuente
linesearch ensuring satisfaction of the strong Wolfe conditions.

The method is described in

J. J. Moré and D. J. Thuente
Line search algorithms with guaranteed sufficient decrease

ACM Transactions on Mathematical Software (TOMS)