20#ifndef CCGSL_MULTIMIN_FUNCTION_HPP
21#define CCGSL_MULTIMIN_FUNCTION_HPP
23#include<gsl/gsl_multimin.h>
26#if __cplusplus <= 199711L
64 class function :
public gsl_multimin_function {
74 typedef double (*function_t)(gsl_vector
const*,
void*);
88 class Fuvcr :
public base_F {
94 Fuvcr(
double (*
const f)(
gsl::vector const&) ) : f( f ){
95 xv.wrap_gsl_vector_without_ownership( 0 ); }
115 static double fn( gsl_vector
const* x,
void* params ){
116 Fuvcr* ft =
reinterpret_cast<Fuvcr*
>( params );
117 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
118 return ft->f( ft->xv ); }
123 class FuvCr :
public base_F {
129 FuvCr(
double (*
const f)(
gsl::vector const volatile&) ) : f( f ){
130 xv.wrap_gsl_vector_without_ownership( 0 ); }
150 static double fn( gsl_vector
const* x,
void* params ){
151 FuvCr* ft =
reinterpret_cast<FuvCr*
>( params );
152 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
153 return ft->f( ft->xv ); }
158 class Fcvcr :
public base_F {
164 Fcvcr(
double const (*
const f)(
gsl::vector const&) ) : f( f ){
165 xv.wrap_gsl_vector_without_ownership( 0 ); }
185 static double fn( gsl_vector
const* x,
void* params ){
186 Fcvcr* ft =
reinterpret_cast<Fcvcr*
>( params );
187 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
188 return ft->f( ft->xv ); }
193 class FcvCr :
public base_F {
199 FcvCr(
double const (*
const f)(
gsl::vector const volatile&) ) : f( f ){
200 xv.wrap_gsl_vector_without_ownership( 0 ); }
209 double const (*
const f)(
gsl::vector const volatile&);
220 static double fn( gsl_vector
const* x,
void* params ){
221 FcvCr* ft =
reinterpret_cast<FcvCr*
>( params );
222 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
223 return ft->f( ft->xv ); }
228 class Furcr :
public base_F {
234 Furcr(
double& (*
const f)(
gsl::vector const&) ) : f( f ){
235 xv.wrap_gsl_vector_without_ownership( 0 ); }
255 static double fn( gsl_vector
const* x,
void* params ){
256 Furcr* ft =
reinterpret_cast<Furcr*
>( params );
257 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
258 return ft->f( ft->xv ); }
263 class FurCr :
public base_F {
269 FurCr(
double& (*
const f)(
gsl::vector const volatile&) ) : f( f ){
270 xv.wrap_gsl_vector_without_ownership( 0 ); }
290 static double fn( gsl_vector
const* x,
void* params ){
291 FurCr* ft =
reinterpret_cast<FurCr*
>( params );
292 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
293 return ft->f( ft->xv ); }
298 class Fcrcr :
public base_F {
304 Fcrcr(
double const& (*
const f)(
gsl::vector const&) ) : f( f ){
305 xv.wrap_gsl_vector_without_ownership( 0 ); }
325 static double fn( gsl_vector
const* x,
void* params ){
326 Fcrcr* ft =
reinterpret_cast<Fcrcr*
>( params );
327 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
328 return ft->f( ft->xv ); }
333 class FcrCr :
public base_F {
339 FcrCr(
double const& (*
const f)(
gsl::vector const volatile&) ) : f( f ){
340 xv.wrap_gsl_vector_without_ownership( 0 ); }
349 double const& (*
const f)(
gsl::vector const volatile&);
360 static double fn( gsl_vector
const* x,
void* params ){
361 FcrCr* ft =
reinterpret_cast<FcrCr*
>( params );
362 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
363 return ft->f( ft->xv ); }
368 class FVrcr :
public base_F {
374 FVrcr(
double volatile& (*
const f)(
gsl::vector const&) ) : f( f ){
375 xv.wrap_gsl_vector_without_ownership( 0 ); }
395 static double fn( gsl_vector
const* x,
void* params ){
396 FVrcr* ft =
reinterpret_cast<FVrcr*
>( params );
397 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
398 return ft->f( ft->xv ); }
403 class FVrCr :
public base_F {
409 FVrCr(
double volatile& (*
const f)(
gsl::vector const volatile&) ) : f( f ){
410 xv.wrap_gsl_vector_without_ownership( 0 ); }
419 double volatile& (*
const f)(
gsl::vector const volatile&);
430 static double fn( gsl_vector
const* x,
void* params ){
431 FVrCr* ft =
reinterpret_cast<FVrCr*
>( params );
432 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
433 return ft->f( ft->xv ); }
438 class FCrcr :
public base_F {
444 FCrcr(
double const volatile& (*
const f)(
gsl::vector const&) ) : f( f ){
445 xv.wrap_gsl_vector_without_ownership( 0 ); }
454 double const volatile& (*
const f)(
gsl::vector const&);
465 static double fn( gsl_vector
const* x,
void* params ){
466 FCrcr* ft =
reinterpret_cast<FCrcr*
>( params );
467 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
468 return ft->f( ft->xv ); }
473 class FCrCr :
public base_F {
479 FCrCr(
double const volatile& (*
const f)(
gsl::vector const volatile&) ) : f( f ){
480 xv.wrap_gsl_vector_without_ownership( 0 ); }
489 double const volatile& (*
const f)(
gsl::vector const volatile&);
500 static double fn( gsl_vector
const* x,
void* params ){
501 FCrCr* ft =
reinterpret_cast<FCrCr*
>( params );
502 ft->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
503 return ft->f( ft->xv ); }
510 class Fuvcru :
public base_F {
521 xv.wrap_gsl_vector_without_ownership( 0 ); }
527 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
531 function_t
function(){
return &function_s; }
545 static double function_s( gsl_vector
const* x,
void* params ){
546 Fuvcru<T>*
const cl =
reinterpret_cast<Fuvcru<T>*
>( params );
547 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
548 return (cl->c.*cl->f)( cl->xv ); }
563 class FuvCru :
public base_F {
572 FuvCru( T& c,
double (T::*f)(
gsl::vector const volatile&) )
574 xv.wrap_gsl_vector_without_ownership( 0 ); }
580 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
584 function_t
function(){
return &function_s; }
598 static double function_s( gsl_vector
const* x,
void* params ){
599 FuvCru<T>*
const cl =
reinterpret_cast<FuvCru<T>*
>( params );
600 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
601 return (cl->c.*cl->f)( cl->xv ); }
616 class Fcvcru :
public base_F {
625 Fcvcru( T& c,
double const (T::*f)(
gsl::vector const&) )
627 xv.wrap_gsl_vector_without_ownership( 0 ); }
633 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
637 function_t
function(){
return &function_s; }
651 static double function_s( gsl_vector
const* x,
void* params ){
652 Fcvcru<T>*
const cl =
reinterpret_cast<Fcvcru<T>*
>( params );
653 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
654 return (cl->c.*cl->f)( cl->xv ); }
669 class FcvCru :
public base_F {
678 FcvCru( T& c,
double const (T::*f)(
gsl::vector const volatile&) )
680 xv.wrap_gsl_vector_without_ownership( 0 ); }
686 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
690 function_t
function(){
return &function_s; }
704 static double function_s( gsl_vector
const* x,
void* params ){
705 FcvCru<T>*
const cl =
reinterpret_cast<FcvCru<T>*
>( params );
706 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
707 return (cl->c.*cl->f)( cl->xv ); }
722 class Furcru :
public base_F {
731 Furcru( T& c,
double& (T::*f)(
gsl::vector const&) )
733 xv.wrap_gsl_vector_without_ownership( 0 ); }
739 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
743 function_t
function(){
return &function_s; }
757 static double function_s( gsl_vector
const* x,
void* params ){
758 Furcru<T>*
const cl =
reinterpret_cast<Furcru<T>*
>( params );
759 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
760 return (cl->c.*cl->f)( cl->xv ); }
775 class FurCru :
public base_F {
784 FurCru( T& c,
double& (T::*f)(
gsl::vector const volatile&) )
786 xv.wrap_gsl_vector_without_ownership( 0 ); }
792 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
796 function_t
function(){
return &function_s; }
810 static double function_s( gsl_vector
const* x,
void* params ){
811 FurCru<T>*
const cl =
reinterpret_cast<FurCru<T>*
>( params );
812 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
813 return (cl->c.*cl->f)( cl->xv ); }
828 class Fcrcru :
public base_F {
837 Fcrcru( T& c,
double const& (T::*f)(
gsl::vector const&) )
839 xv.wrap_gsl_vector_without_ownership( 0 ); }
845 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
849 function_t
function(){
return &function_s; }
863 static double function_s( gsl_vector
const* x,
void* params ){
864 Fcrcru<T>*
const cl =
reinterpret_cast<Fcrcru<T>*
>( params );
865 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
866 return (cl->c.*cl->f)( cl->xv ); }
881 class FcrCru :
public base_F {
890 FcrCru( T& c,
double const& (T::*f)(
gsl::vector const volatile&) )
892 xv.wrap_gsl_vector_without_ownership( 0 ); }
898 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
902 function_t
function(){
return &function_s; }
916 static double function_s( gsl_vector
const* x,
void* params ){
917 FcrCru<T>*
const cl =
reinterpret_cast<FcrCru<T>*
>( params );
918 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
919 return (cl->c.*cl->f)( cl->xv ); }
927 double const& (T::*f)(
gsl::vector const volatile&);
934 class FVrcru :
public base_F {
943 FVrcru( T& c,
double volatile& (T::*f)(
gsl::vector const&) )
945 xv.wrap_gsl_vector_without_ownership( 0 ); }
951 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
955 function_t
function(){
return &function_s; }
969 static double function_s( gsl_vector
const* x,
void* params ){
970 FVrcru<T>*
const cl =
reinterpret_cast<FVrcru<T>*
>( params );
971 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
972 return (cl->c.*cl->f)( cl->xv ); }
987 class FVrCru :
public base_F {
996 FVrCru( T& c,
double volatile& (T::*f)(
gsl::vector const volatile&) )
998 xv.wrap_gsl_vector_without_ownership( 0 ); }
1004 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1008 function_t
function(){
return &function_s; }
1022 static double function_s( gsl_vector
const* x,
void* params ){
1023 FVrCru<T>*
const cl =
reinterpret_cast<FVrCru<T>*
>( params );
1024 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1025 return (cl->c.*cl->f)( cl->xv ); }
1033 double volatile& (T::*f)(
gsl::vector const volatile&);
1039 template<
typename T>
1040 class FCrcru :
public base_F {
1049 FCrcru( T& c,
double const volatile& (T::*f)(
gsl::vector const&) )
1051 xv.wrap_gsl_vector_without_ownership( 0 ); }
1057 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1061 function_t
function(){
return &function_s; }
1075 static double function_s( gsl_vector
const* x,
void* params ){
1076 FCrcru<T>*
const cl =
reinterpret_cast<FCrcru<T>*
>( params );
1077 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1078 return (cl->c.*cl->f)( cl->xv ); }
1086 double const volatile& (T::*f)(
gsl::vector const&);
1092 template<
typename T>
1093 class FCrCru :
public base_F {
1102 FCrCru( T& c,
double const volatile& (T::*f)(
gsl::vector const volatile&) )
1104 xv.wrap_gsl_vector_without_ownership( 0 ); }
1110 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1114 function_t
function(){
return &function_s; }
1128 static double function_s( gsl_vector
const* x,
void* params ){
1129 FCrCru<T>*
const cl =
reinterpret_cast<FCrCru<T>*
>( params );
1130 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1131 return (cl->c.*cl->f)( cl->xv ); }
1139 double const volatile& (T::*f)(
gsl::vector const volatile&);
1145 template<
typename T>
1146 class Fuvcrc :
public base_F {
1155 Fuvcrc( T& c,
double (T::*f)(
gsl::vector const&)
const )
1157 xv.wrap_gsl_vector_without_ownership( 0 ); }
1163 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1167 function_t
function(){
return &function_s; }
1181 static double function_s( gsl_vector
const* x,
void* params ){
1182 Fuvcrc<T>*
const cl =
reinterpret_cast<Fuvcrc<T>*
>( params );
1183 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1184 return (cl->c.*cl->f)( cl->xv ); }
1198 template<
typename T>
1199 class FuvCrc :
public base_F {
1208 FuvCrc( T& c,
double (T::*f)(
gsl::vector const volatile&)
const )
1210 xv.wrap_gsl_vector_without_ownership( 0 ); }
1216 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1220 function_t
function(){
return &function_s; }
1234 static double function_s( gsl_vector
const* x,
void* params ){
1235 FuvCrc<T>*
const cl =
reinterpret_cast<FuvCrc<T>*
>( params );
1236 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1237 return (cl->c.*cl->f)( cl->xv ); }
1245 double (T::*f)(
gsl::vector const volatile&)
const;
1251 template<
typename T>
1252 class Fcvcrc :
public base_F {
1261 Fcvcrc( T& c,
double const (T::*f)(
gsl::vector const&)
const )
1263 xv.wrap_gsl_vector_without_ownership( 0 ); }
1269 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1273 function_t
function(){
return &function_s; }
1287 static double function_s( gsl_vector
const* x,
void* params ){
1288 Fcvcrc<T>*
const cl =
reinterpret_cast<Fcvcrc<T>*
>( params );
1289 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1290 return (cl->c.*cl->f)( cl->xv ); }
1304 template<
typename T>
1305 class FcvCrc :
public base_F {
1314 FcvCrc( T& c,
double const (T::*f)(
gsl::vector const volatile&)
const )
1316 xv.wrap_gsl_vector_without_ownership( 0 ); }
1322 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1326 function_t
function(){
return &function_s; }
1340 static double function_s( gsl_vector
const* x,
void* params ){
1341 FcvCrc<T>*
const cl =
reinterpret_cast<FcvCrc<T>*
>( params );
1342 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1343 return (cl->c.*cl->f)( cl->xv ); }
1351 double const (T::*f)(
gsl::vector const volatile&)
const;
1357 template<
typename T>
1358 class Furcrc :
public base_F {
1367 Furcrc( T& c,
double& (T::*f)(
gsl::vector const&)
const )
1369 xv.wrap_gsl_vector_without_ownership( 0 ); }
1375 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1379 function_t
function(){
return &function_s; }
1393 static double function_s( gsl_vector
const* x,
void* params ){
1394 Furcrc<T>*
const cl =
reinterpret_cast<Furcrc<T>*
>( params );
1395 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1396 return (cl->c.*cl->f)( cl->xv ); }
1410 template<
typename T>
1411 class FurCrc :
public base_F {
1420 FurCrc( T& c,
double& (T::*f)(
gsl::vector const volatile&)
const )
1422 xv.wrap_gsl_vector_without_ownership( 0 ); }
1428 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1432 function_t
function(){
return &function_s; }
1446 static double function_s( gsl_vector
const* x,
void* params ){
1447 FurCrc<T>*
const cl =
reinterpret_cast<FurCrc<T>*
>( params );
1448 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1449 return (cl->c.*cl->f)( cl->xv ); }
1457 double& (T::*f)(
gsl::vector const volatile&)
const;
1463 template<
typename T>
1464 class Fcrcrc :
public base_F {
1473 Fcrcrc( T& c,
double const& (T::*f)(
gsl::vector const&)
const )
1475 xv.wrap_gsl_vector_without_ownership( 0 ); }
1481 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1485 function_t
function(){
return &function_s; }
1499 static double function_s( gsl_vector
const* x,
void* params ){
1500 Fcrcrc<T>*
const cl =
reinterpret_cast<Fcrcrc<T>*
>( params );
1501 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1502 return (cl->c.*cl->f)( cl->xv ); }
1516 template<
typename T>
1517 class FcrCrc :
public base_F {
1526 FcrCrc( T& c,
double const& (T::*f)(
gsl::vector const volatile&)
const )
1528 xv.wrap_gsl_vector_without_ownership( 0 ); }
1534 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1538 function_t
function(){
return &function_s; }
1552 static double function_s( gsl_vector
const* x,
void* params ){
1553 FcrCrc<T>*
const cl =
reinterpret_cast<FcrCrc<T>*
>( params );
1554 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1555 return (cl->c.*cl->f)( cl->xv ); }
1563 double const& (T::*f)(
gsl::vector const volatile&)
const;
1569 template<
typename T>
1570 class FVrcrc :
public base_F {
1579 FVrcrc( T& c,
double volatile& (T::*f)(
gsl::vector const&)
const )
1581 xv.wrap_gsl_vector_without_ownership( 0 ); }
1587 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1591 function_t
function(){
return &function_s; }
1605 static double function_s( gsl_vector
const* x,
void* params ){
1606 FVrcrc<T>*
const cl =
reinterpret_cast<FVrcrc<T>*
>( params );
1607 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1608 return (cl->c.*cl->f)( cl->xv ); }
1616 double volatile& (T::*f)(
gsl::vector const&)
const;
1622 template<
typename T>
1623 class FVrCrc :
public base_F {
1632 FVrCrc( T& c,
double volatile& (T::*f)(
gsl::vector const volatile&)
const )
1634 xv.wrap_gsl_vector_without_ownership( 0 ); }
1640 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1644 function_t
function(){
return &function_s; }
1658 static double function_s( gsl_vector
const* x,
void* params ){
1659 FVrCrc<T>*
const cl =
reinterpret_cast<FVrCrc<T>*
>( params );
1660 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1661 return (cl->c.*cl->f)( cl->xv ); }
1669 double volatile& (T::*f)(
gsl::vector const volatile&)
const;
1675 template<
typename T>
1676 class FCrcrc :
public base_F {
1685 FCrcrc( T& c,
double const volatile& (T::*f)(
gsl::vector const&)
const )
1687 xv.wrap_gsl_vector_without_ownership( 0 ); }
1693 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1697 function_t
function(){
return &function_s; }
1711 static double function_s( gsl_vector
const* x,
void* params ){
1712 FCrcrc<T>*
const cl =
reinterpret_cast<FCrcrc<T>*
>( params );
1713 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1714 return (cl->c.*cl->f)( cl->xv ); }
1722 double const volatile& (T::*f)(
gsl::vector const&)
const;
1728 template<
typename T>
1729 class FCrCrc :
public base_F {
1738 FCrCrc( T& c,
double const volatile& (T::*f)(
gsl::vector const volatile&)
const )
1740 xv.wrap_gsl_vector_without_ownership( 0 ); }
1746 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1750 function_t
function(){
return &function_s; }
1764 static double function_s( gsl_vector
const* x,
void* params ){
1765 FCrCrc<T>*
const cl =
reinterpret_cast<FCrCrc<T>*
>( params );
1766 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1767 return (cl->c.*cl->f)( cl->xv ); }
1775 double const volatile& (T::*f)(
gsl::vector const volatile&)
const;
1781 template<
typename T>
1782 class FuvcrV :
public base_F {
1791 FuvcrV( T& c,
double (T::*f)(
gsl::vector const&)
volatile )
1793 xv.wrap_gsl_vector_without_ownership( 0 ); }
1799 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1803 function_t
function(){
return &function_s; }
1817 static double function_s( gsl_vector
const* x,
void* params ){
1818 FuvcrV<T>*
const cl =
reinterpret_cast<FuvcrV<T>*
>( params );
1819 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1820 return (cl->c.*cl->f)( cl->xv ); }
1834 template<
typename T>
1835 class FuvCrV :
public base_F {
1844 FuvCrV( T& c,
double (T::*f)(
gsl::vector const volatile&)
volatile )
1846 xv.wrap_gsl_vector_without_ownership( 0 ); }
1852 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1856 function_t
function(){
return &function_s; }
1870 static double function_s( gsl_vector
const* x,
void* params ){
1871 FuvCrV<T>*
const cl =
reinterpret_cast<FuvCrV<T>*
>( params );
1872 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1873 return (cl->c.*cl->f)( cl->xv ); }
1881 double (T::*f)(
gsl::vector const volatile&)
volatile;
1887 template<
typename T>
1888 class FcvcrV :
public base_F {
1897 FcvcrV( T& c,
double const (T::*f)(
gsl::vector const&)
volatile )
1899 xv.wrap_gsl_vector_without_ownership( 0 ); }
1905 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1909 function_t
function(){
return &function_s; }
1923 static double function_s( gsl_vector
const* x,
void* params ){
1924 FcvcrV<T>*
const cl =
reinterpret_cast<FcvcrV<T>*
>( params );
1925 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1926 return (cl->c.*cl->f)( cl->xv ); }
1934 double const (T::*f)(
gsl::vector const&)
volatile;
1940 template<
typename T>
1941 class FcvCrV :
public base_F {
1950 FcvCrV( T& c,
double const (T::*f)(
gsl::vector const volatile&)
volatile )
1952 xv.wrap_gsl_vector_without_ownership( 0 ); }
1958 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
1962 function_t
function(){
return &function_s; }
1976 static double function_s( gsl_vector
const* x,
void* params ){
1977 FcvCrV<T>*
const cl =
reinterpret_cast<FcvCrV<T>*
>( params );
1978 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
1979 return (cl->c.*cl->f)( cl->xv ); }
1987 double const (T::*f)(
gsl::vector const volatile&)
volatile;
1993 template<
typename T>
1994 class FurcrV :
public base_F {
2003 FurcrV( T& c,
double& (T::*f)(
gsl::vector const&)
volatile )
2005 xv.wrap_gsl_vector_without_ownership( 0 ); }
2011 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2015 function_t
function(){
return &function_s; }
2029 static double function_s( gsl_vector
const* x,
void* params ){
2030 FurcrV<T>*
const cl =
reinterpret_cast<FurcrV<T>*
>( params );
2031 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2032 return (cl->c.*cl->f)( cl->xv ); }
2046 template<
typename T>
2047 class FurCrV :
public base_F {
2056 FurCrV( T& c,
double& (T::*f)(
gsl::vector const volatile&)
volatile )
2058 xv.wrap_gsl_vector_without_ownership( 0 ); }
2064 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2068 function_t
function(){
return &function_s; }
2082 static double function_s( gsl_vector
const* x,
void* params ){
2083 FurCrV<T>*
const cl =
reinterpret_cast<FurCrV<T>*
>( params );
2084 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2085 return (cl->c.*cl->f)( cl->xv ); }
2093 double& (T::*f)(
gsl::vector const volatile&)
volatile;
2099 template<
typename T>
2100 class FcrcrV :
public base_F {
2109 FcrcrV( T& c,
double const& (T::*f)(
gsl::vector const&)
volatile )
2111 xv.wrap_gsl_vector_without_ownership( 0 ); }
2117 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2121 function_t
function(){
return &function_s; }
2135 static double function_s( gsl_vector
const* x,
void* params ){
2136 FcrcrV<T>*
const cl =
reinterpret_cast<FcrcrV<T>*
>( params );
2137 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2138 return (cl->c.*cl->f)( cl->xv ); }
2146 double const& (T::*f)(
gsl::vector const&)
volatile;
2152 template<
typename T>
2153 class FcrCrV :
public base_F {
2162 FcrCrV( T& c,
double const& (T::*f)(
gsl::vector const volatile&)
volatile )
2164 xv.wrap_gsl_vector_without_ownership( 0 ); }
2170 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2174 function_t
function(){
return &function_s; }
2188 static double function_s( gsl_vector
const* x,
void* params ){
2189 FcrCrV<T>*
const cl =
reinterpret_cast<FcrCrV<T>*
>( params );
2190 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2191 return (cl->c.*cl->f)( cl->xv ); }
2199 double const& (T::*f)(
gsl::vector const volatile&)
volatile;
2205 template<
typename T>
2206 class FVrcrV :
public base_F {
2215 FVrcrV( T& c,
double volatile& (T::*f)(
gsl::vector const&)
volatile )
2217 xv.wrap_gsl_vector_without_ownership( 0 ); }
2223 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2227 function_t
function(){
return &function_s; }
2241 static double function_s( gsl_vector
const* x,
void* params ){
2242 FVrcrV<T>*
const cl =
reinterpret_cast<FVrcrV<T>*
>( params );
2243 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2244 return (cl->c.*cl->f)( cl->xv ); }
2252 double volatile& (T::*f)(
gsl::vector const&)
volatile;
2258 template<
typename T>
2259 class FVrCrV :
public base_F {
2268 FVrCrV( T& c,
double volatile& (T::*f)(
gsl::vector const volatile&)
volatile )
2270 xv.wrap_gsl_vector_without_ownership( 0 ); }
2276 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2280 function_t
function(){
return &function_s; }
2294 static double function_s( gsl_vector
const* x,
void* params ){
2295 FVrCrV<T>*
const cl =
reinterpret_cast<FVrCrV<T>*
>( params );
2296 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2297 return (cl->c.*cl->f)( cl->xv ); }
2305 double volatile& (T::*f)(
gsl::vector const volatile&)
volatile;
2311 template<
typename T>
2312 class FCrcrV :
public base_F {
2321 FCrcrV( T& c,
double const volatile& (T::*f)(
gsl::vector const&)
volatile )
2323 xv.wrap_gsl_vector_without_ownership( 0 ); }
2329 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2333 function_t
function(){
return &function_s; }
2347 static double function_s( gsl_vector
const* x,
void* params ){
2348 FCrcrV<T>*
const cl =
reinterpret_cast<FCrcrV<T>*
>( params );
2349 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2350 return (cl->c.*cl->f)( cl->xv ); }
2358 double const volatile& (T::*f)(
gsl::vector const&)
volatile;
2364 template<
typename T>
2365 class FCrCrV :
public base_F {
2374 FCrCrV( T& c,
double const volatile& (T::*f)(
gsl::vector const volatile&)
volatile )
2376 xv.wrap_gsl_vector_without_ownership( 0 ); }
2382 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2386 function_t
function(){
return &function_s; }
2400 static double function_s( gsl_vector
const* x,
void* params ){
2401 FCrCrV<T>*
const cl =
reinterpret_cast<FCrCrV<T>*
>( params );
2402 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2403 return (cl->c.*cl->f)( cl->xv ); }
2411 double const volatile& (T::*f)(
gsl::vector const volatile&)
volatile;
2417 template<
typename T>
2418 class FuvcrC :
public base_F {
2427 FuvcrC( T& c,
double (T::*f)(
gsl::vector const&)
const volatile )
2429 xv.wrap_gsl_vector_without_ownership( 0 ); }
2435 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2439 function_t
function(){
return &function_s; }
2453 static double function_s( gsl_vector
const* x,
void* params ){
2454 FuvcrC<T>*
const cl =
reinterpret_cast<FuvcrC<T>*
>( params );
2455 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2456 return (cl->c.*cl->f)( cl->xv ); }
2464 double (T::*f)(
gsl::vector const&)
const volatile;
2470 template<
typename T>
2471 class FuvCrC :
public base_F {
2480 FuvCrC( T& c,
double (T::*f)(
gsl::vector const volatile&)
const volatile )
2482 xv.wrap_gsl_vector_without_ownership( 0 ); }
2488 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2492 function_t
function(){
return &function_s; }
2506 static double function_s( gsl_vector
const* x,
void* params ){
2507 FuvCrC<T>*
const cl =
reinterpret_cast<FuvCrC<T>*
>( params );
2508 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2509 return (cl->c.*cl->f)( cl->xv ); }
2517 double (T::*f)(
gsl::vector const volatile&)
const volatile;
2523 template<
typename T>
2524 class FcvcrC :
public base_F {
2533 FcvcrC( T& c,
double const (T::*f)(
gsl::vector const&)
const volatile )
2535 xv.wrap_gsl_vector_without_ownership( 0 ); }
2541 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2545 function_t
function(){
return &function_s; }
2559 static double function_s( gsl_vector
const* x,
void* params ){
2560 FcvcrC<T>*
const cl =
reinterpret_cast<FcvcrC<T>*
>( params );
2561 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2562 return (cl->c.*cl->f)( cl->xv ); }
2570 double const (T::*f)(
gsl::vector const&)
const volatile;
2576 template<
typename T>
2577 class FcvCrC :
public base_F {
2586 FcvCrC( T& c,
double const (T::*f)(
gsl::vector const volatile&)
const volatile )
2588 xv.wrap_gsl_vector_without_ownership( 0 ); }
2594 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2598 function_t
function(){
return &function_s; }
2612 static double function_s( gsl_vector
const* x,
void* params ){
2613 FcvCrC<T>*
const cl =
reinterpret_cast<FcvCrC<T>*
>( params );
2614 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2615 return (cl->c.*cl->f)( cl->xv ); }
2623 double const (T::*f)(
gsl::vector const volatile&)
const volatile;
2629 template<
typename T>
2630 class FurcrC :
public base_F {
2639 FurcrC( T& c,
double& (T::*f)(
gsl::vector const&)
const volatile )
2641 xv.wrap_gsl_vector_without_ownership( 0 ); }
2647 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2651 function_t
function(){
return &function_s; }
2665 static double function_s( gsl_vector
const* x,
void* params ){
2666 FurcrC<T>*
const cl =
reinterpret_cast<FurcrC<T>*
>( params );
2667 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2668 return (cl->c.*cl->f)( cl->xv ); }
2676 double& (T::*f)(
gsl::vector const&)
const volatile;
2682 template<
typename T>
2683 class FurCrC :
public base_F {
2692 FurCrC( T& c,
double& (T::*f)(
gsl::vector const volatile&)
const volatile )
2694 xv.wrap_gsl_vector_without_ownership( 0 ); }
2700 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2704 function_t
function(){
return &function_s; }
2718 static double function_s( gsl_vector
const* x,
void* params ){
2719 FurCrC<T>*
const cl =
reinterpret_cast<FurCrC<T>*
>( params );
2720 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2721 return (cl->c.*cl->f)( cl->xv ); }
2729 double& (T::*f)(
gsl::vector const volatile&)
const volatile;
2735 template<
typename T>
2736 class FcrcrC :
public base_F {
2745 FcrcrC( T& c,
double const& (T::*f)(
gsl::vector const&)
const volatile )
2747 xv.wrap_gsl_vector_without_ownership( 0 ); }
2753 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2757 function_t
function(){
return &function_s; }
2771 static double function_s( gsl_vector
const* x,
void* params ){
2772 FcrcrC<T>*
const cl =
reinterpret_cast<FcrcrC<T>*
>( params );
2773 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2774 return (cl->c.*cl->f)( cl->xv ); }
2782 double const& (T::*f)(
gsl::vector const&)
const volatile;
2788 template<
typename T>
2789 class FcrCrC :
public base_F {
2798 FcrCrC( T& c,
double const& (T::*f)(
gsl::vector const volatile&)
const volatile )
2800 xv.wrap_gsl_vector_without_ownership( 0 ); }
2806 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2810 function_t
function(){
return &function_s; }
2824 static double function_s( gsl_vector
const* x,
void* params ){
2825 FcrCrC<T>*
const cl =
reinterpret_cast<FcrCrC<T>*
>( params );
2826 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2827 return (cl->c.*cl->f)( cl->xv ); }
2835 double const& (T::*f)(
gsl::vector const volatile&)
const volatile;
2841 template<
typename T>
2842 class FVrcrC :
public base_F {
2851 FVrcrC( T& c,
double volatile& (T::*f)(
gsl::vector const&)
const volatile )
2853 xv.wrap_gsl_vector_without_ownership( 0 ); }
2859 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2863 function_t
function(){
return &function_s; }
2877 static double function_s( gsl_vector
const* x,
void* params ){
2878 FVrcrC<T>*
const cl =
reinterpret_cast<FVrcrC<T>*
>( params );
2879 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2880 return (cl->c.*cl->f)( cl->xv ); }
2888 double volatile& (T::*f)(
gsl::vector const&)
const volatile;
2894 template<
typename T>
2895 class FVrCrC :
public base_F {
2904 FVrCrC( T& c,
double volatile& (T::*f)(
gsl::vector const volatile&)
const volatile )
2906 xv.wrap_gsl_vector_without_ownership( 0 ); }
2912 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2916 function_t
function(){
return &function_s; }
2930 static double function_s( gsl_vector
const* x,
void* params ){
2931 FVrCrC<T>*
const cl =
reinterpret_cast<FVrCrC<T>*
>( params );
2932 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2933 return (cl->c.*cl->f)( cl->xv ); }
2941 double volatile& (T::*f)(
gsl::vector const volatile&)
const volatile;
2947 template<
typename T>
2948 class FCrcrC :
public base_F {
2957 FCrcrC( T& c,
double const volatile& (T::*f)(
gsl::vector const&)
const volatile )
2959 xv.wrap_gsl_vector_without_ownership( 0 ); }
2965 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
2969 function_t
function(){
return &function_s; }
2983 static double function_s( gsl_vector
const* x,
void* params ){
2984 FCrcrC<T>*
const cl =
reinterpret_cast<FCrcrC<T>*
>( params );
2985 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
2986 return (cl->c.*cl->f)( cl->xv ); }
2994 double const volatile& (T::*f)(
gsl::vector const&)
const volatile;
3000 template<
typename T>
3001 class FCrCrC :
public base_F {
3010 FCrCrC( T& c,
double const volatile& (T::*f)(
gsl::vector const volatile&)
const volatile )
3012 xv.wrap_gsl_vector_without_ownership( 0 ); }
3018 double operator()(
gsl::vector const& x ){
return (c.*f)( x ); }
3022 function_t
function(){
return &function_s; }
3036 static double function_s( gsl_vector
const* x,
void* params ){
3037 FCrCrC<T>*
const cl =
reinterpret_cast<FCrCrC<T>*
>( params );
3038 cl->xv.ccgsl_pointer =
const_cast<gsl_vector*
>( x );
3039 return (cl->c.*cl->f)( cl->xv ); }
3047 double const volatile& (T::*f)(
gsl::vector const volatile&)
const volatile;
3254 explicit function(
double const volatile& (*
const f)(
gsl::vector const volatile&),
size_t const n ){
3275 base_f =
new Fuvcru<T>( c, f );
3292 base_f =
new FuvCru<T>( c, f );
3307 template<
typename T>
function( T& c,
double const (T::*f)(
gsl::vector const&),
size_t const n ){
3310 base_f =
new Fcvcru<T>( c, f );
3324 template<
typename T>
function( T& c,
double const (T::*f)(
gsl::vector const volatile&),
size_t const n ){
3327 base_f =
new FcvCru<T>( c, f );
3346 base_f =
new Furcru<T>( c, f );
3360 template<
typename T>
function( T& c,
double& (T::*f)(
gsl::vector const volatile&),
size_t const n ){
3363 base_f =
new FurCru<T>( c, f );
3379 template<
typename T>
function( T& c,
double const& (T::*f)(
gsl::vector const&),
size_t const n ){
3382 base_f =
new Fcrcru<T>( c, f );
3396 template<
typename T>
function( T& c,
double const& (T::*f)(
gsl::vector const volatile&),
size_t const n ){
3399 base_f =
new FcrCru<T>( c, f );
3415 template<
typename T>
function( T& c,
double volatile& (T::*f)(
gsl::vector const&),
size_t const n ){
3418 base_f =
new FVrcru<T>( c, f );
3432 template<
typename T>
function( T& c,
double volatile& (T::*f)(
gsl::vector const volatile&),
size_t const n ){
3435 base_f =
new FVrCru<T>( c, f );
3451 template<
typename T>
function( T& c,
double const volatile& (T::*f)(
gsl::vector const&),
size_t const n ){
3454 base_f =
new FCrcru<T>( c, f );
3468 template<
typename T>
function( T& c,
double const volatile& (T::*f)(
gsl::vector const volatile&),
size_t const n ){
3471 base_f =
new FCrCru<T>( c, f );
3487 template<
typename T>
function( T& c,
double (T::*f)(
gsl::vector const&)
const,
size_t const n ){
3490 base_f =
new Fuvcrc<T>( c, f );
3504 template<
typename T>
function( T& c,
double (T::*f)(
gsl::vector const volatile&)
const,
size_t const n ){
3507 base_f =
new FuvCrc<T>( c, f );
3523 template<
typename T>
function( T& c,
double const (T::*f)(
gsl::vector const&)
const,
size_t const n ){
3526 base_f =
new Fcvcrc<T>( c, f );
3540 template<
typename T>
function( T& c,
double const (T::*f)(
gsl::vector const volatile&)
const,
size_t const n ){
3543 base_f =
new FcvCrc<T>( c, f );
3559 template<
typename T>
function( T& c,
double& (T::*f)(
gsl::vector const&)
const,
size_t const n ){
3562 base_f =
new Furcrc<T>( c, f );
3576 template<
typename T>
function( T& c,
double& (T::*f)(
gsl::vector const volatile&)
const,
size_t const n ){
3579 base_f =
new FurCrc<T>( c, f );
3595 template<
typename T>
function( T& c,
double const& (T::*f)(
gsl::vector const&)
const,
size_t const n ){
3598 base_f =
new Fcrcrc<T>( c, f );
3612 template<
typename T>
function( T& c,
double const& (T::*f)(
gsl::vector const volatile&)
const,
size_t const n ){
3615 base_f =
new FcrCrc<T>( c, f );
3631 template<
typename T>
function( T& c,
double volatile& (T::*f)(
gsl::vector const&)
const,
size_t const n ){
3634 base_f =
new FVrcrc<T>( c, f );
3648 template<
typename T>
function( T& c,
double volatile& (T::*f)(
gsl::vector const volatile&)
const,
size_t const n ){
3651 base_f =
new FVrCrc<T>( c, f );
3667 template<
typename T>
function( T& c,
double const volatile& (T::*f)(
gsl::vector const&)
const,
size_t const n ){
3670 base_f =
new FCrcrc<T>( c, f );
3684 template<
typename T>
function( T& c,
double const volatile& (T::*f)(
gsl::vector const volatile&)
const,
size_t const n ){
3687 base_f =
new FCrCrc<T>( c, f );
3703 template<
typename T>
function( T& c,
double (T::*f)(
gsl::vector const&)
volatile,
size_t const n ){
3706 base_f =
new FuvcrV<T>( c, f );
3720 template<
typename T>
function( T& c,
double (T::*f)(
gsl::vector const volatile&)
volatile,
size_t const n ){
3723 base_f =
new FuvCrV<T>( c, f );
3739 template<
typename T>
function( T& c,
double const (T::*f)(
gsl::vector const&)
volatile,
size_t const n ){
3742 base_f =
new FcvcrV<T>( c, f );
3756 template<
typename T>
function( T& c,
double const (T::*f)(
gsl::vector const volatile&)
volatile,
size_t const n ){
3759 base_f =
new FcvCrV<T>( c, f );
3775 template<
typename T>
function( T& c,
double& (T::*f)(
gsl::vector const&)
volatile,
size_t const n ){
3778 base_f =
new FurcrV<T>( c, f );
3792 template<
typename T>
function( T& c,
double& (T::*f)(
gsl::vector const volatile&)
volatile,
size_t const n ){
3795 base_f =
new FurCrV<T>( c, f );
3811 template<
typename T>
function( T& c,
double const& (T::*f)(
gsl::vector const&)
volatile,
size_t const n ){
3814 base_f =
new FcrcrV<T>( c, f );
3828 template<
typename T>
function( T& c,
double const& (T::*f)(
gsl::vector const volatile&)
volatile,
size_t const n ){
3831 base_f =
new FcrCrV<T>( c, f );
3847 template<
typename T>
function( T& c,
double volatile& (T::*f)(
gsl::vector const&)
volatile,
size_t const n ){
3850 base_f =
new FVrcrV<T>( c, f );
3864 template<
typename T>
function( T& c,
double volatile& (T::*f)(
gsl::vector const volatile&)
volatile,
size_t const n ){
3867 base_f =
new FVrCrV<T>( c, f );
3883 template<
typename T>
function( T& c,
double const volatile& (T::*f)(
gsl::vector const&)
volatile,
size_t const n ){
3886 base_f =
new FCrcrV<T>( c, f );
3900 template<
typename T>
function( T& c,
double const volatile& (T::*f)(
gsl::vector const volatile&)
volatile,
size_t const n ){
3903 base_f =
new FCrCrV<T>( c, f );
3919 template<
typename T>
function( T& c,
double (T::*f)(
gsl::vector const&)
const volatile,
size_t const n ){
3922 base_f =
new FuvcrC<T>( c, f );
3936 template<
typename T>
function( T& c,
double (T::*f)(
gsl::vector const volatile&)
const volatile,
size_t const n ){
3939 base_f =
new FuvCrC<T>( c, f );
3955 template<
typename T>
function( T& c,
double const (T::*f)(
gsl::vector const&)
const volatile,
size_t const n ){
3958 base_f =
new FcvcrC<T>( c, f );
3972 template<
typename T>
function( T& c,
double const (T::*f)(
gsl::vector const volatile&)
const volatile,
size_t const n ){
3975 base_f =
new FcvCrC<T>( c, f );
3991 template<
typename T>
function( T& c,
double& (T::*f)(
gsl::vector const&)
const volatile,
size_t const n ){
3994 base_f =
new FurcrC<T>( c, f );
4008 template<
typename T>
function( T& c,
double& (T::*f)(
gsl::vector const volatile&)
const volatile,
size_t const n ){
4011 base_f =
new FurCrC<T>( c, f );
4027 template<
typename T>
function( T& c,
double const& (T::*f)(
gsl::vector const&)
const volatile,
size_t const n ){
4030 base_f =
new FcrcrC<T>( c, f );
4044 template<
typename T>
function( T& c,
double const& (T::*f)(
gsl::vector const volatile&)
const volatile,
size_t const n ){
4047 base_f =
new FcrCrC<T>( c, f );
4063 template<
typename T>
function( T& c,
double volatile& (T::*f)(
gsl::vector const&)
const volatile,
size_t const n ){
4066 base_f =
new FVrcrC<T>( c, f );
4080 template<
typename T>
function( T& c,
double volatile& (T::*f)(
gsl::vector const volatile&)
const volatile,
size_t const n ){
4083 base_f =
new FVrCrC<T>( c, f );
4099 template<
typename T>
function( T& c,
double const volatile& (T::*f)(
gsl::vector const&)
const volatile,
size_t const n ){
4102 base_f =
new FCrcrC<T>( c, f );
4116 template<
typename T>
function( T& c,
double const volatile& (T::*f)(
gsl::vector const volatile&)
const volatile,
size_t const n ){
4119 base_f =
new FCrCrC<T>( c, f );
4160#ifdef __GXX_EXPERIMENTAL_CXX0X__
4166 std::swap( f, v.f );
4167 std::swap(
n, v.n );
4168 std::swap( params, v.params );
4169 std::swap(
count, v.count );
4178 std::swap(
base_f, v.base_f );
4179 std::swap( f, v.f );
4180 std::swap(
n, v.n );
4181 std::swap( params, v.params );
4182 std::swap(
count, v.count );
4205 static double fn( gsl_vector
const* x,
void* params ){
4206 base_F*
const b =
reinterpret_cast<base_F*
>( params );
4207 return b->function()( x, params );
4216 template<
typename T>
4219#ifdef __GXX_EXPERIMENTAL_CXX0X__
4220 return std::move( fn );
4231 template<
typename T>
4234#ifdef __GXX_EXPERIMENTAL_CXX0X__
4235 return std::move( fn );
4247 template<
typename T>
4249 function fn( c, f,
n );
4250#ifdef __GXX_EXPERIMENTAL_CXX0X__
4251 return std::move( fn );
4262 template<
typename T>
4264 function fn( c, f,
n );
4265#ifdef __GXX_EXPERIMENTAL_CXX0X__
4266 return std::move( fn );
4279 template<
typename T>
4281 function fn( c, f,
n );
4282#ifdef __GXX_EXPERIMENTAL_CXX0X__
4283 return std::move( fn );
4294 template<
typename T>
4296 function fn( c, f,
n );
4297#ifdef __GXX_EXPERIMENTAL_CXX0X__
4298 return std::move( fn );
4311 template<
typename T>
4313 function fn( c, f,
n );
4314#ifdef __GXX_EXPERIMENTAL_CXX0X__
4315 return std::move( fn );
4326 template<
typename T>
4328 function fn( c, f,
n );
4329#ifdef __GXX_EXPERIMENTAL_CXX0X__
4330 return std::move( fn );
4343 template<
typename T>
4345 function fn( c, f,
n );
4346#ifdef __GXX_EXPERIMENTAL_CXX0X__
4347 return std::move( fn );
4358 template<
typename T>
4360 function fn( c, f,
n );
4361#ifdef __GXX_EXPERIMENTAL_CXX0X__
4362 return std::move( fn );
4375 template<
typename T>
4377 function fn( c, f,
n );
4378#ifdef __GXX_EXPERIMENTAL_CXX0X__
4379 return std::move( fn );
4390 template<
typename T>
4392 function fn( c, f,
n );
4393#ifdef __GXX_EXPERIMENTAL_CXX0X__
4394 return std::move( fn );
4407 template<
typename T>
4409 function fn( c, f,
n );
4410#ifdef __GXX_EXPERIMENTAL_CXX0X__
4411 return std::move( fn );
4422 template<
typename T>
4424 function fn( c, f,
n );
4425#ifdef __GXX_EXPERIMENTAL_CXX0X__
4426 return std::move( fn );
4439 template<
typename T>
4441 function fn( c, f,
n );
4442#ifdef __GXX_EXPERIMENTAL_CXX0X__
4443 return std::move( fn );
4454 template<
typename T>
4456 function fn( c, f,
n );
4457#ifdef __GXX_EXPERIMENTAL_CXX0X__
4458 return std::move( fn );
4471 template<
typename T>
4473 function fn( c, f,
n );
4474#ifdef __GXX_EXPERIMENTAL_CXX0X__
4475 return std::move( fn );
4486 template<
typename T>
4488 function fn( c, f,
n );
4489#ifdef __GXX_EXPERIMENTAL_CXX0X__
4490 return std::move( fn );
4503 template<
typename T>
4505 function fn( c, f,
n );
4506#ifdef __GXX_EXPERIMENTAL_CXX0X__
4507 return std::move( fn );
4518 template<
typename T>
4520 function fn( c, f,
n );
4521#ifdef __GXX_EXPERIMENTAL_CXX0X__
4522 return std::move( fn );
4535 template<
typename T>
4537 function fn( c, f,
n );
4538#ifdef __GXX_EXPERIMENTAL_CXX0X__
4539 return std::move( fn );
4550 template<
typename T>
4552 function fn( c, f,
n );
4553#ifdef __GXX_EXPERIMENTAL_CXX0X__
4554 return std::move( fn );
4567 template<
typename T>
4569 function fn( c, f,
n );
4570#ifdef __GXX_EXPERIMENTAL_CXX0X__
4571 return std::move( fn );
4582 template<
typename T>
4583 inline function
make_function( T& c,
double const volatile& (T::*f)(
gsl::vector const volatile&)
const,
size_t const n ){
4584 function fn( c, f,
n );
4585#ifdef __GXX_EXPERIMENTAL_CXX0X__
4586 return std::move( fn );
4599 template<
typename T>
4601 function fn( c, f,
n );
4602#ifdef __GXX_EXPERIMENTAL_CXX0X__
4603 return std::move( fn );
4614 template<
typename T>
4616 function fn( c, f,
n );
4617#ifdef __GXX_EXPERIMENTAL_CXX0X__
4618 return std::move( fn );
4631 template<
typename T>
4633 function fn( c, f,
n );
4634#ifdef __GXX_EXPERIMENTAL_CXX0X__
4635 return std::move( fn );
4646 template<
typename T>
4648 function fn( c, f,
n );
4649#ifdef __GXX_EXPERIMENTAL_CXX0X__
4650 return std::move( fn );
4663 template<
typename T>
4665 function fn( c, f,
n );
4666#ifdef __GXX_EXPERIMENTAL_CXX0X__
4667 return std::move( fn );
4678 template<
typename T>
4680 function fn( c, f,
n );
4681#ifdef __GXX_EXPERIMENTAL_CXX0X__
4682 return std::move( fn );
4695 template<
typename T>
4697 function fn( c, f,
n );
4698#ifdef __GXX_EXPERIMENTAL_CXX0X__
4699 return std::move( fn );
4710 template<
typename T>
4712 function fn( c, f,
n );
4713#ifdef __GXX_EXPERIMENTAL_CXX0X__
4714 return std::move( fn );
4727 template<
typename T>
4729 function fn( c, f,
n );
4730#ifdef __GXX_EXPERIMENTAL_CXX0X__
4731 return std::move( fn );
4742 template<
typename T>
4744 function fn( c, f,
n );
4745#ifdef __GXX_EXPERIMENTAL_CXX0X__
4746 return std::move( fn );
4759 template<
typename T>
4761 function fn( c, f,
n );
4762#ifdef __GXX_EXPERIMENTAL_CXX0X__
4763 return std::move( fn );
4774 template<
typename T>
4775 inline function
make_function( T& c,
double const volatile& (T::*f)(
gsl::vector const volatile&)
volatile,
size_t const n ){
4776 function fn( c, f,
n );
4777#ifdef __GXX_EXPERIMENTAL_CXX0X__
4778 return std::move( fn );
4791 template<
typename T>
4793 function fn( c, f,
n );
4794#ifdef __GXX_EXPERIMENTAL_CXX0X__
4795 return std::move( fn );
4806 template<
typename T>
4808 function fn( c, f,
n );
4809#ifdef __GXX_EXPERIMENTAL_CXX0X__
4810 return std::move( fn );
4823 template<
typename T>
4825 function fn( c, f,
n );
4826#ifdef __GXX_EXPERIMENTAL_CXX0X__
4827 return std::move( fn );
4838 template<
typename T>
4839 inline function
make_function( T& c,
double const (T::*f)(
gsl::vector const volatile&)
const volatile,
size_t const n ){
4840 function fn( c, f,
n );
4841#ifdef __GXX_EXPERIMENTAL_CXX0X__
4842 return std::move( fn );
4855 template<
typename T>
4857 function fn( c, f,
n );
4858#ifdef __GXX_EXPERIMENTAL_CXX0X__
4859 return std::move( fn );
4870 template<
typename T>
4872 function fn( c, f,
n );
4873#ifdef __GXX_EXPERIMENTAL_CXX0X__
4874 return std::move( fn );
4887 template<
typename T>
4889 function fn( c, f,
n );
4890#ifdef __GXX_EXPERIMENTAL_CXX0X__
4891 return std::move( fn );
4902 template<
typename T>
4903 inline function
make_function( T& c,
double const& (T::*f)(
gsl::vector const volatile&)
const volatile,
size_t const n ){
4904 function fn( c, f,
n );
4905#ifdef __GXX_EXPERIMENTAL_CXX0X__
4906 return std::move( fn );
4919 template<
typename T>
4921 function fn( c, f,
n );
4922#ifdef __GXX_EXPERIMENTAL_CXX0X__
4923 return std::move( fn );
4934 template<
typename T>
4935 inline function
make_function( T& c,
double volatile& (T::*f)(
gsl::vector const volatile&)
const volatile,
size_t const n ){
4936 function fn( c, f,
n );
4937#ifdef __GXX_EXPERIMENTAL_CXX0X__
4938 return std::move( fn );
4951 template<
typename T>
4952 inline function
make_function( T& c,
double const volatile& (T::*f)(
gsl::vector const&)
const volatile,
size_t const n ){
4953 function fn( c, f,
n );
4954#ifdef __GXX_EXPERIMENTAL_CXX0X__
4955 return std::move( fn );
4966 template<
typename T>
4967 inline function
make_function( T& c,
double const volatile& (T::*f)(
gsl::vector const volatile&)
const volatile,
size_t const n ){
4968 function fn( c, f,
n );
4969#ifdef __GXX_EXPERIMENTAL_CXX0X__
4970 return std::move( fn );
Class that extends gsl_multimin_function so that it can be constructed from arbitrary function object...
function(double(*const f)(gsl::vector const volatile &), size_t const n)
Construct from a function.
function(T &c, double(T::*f)(gsl::vector const volatile &), size_t const n)
Construct from a function object and a suitable member function.
function & operator=(function const &v)
The assignment operator.
function(function &&v)
Move constructor.
function & operator=(function &&v)
Move operator.
function(double(*const f)(gsl::vector const &), size_t const n)
Construct from a function.
~function()
The destructor unshares any shared resource.
function()
The default constructor is only really useful for assigning to.
function(T &c, double(T::*f)(gsl::vector const &), size_t const n)
Construct from a function object and a suitable member function.
static double fn(gsl_vector const *x, void *params)
This is the function that gsl_multimin_function points to if function is constructed from a function ...
function(function const &v)
The copy constructor.
size_t * count
The shared reference count.
This class handles vector objects as shared handles.
function make_function(T &c, double(T::*f)(gsl::vector const &), size_t const n)
Make a gsl::multimin::function from a function object and a suitable member function.
size_t n(workspace const &w)
C++ version of gsl_rstat_n().
double b(int order, double qq)
C++ version of gsl_sf_mathieu_b().
The gsl package creates an interface to the GNU Scientific Library for C++.