ccgsl 2.7.2
C++wrappersforGnuScientificLibrary
multimin.hpp
Go to the documentation of this file.
1/*
2 * $Id: multimin.hpp 293 2012-12-17 20:27:36Z jdl3 $
3 * Copyright (C) 2010, 2011, 2012 John D Lamb
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or (at
8 * your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19
20#ifndef CCGSL_MULTIMIN_HPP
21#define CCGSL_MULTIMIN_HPP
22
23#include<new>
25
26namespace gsl {
30 namespace multimin {
38 inline int diff( multimin::function const& f, vector const& x, vector& g ){
39 return gsl_multimin_diff( &f, x.get(), g.get() ); }
47 inline int diff( gsl_multimin_function const* f, vector const& x, vector& g ){
48 return gsl_multimin_diff( f, x.get(), g.get() ); }
49
54 class fminimizer {
58 typedef gsl_multimin_fminimizer_type type;
59 public:
64 ccgsl_pointer = 0;
65 count = 0; // initially nullptr will do
66 }
67 // Refines random access container
68 // Refines assignable
74 explicit fminimizer( type const* T, size_t const n ){
75 ccgsl_pointer = gsl_multimin_fminimizer_alloc( T, n );
76 // just plausibly we could allocate fminimizer but not count
77 try { count = new size_t; } catch( std::bad_alloc& e ){
78 // try to tidy up before rethrowing
79 gsl_multimin_fminimizer_free( ccgsl_pointer );
80 throw e;
81 }
82 *count = 1; // initially there is just one reference to ccgsl_pointer
83 }
90 explicit fminimizer( gsl_multimin_fminimizer* v ){
91 ccgsl_pointer = v;
92 // just plausibly we could fail to allocate count: no further action needed.
93 count = new size_t;
94 *count = 1; // initially there is just one reference to ccgsl_pointer
95 }
96 // copy constructor
102 count = v.count; if( count != 0 ) ++*count; }
103 // assignment operator
109 // first, possibly delete anything pointed to by this
110 if( count == 0 or --*count == 0 ){
111 if( ccgsl_pointer != 0 ) gsl_multimin_fminimizer_free( ccgsl_pointer );
112 delete count;
113 } // Then copy
114 ccgsl_pointer = v.ccgsl_pointer; count = v.count; if( count != 0 ) ++*count; return *this;
115 }
116 // destructor
121 if( count == 0 or --*count == 0 ){
122 // could have allocated null pointer
123 if( ccgsl_pointer != 0 ) gsl_multimin_fminimizer_free( ccgsl_pointer );
124 delete count;
125 }
126 }
127#ifdef __GXX_EXPERIMENTAL_CXX0X__
133 std::swap( count, v.count );
134 v.ccgsl_pointer = nullptr;
135 }
142 fminimizer( std::move( v ) ).swap( *this );
143 return *this;
144 }
145#endif
146 // Refines equality comparable
147 // == operator
154 bool operator==( fminimizer const& v ) const { return ccgsl_pointer == v.ccgsl_pointer; }
155 // != operator
162 bool operator!=( fminimizer const& v ) const { return not operator==( v ); }
163 // Refines forward container
164 // Refines less than comparable
165 // operator<
174 bool operator<( fminimizer const& v ) const { return ccgsl_pointer < v.ccgsl_pointer; }
175 // operator>
184 bool operator>( fminimizer const& v ) const { return ccgsl_pointer > v.ccgsl_pointer; }
185 // operator<=
194 bool operator<=( fminimizer const& v ) const { return ccgsl_pointer <= v.ccgsl_pointer; }
195 // operator>=
204 bool operator>=( fminimizer const& v ) const { return ccgsl_pointer >= v.ccgsl_pointer; }
209 bool empty() const { return ccgsl_pointer == 0; }
210 // swap() --- should work even if sizes don't match
216 void swap( fminimizer& v ){
217 std::swap( ccgsl_pointer, v.ccgsl_pointer );
218 std::swap( count, v.count );
219 }
220 private:
224 gsl_multimin_fminimizer* ccgsl_pointer;
228 size_t* count;
229 public:
230 // shared reference functions
235 gsl_multimin_fminimizer* get() const { return ccgsl_pointer; }
241 bool unique() const { return count != 0 and *count == 1; }
246 size_t use_count() const { return count == 0 ? 0 : *count; }
252#ifdef __GXX_EXPERIMENTAL_CXX0X__
253 explicit
254#endif
255 operator bool() const { return ccgsl_pointer != 0; }
256
265 inline static int set( fminimizer& s, multimin::function& f,
266 vector const& x, vector const& step_size ){
267 return gsl_multimin_fminimizer_set( s.get(), &f, x.get(), step_size.get() ); }
276 inline static int set( fminimizer& s, gsl_multimin_function* f,
277 vector const& x, vector const& step_size ){
278 return gsl_multimin_fminimizer_set( s.get(), f, x.get(), step_size.get() ); }
279
285 inline static char const* name( fminimizer const& s ){
286 return gsl_multimin_fminimizer_name( s.get() ); }
287
293 inline static int iterate( fminimizer& s ){
294 return gsl_multimin_fminimizer_iterate( s.get() ); }
295
301 inline static vector x( fminimizer const& s ){
302 vector v;
303 v.wrap_gsl_vector_without_ownership( gsl_multimin_fminimizer_x( s.get() ) );
304 return v;
305 }
311 inline static double minimum( fminimizer const& s ){
312 return gsl_multimin_fminimizer_minimum( s.get() );
313 }
314
320 inline static double size( fminimizer const& s ){
321 return gsl_multimin_fminimizer_size( s.get() ); }
329 int set( multimin::function& f, vector const& x, vector const& step_size ){
330 return gsl_multimin_fminimizer_set( get(), &f, x.get(), step_size.get() ); }
338 int set( gsl_multimin_function* f, vector const& x, vector const& step_size ){
339 return gsl_multimin_fminimizer_set( get(), f, x.get(), step_size.get() ); }
344 char const* name(){ return gsl_multimin_fminimizer_name( get() ); }
349 int iterate(){
350 return gsl_multimin_fminimizer_iterate( get() ); }
356 vector v;
357 v.wrap_gsl_vector_without_ownership( gsl_multimin_fminimizer_x( get() ) );
358 return v;
359 }
364 double minimum(){
365 return gsl_multimin_fminimizer_minimum( get() );
366 }
371 double size(){
372 return gsl_multimin_fminimizer_size( get() ); }
373
374 // Fminimizer types
379 inline static type const* nmsimplex(){ return gsl_multimin_fminimizer_nmsimplex; }
384 inline static type const* nmsimplex2(){ return gsl_multimin_fminimizer_nmsimplex2; }
389 inline static type const* nmsimplex2rand(){ return gsl_multimin_fminimizer_nmsimplex2rand; }
390 };
391
395 namespace test {
402 inline int gradient( vector const& g, double epsabs ){
403 return gsl_multimin_test_gradient( g.get(), epsabs ); }
404
411 inline int size( double const size, double epsabs ){
412 return gsl_multimin_test_size( size, epsabs ); }
413 }
414
423 typedef gsl_multimin_fdfminimizer_type type;
424 public:
429 ccgsl_pointer = 0;
430 count = 0; // initially nullptr will do
431 }
432 // Refines random access container
433 // Refines assignable
439 explicit fdfminimizer( type const* T, size_t const n ){
440 ccgsl_pointer = gsl_multimin_fdfminimizer_alloc( T, n );
441 // just plausibly we could allocate fdfminimizer but not count
442 try { count = new size_t; } catch( std::bad_alloc& e ){
443 // try to tidy up before rethrowing
444 gsl_multimin_fdfminimizer_free( ccgsl_pointer );
445 throw e;
446 }
447 *count = 1; // initially there is just one reference to ccgsl_pointer
448 }
455 explicit fdfminimizer( gsl_multimin_fdfminimizer* v ){
456 ccgsl_pointer = v;
457 // just plausibly we could fail to allocate count: no further action needed.
458 count = new size_t;
459 *count = 1; // initially there is just one reference to ccgsl_pointer
460 }
461 // copy constructor
467 count = v.count; if( count != 0 ) ++*count; }
468 // assignment operator
474 // first, possibly delete anything pointed to by this
475 if( count == 0 or --*count == 0 ){
476 if( ccgsl_pointer != 0 ) gsl_multimin_fdfminimizer_free( ccgsl_pointer );
477 delete count;
478 } // Then copy
479 ccgsl_pointer = v.ccgsl_pointer; count = v.count; if( count != 0 ) ++*count; return *this;
480 }
481 // destructor
486 if( count == 0 or --*count == 0 ){
487 // could have allocated null pointer
488 if( ccgsl_pointer != 0 ) gsl_multimin_fdfminimizer_free( ccgsl_pointer );
489 delete count;
490 }
491 }
492#ifdef __GXX_EXPERIMENTAL_CXX0X__
498 std::swap( count, v.count );
499 v.ccgsl_pointer = nullptr;
500 }
507 fdfminimizer( std::move( v ) ).swap( *this );
508 return *this;
509 }
510#endif
511 // Refines equality comparable
512 // == operator
519 bool operator==( fdfminimizer const& v ) const { return ccgsl_pointer == v.ccgsl_pointer; }
520 // != operator
527 bool operator!=( fdfminimizer const& v ) const { return not operator==( v ); }
528 // Refines forward container
529 // Refines less than comparable
530 // operator<
539 bool operator<( fdfminimizer const& v ) const { return ccgsl_pointer < v.ccgsl_pointer; }
540 // operator>
549 bool operator>( fdfminimizer const& v ) const { return ccgsl_pointer > v.ccgsl_pointer; }
550 // operator<=
559 bool operator<=( fdfminimizer const& v ) const { return ccgsl_pointer <= v.ccgsl_pointer; }
560 // operator>=
569 bool operator>=( fdfminimizer const& v ) const { return ccgsl_pointer >= v.ccgsl_pointer; }
574 bool empty() const { return ccgsl_pointer == 0; }
575 // swap() --- should work even if sizes don't match
581 void swap( fdfminimizer& v ){
582 std::swap( ccgsl_pointer, v.ccgsl_pointer );
583 std::swap( count, v.count );
584 }
585 private:
589 gsl_multimin_fdfminimizer* ccgsl_pointer;
593 size_t* count;
594 public:
595 // shared reference functions
600 gsl_multimin_fdfminimizer* get() const { return ccgsl_pointer; }
606 bool unique() const { return count != 0 and *count == 1; }
611 size_t use_count() const { return count == 0 ? 0 : *count; }
617#ifdef __GXX_EXPERIMENTAL_CXX0X__
618 explicit
619#endif
620 operator bool() const { return ccgsl_pointer != 0; }
621
631 inline static int set( fdfminimizer& s, function_fdf* fdf, vector const& x,
632 double step_size, double tol ){
633 return gsl_multimin_fdfminimizer_set( s.get(), fdf, x.get(), step_size, tol ); }
643 inline static int set( fdfminimizer& s, function_fdf& fdf, vector const& x,
644 double step_size, double tol ){
645 return gsl_multimin_fdfminimizer_set( s.get(), &fdf, x.get(), step_size, tol ); }
646
652 inline static char const* name( fdfminimizer const& s ){
653 return gsl_multimin_fdfminimizer_name( s.get() ); }
654
660 inline static int iterate( fdfminimizer& s ){
661 return gsl_multimin_fdfminimizer_iterate( s.get() ); }
662
668 inline static int restart( fdfminimizer& s ){
669 return gsl_multimin_fdfminimizer_restart( s.get() ); }
670
676 inline static vector x( fdfminimizer const& s ){
677 vector v;
678 v.wrap_gsl_vector_without_ownership( gsl_multimin_fdfminimizer_x( s.get() ) );
679 return v;
680 }
681
687 inline static vector dx( fdfminimizer const& s ){
688 vector v;
689 v.wrap_gsl_vector_without_ownership( gsl_multimin_fdfminimizer_dx( s.get() ) );
690 return v;
691 }
692
698 inline static vector gradient( fdfminimizer const& s ){
699 vector v;
700 v.wrap_gsl_vector_without_ownership( gsl_multimin_fdfminimizer_gradient( s.get() ) );
701 return v;
702 }
703
709 inline static double minimum( fdfminimizer const& s ){
710 return gsl_multimin_fdfminimizer_minimum( s.get() ); }
711
720 inline int set( function_fdf* fdf, vector const& x,
721 double step_size, double tol ){
722 return gsl_multimin_fdfminimizer_set( get(), fdf, x.get(), step_size, tol ); }
731 inline int set( function_fdf& fdf, vector const& x,
732 double step_size, double tol ){
733 return gsl_multimin_fdfminimizer_set( get(), &fdf, x.get(), step_size, tol ); }
734
739 inline char const* name(){ return gsl_multimin_fdfminimizer_name( get() ); }
740
745 inline int iterate(){
746 return gsl_multimin_fdfminimizer_iterate( get() ); }
747
752 inline int restart(){
753 return gsl_multimin_fdfminimizer_restart( get() ); }
754
759 inline vector x(){
760 vector v;
761 v.wrap_gsl_vector_without_ownership( gsl_multimin_fdfminimizer_x( get() ) );
762 return v;
763 }
764
769 inline vector dx(){
770 vector v;
771 v.wrap_gsl_vector_without_ownership( gsl_multimin_fdfminimizer_dx( get() ) );
772 return v;
773 }
774
779 inline vector gradient(){
780 vector v;
781 v.wrap_gsl_vector_without_ownership( gsl_multimin_fdfminimizer_gradient( get() ) );
782 return v;
783 }
784
789 inline double minimum(){
790 return gsl_multimin_fdfminimizer_minimum( get() ); }
791
796 inline static type const* steepest_descent(){ return gsl_multimin_fdfminimizer_steepest_descent; }
801 inline static type const* conjugate_pr(){ return gsl_multimin_fdfminimizer_conjugate_pr; }
806 inline static type const* conjugate_fr(){ return gsl_multimin_fdfminimizer_conjugate_fr; }
811 inline static type const* vector_bfgs(){ return gsl_multimin_fdfminimizer_vector_bfgs; }
816 inline static type const* vector_bfgs2(){ return gsl_multimin_fdfminimizer_vector_bfgs2; }
817 };
818
819
820 }
821}
822#endif
Workspace for fdfminimizer.
Definition: multimin.hpp:419
void swap(fdfminimizer &v)
Swap two fdfminimizer objects.
Definition: multimin.hpp:581
static vector gradient(fdfminimizer const &s)
C++ version of gsl_multimin_fdfminimizer_gradient().
Definition: multimin.hpp:698
int set(function_fdf &fdf, vector const &x, double step_size, double tol)
C++ version of gsl_multimin_fdfminimizer_set().
Definition: multimin.hpp:731
size_t * count
The shared reference count.
Definition: multimin.hpp:593
gsl_multimin_fdfminimizer * get() const
Get the gsl_multimin_fminimizer.
Definition: multimin.hpp:600
bool empty() const
Find if the fdfminimizer is empty.
Definition: multimin.hpp:574
static type const * vector_bfgs2()
Static type.
Definition: multimin.hpp:816
static vector x(fdfminimizer const &s)
C++ version of gsl_multimin_fdfminimizer_x().
Definition: multimin.hpp:676
static int restart(fdfminimizer &s)
C++ version of gsl_multimin_fdfminimizer_restart().
Definition: multimin.hpp:668
static type const * conjugate_pr()
Static type.
Definition: multimin.hpp:801
int set(function_fdf *fdf, vector const &x, double step_size, double tol)
C++ version of gsl_multimin_fdfminimizer_set().
Definition: multimin.hpp:720
fdfminimizer & operator=(fdfminimizer &&v)
Move operator.
Definition: multimin.hpp:506
fdfminimizer(type const *T, size_t const n)
The default constructor creates a new fdfminimizer with n elements.
Definition: multimin.hpp:439
static vector dx(fdfminimizer const &s)
C++ version of gsl_multimin_fdfminimizer_dx().
Definition: multimin.hpp:687
int restart()
C++ version of gsl_multimin_fdfminimizer_restart().
Definition: multimin.hpp:752
bool operator!=(fdfminimizer const &v) const
Two fdfminimizer are different if their elements are not identical.
Definition: multimin.hpp:527
static type const * conjugate_fr()
Static type.
Definition: multimin.hpp:806
static type const * steepest_descent()
Static type.
Definition: multimin.hpp:796
char const * name()
C++ version of gsl_multimin_fdfminimizer_name().
Definition: multimin.hpp:739
vector x()
C++ version of gsl_multimin_fdfminimizer_x().
Definition: multimin.hpp:759
fdfminimizer(gsl_multimin_fdfminimizer *v)
Could construct from a gsl_multimin_fminimizer.
Definition: multimin.hpp:455
size_t use_count() const
Find how many fdfminimizer objects share this pointer.
Definition: multimin.hpp:611
double minimum()
C++ version of gsl_multimin_fdfminimizer_minimum().
Definition: multimin.hpp:789
vector dx()
C++ version of gsl_multimin_fdfminimizer_dx().
Definition: multimin.hpp:769
bool operator>=(fdfminimizer const &v) const
A container needs to define an ordering for sorting.
Definition: multimin.hpp:569
gsl_multimin_fdfminimizer_type type
Typedef.
Definition: multimin.hpp:423
int iterate()
C++ version of gsl_multimin_fdfminimizer_iterate().
Definition: multimin.hpp:745
static int set(fdfminimizer &s, function_fdf &fdf, vector const &x, double step_size, double tol)
C++ version of gsl_multimin_fdfminimizer_set().
Definition: multimin.hpp:643
fdfminimizer(fdfminimizer &&v)
Move constructor.
Definition: multimin.hpp:497
bool operator<(fdfminimizer const &v) const
A container needs to define an ordering for sorting.
Definition: multimin.hpp:539
fdfminimizer(fdfminimizer const &v)
The copy constructor.
Definition: multimin.hpp:466
bool operator>(fdfminimizer const &v) const
A container needs to define an ordering for sorting.
Definition: multimin.hpp:549
static int set(fdfminimizer &s, function_fdf *fdf, vector const &x, double step_size, double tol)
C++ version of gsl_multimin_fdfminimizer_set().
Definition: multimin.hpp:631
fdfminimizer & operator=(fdfminimizer const &v)
The assignment operator.
Definition: multimin.hpp:473
static double minimum(fdfminimizer const &s)
C++ version of gsl_multimin_fdfminimizer_minimum().
Definition: multimin.hpp:709
static type const * vector_bfgs()
Static type.
Definition: multimin.hpp:811
bool unique() const
Find if this is the only object sharing the gsl_multimin_fminimizer.
Definition: multimin.hpp:606
~fdfminimizer()
The destructor only deletes the pointers if count reaches zero.
Definition: multimin.hpp:485
fdfminimizer()
The default constructor is only really useful for assigning to.
Definition: multimin.hpp:428
bool operator==(fdfminimizer const &v) const
Two fdfminimizer are identically equal if their elements are identical.
Definition: multimin.hpp:519
vector gradient()
C++ version of gsl_multimin_fdfminimizer_gradient().
Definition: multimin.hpp:779
static int iterate(fdfminimizer &s)
C++ version of gsl_multimin_fdfminimizer_iterate().
Definition: multimin.hpp:660
static char const * name(fdfminimizer const &s)
C++ version of gsl_multimin_fdfminimizer_name().
Definition: multimin.hpp:652
bool operator<=(fdfminimizer const &v) const
A container needs to define an ordering for sorting.
Definition: multimin.hpp:559
gsl_multimin_fdfminimizer * ccgsl_pointer
The shared pointer.
Definition: multimin.hpp:589
Workspace for fminimizer.
Definition: multimin.hpp:54
fminimizer()
The default constructor is only really useful for assigning to.
Definition: multimin.hpp:63
size_t use_count() const
Find how many fminimizer objects share this pointer.
Definition: multimin.hpp:246
bool operator<(fminimizer const &v) const
A container needs to define an ordering for sorting.
Definition: multimin.hpp:174
int iterate()
C++ version of gsl_multimin_fminimizer_iterate().
Definition: multimin.hpp:349
bool operator==(fminimizer const &v) const
Two fminimizer are identically equal if their elements are identical.
Definition: multimin.hpp:154
void swap(fminimizer &v)
Swap two fminimizer objects.
Definition: multimin.hpp:216
static type const * nmsimplex2rand()
Static type.
Definition: multimin.hpp:389
bool operator>(fminimizer const &v) const
A container needs to define an ordering for sorting.
Definition: multimin.hpp:184
gsl_multimin_fminimizer * get() const
Get the gsl_multimin_fminimizer.
Definition: multimin.hpp:235
static type const * nmsimplex()
Static type.
Definition: multimin.hpp:379
fminimizer & operator=(fminimizer &&v)
Move operator.
Definition: multimin.hpp:141
int set(multimin::function &f, vector const &x, vector const &step_size)
C++ version of gsl_multimin_fminimizer_set().
Definition: multimin.hpp:329
bool empty() const
Find if the fminimizer is empty.
Definition: multimin.hpp:209
bool operator>=(fminimizer const &v) const
A container needs to define an ordering for sorting.
Definition: multimin.hpp:204
static int set(fminimizer &s, gsl_multimin_function *f, vector const &x, vector const &step_size)
C++ version of gsl_multimin_fminimizer_set().
Definition: multimin.hpp:276
static char const * name(fminimizer const &s)
C++ version of gsl_multimin_fminimizer_name().
Definition: multimin.hpp:285
bool operator<=(fminimizer const &v) const
A container needs to define an ordering for sorting.
Definition: multimin.hpp:194
char const * name()
C++ version of gsl_multimin_fminimizer_name().
Definition: multimin.hpp:344
fminimizer(fminimizer &&v)
Move constructor.
Definition: multimin.hpp:132
static type const * nmsimplex2()
Static type.
Definition: multimin.hpp:384
fminimizer & operator=(fminimizer const &v)
The assignment operator.
Definition: multimin.hpp:108
bool unique() const
Find if this is the only object sharing the gsl_multimin_fminimizer.
Definition: multimin.hpp:241
vector x()
C++ version of gsl_multimin_fminimizer_x().
Definition: multimin.hpp:355
double minimum()
C++ version of gsl_multimin_fminimizer_minimum().
Definition: multimin.hpp:364
size_t * count
The shared reference count.
Definition: multimin.hpp:228
int set(gsl_multimin_function *f, vector const &x, vector const &step_size)
C++ version of gsl_multimin_fminimizer_set().
Definition: multimin.hpp:338
static int iterate(fminimizer &s)
C++ version of gsl_multimin_fminimizer_iterate().
Definition: multimin.hpp:293
fminimizer(gsl_multimin_fminimizer *v)
Could construct from a gsl_multimin_fminimizer.
Definition: multimin.hpp:90
gsl_multimin_fminimizer * ccgsl_pointer
The shared pointer.
Definition: multimin.hpp:224
static int set(fminimizer &s, multimin::function &f, vector const &x, vector const &step_size)
C++ version of gsl_multimin_fminimizer_set().
Definition: multimin.hpp:265
static vector x(fminimizer const &s)
C++ version of gsl_multimin_fminimizer_x().
Definition: multimin.hpp:301
fminimizer(fminimizer const &v)
The copy constructor.
Definition: multimin.hpp:101
~fminimizer()
The destructor only deletes the pointers if count reaches zero.
Definition: multimin.hpp:120
static double size(fminimizer const &s)
C++ version of gsl_multimin_fminimizer_size().
Definition: multimin.hpp:320
gsl_multimin_fminimizer_type type
Typedef.
Definition: multimin.hpp:58
double size()
C++ version of gsl_multimin_fminimizer_size().
Definition: multimin.hpp:371
static double minimum(fminimizer const &s)
C++ version of gsl_multimin_fminimizer_minimum().
Definition: multimin.hpp:311
bool operator!=(fminimizer const &v) const
Two fminimizer are different if their elements are not identical.
Definition: multimin.hpp:162
fminimizer(type const *T, size_t const n)
The default constructor creates a new fminimizer with n elements.
Definition: multimin.hpp:74
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.
Definition: vector.hpp:74
gsl_vector * get()
Get the gsl_vector.
Definition: vector.hpp:1320
void wrap_gsl_vector_without_ownership(gsl_vector *v)
This function is intended mainly for internal use.
Definition: vector.hpp:272
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().
Definition: multimin.hpp:402
int size(double const size, double epsabs)
C++ version of gsl_multimin_test_size().
Definition: multimin.hpp:411
int diff(multimin::function const &f, vector const &x, vector &g)
C++ version of gsl_multimin_diff().
Definition: multimin.hpp:38
size_t n(workspace const &w)
C++ version of gsl_rstat_n().
Definition: rstat.hpp:299
The gsl package creates an interface to the GNU Scientific Library for C++.
Definition: blas.hpp:34