]> git.treefish.org Git - cubaint.git/blob - cubaint_internal.hpp
Adapted to new cuba interface
[cubaint.git] / cubaint_internal.hpp
1 #ifndef CUBAINT_INTERNAL_HPP
2 #define CUBAINT_INTERNAL_HPP
3
4 namespace cubaint {
5   typedef void (*kernelmap_intvar)(const double& x01, double& xab,
6                                    const std::array<limit,2>& range);
7
8   extern const kernelmap_intvar kernelmap_intvars[];
9
10   void kernelmap_intvar_numnum(const double& x01, double& xab,
11                                const std::array<limit,2>& range);
12   void kernelmap_intvar_numinf(const double& x01, double& xab,
13                                const std::array<limit,2>& range);
14   void kernelmap_intvar_infnum(const double& x01, double& xab,
15                                const std::array<limit,2>& range);
16   void kernelmap_intvar_infinf(const double& x01, double& xab,
17                                const std::array<limit,2>& range);
18
19   typedef double (*kernelmap_intmulti)(const double& x01,
20                                        const std::array<limit,2>& range);
21   
22   double kernelmap_intmulti_numnum(const double& x01,
23                                    const std::array<limit,2>& range);
24   double kernelmap_intmulti_numinf(const double& x01,
25                                    const std::array<limit,2>& range);
26   double kernelmap_intmulti_infnum(const double& x01,
27                                    const std::array<limit,2>& range);
28   double kernelmap_intmulti_infinf(const double& x01,
29                                    const std::array<limit,2>& range);
30
31   extern const kernelmap_intmulti kernelmap_intmultis[];
32
33   template <typename integrandtype, typename compreal>
34   int masterintegrand(const int *ndim, const double x01[],
35                       const int *ncomp, double f[], void *MetaUserData);
36
37   template <typename integrandtype>
38   struct metauserdata {
39     void *userdata;
40     const limits& Limits;
41     integrandtype integrand;
42
43     metauserdata (void *_userdata, const limits& _Limits, 
44                   integrandtype _integrand) :
45       userdata(_userdata), Limits(_Limits), integrand(_integrand)
46     {};
47   };
48
49   template <typename integrandtype, typename compreal>
50   int _integrate (integrandtype integrand, const intmethod& IntMethod,
51                   const limits& Limits, const int& ncomp,
52                   int& nregions,
53                   int& neval, int& fail, compreal integral[], 
54                   compreal error[], compreal prob[], 
55                   const unsigned int& verbosity=0, void *userdata=NULL,
56                   const options& Options=DefaultOptions);
57 };
58
59 #endif