ROOT logo
// @(#)root/mathmore:$Id: GSLIntegrator.h 22689 2008-03-17 16:21:23Z rdm $
// Authors: L. Moneta, A. Zsenei   08/2005

 /**********************************************************************
  *                                                                    *
  * Copyright (c) 2004 ROOT Foundation,  CERN/PH-SFT                   *
  *                                                                    *
  * This library is free software; you can redistribute it and/or      *
  * modify it under the terms of the GNU General Public License        *
  * as published by the Free Software Foundation; either version 2     *
  * of the License, or (at your option) any later version.             *
  *                                                                    *
  * This library is distributed in the hope that it will be useful,    *
  * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   *
  * General Public License for more details.                           *
  *                                                                    *
  * You should have received a copy of the GNU General Public License  *
  * along with this library (see file COPYING); if not, write          *
  * to the Free Software Foundation, Inc., 59 Temple Place, Suite      *
  * 330, Boston, MA 02111-1307 USA, or contact the author.             *
  *                                                                    *
  **********************************************************************/

// Header file for class GSLIntegrator
//
// Created by: Lorenzo Moneta  at Thu Nov 11 14:22:32 2004
//
// Last update: Thu Nov 11 14:22:32 2004
//
#ifndef ROOT_Math_GSLIntegrator
#define ROOT_Math_GSLIntegrator


#ifndef ROOT_Math_VirtualIntegrator
#include "Math/VirtualIntegrator.h"
#endif

#ifndef ROOT_Math_IntegrationTypes
#include "Math/IntegrationTypes.h"
#endif

#ifndef ROOT_Math_IFunctionfwd
#include "Math/IFunctionfwd.h"
#endif




#ifndef ROOT_Math_GSLFunctionAdapter
#include "Math/GSLFunctionAdapter.h"
#endif

#include <vector>


/**

@defgroup Integration Numerical Integration
@ingroup NumAlgo 
*/


namespace ROOT {
namespace Math {


   
   class GSLIntegrationWorkspace;
   class GSLFunctionWrapper;
   
   //_________________________________________________________________________
   /**
      
   Class for performing numerical integration of a function in one dimension.
   It uses the numerical integration algorithms of GSL, which reimplements the
   algorithms used in the QUADPACK, a numerical integration package written in Fortran.
    
   Various types of adaptive and non-adaptive integration are supported. These include
   integration over infinite and semi-infinite ranges and singular integrals.
    
   The integration type is selected using the Integration::type enumeration
   in the class constructor.
   The default type is adaptive integration with singularity
   (ADAPTIVESINGULAR or QAGS in the QUADPACK convention) applying a Gauss-Kronrod 21-point integration rule.
   In the case of ADAPTIVE type, the integration rule can also be specified via the
   Integration::GKRule. The default rule is 31 points.
    
   In the case of integration over infinite and semi-infinite ranges, the type used is always
   ADAPTIVESINGULAR applying a transformation from the original interval into (0,1).
    
   The ADAPTIVESINGULAR type is the most sophicticated type. When performances are
   important, it is then recommened to use the NONADAPTIVE type in case of smooth functions or
   ADAPTIVE with a lower Gauss-Kronrod rule.
    
   For detailed description on GSL integration algorithms see the
   <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Numerical-Integration.html">GSL Manual</A>.
    
    
   @ingroup Integration
   */
   
   
   class GSLIntegrator : public VirtualIntegratorOneDim  {
      
   public:
      
      
      
      // constructors
      
      
      /** Default constructor of GSL Integrator for Adaptive Singular integration
      
      @param absTol desired absolute Error
      @param relTol desired relative Error
      @param size maximum number of sub-intervals
      */
      
      GSLIntegrator(double absTol = 1.E-9, double relTol = 1E-6, size_t size = 1000);
      
      
      
      
      /** constructor of GSL Integrator. In the case of Adaptive integration the Gauss-Krond rule of 31 points is used
         
         @param type type of integration. The possible types are defined in the Integration::Type enumeration
         @param absTol desired absolute Error
         @param relTol desired relative Error
         @param size maximum number of sub-intervals
         */
      
      
      GSLIntegrator(const Integration::Type type, double absTol = 1.E-9, double relTol = 1E-6, size_t size = 1000);
      
      
      /**
         generic constructor for GSL Integrator
       
       @param type type of integration. The possible types are defined in the Integration::Type enumeration
       @param rule Gauss-Kronrod rule. It is used only for ADAPTIVE::Integration types. The possible rules are defined in the Integration::GKRule enumeration
       @param absTol desired absolute Error
       @param relTol desired relative Error
       @param size maximum number of sub-intervals
       
       */
      
      GSLIntegrator(const Integration::Type type, const Integration::GKRule rule, double absTol = 1.E-9, double relTol = 1E-6, size_t size = 1000);
      

      /** constructor of GSL Integrator. In the case of Adaptive integration the Gauss-Krond rule of 31 points is used
          This is used by the plug-in manager (need a char * instead of enumerations)
         
         @param type type of integration. The possible types are defined in the Integration::Type enumeration
         @param rule Gauss-Kronrod rule (from 1 to 6)
         @param absTol desired absolute Error
         @param relTol desired relative Error
         @param size maximum number of sub-intervals
         */            
      GSLIntegrator(const char *  type, int rule, double absTol, double relTol, size_t size );
      
      virtual ~GSLIntegrator();
      //~GSLIntegrator();
      
      // disable copy ctrs
   private:
         
      GSLIntegrator(const GSLIntegrator &);
      GSLIntegrator & operator=(const GSLIntegrator &);
      
   public:
         
         
         // template methods for generic functors
         
         /**
         method to set the a generic integration function
          
          @param f integration function. The function type must implement the assigment operator, <em>  double  operator() (  double  x ) </em>
          
          */
         
         
      void SetFunction(const IGenFunction &f, bool copyFunc = false); 

      /**
         Set function from a GSL pointer function type 
       */
      void SetFunction( GSLFuncPointer f, void * p = 0); 
      
      // methods using IGenFunction
      
      /**
         evaluate the Integral of a function f over the defined interval (a,b)
       @param f integration function. The function type must implement the mathlib::IGenFunction interface
       @param a lower value of the integration interval
       @param b upper value of the integration interval
       */
      
      double Integral(const IGenFunction & f, double a, double b);
      
      
      /**
         evaluate the Integral of a function f over the infinite interval (-inf,+inf)
       @param f integration function. The function type must implement the mathlib::IGenFunction interface
       */

      double Integral(const IGenFunction & f);
   
      /**
	evaluate the Cauchy principal value of the integral of  a previously defined function f over 
        the defined interval (a,b) with a singularity at c 
        @param a lower interval value
        @param b lower interval value
        @param c singular value of f
        */   
      double IntegralCauchy(double a, double b, double c);

      /**
	evaluate the Cauchy principal value of the integral of  a function f over the defined interval (a,b) 
        with a singularity at c 
        @param f integration function. The function type must implement the mathlib::IGenFunction interface
        @param a lower interval value
        @param b lower interval value
        @param c singular value of f
      */
      double IntegralCauchy(const IGenFunction & f, double a, double b, double c);
      
      /**
         evaluate the Integral of a function f over the semi-infinite interval (a,+inf)
       @param f integration function. The function type must implement the mathlib::IGenFunction interface
       @param a lower value of the integration interval
       
       */
      double IntegralUp(const IGenFunction & f, double a );
      
      /**
         evaluate the Integral of a function f over the over the semi-infinite interval (-inf,b)
       @param f integration function. The function type must implement the mathlib::IGenFunction interface
       @param b upper value of the integration interval
       */
      double IntegralLow(const IGenFunction & f, double b );
      
      /**
         evaluate the Integral of a function f with known singular points over the defined Integral (a,b)
       @param f integration function. The function type must implement the mathlib::IGenFunction interface
       @param pts vector containing both the function singular points and the lower/upper edges of the interval. The vector must have as first element the lower edge of the integration Integral ( \a a) and last element the upper value.
       
       */
      double Integral(const IGenFunction & f, const std::vector<double> & pts );
      
      // evaluate using cached function
      
      /**
         evaluate the Integral over the defined interval (a,b) using the function previously set with GSLIntegrator::SetFunction method
       @param a lower value of the integration interval
       @param b upper value of the integration interval
       */
      
      double Integral(double a, double b);

      
      /**
         evaluate the Integral over the infinite interval (-inf,+inf) using the function previously set with GSLIntegrator::SetFunction method.
       */
      double Integral( );
      
      /**
         evaluate the Integral of a function f over the semi-infinite interval (a,+inf) using the function previously set with GSLIntegrator::SetFunction method.
       @param a lower value of the integration interval
       */
      double IntegralUp(double a );
      
      /**
         evaluate the Integral of a function f over the over the semi-infinite interval (-inf,b) using the function previously set with GSLIntegrator::SetFunction method.
       @param b upper value of the integration interval
       */
      double IntegralLow( double b );
      
      /**
         evaluate the Integral over the defined interval (a,b) using the function previously set with GSLIntegrator::SetFunction method. The function has known singular points.
       @param pts vector containing both the function singular points and the lower/upper edges of the interval. The vector must have as first element the lower edge of the integration Integral ( \a a) and last element the upper value.
       
       */
      double Integral( const std::vector<double> & pts);
      
      // evaluate using free function pointer (same GSL signature)
      
      /**
         signature for function pointers used by GSL
       */
      //typedef double ( * GSLFuncPointer ) ( double, void * );
      
      /**
         evaluate the Integral of  of a function f over the defined interval (a,b) passing a free function pointer
       The integration function must be a free function and have a signature consistent with GSL functions:
       
       <em>double my_function ( double x, void * p ) { ...... } </em>
       
       This method is the most efficient since no internal adapter to GSL function is created.
       @param f pointer to the integration function
       @param p pointer to the Parameters of the function
       @param a lower value of the integration interval
       @param b upper value of the integration interval
       
       */
      double Integral(GSLFuncPointer f, void * p, double a, double b);
      
      /**
         evaluate the Integral  of a function f over the infinite interval (-inf,+inf) passing a free function pointer
       */
      double Integral(GSLFuncPointer f, void * p);
      
      /**
         evaluate the Integral of a function f over the semi-infinite interval (a,+inf) passing a free function pointer
       */
      double IntegralUp(GSLFuncPointer f, void * p, double a);
      
      /**
         evaluate the Integral of a function f over the over the semi-infinite interval (-inf,b) passing a free function pointer
       */
      double IntegralLow(GSLFuncPointer f, void * p, double b);
      
      /**
         evaluate the Integral of a function f with knows singular points over the over a defined interval passing a free function pointer
       */
      double Integral(GSLFuncPointer f, void * p, const std::vector<double> & pts);
      
      /**
         return  the Result of the last Integral calculation
       */
      double Result() const;
      
      /**
         return the estimate of the absolute Error of the last Integral calculation
       */
      double Error() const;
      
      /**
         return the Error Status of the last Integral calculation
       */
      int Status() const;
      
      
      // setter for control Parameters  (getters are not needed so far )
      
      /**
         set the desired relative Error
       */
      void SetRelTolerance(double relTolerance);
      
      
      /**
         set the desired absolute Error
       */
      void SetAbsTolerance(double absTolerance);
      
      /**
         set the integration rule (Gauss-Kronrod rule).
       The possible rules are defined in the Integration::GKRule enumeration.
       The integration rule can be modified only for ADAPTIVE type integrations
       */
      void SetIntegrationRule(Integration::GKRule );
      
      
      
   protected:
         
      // internal method to check validity of GSL function pointer
      bool CheckFunction(); 

      
   private:
         
      Integration::Type fType;
      Integration::GKRule fRule;
      double fAbsTol;
      double fRelTol;
      size_t fSize;
      size_t fMaxIntervals;
      
      // cache Error, Result and Status of integration
      
      double fResult;
      double fError;
      int fStatus;
      
      // GSLIntegrationAlgorithm * fAlgorithm;
      
      GSLFunctionWrapper  *     fFunction;
      GSLIntegrationWorkspace * fWorkspace;
     
   };
   
   



} // namespace Math
} // namespace ROOT


#endif /* ROOT_Math_GSLIntegrator */
 GSLIntegrator.h:1
 GSLIntegrator.h:2
 GSLIntegrator.h:3
 GSLIntegrator.h:4
 GSLIntegrator.h:5
 GSLIntegrator.h:6
 GSLIntegrator.h:7
 GSLIntegrator.h:8
 GSLIntegrator.h:9
 GSLIntegrator.h:10
 GSLIntegrator.h:11
 GSLIntegrator.h:12
 GSLIntegrator.h:13
 GSLIntegrator.h:14
 GSLIntegrator.h:15
 GSLIntegrator.h:16
 GSLIntegrator.h:17
 GSLIntegrator.h:18
 GSLIntegrator.h:19
 GSLIntegrator.h:20
 GSLIntegrator.h:21
 GSLIntegrator.h:22
 GSLIntegrator.h:23
 GSLIntegrator.h:24
 GSLIntegrator.h:25
 GSLIntegrator.h:26
 GSLIntegrator.h:27
 GSLIntegrator.h:28
 GSLIntegrator.h:29
 GSLIntegrator.h:30
 GSLIntegrator.h:31
 GSLIntegrator.h:32
 GSLIntegrator.h:33
 GSLIntegrator.h:34
 GSLIntegrator.h:35
 GSLIntegrator.h:36
 GSLIntegrator.h:37
 GSLIntegrator.h:38
 GSLIntegrator.h:39
 GSLIntegrator.h:40
 GSLIntegrator.h:41
 GSLIntegrator.h:42
 GSLIntegrator.h:43
 GSLIntegrator.h:44
 GSLIntegrator.h:45
 GSLIntegrator.h:46
 GSLIntegrator.h:47
 GSLIntegrator.h:48
 GSLIntegrator.h:49
 GSLIntegrator.h:50
 GSLIntegrator.h:51
 GSLIntegrator.h:52
 GSLIntegrator.h:53
 GSLIntegrator.h:54
 GSLIntegrator.h:55
 GSLIntegrator.h:56
 GSLIntegrator.h:57
 GSLIntegrator.h:58
 GSLIntegrator.h:59
 GSLIntegrator.h:60
 GSLIntegrator.h:61
 GSLIntegrator.h:62
 GSLIntegrator.h:63
 GSLIntegrator.h:64
 GSLIntegrator.h:65
 GSLIntegrator.h:66
 GSLIntegrator.h:67
 GSLIntegrator.h:68
 GSLIntegrator.h:69
 GSLIntegrator.h:70
 GSLIntegrator.h:71
 GSLIntegrator.h:72
 GSLIntegrator.h:73
 GSLIntegrator.h:74
 GSLIntegrator.h:75
 GSLIntegrator.h:76
 GSLIntegrator.h:77
 GSLIntegrator.h:78
 GSLIntegrator.h:79
 GSLIntegrator.h:80
 GSLIntegrator.h:81
 GSLIntegrator.h:82
 GSLIntegrator.h:83
 GSLIntegrator.h:84
 GSLIntegrator.h:85
 GSLIntegrator.h:86
 GSLIntegrator.h:87
 GSLIntegrator.h:88
 GSLIntegrator.h:89
 GSLIntegrator.h:90
 GSLIntegrator.h:91
 GSLIntegrator.h:92
 GSLIntegrator.h:93
 GSLIntegrator.h:94
 GSLIntegrator.h:95
 GSLIntegrator.h:96
 GSLIntegrator.h:97
 GSLIntegrator.h:98
 GSLIntegrator.h:99
 GSLIntegrator.h:100
 GSLIntegrator.h:101
 GSLIntegrator.h:102
 GSLIntegrator.h:103
 GSLIntegrator.h:104
 GSLIntegrator.h:105
 GSLIntegrator.h:106
 GSLIntegrator.h:107
 GSLIntegrator.h:108
 GSLIntegrator.h:109
 GSLIntegrator.h:110
 GSLIntegrator.h:111
 GSLIntegrator.h:112
 GSLIntegrator.h:113
 GSLIntegrator.h:114
 GSLIntegrator.h:115
 GSLIntegrator.h:116
 GSLIntegrator.h:117
 GSLIntegrator.h:118
 GSLIntegrator.h:119
 GSLIntegrator.h:120
 GSLIntegrator.h:121
 GSLIntegrator.h:122
 GSLIntegrator.h:123
 GSLIntegrator.h:124
 GSLIntegrator.h:125
 GSLIntegrator.h:126
 GSLIntegrator.h:127
 GSLIntegrator.h:128
 GSLIntegrator.h:129
 GSLIntegrator.h:130
 GSLIntegrator.h:131
 GSLIntegrator.h:132
 GSLIntegrator.h:133
 GSLIntegrator.h:134
 GSLIntegrator.h:135
 GSLIntegrator.h:136
 GSLIntegrator.h:137
 GSLIntegrator.h:138
 GSLIntegrator.h:139
 GSLIntegrator.h:140
 GSLIntegrator.h:141
 GSLIntegrator.h:142
 GSLIntegrator.h:143
 GSLIntegrator.h:144
 GSLIntegrator.h:145
 GSLIntegrator.h:146
 GSLIntegrator.h:147
 GSLIntegrator.h:148
 GSLIntegrator.h:149
 GSLIntegrator.h:150
 GSLIntegrator.h:151
 GSLIntegrator.h:152
 GSLIntegrator.h:153
 GSLIntegrator.h:154
 GSLIntegrator.h:155
 GSLIntegrator.h:156
 GSLIntegrator.h:157
 GSLIntegrator.h:158
 GSLIntegrator.h:159
 GSLIntegrator.h:160
 GSLIntegrator.h:161
 GSLIntegrator.h:162
 GSLIntegrator.h:163
 GSLIntegrator.h:164
 GSLIntegrator.h:165
 GSLIntegrator.h:166
 GSLIntegrator.h:167
 GSLIntegrator.h:168
 GSLIntegrator.h:169
 GSLIntegrator.h:170
 GSLIntegrator.h:171
 GSLIntegrator.h:172
 GSLIntegrator.h:173
 GSLIntegrator.h:174
 GSLIntegrator.h:175
 GSLIntegrator.h:176
 GSLIntegrator.h:177
 GSLIntegrator.h:178
 GSLIntegrator.h:179
 GSLIntegrator.h:180
 GSLIntegrator.h:181
 GSLIntegrator.h:182
 GSLIntegrator.h:183
 GSLIntegrator.h:184
 GSLIntegrator.h:185
 GSLIntegrator.h:186
 GSLIntegrator.h:187
 GSLIntegrator.h:188
 GSLIntegrator.h:189
 GSLIntegrator.h:190
 GSLIntegrator.h:191
 GSLIntegrator.h:192
 GSLIntegrator.h:193
 GSLIntegrator.h:194
 GSLIntegrator.h:195
 GSLIntegrator.h:196
 GSLIntegrator.h:197
 GSLIntegrator.h:198
 GSLIntegrator.h:199
 GSLIntegrator.h:200
 GSLIntegrator.h:201
 GSLIntegrator.h:202
 GSLIntegrator.h:203
 GSLIntegrator.h:204
 GSLIntegrator.h:205
 GSLIntegrator.h:206
 GSLIntegrator.h:207
 GSLIntegrator.h:208
 GSLIntegrator.h:209
 GSLIntegrator.h:210
 GSLIntegrator.h:211
 GSLIntegrator.h:212
 GSLIntegrator.h:213
 GSLIntegrator.h:214
 GSLIntegrator.h:215
 GSLIntegrator.h:216
 GSLIntegrator.h:217
 GSLIntegrator.h:218
 GSLIntegrator.h:219
 GSLIntegrator.h:220
 GSLIntegrator.h:221
 GSLIntegrator.h:222
 GSLIntegrator.h:223
 GSLIntegrator.h:224
 GSLIntegrator.h:225
 GSLIntegrator.h:226
 GSLIntegrator.h:227
 GSLIntegrator.h:228
 GSLIntegrator.h:229
 GSLIntegrator.h:230
 GSLIntegrator.h:231
 GSLIntegrator.h:232
 GSLIntegrator.h:233
 GSLIntegrator.h:234
 GSLIntegrator.h:235
 GSLIntegrator.h:236
 GSLIntegrator.h:237
 GSLIntegrator.h:238
 GSLIntegrator.h:239
 GSLIntegrator.h:240
 GSLIntegrator.h:241
 GSLIntegrator.h:242
 GSLIntegrator.h:243
 GSLIntegrator.h:244
 GSLIntegrator.h:245
 GSLIntegrator.h:246
 GSLIntegrator.h:247
 GSLIntegrator.h:248
 GSLIntegrator.h:249
 GSLIntegrator.h:250
 GSLIntegrator.h:251
 GSLIntegrator.h:252
 GSLIntegrator.h:253
 GSLIntegrator.h:254
 GSLIntegrator.h:255
 GSLIntegrator.h:256
 GSLIntegrator.h:257
 GSLIntegrator.h:258
 GSLIntegrator.h:259
 GSLIntegrator.h:260
 GSLIntegrator.h:261
 GSLIntegrator.h:262
 GSLIntegrator.h:263
 GSLIntegrator.h:264
 GSLIntegrator.h:265
 GSLIntegrator.h:266
 GSLIntegrator.h:267
 GSLIntegrator.h:268
 GSLIntegrator.h:269
 GSLIntegrator.h:270
 GSLIntegrator.h:271
 GSLIntegrator.h:272
 GSLIntegrator.h:273
 GSLIntegrator.h:274
 GSLIntegrator.h:275
 GSLIntegrator.h:276
 GSLIntegrator.h:277
 GSLIntegrator.h:278
 GSLIntegrator.h:279
 GSLIntegrator.h:280
 GSLIntegrator.h:281
 GSLIntegrator.h:282
 GSLIntegrator.h:283
 GSLIntegrator.h:284
 GSLIntegrator.h:285
 GSLIntegrator.h:286
 GSLIntegrator.h:287
 GSLIntegrator.h:288
 GSLIntegrator.h:289
 GSLIntegrator.h:290
 GSLIntegrator.h:291
 GSLIntegrator.h:292
 GSLIntegrator.h:293
 GSLIntegrator.h:294
 GSLIntegrator.h:295
 GSLIntegrator.h:296
 GSLIntegrator.h:297
 GSLIntegrator.h:298
 GSLIntegrator.h:299
 GSLIntegrator.h:300
 GSLIntegrator.h:301
 GSLIntegrator.h:302
 GSLIntegrator.h:303
 GSLIntegrator.h:304
 GSLIntegrator.h:305
 GSLIntegrator.h:306
 GSLIntegrator.h:307
 GSLIntegrator.h:308
 GSLIntegrator.h:309
 GSLIntegrator.h:310
 GSLIntegrator.h:311
 GSLIntegrator.h:312
 GSLIntegrator.h:313
 GSLIntegrator.h:314
 GSLIntegrator.h:315
 GSLIntegrator.h:316
 GSLIntegrator.h:317
 GSLIntegrator.h:318
 GSLIntegrator.h:319
 GSLIntegrator.h:320
 GSLIntegrator.h:321
 GSLIntegrator.h:322
 GSLIntegrator.h:323
 GSLIntegrator.h:324
 GSLIntegrator.h:325
 GSLIntegrator.h:326
 GSLIntegrator.h:327
 GSLIntegrator.h:328
 GSLIntegrator.h:329
 GSLIntegrator.h:330
 GSLIntegrator.h:331
 GSLIntegrator.h:332
 GSLIntegrator.h:333
 GSLIntegrator.h:334
 GSLIntegrator.h:335
 GSLIntegrator.h:336
 GSLIntegrator.h:337
 GSLIntegrator.h:338
 GSLIntegrator.h:339
 GSLIntegrator.h:340
 GSLIntegrator.h:341
 GSLIntegrator.h:342
 GSLIntegrator.h:343
 GSLIntegrator.h:344
 GSLIntegrator.h:345
 GSLIntegrator.h:346
 GSLIntegrator.h:347
 GSLIntegrator.h:348
 GSLIntegrator.h:349
 GSLIntegrator.h:350
 GSLIntegrator.h:351
 GSLIntegrator.h:352
 GSLIntegrator.h:353
 GSLIntegrator.h:354
 GSLIntegrator.h:355
 GSLIntegrator.h:356
 GSLIntegrator.h:357
 GSLIntegrator.h:358
 GSLIntegrator.h:359
 GSLIntegrator.h:360
 GSLIntegrator.h:361
 GSLIntegrator.h:362
 GSLIntegrator.h:363
 GSLIntegrator.h:364
 GSLIntegrator.h:365
 GSLIntegrator.h:366
 GSLIntegrator.h:367
 GSLIntegrator.h:368
 GSLIntegrator.h:369
 GSLIntegrator.h:370
 GSLIntegrator.h:371
 GSLIntegrator.h:372
 GSLIntegrator.h:373
 GSLIntegrator.h:374
 GSLIntegrator.h:375
 GSLIntegrator.h:376
 GSLIntegrator.h:377
 GSLIntegrator.h:378
 GSLIntegrator.h:379
 GSLIntegrator.h:380
 GSLIntegrator.h:381
 GSLIntegrator.h:382
 GSLIntegrator.h:383
 GSLIntegrator.h:384
 GSLIntegrator.h:385
 GSLIntegrator.h:386
 GSLIntegrator.h:387
 GSLIntegrator.h:388
 GSLIntegrator.h:389
 GSLIntegrator.h:390
 GSLIntegrator.h:391
 GSLIntegrator.h:392
 GSLIntegrator.h:393
 GSLIntegrator.h:394
 GSLIntegrator.h:395
 GSLIntegrator.h:396
 GSLIntegrator.h:397
 GSLIntegrator.h:398
 GSLIntegrator.h:399
 GSLIntegrator.h:400
 GSLIntegrator.h:401
 GSLIntegrator.h:402
 GSLIntegrator.h:403