24#include<gsl/gsl_min.h>
41 typedef gsl_min_fminimizer_type
type;
58 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
108#ifdef __GXX_EXPERIMENTAL_CXX0X__
114 std::swap(
count, v.count );
115 v.ccgsl_pointer =
nullptr;
233#ifdef __GXX_EXPERIMENTAL_CXX0X__
317 return gsl_min_fminimizer_name( s.
get() ); }
325 return gsl_min_fminimizer_x_minimum( s.
get() ); }
333 return gsl_min_fminimizer_x_lower( s.
get() ); }
341 return gsl_min_fminimizer_x_upper( s.
get() ); }
349 return gsl_min_fminimizer_f_minimum( s.
get() ); }
357 return gsl_min_fminimizer_f_lower( s.
get() ); }
365 return gsl_min_fminimizer_f_upper( s.
get() ); }
434 char const*
name()
const {
return gsl_min_fminimizer_name(
get() ); }
440 double x_minimum()
const {
return gsl_min_fminimizer_x_minimum(
get() ); }
446 double x_lower(){
return gsl_min_fminimizer_x_lower(
get() ); }
452 double x_upper()
const {
return gsl_min_fminimizer_x_upper(
get() ); }
458 double f_minimum()
const {
return gsl_min_fminimizer_f_minimum(
get() ); }
464 double f_lower()
const {
return gsl_min_fminimizer_f_lower(
get() ); }
470 double f_upper()
const {
return gsl_min_fminimizer_f_upper(
get() ); }
482 inline static type const*
brent(){
return gsl_min_fminimizer_brent; }
500 inline int test_interval(
double x_lower,
double x_upper,
double epsabs,
double epsrel ){
501 return gsl_min_test_interval( x_lower, x_upper, epsabs, epsrel ); }
516 double& x_lower,
double& f_lower,
double& x_upper,
517 double& f_upper,
size_t eval_max ){
518 return gsl_min_find_bracket( &f, &x_minimum, &f_minimum, &x_lower, &f_lower, &x_upper,
519 &f_upper, eval_max ); }
533 inline int find_bracket( gsl_function* f,
double* x_minimum,
double* f_minimum,
534 double* x_lower,
double* f_lower,
double* x_upper,
535 double* f_upper,
size_t eval_max ){
536 return gsl_min_find_bracket( f, x_minimum, f_minimum, x_lower, f_lower, x_upper,
537 f_upper, eval_max ); }
Class that extends gsl_function so that it can be constructed from arbitrary function objects.
Workspace for one-dimensional minimisation.
bool empty() const
Find if the fminimizer is empty.
fminimizer(fminimizer const &v)
The copy constructor.
int set_with_values(function_scl &f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper)
C++ version of gsl_min_fminimizer_set_with_values().
gsl_min_fminimizer * ccgsl_pointer
The shared pointer.
double f_lower() const
C++ version of gsl_min_fminimizer_f_lower().
~fminimizer()
The destructor only deletes the pointers if count reaches zero.
fminimizer & operator=(fminimizer const &v)
The assignment operator.
bool operator==(fminimizer const &v) const
Two fminimizer are identically equal if their elements are identical.
void swap(fminimizer &v)
Swap two fminimizer objects.
static int iterate(fminimizer &s)
C++ version of gsl_min_fminimizer_iterate().
static int set(fminimizer &s, function_scl &f, double x_minimum, double x_lower, double x_upper)
C++ version of gsl_min_fminimizer_set().
double f_upper() const
C++ version of gsl_min_fminimizer_f_upper().
static double f_minimum(fminimizer const &s)
C++ version of gsl_min_fminimizer_f_minimum().
int set(function_scl &f, double x_minimum, double x_lower, double x_upper)
C++ version of gsl_min_fminimizer_set().
fminimizer(fminimizer &&v)
Move constructor.
bool operator>(fminimizer const &v) const
A container needs to define an ordering for sorting.
bool operator<(fminimizer const &v) const
A container needs to define an ordering for sorting.
static std::string name(fminimizer const &s)
C++ version of gsl_min_fminimizer_name().
fminimizer()
The default constructor is only really useful for assigning to.
double f_minimum() const
C++ version of gsl_min_fminimizer_f_minimum().
fminimizer(gsl_min_fminimizer *v)
Could construct from a gsl_min_fminimizer.
bool unique() const
Find if this is the only object sharing the gsl_min_fminimizer.
size_t use_count() const
Find how many fminimizer objects share this pointer.
gsl_min_fminimizer * get() const
Get the gsl_min_fminimizer.
static double f_upper(fminimizer const &s)
C++ version of gsl_min_fminimizer_f_upper().
size_t * count
The shared reference count.
static type const * goldensection()
Static type.
double x_upper() const
C++ version of gsl_min_fminimizer_x_upper().
static double x_upper(fminimizer const &s)
C++ version of gsl_min_fminimizer_x_upper().
fminimizer(type const *T)
The standard constructor creates a new minimizer of type fminimizer::type.
bool operator<=(fminimizer const &v) const
A container needs to define an ordering for sorting.
fminimizer & operator=(fminimizer &&v)
Move operator.
char const * name() const
C++ version of gsl_min_fminimizer_name().
int iterate()
C++ version of gsl_min_fminimizer_iterate().
static type const * brent()
Static type.
static double f_lower(fminimizer const &s)
C++ version of gsl_min_fminimizer_f_lower().
static double x_minimum(fminimizer const &s)
C++ version of gsl_min_fminimizer_x_minimum().
static int set_with_values(fminimizer &s, function_scl &f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper)
C++ version of gsl_min_fminimizer_set_with_values().
static double x_lower(fminimizer const &s)
C++ version of gsl_min_fminimizer_x_lower().
bool operator>=(fminimizer const &v) const
A container needs to define an ordering for sorting.
double x_minimum() const
C++ version of gsl_min_fminimizer_x_minimum().
static type const * quad_golden()
Static type.
bool operator!=(fminimizer const &v) const
Two fminimizer are different if their elements are not identical.
double x_lower()
C++ version of gsl_min_fminimizer_x_lower().
gsl_min_fminimizer_type type
Typedef.
int test_interval(double x_lower, double x_upper, double epsabs, double epsrel)
C++ version of gsl_min_test_interval().
int find_bracket(function_scl &f, double &x_minimum, double &f_minimum, double &x_lower, double &f_lower, double &x_upper, double &f_upper, size_t eval_max)
C++ version of gsl_min_find_bracket().
int min(movstat::end_t const endtype, vector const &x, vector &y, workspace &w)
C++ version of gsl_movstat_min().
The gsl package creates an interface to the GNU Scientific Library for C++.