Belle II Software  release-06-00-14
pjfry.h
1 /*
2  * pjfry.h - interface header
3  *
4  * this file is part of PJFry library
5  * Copyright 2011 Valery Yundin
6  */
7 
8 #ifndef QUL_PJFRY_H
9 #define QUL_PJFRY_H
10 
11 /* if language is C++ use standard complex template type */
12 #ifdef __cplusplus
13 # include <complex>
14 # define QUL_DEFINE_COMPLEX(R, C) typedef std::complex<R> C
15 #else
16 /* if <complex.h> is included, use the C99 complex type.
17  * else define a type bit-compatible with C99 complex */
18 # if defined(_Complex_I) && defined(complex) && defined(I)
19 # define QUL_DEFINE_COMPLEX(R, C) typedef R _Complex C
20 # else
21 # define QUL_DEFINE_COMPLEX(R, C) typedef struct { R re,im; } C
22 # endif
23 #endif
24 
25 QUL_DEFINE_COMPLEX(double, pj_complex);
26 
27 #ifdef __cplusplus
28 namespace PJFry {
29  // Functions without explicit epsilon default to eps=0
30  pj_complex E0v0(double p1, double p2, double p3, double p4, double p5,
31  double s12, double s23, double s34, double s45, double s15,
32  double m1, double m2, double m3, double m4, double m5);
33  pj_complex E0v1(int i,
34  double p1, double p2, double p3, double p4, double p5,
35  double s12, double s23, double s34, double s45, double s15,
36  double m1, double m2, double m3, double m4, double m5);
37  pj_complex E0v2(int i, int j,
38  double p1, double p2, double p3, double p4, double p5,
39  double s12, double s23, double s34, double s45, double s15,
40  double m1, double m2, double m3, double m4, double m5);
41  pj_complex E0v3(int i, int j, int k,
42  double p1, double p2, double p3, double p4, double p5,
43  double s12, double s23, double s34, double s45, double s15,
44  double m1, double m2, double m3, double m4, double m5);
45  pj_complex E0v4(int i, int j, int k, int l,
46  double p1, double p2, double p3, double p4, double p5,
47  double s12, double s23, double s34, double s45, double s15,
48  double m1, double m2, double m3, double m4, double m5);
49  pj_complex E0v5(int i, int j, int k, int l, int m,
50  double p1, double p2, double p3, double p4, double p5,
51  double s12, double s23, double s34, double s45, double s15,
52  double m1, double m2, double m3, double m4, double m5);
53 
54  pj_complex E0v0(double p1, double p2, double p3, double p4, double p5,
55  double s12, double s23, double s34, double s45, double s15,
56  double m1, double m2, double m3, double m4, double m5, int ep);
57  pj_complex E0v1(int i,
58  double p1, double p2, double p3, double p4, double p5,
59  double s12, double s23, double s34, double s45, double s15,
60  double m1, double m2, double m3, double m4, double m5, int ep);
61  pj_complex E0v2(int i, int j,
62  double p1, double p2, double p3, double p4, double p5,
63  double s12, double s23, double s34, double s45, double s15,
64  double m1, double m2, double m3, double m4, double m5, int ep);
65  pj_complex E0v3(int i, int j, int k,
66  double p1, double p2, double p3, double p4, double p5,
67  double s12, double s23, double s34, double s45, double s15,
68  double m1, double m2, double m3, double m4, double m5, int ep);
69  pj_complex E0v4(int i, int j, int k, int l,
70  double p1, double p2, double p3, double p4, double p5,
71  double s12, double s23, double s34, double s45, double s15,
72  double m1, double m2, double m3, double m4, double m5, int ep);
73  pj_complex E0v5(int i, int j, int k, int l, int m,
74  double p1, double p2, double p3, double p4, double p5,
75  double s12, double s23, double s34, double s45, double s15,
76  double m1, double m2, double m3, double m4, double m5, int ep);
77 
78 
79  pj_complex D0v0(double p1, double p2, double p3, double p4,
80  double s12, double s23,
81  double m1, double m2, double m3, double m4);
82  pj_complex D0v1(int i,
83  double p1, double p2, double p3, double p4,
84  double s12, double s23,
85  double m1, double m2, double m3, double m4);
86  pj_complex D0v2(int i, int j,
87  double p1, double p2, double p3, double p4,
88  double s12, double s23,
89  double m1, double m2, double m3, double m4);
90  pj_complex D0v3(int i, int j, int k,
91  double p1, double p2, double p3, double p4,
92  double s12, double s23,
93  double m1, double m2, double m3, double m4);
94  pj_complex D0v4(int i, int j, int k, int l,
95  double p1, double p2, double p3, double p4,
96  double s12, double s23,
97  double m1, double m2, double m3, double m4);
98 
99  pj_complex D0v0(double p1, double p2, double p3, double p4,
100  double s12, double s23,
101  double m1, double m2, double m3, double m4, int ep);
102  pj_complex D0v1(int i,
103  double p1, double p2, double p3, double p4,
104  double s12, double s23,
105  double m1, double m2, double m3, double m4, int ep);
106  pj_complex D0v2(int i, int j,
107  double p1, double p2, double p3, double p4,
108  double s12, double s23,
109  double m1, double m2, double m3, double m4, int ep);
110  pj_complex D0v3(int i, int j, int k,
111  double p1, double p2, double p3, double p4,
112  double s12, double s23,
113  double m1, double m2, double m3, double m4, int ep);
114  pj_complex D0v4(int i, int j, int k, int l,
115  double p1, double p2, double p3, double p4,
116  double s12, double s23,
117  double m1, double m2, double m3, double m4, int ep);
118 
119 
120  pj_complex C0v0(double p1, double p2, double p3,
121  double m1, double m2, double m3);
122  pj_complex C0v1(int i,
123  double p1, double p2, double p3,
124  double m1, double m2, double m3);
125  pj_complex C0v2(int i, int j,
126  double p1, double p2, double p3,
127  double m1, double m2, double m3);
128  pj_complex C0v3(int i, int j, int k,
129  double p1, double p2, double p3,
130  double m1, double m2, double m3);
131 
132  pj_complex C0v0(double p1, double p2, double p3,
133  double m1, double m2, double m3, int ep);
134  pj_complex C0v1(int i,
135  double p1, double p2, double p3,
136  double m1, double m2, double m3, int ep);
137  pj_complex C0v2(int i, int j,
138  double p1, double p2, double p3,
139  double m1, double m2, double m3, int ep);
140  pj_complex C0v3(int i, int j, int k,
141  double p1, double p2, double p3,
142  double m1, double m2, double m3, int ep);
143 
144 
145  pj_complex B0v0(double p1, double m1, double m2);
146  pj_complex B0v1(int i,
147  double p1, double m1, double m2);
148  pj_complex B0v2(int i, int j,
149  double p1, double m1, double m2);
150  pj_complex B0v3(int i, int j, int k,
151  double p1, double m1, double m2);
152 
153  pj_complex B0v0(double p1, double m1, double m2, int ep);
154  pj_complex B0v1(int i,
155  double p1, double m1, double m2, int ep);
156  pj_complex B0v2(int i, int j,
157  double p1, double m1, double m2, int ep);
158  pj_complex B0v3(int i, int j, int k,
159  double p1, double m1, double m2, int ep);
160 
161 
162  pj_complex A0v0(double m1);
163  pj_complex A0v0(double m1, int ep);
164 
165  double GetMu2();
166  double SetMu2(double newmu2);
167  void ClearCache();
168 }
169 #endif /* __cplusplus */
170 
171 
172 #ifdef __cplusplus
173 extern "C" {
174 #endif /* __cplusplus */
175 
176 double pgetmusq_();
177 void psetmusq_(double* mu2);
178 void pclearcache_();
179 
180 #ifdef USE_F2C
181 // f2c,g77,ifort calling convention section (result is the first parameter)
182 void pa0_(pj_complex* rslt, double* m1, int* ep);
183 
184 void pb0_(pj_complex* rslt, double* p1, double* m1, double* m2, int* ep);
185 void pb0i_(pj_complex* rslt, int* i,
186  double* p1, double* m1, double* m2, int* ep);
187 void pb0ij_(pj_complex* rslt, int* i, int* j,
188  double* p1, double* m1, double* m2, int* ep);
189 
190 void pc0_(pj_complex* rslt, double* p1, double* p2, double* p3, double* m1, double* m2, double* m3, int* ep);
191 void pc0i_(pj_complex* rslt, int* i,
192  double* p1, double* p2, double* p3, double* m1, double* m2, double* m3, int* ep);
193 void pc0ij_(pj_complex* rslt, int* i, int* j,
194  double* p1, double* p2, double* p3, double* m1, double* m2, double* m3, int* ep);
195 void pc0ijk_(pj_complex* rslt, int* i, int* j, int* k,
196  double* p1, double* p2, double* p3, double* m1, double* m2, double* m3, int* ep);
197 
198 void pd0_(pj_complex* rslt, double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1, double* m2,
199  double* m3, double* m4, int* ep);
200 void pd0i_(pj_complex* rslt, int* i,
201  double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1, double* m2, double* m3, double* m4, int* ep);
202 void pd0ij_(pj_complex* rslt, int* i, int* j,
203  double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1, double* m2, double* m3, double* m4, int* ep);
204 void pd0ijk_(pj_complex* rslt, int* i, int* j, int* k,
205  double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1, double* m2, double* m3, double* m4, int* ep);
206 void pd0ijkl_(pj_complex* rslt, int* i, int* j, int* k, int* l,
207  double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1, double* m2, double* m3, double* m4, int* ep);
208 
209 void pe0_(pj_complex* rslt, double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34,
210  double* s45, double* s15, double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
211 void pe0i_(pj_complex* rslt, int* i,
212  double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34, double* s45, double* s15,
213  double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
214 void pe0ij_(pj_complex* rslt, int* i, int* j,
215  double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34, double* s45, double* s15,
216  double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
217 void pe0ijk_(pj_complex* rslt, int* i, int* j, int* k,
218  double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34, double* s45, double* s15,
219  double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
220 void pe0ijkl_(pj_complex* rslt, int* i, int* j, int* k, int* l,
221  double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34, double* s45, double* s15,
222  double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
223 void pe0ijklm_(pj_complex* rslt, int* i, int* j, int* k, int* l, int* m,
224  double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34, double* s45, double* s15,
225  double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
226 #else
227 // GNU calling convention section (result is a complex return value)
228 pj_complex pa0_(double* m1, int* ep);
229 
230 pj_complex pb0_(double* p1, double* m1, double* m2, int* ep);
231 pj_complex pb0i_(int* i,
232  double* p1, double* m1, double* m2, int* ep);
233 pj_complex pb0ij_(int* i, int* j,
234  double* p1, double* m1, double* m2, int* ep);
235 
236 pj_complex pc0_(double* p1, double* p2, double* p3, double* m1, double* m2, double* m3, int* ep);
237 pj_complex pc0i_(int* i,
238  double* p1, double* p2, double* p3, double* m1, double* m2, double* m3, int* ep);
239 pj_complex pc0ij_(int* i, int* j,
240  double* p1, double* p2, double* p3, double* m1, double* m2, double* m3, int* ep);
241 pj_complex pc0ijk_(int* i, int* j, int* k,
242  double* p1, double* p2, double* p3, double* m1, double* m2, double* m3, int* ep);
243 
244 pj_complex pd0_(double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1, double* m2, double* m3,
245  double* m4, int* ep);
246 pj_complex pd0i_(int* i,
247  double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1, double* m2, double* m3, double* m4, int* ep);
248 pj_complex pd0ij_(int* i, int* j,
249  double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1, double* m2, double* m3, double* m4, int* ep);
250 pj_complex pd0ijk_(int* i, int* j, int* k,
251  double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1, double* m2, double* m3, double* m4, int* ep);
252 pj_complex pd0ijkl_(int* i, int* j, int* k, int* l,
253  double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1, double* m2, double* m3, double* m4, int* ep);
254 
255 pj_complex pe0_(double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34, double* s45,
256  double* s15, double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
257 pj_complex pe0i_(int* i,
258  double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34, double* s45, double* s15,
259  double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
260 pj_complex pe0ij_(int* i, int* j,
261  double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34, double* s45, double* s15,
262  double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
263 pj_complex pe0ijk_(int* i, int* j, int* k,
264  double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34, double* s45, double* s15,
265  double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
266 pj_complex pe0ijkl_(int* i, int* j, int* k, int* l,
267  double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34, double* s45, double* s15,
268  double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
269 pj_complex pe0ijklm_(int* i, int* j, int* k, int* l, int* m,
270  double* p1, double* p2, double* p3, double* p4, double* p5, double* s12, double* s23, double* s34, double* s45, double* s15,
271  double* m1, double* m2, double* m3, double* m4, double* m5, int* ep);
272 #endif
273 
274 #ifdef USE_GOLEM_MODE
275 double pggetmusq_();
276 void pgsetmusq_(double* mu2);
277 
278 void pginitgolem95_(int* n);
279 double pggetmat_(int* i, int* j);
280 void pgpreparesmatrix_();
281 void pgsetmat_(int* i, int* j, double* val);
282 
283 // 5 point base
284 pj_complex pga50_(int* s, int* ep);
285 pj_complex pga51_(int* i, int* s, int* ep);
286 pj_complex pga52_(int* i, int* j, int* s, int* ep);
287 pj_complex pgb52_(int* s, int* ep);
288 pj_complex pga53_(int* i, int* j, int* k, int* s, int* ep);
289 pj_complex pgb53_(int* i, int* s, int* ep);
290 pj_complex pga54_(int* i, int* j, int* k, int* l, int* s, int* ep);
291 pj_complex pgb54_(int* i, int* j, int* s, int* ep);
292 pj_complex pgc54_(int* s, int* ep);
293 pj_complex pga55_(int* i, int* j, int* k, int* l, int* m, int* s, int* ep);
294 pj_complex pgb55_(int* i, int* j, int* k, int* s, int* ep);
295 pj_complex pgc55_(int* i, int* s, int* ep);
296 
297 pj_complex pga40_(int* s, int* ep);
298 pj_complex pga41_(int* i, int* s, int* ep);
299 pj_complex pga42_(int* i, int* j, int* s, int* ep);
300 pj_complex pgb42_(int* s, int* ep);
301 pj_complex pga43_(int* i, int* j, int* k, int* s, int* ep);
302 pj_complex pgb43_(int* i, int* s, int* ep);
303 pj_complex pga44_(int* i, int* j, int* k, int* l, int* s, int* ep);
304 pj_complex pgb44_(int* i, int* j, int* s, int* ep);
305 pj_complex pgc44_(int* s, int* ep);
306 
307 pj_complex pga30_(int* s, int* ep);
308 pj_complex pga31_(int* i, int* s, int* ep);
309 pj_complex pga32_(int* i, int* j, int* s, int* ep);
310 pj_complex pgb32_(int* s, int* ep);
311 pj_complex pga33_(int* i, int* j, int* k, int* s, int* ep);
312 pj_complex pgb33_(int* i, int* s, int* ep);
313 
314 pj_complex pga20_(int* s, int* ep);
315 pj_complex pga21_(int* i, int* s, int* ep);
316 pj_complex pga22_(int* i, int* j, int* s, int* ep);
317 pj_complex pgb22_(int* s, int* ep);
318 
319 #endif /* USE_GOLEM_MODE */
320 
321 #ifdef __cplusplus
322 }
323 #endif
324 
325 #endif /* QUL_PJFRY_H */