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