12 #ifndef QMCPLUSPLUS_MINIMIZE_ONED_H 13 #define QMCPLUSPLUS_MINIMIZE_ONED_H 42 template<
class F,
typename T>
58 bool check_bound =
false;
65 T delx = 1.61 * (xb - xa);
79 if (check_bound && (xd < 0.0 || xd > bound_max))
107 throw std::runtime_error(
"Failed to bracket minimum");
119 template<
class F,
typename T>
127 T xc = xb + 0.4 * (xd - xb);
136 xb = xa + 0.4 * (xd - xa);
138 xc = xa + 0.6 * (xd - xa);
144 xb = xa + 0.4 * (xd - xa);
146 xc = xa + 0.6 * (xd - xa);
160 final_value = f(final_x);
161 return std::pair<T, T>(final_x, final_value);
Bracket_min_t< T > bracket_minimum(const F &f, T initial_value, T bound_max=-1.0)
MakeReturn< UnaryNode< FnFabs, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t abs(const Vector< T1, C1 > &l)
std::pair< T, T > find_minimum(const F &f, Bracket_min_t< T > &bracket)
Bracket_min_t(T a1, T b1, T c1, bool okay=true)