Documentation of MARTY
A Modern ARtificial Theoretical phYsicist
looptools_quad_extension.h
Go to the documentation of this file.
1 // This file is part of MARTY.
2 //
3 // MARTY is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, either version 3 of the License, or
6 // (at your option) any later version.
7 //
8 // MARTY is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with MARTY. If not, see <https://www.gnu.org/licenses/>.
15 
23 #ifndef CSL_LIB_LOOPTOOLS_H_INCLUDED
24 #define CSL_LIB_LOOPTOOLS_H_INCLUDED
25 
26 #include <complex>
27 #include <quadmath.h>
28 #include "clooptools.h"
29 
30 namespace mty {
31 
32 inline __complex128 A0iCq(
33  int id,
34  __complex128 const &m1
35  )
36 {
37  const std::complex<__float128> res = A0iC(
38  id,
39  std::complex<__float128>(crealq(m1), cimagq(m1))
40  );
41  return __complex128{res.real(), res.imag()};
42 }
43 
44 inline __complex128 B0iCq(
45  int id,
46  __complex128 const &p1,
47  __complex128 const &m1,
48  __complex128 const &m2
49  )
50 {
51  const std::complex<__float128> res = B0iC(
52  id,
53  std::complex<__float128>(crealq(p1), cimagq(p1)),
54  std::complex<__float128>(crealq(m1), cimagq(m1)),
55  std::complex<__float128>(crealq(m2), cimagq(m2))
56  );
57  return __complex128{res.real(), res.imag()};
58 }
59 
60 inline __complex128 C0iCq(
61  int id,
62  __complex128 const &p1,
63  __complex128 const &p2,
64  __complex128 const &p3,
65  __complex128 const &m1,
66  __complex128 const &m2,
67  __complex128 const &m3
68  )
69 {
70  const std::complex<__float128> res = ::C0iC(
71  id,
72  std::complex<__float128>(crealq(p1), cimagq(p1)),
73  std::complex<__float128>(crealq(p2), cimagq(p2)),
74  std::complex<__float128>(crealq(p3), cimagq(p3)),
75  std::complex<__float128>(crealq(m1), cimagq(m1)),
76  std::complex<__float128>(crealq(m2), cimagq(m2)),
77  std::complex<__float128>(crealq(m3), cimagq(m3))
78  );
79  return __complex128{res.real(), res.imag()};
80 }
81 
82 inline __complex128 D0iCq(
83  int id,
84  __complex128 const &p1,
85  __complex128 const &p2,
86  __complex128 const &p3,
87  __complex128 const &p4,
88  __complex128 const &p5,
89  __complex128 const &p6,
90  __complex128 const &m1,
91  __complex128 const &m2,
92  __complex128 const &m3,
93  __complex128 const &m4
94  )
95 {
96  const std::complex<__float128> res = ::D0iC(
97  id,
98  std::complex<__float128>(crealq(p1), cimagq(p1)),
99  std::complex<__float128>(crealq(p2), cimagq(p2)),
100  std::complex<__float128>(crealq(p3), cimagq(p3)),
101  std::complex<__float128>(crealq(p4), cimagq(p4)),
102  std::complex<__float128>(crealq(p5), cimagq(p5)),
103  std::complex<__float128>(crealq(p6), cimagq(p6)),
104  std::complex<__float128>(crealq(m1), cimagq(m1)),
105  std::complex<__float128>(crealq(m2), cimagq(m2)),
106  std::complex<__float128>(crealq(m3), cimagq(m3)),
107  std::complex<__float128>(crealq(m4), cimagq(m4))
108  );
109  return __complex128{res.real(), res.imag()};
110 }
111 
112 inline __complex128 E0iCq(
113  int id,
114  __complex128 const &p1,
115  __complex128 const &p2,
116  __complex128 const &p3,
117  __complex128 const &p4,
118  __complex128 const &p5,
119  __complex128 const &p6,
120  __complex128 const &p7,
121  __complex128 const &p8,
122  __complex128 const &p9,
123  __complex128 const &p10,
124  __complex128 const &m1,
125  __complex128 const &m2,
126  __complex128 const &m3,
127  __complex128 const &m4,
128  __complex128 const &m5
129  )
130 {
131  const std::complex<__float128> res = ::E0iC(
132  id,
133  std::complex<__float128>(crealq(p1), cimagq(p1)),
134  std::complex<__float128>(crealq(p2), cimagq(p2)),
135  std::complex<__float128>(crealq(p3), cimagq(p3)),
136  std::complex<__float128>(crealq(p4), cimagq(p4)),
137  std::complex<__float128>(crealq(p5), cimagq(p5)),
138  std::complex<__float128>(crealq(p6), cimagq(p6)),
139  std::complex<__float128>(crealq(p7), cimagq(p7)),
140  std::complex<__float128>(crealq(p8), cimagq(p8)),
141  std::complex<__float128>(crealq(p9), cimagq(p9)),
142  std::complex<__float128>(crealq(p10), cimagq(p10)),
143  std::complex<__float128>(crealq(m1), cimagq(m1)),
144  std::complex<__float128>(crealq(m2), cimagq(m2)),
145  std::complex<__float128>(crealq(m3), cimagq(m3)),
146  std::complex<__float128>(crealq(m4), cimagq(m4)),
147  std::complex<__float128>(crealq(m5), cimagq(m5))
148  );
149 
150  return __complex128{res.real(), res.imag()};
151 }
152 
153 } // End of namespace mty
154 
155 #endif
Namespace of MARTY.
Definition: 2HDM.h:31