20#ifndef CCGSL_MULTIMIN_HPP
21#define CCGSL_MULTIMIN_HPP
39 return gsl_multimin_diff( &f, x.
get(), g.
get() ); }
48 return gsl_multimin_diff( f, x.
get(), g.
get() ); }
58 typedef gsl_multimin_fminimizer_type
type;
77 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
127#ifdef __GXX_EXPERIMENTAL_CXX0X__
133 std::swap(
count, v.count );
134 v.ccgsl_pointer =
nullptr;
252#ifdef __GXX_EXPERIMENTAL_CXX0X__
267 return gsl_multimin_fminimizer_set( s.
get(), &f,
x.
get(), step_size.
get() ); }
278 return gsl_multimin_fminimizer_set( s.
get(), f,
x.
get(), step_size.
get() ); }
286 return gsl_multimin_fminimizer_name( s.
get() ); }
294 return gsl_multimin_fminimizer_iterate( s.
get() ); }
312 return gsl_multimin_fminimizer_minimum( s.
get() );
321 return gsl_multimin_fminimizer_size( s.
get() ); }
330 return gsl_multimin_fminimizer_set(
get(), &f,
x.
get(), step_size.
get() ); }
339 return gsl_multimin_fminimizer_set(
get(), f,
x.
get(), step_size.
get() ); }
344 char const*
name(){
return gsl_multimin_fminimizer_name(
get() ); }
350 return gsl_multimin_fminimizer_iterate(
get() ); }
365 return gsl_multimin_fminimizer_minimum(
get() );
372 return gsl_multimin_fminimizer_size(
get() ); }
379 inline static type const*
nmsimplex(){
return gsl_multimin_fminimizer_nmsimplex; }
384 inline static type const*
nmsimplex2(){
return gsl_multimin_fminimizer_nmsimplex2; }
403 return gsl_multimin_test_gradient( g.
get(), epsabs ); }
411 inline int size(
double const size,
double epsabs ){
412 return gsl_multimin_test_size(
size, epsabs ); }
423 typedef gsl_multimin_fdfminimizer_type
type;
442 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
492#ifdef __GXX_EXPERIMENTAL_CXX0X__
498 std::swap(
count, v.count );
499 v.ccgsl_pointer =
nullptr;
617#ifdef __GXX_EXPERIMENTAL_CXX0X__
632 double step_size,
double tol ){
633 return gsl_multimin_fdfminimizer_set( s.
get(),
fdf,
x.
get(), step_size, tol ); }
644 double step_size,
double tol ){
645 return gsl_multimin_fdfminimizer_set( s.
get(), &
fdf,
x.
get(), step_size, tol ); }
653 return gsl_multimin_fdfminimizer_name( s.
get() ); }
661 return gsl_multimin_fdfminimizer_iterate( s.
get() ); }
669 return gsl_multimin_fdfminimizer_restart( s.
get() ); }
710 return gsl_multimin_fdfminimizer_minimum( s.
get() ); }
721 double step_size,
double tol ){
722 return gsl_multimin_fdfminimizer_set(
get(),
fdf,
x.
get(), step_size, tol ); }
732 double step_size,
double tol ){
733 return gsl_multimin_fdfminimizer_set(
get(), &
fdf,
x.
get(), step_size, tol ); }
739 inline char const*
name(){
return gsl_multimin_fdfminimizer_name(
get() ); }
746 return gsl_multimin_fdfminimizer_iterate(
get() ); }
753 return gsl_multimin_fdfminimizer_restart(
get() ); }
790 return gsl_multimin_fdfminimizer_minimum(
get() ); }
811 inline static type const*
vector_bfgs(){
return gsl_multimin_fdfminimizer_vector_bfgs; }
Workspace for fdfminimizer.
void swap(fdfminimizer &v)
Swap two fdfminimizer objects.
static vector gradient(fdfminimizer const &s)
C++ version of gsl_multimin_fdfminimizer_gradient().
int set(function_fdf &fdf, vector const &x, double step_size, double tol)
C++ version of gsl_multimin_fdfminimizer_set().
size_t * count
The shared reference count.
gsl_multimin_fdfminimizer * get() const
Get the gsl_multimin_fminimizer.
bool empty() const
Find if the fdfminimizer is empty.
static type const * vector_bfgs2()
Static type.
static vector x(fdfminimizer const &s)
C++ version of gsl_multimin_fdfminimizer_x().
static int restart(fdfminimizer &s)
C++ version of gsl_multimin_fdfminimizer_restart().
static type const * conjugate_pr()
Static type.
int set(function_fdf *fdf, vector const &x, double step_size, double tol)
C++ version of gsl_multimin_fdfminimizer_set().
fdfminimizer & operator=(fdfminimizer &&v)
Move operator.
fdfminimizer(type const *T, size_t const n)
The default constructor creates a new fdfminimizer with n elements.
static vector dx(fdfminimizer const &s)
C++ version of gsl_multimin_fdfminimizer_dx().
int restart()
C++ version of gsl_multimin_fdfminimizer_restart().
bool operator!=(fdfminimizer const &v) const
Two fdfminimizer are different if their elements are not identical.
static type const * conjugate_fr()
Static type.
static type const * steepest_descent()
Static type.
char const * name()
C++ version of gsl_multimin_fdfminimizer_name().
vector x()
C++ version of gsl_multimin_fdfminimizer_x().
fdfminimizer(gsl_multimin_fdfminimizer *v)
Could construct from a gsl_multimin_fminimizer.
size_t use_count() const
Find how many fdfminimizer objects share this pointer.
double minimum()
C++ version of gsl_multimin_fdfminimizer_minimum().
vector dx()
C++ version of gsl_multimin_fdfminimizer_dx().
bool operator>=(fdfminimizer const &v) const
A container needs to define an ordering for sorting.
gsl_multimin_fdfminimizer_type type
Typedef.
int iterate()
C++ version of gsl_multimin_fdfminimizer_iterate().
static int set(fdfminimizer &s, function_fdf &fdf, vector const &x, double step_size, double tol)
C++ version of gsl_multimin_fdfminimizer_set().
fdfminimizer(fdfminimizer &&v)
Move constructor.
bool operator<(fdfminimizer const &v) const
A container needs to define an ordering for sorting.
fdfminimizer(fdfminimizer const &v)
The copy constructor.
bool operator>(fdfminimizer const &v) const
A container needs to define an ordering for sorting.
static int set(fdfminimizer &s, function_fdf *fdf, vector const &x, double step_size, double tol)
C++ version of gsl_multimin_fdfminimizer_set().
fdfminimizer & operator=(fdfminimizer const &v)
The assignment operator.
static double minimum(fdfminimizer const &s)
C++ version of gsl_multimin_fdfminimizer_minimum().
static type const * vector_bfgs()
Static type.
bool unique() const
Find if this is the only object sharing the gsl_multimin_fminimizer.
~fdfminimizer()
The destructor only deletes the pointers if count reaches zero.
fdfminimizer()
The default constructor is only really useful for assigning to.
bool operator==(fdfminimizer const &v) const
Two fdfminimizer are identically equal if their elements are identical.
vector gradient()
C++ version of gsl_multimin_fdfminimizer_gradient().
static int iterate(fdfminimizer &s)
C++ version of gsl_multimin_fdfminimizer_iterate().
static char const * name(fdfminimizer const &s)
C++ version of gsl_multimin_fdfminimizer_name().
bool operator<=(fdfminimizer const &v) const
A container needs to define an ordering for sorting.
gsl_multimin_fdfminimizer * ccgsl_pointer
The shared pointer.
Workspace for fminimizer.
fminimizer()
The default constructor is only really useful for assigning to.
size_t use_count() const
Find how many fminimizer objects share this pointer.
bool operator<(fminimizer const &v) const
A container needs to define an ordering for sorting.
int iterate()
C++ version of gsl_multimin_fminimizer_iterate().
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 type const * nmsimplex2rand()
Static type.
bool operator>(fminimizer const &v) const
A container needs to define an ordering for sorting.
gsl_multimin_fminimizer * get() const
Get the gsl_multimin_fminimizer.
static type const * nmsimplex()
Static type.
fminimizer & operator=(fminimizer &&v)
Move operator.
int set(multimin::function &f, vector const &x, vector const &step_size)
C++ version of gsl_multimin_fminimizer_set().
bool empty() const
Find if the fminimizer is empty.
bool operator>=(fminimizer const &v) const
A container needs to define an ordering for sorting.
static int set(fminimizer &s, gsl_multimin_function *f, vector const &x, vector const &step_size)
C++ version of gsl_multimin_fminimizer_set().
static char const * name(fminimizer const &s)
C++ version of gsl_multimin_fminimizer_name().
bool operator<=(fminimizer const &v) const
A container needs to define an ordering for sorting.
char const * name()
C++ version of gsl_multimin_fminimizer_name().
fminimizer(fminimizer &&v)
Move constructor.
static type const * nmsimplex2()
Static type.
fminimizer & operator=(fminimizer const &v)
The assignment operator.
bool unique() const
Find if this is the only object sharing the gsl_multimin_fminimizer.
vector x()
C++ version of gsl_multimin_fminimizer_x().
double minimum()
C++ version of gsl_multimin_fminimizer_minimum().
size_t * count
The shared reference count.
int set(gsl_multimin_function *f, vector const &x, vector const &step_size)
C++ version of gsl_multimin_fminimizer_set().
static int iterate(fminimizer &s)
C++ version of gsl_multimin_fminimizer_iterate().
fminimizer(gsl_multimin_fminimizer *v)
Could construct from a gsl_multimin_fminimizer.
gsl_multimin_fminimizer * ccgsl_pointer
The shared pointer.
static int set(fminimizer &s, multimin::function &f, vector const &x, vector const &step_size)
C++ version of gsl_multimin_fminimizer_set().
static vector x(fminimizer const &s)
C++ version of gsl_multimin_fminimizer_x().
fminimizer(fminimizer const &v)
The copy constructor.
~fminimizer()
The destructor only deletes the pointers if count reaches zero.
static double size(fminimizer const &s)
C++ version of gsl_multimin_fminimizer_size().
gsl_multimin_fminimizer_type type
Typedef.
double size()
C++ version of gsl_multimin_fminimizer_size().
static double minimum(fminimizer const &s)
C++ version of gsl_multimin_fminimizer_minimum().
bool operator!=(fminimizer const &v) const
Two fminimizer are different if their elements are not identical.
fminimizer(type const *T, size_t const n)
The default constructor creates a new fminimizer with n elements.
Class that extends gsl_multimin_function_fdf so that it can be constructed from arbitrary function ob...
Class that extends gsl_multimin_function so that it can be constructed from arbitrary function object...
This class handles vector objects as shared handles.
gsl_vector * get()
Get the gsl_vector.
void wrap_gsl_vector_without_ownership(gsl_vector *v)
This function is intended mainly for internal use.
int test(double const xtol, double const gtol, double const ftol, int *info, workspace const &w)
C++ version of gsl_multifit_nlinear_test().
gsl_multilarge_nlinear_fdf fdf
Typedef for shorthand.
int gradient(vector const &g, double epsabs)
C++ version of gsl_multimin_test_gradient().
int size(double const size, double epsabs)
C++ version of gsl_multimin_test_size().
int diff(multimin::function const &f, vector const &x, vector &g)
C++ version of gsl_multimin_diff().
size_t n(workspace const &w)
C++ version of gsl_rstat_n().
The gsl package creates an interface to the GNU Scientific Library for C++.