-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathc_wrappers.c
110 lines (95 loc) · 3.16 KB
/
c_wrappers.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/* ====================================================================
* This file is part of Polylogarithm.
*
* Polylogarithm is licenced under the MIT License.
* ==================================================================== */
#include "c_wrappers.h"
#include <complex.h>
float _Complex cli2f(float _Complex);
double _Complex cli2(double _Complex);
double _Complex cli3(double _Complex);
double _Complex cli4(double _Complex);
double _Complex cli5(double _Complex);
double _Complex cli6(double _Complex);
long double _Complex cli2l(long double _Complex);
long double _Complex cli3l(long double _Complex);
long double _Complex cli4l(long double _Complex);
long double _Complex cli5l(long double _Complex);
long double _Complex cli6l(long double _Complex);
/** C++ wrapper for cli2f */
void cli2f_c(float re, float im, float* res_re, float* res_im)
{
const float _Complex result = cli2f(CMPLXF(re, im));
*res_re = crealf(result);
*res_im = cimagf(result);
}
/** C++ wrapper for cli2 */
void cli2_c(double re, double im, double* res_re, double* res_im)
{
const double _Complex result = cli2(CMPLX(re, im));
*res_re = creal(result);
*res_im = cimag(result);
}
/** C++ wrapper for cli2l */
void cli2l_c(long double re, long double im, long double* res_re, long double* res_im)
{
const long double _Complex result = cli2l(CMPLXL(re, im));
*res_re = creall(result);
*res_im = cimagl(result);
}
/** C++ wrapper for cli3 */
void cli3_c(double re, double im, double* res_re, double* res_im)
{
const double _Complex result = cli3(CMPLX(re, im));
*res_re = creal(result);
*res_im = cimag(result);
}
/** C++ wrapper for cli3l */
void cli3l_c(long double re, long double im, long double* res_re, long double* res_im)
{
const long double _Complex result = cli3l(CMPLXL(re, im));
*res_re = creall(result);
*res_im = cimagl(result);
}
/** C++ wrapper for cli4 */
void cli4_c(double re, double im, double* res_re, double* res_im)
{
const double _Complex result = cli4(CMPLX(re, im));
*res_re = creal(result);
*res_im = cimag(result);
}
/** C++ wrapper for cli4l */
void cli4l_c(long double re, long double im, long double* res_re, long double* res_im)
{
const long double _Complex result = cli4l(CMPLXL(re, im));
*res_re = creall(result);
*res_im = cimagl(result);
}
/** C++ wrapper for cli5 */
void cli5_c(double re, double im, double* res_re, double* res_im)
{
const double _Complex result = cli5(CMPLX(re, im));
*res_re = creal(result);
*res_im = cimag(result);
}
/** C++ wrapper for cli5l */
void cli5l_c(long double re, long double im, long double* res_re, long double* res_im)
{
const long double _Complex result = cli5l(CMPLXL(re, im));
*res_re = creall(result);
*res_im = cimagl(result);
}
/** C++ wrapper for cli6 */
void cli6_c(double re, double im, double* res_re, double* res_im)
{
const double _Complex result = cli6(CMPLX(re, im));
*res_re = creal(result);
*res_im = cimag(result);
}
/** C++ wrapper for cli6l */
void cli6l_c(long double re, long double im, long double* res_re, long double* res_im)
{
const long double _Complex result = cli6l(CMPLXL(re, im));
*res_re = creall(result);
*res_im = cimagl(result);
}