flexiblesusy is hosted by Hepforge, IPPP Durham
FlexibleSUSY
library_collier.cpp File Reference
#include "library_collier.hpp"
#include "fortran_utils.hpp"
#include <boost/preprocessor/arithmetic/sub.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>
#include <limits>
Include dependency graph for library_collier.cpp:

Go to the source code of this file.

Namespaces

namespace  flexiblesusy
 
namespace  flexiblesusy::looplibrary
 

Macros

#define A_ARGS_N   BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(A_ARGS_SEQ), 1)
 
#define B_ARGS_N   BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(B_ARGS_SEQ), 1)
 
#define C_ARGS_N   BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(C_ARGS_SEQ), 1)
 
#define COLLIER_ARGS(N)    BOOST_PP_REPEAT(N, COLLIER_TYPE, ) const std::complex<double>*
 
#define COLLIER_B(R, ARGS, NAME)
 
#define COLLIER_C(R, ARGS, NAME)
 
#define COLLIER_D(R, ARGS, NAME)
 
#define COLLIER_TYPE(Z, N, TEXT)   const std::complex<double>*,
 
#define D_ARGS_N   BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(D_ARGS_SEQ), 1)
 
#define IMPL(R, ARGS, NAME)    void BOOST_PP_CAT(NAME, _impl)(std::complex<double>*, COLLIER_ARGS(ARGS));
 

Functions

void get_A_impl (const std::complex< double >[BOOST_PP_SEQ_SIZE((0))], BOOST_PP_REPEAT(BOOST_PP_SUB(BOOST_PP_SEQ_SIZE((m02_in)), 1), COLLIER_TYPE,) const std::complex< double > *)
 
void get_B_impl (const std::complex< double >[BOOST_PP_SEQ_SIZE((0)(1)(00))], BOOST_PP_REPEAT(BOOST_PP_SUB(BOOST_PP_SEQ_SIZE((p10_in)(m02_in)(m12_in)), 1), COLLIER_TYPE,) const std::complex< double > *)
 
void get_C_impl (const std::complex< double >[BOOST_PP_SEQ_SIZE((0)(1)(2)(00)(11)(12)(22))], BOOST_PP_REPEAT(BOOST_PP_SUB(BOOST_PP_SEQ_SIZE((p10_in)(p21_in)(p20_in)(m02_in)(m12_in)(m22_in)), 1), COLLIER_TYPE,) const std::complex< double > *)
 
void get_D_impl (const std::complex< double >[BOOST_PP_SEQ_SIZE((0)(1)(2)(3)(00)(11)(12)(13)(22)(23)(33))], BOOST_PP_REPEAT(BOOST_PP_SUB(BOOST_PP_SEQ_SIZE((p10_in)(p21_in)(p32_in)(p30_in)(p20_in)(p31_in)(m02_in)(m12_in)(m22_in)(m32_in)), 1), COLLIER_TYPE,) const std::complex< double > *)
 
void initialize_collier_impl ()
 
void set_mu2_uv_impl (double *)
 

Macro Definition Documentation

◆ A_ARGS_N

#define A_ARGS_N   BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(A_ARGS_SEQ), 1)

Definition at line 26 of file library_collier.cpp.

◆ B_ARGS_N

#define B_ARGS_N   BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(B_ARGS_SEQ), 1)

Definition at line 27 of file library_collier.cpp.

◆ C_ARGS_N

#define C_ARGS_N   BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(C_ARGS_SEQ), 1)

Definition at line 28 of file library_collier.cpp.

◆ COLLIER_ARGS

#define COLLIER_ARGS (   N)     BOOST_PP_REPEAT(N, COLLIER_TYPE, ) const std::complex<double>*

Definition at line 32 of file library_collier.cpp.

◆ COLLIER_B

#define COLLIER_B (   R,
  ARGS,
  NAME 
)
Value:
std::complex<double> Collier::NAME ARGS noexcept \
{ \
const std::complex<double> p10(p10_in.real(), 0.); \
const std::complex<double> m02 = m02_in; \
const std::complex<double> m12 = m12_in; \
std::complex<double> res = 0.0; \
set_mu2_uv(scl2_in); \
BOOST_PP_CAT(NAME, _impl)(&res, &p10, &m02, &m12); \
return res; \
}

Definition at line 38 of file library_collier.cpp.

◆ COLLIER_C

#define COLLIER_C (   R,
  ARGS,
  NAME 
)
Value:
std::complex<double> Collier::NAME ARGS noexcept \
{ \
const std::complex<double> p10(p10_in.real(), 0.); \
const std::complex<double> p21(p21_in.real(), 0.); \
const std::complex<double> p20(p20_in.real(), 0.); \
const std::complex<double> m02 = m02_in; \
const std::complex<double> m12 = m12_in; \
const std::complex<double> m22 = m22_in; \
std::complex<double> res = 0.0; \
set_mu2_uv(scl2_in); \
BOOST_PP_CAT(NAME, _impl)(&res, &p10, &p21, &p20, &m02, &m12, &m22); \
return res; \
}

Definition at line 49 of file library_collier.cpp.

◆ COLLIER_D

#define COLLIER_D (   R,
  ARGS,
  NAME 
)
Value:
std::complex<double> Collier::NAME ARGS noexcept \
{ \
const std::complex<double> p10(p10_in.real(), 0.); \
const std::complex<double> p21(p21_in.real(), 0.); \
const std::complex<double> p32(p32_in.real(), 0.); \
const std::complex<double> p30(p30_in.real(), 0.); \
const std::complex<double> p20(p20_in.real(), 0.); \
const std::complex<double> p31(p31_in.real(), 0.); \
const std::complex<double> m02 = m02_in; \
const std::complex<double> m12 = m12_in; \
const std::complex<double> m22 = m22_in; \
const std::complex<double> m32 = m32_in; \
std::complex<double> res = 0.0; \
set_mu2_uv(scl2_in); \
BOOST_PP_CAT(NAME, _impl) \
(&res, &p10, &p21, &p32, &p30, &p20, &p31, &m02, &m12, &m22, &m32); \
return res; \
}

Definition at line 63 of file library_collier.cpp.

◆ COLLIER_TYPE

#define COLLIER_TYPE (   Z,
  N,
  TEXT 
)    const std::complex<double>*,

Definition at line 31 of file library_collier.cpp.

◆ D_ARGS_N

#define D_ARGS_N   BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(D_ARGS_SEQ), 1)

Definition at line 29 of file library_collier.cpp.

◆ IMPL

#define IMPL (   R,
  ARGS,
  NAME 
)     void BOOST_PP_CAT(NAME, _impl)(std::complex<double>*, COLLIER_ARGS(ARGS));

Definition at line 34 of file library_collier.cpp.

Function Documentation

◆ get_A_impl()

void get_A_impl ( const std::complex< double >  [BOOST_PP_SEQ_SIZE((0))],
BOOST_PP_REPEAT(BOOST_PP_SUB(BOOST_PP_SEQ_SIZE((m02_in)), 1), COLLIER_TYPE,) const std::complex< double > *   
)

◆ get_B_impl()

void get_B_impl ( const std::complex< double >  [BOOST_PP_SEQ_SIZE((0)(1)(00))],
BOOST_PP_REPEAT(BOOST_PP_SUB(BOOST_PP_SEQ_SIZE((p10_in)(m02_in)(m12_in)), 1), COLLIER_TYPE,) const std::complex< double > *   
)

◆ get_C_impl()

void get_C_impl ( const std::complex< double >  [BOOST_PP_SEQ_SIZE((0)(1)(2)(00)(11)(12)(22))],
BOOST_PP_REPEAT(BOOST_PP_SUB(BOOST_PP_SEQ_SIZE((p10_in)(p21_in)(p20_in)(m02_in)(m12_in)(m22_in)), 1), COLLIER_TYPE,) const std::complex< double > *   
)

◆ get_D_impl()

void get_D_impl ( const std::complex< double >  [BOOST_PP_SEQ_SIZE((0)(1)(2)(3)(00)(11)(12)(13)(22)(23)(33))],
BOOST_PP_REPEAT(BOOST_PP_SUB(BOOST_PP_SEQ_SIZE((p10_in)(p21_in)(p32_in)(p30_in)(p20_in)(p31_in)(m02_in)(m12_in)(m22_in)(m32_in)), 1), COLLIER_TYPE,) const std::complex< double > *   
)

◆ initialize_collier_impl()

void initialize_collier_impl ( )

◆ set_mu2_uv_impl()

void set_mu2_uv_impl ( double *  )