|
Go to the documentation of this file.
20#include "clooptools.h"
22#include <boost/preprocessor/seq/elem.hpp>
23#include <boost/preprocessor/seq/for_each_i.hpp>
31#define REAL(R, DUMMY, ELEM) , ELEM.real()
33#define CAT_(a, b) a##b
34#define CAT(a, b) CAT_(a, b)
36#define LIB(PAIR) BOOST_PP_SEQ_ELEM(0, PAIR)
37#define LT(PAIR) BOOST_PP_SEQ_ELEM(1, PAIR)
39#define LIB_NAME(PAIR, INDEX) CAT(LIB(PAIR), INDEX)
40#define LIB_ARGS(PAIR) CAT(LIB(PAIR), _ARGS)
42#define LT_ARGS(PAIR) CAT(LIB(PAIR), _ARGS_SEQ)
43#define LT_NAME(PAIR) CAT(LIB(PAIR), 0i)
44#define LT_IDX(PAIR, INDEX) CAT(LT(PAIR), INDEX)
46#define LT_ONE(_, PAIR, I, INDEX) \
47 std::complex<double> Looptools::LIB_NAME(PAIR, \
48 INDEX)(LIB_ARGS(PAIR)) noexcept \
50 set_mu2_uv(scl2_in); \
51 return LT_NAME(PAIR)(LT_IDX(PAIR, INDEX) \
52 BOOST_PP_SEQ_FOR_EACH(REAL, , LT_ARGS(PAIR))); \
56 void Looptools::LIB(PAIR)(CAT(LIB(PAIR), coeff_t) & \
58 CAT(LIB(PAIR), _ARGS)) noexcept \
60 const int coeffs[] = {BOOST_PP_SEQ_ENUM( \
61 BOOST_PP_SEQ_TRANSFORM(APPEND, LT(PAIR), CAT(LIB(PAIR), _CSEQ)))}; \
62 ComplexType res[CAT(N, LT(PAIR))]; \
63 set_mu2_uv(scl2_in); \
66 (res BOOST_PP_SEQ_FOR_EACH(REAL, , CAT(LIB(PAIR), _ARGS_SEQ))); \
67 for (int i = 0; i < CAT(LIB(PAIR), _N); ++i) { \
68 arr.at(i) = res[coeffs[i]]; \
87 if (std::abs(scl2_in - this->current_mu2_uv) >
90 this->current_mu2_uv = scl2_in;
void flush() noexcept Flushes output of fortran routines.
void swap() noexcept Swaps stdout and stderr descriptors.
|