12   enum intmethod {SUAVE, DIVONNE, VEGAS, CUHRE};
 
  14   enum limtype {NUM, INF};
 
  17     limit(const double& _number);
 
  18     limit(const limtype& _LimType);
 
  19     const limtype LimType;
 
  23   typedef int (*integrand_t)(const int *ndim, const double x[],
 
  24                              const int *ncomp, double f[], void *userdata);
 
  26   typedef int (*integrand_tc)(const int *ndim, const double x[],
 
  27                               const int *ncomp, std::complex<double> f[], void *userdata);
 
  29   typedef std::vector<std::array<limit,2>> limits;
 
  32     int seed, flags, nvec, mineval, maxeval;
 
  33     double epsrel, epsabs;
 
  34     const char *statefile;
 
  37       seed(0), flags(0), nvec(1), mineval(0), maxeval(50000),
 
  38       epsrel(1e-3), epsabs(1e-12), statefile(NULL), spin(NULL)
 
  46         nnew(1000), flatness(25.), nmin(2)
 
  51       int key1, key2, key3, maxpass, ngiven, ldxgiven, nextra;
 
  52       double border, maxchisq, mindeviation;
 
  54       peakfinder_t peakfinder;
 
  56         key1(47), key2(1), key3(1), maxpass(5), border(0), maxchisq(10),
 
  57         mindeviation(.25), ngiven(0), ldxgiven(0), xgiven(NULL),
 
  58         peakfinder(NULL), nextra(0)
 
  63       int nstart, nincrease, nbatch, gridno;
 
  65         nstart(1000), nincrease(500), nbatch(1000), gridno(0)
 
  82   extern const options DefaultOptions;
 
  84   int integrate (integrand_t integrand, const intmethod& IntMethod, 
 
  85                  const limits& Limits, const int& ncomp,
 
  87                  int& neval, int& fail, double integral[], 
 
  88                  double error[], double prob[], 
 
  89                  const unsigned int& verbosity=0, 
 
  90                  void *userdata=NULL, const options& Options=DefaultOptions);
 
  92   int integrate (integrand_tc integrand, const intmethod& IntMethod, 
 
  93                  const limits& Limits, const int& ncomp,
 
  95                  int& neval, int& fail, std::complex<double> integral[], 
 
  96                  std::complex<double> error[], std::complex<double> prob[], 
 
  97                  const unsigned int& verbosity=0, 
 
  98                  void *userdata=NULL, const options& Options=DefaultOptions);