9#ifndef pRC_ALGORITHMS_OPTIMIZER_LINE_SEARCH_MORE_THUENTE_H
10#define pRC_ALGORITHMS_OPTIMIZER_LINE_SEARCH_MORE_THUENTE_H
26 static constexpr Size defaultMaxIterations()
31 static constexpr Float<> defaultC1()
36 static constexpr Float<> defaultC2()
41 static constexpr Float<> defaultTrapLower()
46 static constexpr Float<> defaultTrapUpper()
51 static constexpr Float<> defaultDelta()
73 return mMaxIterations;
76 template<
class T = Float<>>
77 constexpr decltype(
auto)
c1()
const
82 template<
class T = Float<>>
83 constexpr decltype(
auto)
c2()
const
88 template<
class T = Float<>>
94 template<
class T = Float<>>
100 template<
class T = Float<>>
101 constexpr decltype(
auto)
delta()
const
106 template<
class X, If<IsTensor<X>> = 0,
107 class T =
typename X::Type::Value, If<IsFloat<T>> = 0,
class F,
108 If<IsInvocable<F, X const &, X &>> = 0,
109 If<IsFloat<ResultOf<F, X const &, X &>>> = 0,
class FC,
110 If<IsInvocable<FC, X const &>> = 0,
111 If<IsConvertible<ResultOf<FC, X const &>, X>> = 0>
133 "LS-MoreThuente: Minimum alpha > Maximum alpha.");
177 "Line search: Rounding errors prevent progress.");
283 template<
class X, If<IsTensor<X>> = 0,
284 class T =
typename X::Type::Value, If<IsFloat<T>> = 0,
class F,
285 If<IsInvocable<F, X const &, X &>> = 0,
286 If<IsFloat<ResultOf<F, X const &, X &>>> = 0>
294 [](
auto &&
x) ->
decltype(
auto)
303 static constexpr auto secantMinimizer(
T const &
x,
T const &
dX,
304 T const &
y,
T const &
dY)
310 static constexpr auto quadraticMinimizer(
T const &
x,
T const &
fX,
311 T const &
dX,
T const &
y,
T const &
fY)
318 static constexpr auto cubicMinimizer(
T const &
x,
T const &
fX,
338 auto const r =
p /
q;
340 return x +
r * (
y -
x);
344 static constexpr auto cubicMinimizer(
T const &
x,
T const &
fX,
366 auto const r =
p /
q;
370 return x +
r * (
y -
x);
510 Size const mMaxIterations;
Top-level class storing a floating point number.
Definition float.hpp:35
Class storing tensors.
Definition tensor.hpp:44
static void debug(Xs &&...args)
Definition log.hpp:33
static void error(Xs &&...args)
Definition log.hpp:14
Definition bracketing.hpp:15
static constexpr auto mean(Xs &&...args)
Calculates the mean of a variable ammount of pRC objects.
Definition mean.hpp:22
bool Bool
Definition type_traits.hpp:18
static constexpr X min(X &&a)
Definition min.hpp:13
std::invoke_result_t< F, Args... > ResultOf
Definition type_traits.hpp:140
static constexpr auto zero()
Definition zero.hpp:12
std::size_t Size
Definition type_traits.hpp:20
static constexpr auto square(Complex< T > const &a)
Definition square.hpp:14
static constexpr auto isApprox(XA &&a, XB &&b, TT const &tolerance=NumericLimits< TT >::tolerance())
Checks if two pRC objects agree up to a given tolerance.
Definition is_approx.hpp:44
static constexpr auto delta(Complex< TA > const &a, Complex< TB > const &b)
Definition delta.hpp:12
static constexpr auto abs(Complex< T > const &a)
Definition abs.hpp:12
static constexpr Conditional< IsSatisfied< C >, RemoveConstReference< X >, X > copy(X &&a)
Definition copy.hpp:13
constexpr auto cDebugLevel
Definition config.hpp:46
static constexpr auto sqrt(Complex< T > const &a)
Definition sqrt.hpp:12
RemoveConst< RemoveReference< T > > RemoveConstReference
Definition type_traits.hpp:62
static constexpr auto scalarProduct(Complex< TA > const &a, Complex< TB > const &b)
Definition scalar_product.hpp:13
Size Index
Definition type_traits.hpp:21
static constexpr X max(X &&a)
Definition max.hpp:13
Definition more_thuente.hpp:24
constexpr decltype(auto) delta() const
Definition more_thuente.hpp:101
constexpr MoreThuente(Size const maxIterations=defaultMaxIterations(), Float<> const c1=defaultC1(), Float<> const c2=defaultC2(), Float<> const trapLower=defaultTrapLower(), Float<> const trapUpper=defaultTrapUpper(), Float<> const delta=defaultDelta())
Definition more_thuente.hpp:57
constexpr auto operator()(X &x, ResultOf< F, X const &, X & > &f, X &g, typename ResultOf< ScalarProduct, X, X >::Type &d, F &&function, FC &&constraint, X const &p, T alpha=identity< T >(), T const alphaMin=zero< T >(), T const alphaMax=identity< T >(NumericLimits< T >::max())) const
Definition more_thuente.hpp:112
constexpr decltype(auto) c2() const
Definition more_thuente.hpp:83
constexpr decltype(auto) trapLower() const
Definition more_thuente.hpp:89
constexpr decltype(auto) c1() const
Definition more_thuente.hpp:77
constexpr auto maxIterations() const
Definition more_thuente.hpp:71
constexpr decltype(auto) trapUpper() const
Definition more_thuente.hpp:95
constexpr auto operator()(X &x, ResultOf< F, X const &, X & > &f, X &g, typename ResultOf< ScalarProduct, X, X >::Type &d, F &&function, X const &p, T alpha=identity< T >(), T const alphaMin=zero< T >(), T const alphaMax=identity< T >(NumericLimits< T >::max())) const
Definition more_thuente.hpp:287