|
Go to the documentation of this file.
19#ifndef LOOP_LIBRARY_INTERFACE_H
20#define LOOP_LIBRARY_INTERFACE_H
22#include <boost/preprocessor/seq/enum.hpp>
23#include <boost/preprocessor/seq/for_each.hpp>
24#include <boost/preprocessor/seq/size.hpp>
25#include <boost/preprocessor/seq/transform.hpp>
29#define ARGS_TYPE(R, COMMA, ELEM) std::complex<double> ELEM,
30#define VIRTUAL(R, ARGS, NAME) virtual std::complex<double> NAME ARGS = 0;
32#define A_ARGS_SEQ (m02_in)
33#define B_ARGS_SEQ (p10_in)(m02_in)(m12_in)
34#define DB_ARGS_SEQ B_ARGS_SEQ
35#define C_ARGS_SEQ (p10_in)(p21_in)(p20_in)(m02_in)(m12_in)(m22_in)
37 (p10_in)(p21_in)(p32_in)(p30_in)(p20_in)(p31_in)(m02_in)(m12_in)(m22_in)( \
40#define A_ARGS BOOST_PP_SEQ_FOR_EACH(ARGS_TYPE, , A_ARGS_SEQ) double scl2_in
41#define B_ARGS BOOST_PP_SEQ_FOR_EACH(ARGS_TYPE, , B_ARGS_SEQ) double scl2_in
43#define C_ARGS BOOST_PP_SEQ_FOR_EACH(ARGS_TYPE, , C_ARGS_SEQ) double scl2_in
44#define D_ARGS BOOST_PP_SEQ_FOR_EACH(ARGS_TYPE, , D_ARGS_SEQ) double scl2_in
47#define B_CSEQ (0)(1)(00)
48#define DB_CSEQ (0)(1)(00)
49#define C_CSEQ (0)(1)(2)(00)(11)(12)(22)
50#define D_CSEQ (0)(1)(2)(3)(00)(11)(12)(13)(22)(23)(33)
52#define A_N BOOST_PP_SEQ_SIZE(A_CSEQ)
53#define B_N BOOST_PP_SEQ_SIZE(B_CSEQ)
54#define DB_N BOOST_PP_SEQ_SIZE(DB_CSEQ)
55#define C_N BOOST_PP_SEQ_SIZE(C_CSEQ)
56#define D_N BOOST_PP_SEQ_SIZE(D_CSEQ)
58#define APPEND(s, data, elem) data##elem
59#define A_SEQ BOOST_PP_SEQ_TRANSFORM(APPEND, A, A_CSEQ)
60#define B_SEQ BOOST_PP_SEQ_TRANSFORM(APPEND, B, B_CSEQ)
61#define DB_SEQ BOOST_PP_SEQ_TRANSFORM(APPEND, DB, DB_CSEQ)
62#define C_SEQ BOOST_PP_SEQ_TRANSFORM(APPEND, C, C_CSEQ)
63#define D_SEQ BOOST_PP_SEQ_TRANSFORM(APPEND, D, D_CSEQ)
103 BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_TRANSFORM( APPEND, a, A_CSEQ))
106 BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_TRANSFORM( APPEND, b, B_CSEQ))
109 BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_TRANSFORM( APPEND, db, DB_CSEQ))
112 BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_TRANSFORM( APPEND, c, C_CSEQ))
115 BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_TRANSFORM( APPEND, d, D_CSEQ))
interface for different one loop function libraries with conventions of DE == [arXiv:0709....
virtual void A(Acoeff_t &, BOOST_PP_SEQ_FOR_EACH(ARGS_TYPE,,(m02_in)) double scl2_in)=0
virtual void D(Dcoeff_t &, BOOST_PP_SEQ_FOR_EACH(ARGS_TYPE,,(p10_in)(p21_in)(p32_in)(p30_in)(p20_in)(p31_in)(m02_in)(m12_in)(m22_in)(m32_in)) double scl2_in)=0
virtual void DB(DBcoeff_t &, BOOST_PP_SEQ_FOR_EACH(ARGS_TYPE,,(p10_in)(m02_in)(m12_in)) double scl2_in)=0
virtual void C(Ccoeff_t &, BOOST_PP_SEQ_FOR_EACH(ARGS_TYPE,,(p10_in)(p21_in)(p20_in)(m02_in)(m12_in)(m22_in)) double scl2_in)=0
#define VIRTUAL(R, ARGS, NAME)
#define APPEND(s, data, elem)
std::array< std::complex< double >, BOOST_PP_SEQ_SIZE((0)(1)(2)(00)(11)(12)(22)) > Ccoeff_t
std::array< std::complex< double >, BOOST_PP_SEQ_SIZE((0)(1)(00)) > DBcoeff_t
std::array< std::complex< double >, BOOST_PP_SEQ_SIZE((0)) > Acoeff_t
std::array< std::complex< double >, BOOST_PP_SEQ_SIZE((0)(1)(2)(3)(00)(11)(12)(13)(22)(23)(33)) > Dcoeff_t
std::array< std::complex< double >, BOOST_PP_SEQ_SIZE((0)(1)(00)) > Bcoeff_t
|