|
Go to the documentation of this file. 1! ====================================================================
2! This file is part of FlexibleSUSY.
4! FlexibleSUSY is free software: you can redistribute it and/or modify
5! it under the terms of the GNU General Public License as published
6! by the Free Software Foundation, either version 3 of the License,
7! or (at your option) any later version.
9! FlexibleSUSY is distributed in the hope that it will be useful, but
10! WITHOUT ANY WARRANTY; without even the implied warranty of
11! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12! General Public License for more details.
14! You should have received a copy of the GNU General Public License
15! along with FlexibleSUSY. If not, see
17! ====================================================================
19#define DUMMY(a) a ## _dummy
21#define IMPL(a) STR(a ## _impl)
23#define two_point(NAME,N1,N2) \
24@subroutine DUMMY(NAME)(res, p10, m02, m12) bind(C, name=IMPL(NAME))\
25@ complex(C_DOUBLE_COMPLEX), intent(in) :: p10 \
26@ complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12 \
27@ complex(C_DOUBLE_COMPLEX), intent(out) :: res \
28@ complex(REAL64), allocatable :: Bcoeff(:,:), Bcoeffuv(:,:) \
30@ allocate(Bcoeff(0:1, 0:2)) \
31@ allocate(Bcoeffuv(0:1, 0:2)) \
32@ call B_cll(Bcoeff, Bcoeffuv, p10, m02, m12, 2) \
34@ res = Bcoeff(N1,N2) \
36@ deallocate(Bcoeff, Bcoeffuv) \
39#define three_point(NAME,N1,N2,N3) \
40@subroutine DUMMY(NAME)(res, p10, p21, p20, m02, m12, m22) bind(C, name=IMPL(NAME)) \
41@ complex(C_DOUBLE_COMPLEX), intent(in) :: p10, p21, p20 \
42@ complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12, m22 \
43@ complex(C_DOUBLE_COMPLEX), intent(out) :: res \
44@ complex(REAL64), allocatable :: Ccoeff(:,:,:), Ccoeffuv(:,:,:) \
46@ allocate(Ccoeff(0:1, 0:2, 0:2)) \
47@ allocate(Ccoeffuv(0:1, 0:2, 0:2)) \
48@ call C_cll(Ccoeff, Ccoeffuv, p10, p21, p20, m02, m12, m22, 2) \
50@ res = Ccoeff(N1,N2,N3) \
52@ deallocate(Ccoeff, Ccoeffuv) \
55#define four_point(NAME,N1,N2,N3,N4) \
56@subroutine DUMMY(NAME)(res,p10,p21,p32,p30,p20,p31,m02,m12,m22,m32) bind(C, name=IMPL(NAME)) \
57@ complex(C_DOUBLE_COMPLEX), intent(in) :: p10, p21, p32, p30, p20, p31 \
58@ complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12, m22, m32 \
59@ complex(C_DOUBLE_COMPLEX), intent(out) :: res \
60@ complex(REAL64), allocatable :: Dcoeff(:,:,:,:), Dcoeffuv(:,:,:,:) \
62@ allocate(Dcoeff(0:1, 0:2, 0:2, 0:2)) \
63@ allocate(Dcoeffuv(0:1, 0:2, 0:2, 0:2)) \
64@ call D_cll(Dcoeff,Dcoeffuv,p10,p21,p32,p30,p20,p31,m02,m12,m22,m32,2) \
66@ res = Dcoeff(N1,N2,N3,N4) \
68@ deallocate(Dcoeff, Dcoeffuv) \
71module LibCollier_wrapper
73 use, intrinsic :: iso_c_binding
74 use, intrinsic :: iso_fortran_env
80 call SetDeltaIR_cll(0 d0, 0 d0)
84 real(C_DOUBLE), intent(in) :: scl2
86 call SetMuUV2_cll(scl2)
87 call SetMuIR2_cll(scl2)
90 subroutine A0_dummy(res, m02) bind( C, name='A0_impl')
91 complex(C_DOUBLE_COMPLEX), intent(in) :: m02
92 complex(C_DOUBLE_COMPLEX), intent(out) :: res
97 subroutine B0_dummy(res, p10, m02, m12) bind( C, name='B0_impl')
98 complex(C_DOUBLE_COMPLEX), intent(in) :: p10
99 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12
100 complex(C_DOUBLE_COMPLEX), intent(out) :: res
102 call B0_cll(res, p10, m02, m12)
128 subroutine get_T1_dummy(a,m02) bind( C, name=' get_A_impl')
129 complex(C_DOUBLE_COMPLEX), intent(in) :: m02
130 complex(C_DOUBLE_COMPLEX), intent(out), dimension(1) :: a
131 complex(REAL64), allocatable :: Acoeff(:), Acoeffuv(:)
134 allocate(Acoeffuv(0:0))
136 call A_cll( Acoeff,Acoeffuv,m02,0)
139 deallocate( Acoeff,Acoeffuv)
142 subroutine get_T2_dummy(b,p10,m02,m12) bind( C, name=' get_B_impl')
143 complex(C_DOUBLE_COMPLEX), intent(in) :: p10
144 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12
145 complex(C_DOUBLE_COMPLEX), intent(out), dimension(3) :: b
146 complex(REAL64), allocatable :: Bcoeff(:,:), Bcoeffuv(:,:)
148 allocate(Bcoeff(0:1,0:2))
149 allocate(Bcoeffuv(0:1,0:2))
150 call B_cll(Bcoeff, Bcoeffuv, p10, m02, m12, 2)
155 deallocate(Bcoeff,Bcoeffuv)
158 subroutine get_T3_dummy(c,p10,p21,p20,m02,m12,m22) bind( C, name=' get_C_impl')
159 complex(C_DOUBLE_COMPLEX), intent(in) :: p10, p21, p20
160 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12, m22
161 complex(C_DOUBLE_COMPLEX), intent(out), dimension(7) :: c
162 complex(REAL64), allocatable :: Ccoeff(:,:,:), Ccoeffuv(:,:,:)
164 allocate(Ccoeff(0:1,0:2,0:2))
165 allocate(Ccoeffuv(0:1,0:2,0:2))
166 call C_cll(Ccoeff, Ccoeffuv, p10, p21, p20, m02, m12, m22, 2)
175 deallocate(Ccoeff,Ccoeffuv)
178 subroutine get_T4_dummy(d,p10,p21,p32,p30,p20,p31,m02,m12,m22,m32) bind( C, name=' get_D_impl')
179 complex(C_DOUBLE_COMPLEX), intent(in) :: p10, p21, p32, p30, p20, p31
180 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12, m22, m32
181 complex(C_DOUBLE_COMPLEX), intent(out), dimension(11) :: d
182 complex(REAL64), allocatable :: TNcoeff(:),TNcoeffuv(:)
184 allocate(TNcoeff(11))
185 allocate(TNcoeffuv(11))
187 call TN_cll(TNcoeff,TNcoeffuv,[ p10,p21,p32,p30,p20,p31 ],[ m02,m12,m22,m32 ],4,2)
192 deallocate(TNcoeff,TNcoeffuv)
#define three_point(NAME, N1, N2, N3)
either version of the License
#define four_point(NAME, N1, N2, N3, N4)
#define two_point(NAME, N1, N2)
without even the implied warranty of !MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE See the GNU !General Public License for more details !You should have received a copy of the GNU General Public License !along with FlexibleSUSY If not
either version of the but !WITHOUT ANY WARRANTY
void initialize_collier_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 > *)
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 set_mu2_uv_impl(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_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() C(cc)) coeff_t &arr
void() A(aa)) coeff_t &arr
double C0(double m1, double m2, double m3) noexcept (arguments are interpreted as unsquared)
double D0(double m1, double m2, double m3, double m4) noexcept (arguments are interpreted as unsquared)
double * end(GSL_vector &v) iterator to end of GSL_vector
subroutine set_mu2_uv_dummy(scl2)
subroutine initialize_collier_dummy()
double d0(double m1, double m2, double m3, double m4) noexcept
If[spec=!=$Failed, Pole[M[hh]]/.(HSSUSY/. spec), 0]
|