Belle II Software  release-05-02-19
qcdloop1.h
1 
2 /*
3  * qcdloop1.h - header file for QCDLoop1 library
4  *
5  */
6 
7 #ifndef QCDLOOP1_H
8 #define QCDLOOP1_H
9 
10 /* NB endline spaces are significant */
11 #ifdef QL_BUILDSYMS
12 # define QL_EXPORT(type) QL_EXPORT_MARK
13 #else
14 # define QL_EXPORT(type) type
15 #endif
16 
17 /* if language is C++ use standard complex template type */
18 #ifdef __cplusplus
19 # include <complex>
20 # define QL_DEFINE_COMPLEX(R, C) typedef std::complex<R> C
21 #else
22 /* if <complex.h> is included, use the C99 complex type.
23  * else define a type bit-compatible with C99 complex */
24 # if defined(_Complex_I) && defined(complex) && defined(I)
25 # define QL_DEFINE_COMPLEX(R, C) typedef R _Complex C
26 # else
27 # define QL_DEFINE_COMPLEX(R, C) typedef struct { R re,im; } C
28 # endif
29 #endif
30 
31 QL_DEFINE_COMPLEX(double, ql_cmplx_dbl);
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif /* __cplusplus */
36 
37 typedef struct ffprec_struct {
38  double xloss;
39  double precx;
40  double precc;
41  double xalogm;
42  double xclogm;
43  double xalog2;
44  double xclog2;
45  double reqprc;
46 } ffprec_type;
47 
48 typedef struct ffflag_struct {
49  int lwrite;
50  int ltest;
51  int l4also;
52  int ldc3c4;
53  int lmem;
54  int lwarn;
55  int ldot;
56  int nevent;
57  int ner;
58  int id;
59  int idsub;
60  int nwidth;
61  int nschem;
62  int onshel;
63  int idot;
64 } ffflag_type;
65 
66 QL_EXPORT(void) qlinit_();
67 QL_EXPORT(void) ffexi_();
68 
69 #ifdef USE_F2C
70 QL_EXPORT(void) qli1_(ql_cmplx_dbl* rslt, double* m1, double* mu2, int* ep);
71 QL_EXPORT(void) qli2_(ql_cmplx_dbl* rslt, double* p1, double* m1, double* m2, double* mu2, int* ep);
72 QL_EXPORT(void) qli3_(ql_cmplx_dbl* rslt, double* p1, double* p2, double* p3, double* m1, double* m2, double* m3, double* mu2,
73  int* ep);
74 QL_EXPORT(void) qli4_(ql_cmplx_dbl* rslt, double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1,
75  double* m2, double* m3, double* m4, double* mu2, int* ep);
76 #else
77 QL_EXPORT(ql_cmplx_dbl) qli1_(double* m1, double* mu2, int* ep);
78 QL_EXPORT(ql_cmplx_dbl) qli2_(double* p1, double* m1, double* m2, double* mu2, int* ep);
79 QL_EXPORT(ql_cmplx_dbl) qli3_(double* p1, double* p2, double* p3, double* m1, double* m2, double* m3, double* mu2, int* ep);
80 QL_EXPORT(ql_cmplx_dbl) qli4_(double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1, double* m2,
81  double* m3, double* m4, double* mu2, int* ep);
82 #endif
83 
84 extern QL_EXPORT(struct ffprec_struct) ffprec_;
85 extern QL_EXPORT(struct ffflag_struct) ffflag_;
86 
87 #ifdef __cplusplus
88 }
89 #endif
90 
91 #endif /* QCDLOOP1_H */
92