1
+ export c_double;
2
+ export c_float;
3
+ export bessel;
4
+
1
5
import ctypes:: c_int;
2
6
import ctypes:: c_float;
3
7
import ctypes:: c_double;
4
8
5
- // FIXME scalbn copysign
6
-
7
9
#[ link_name = "m" ]
8
10
#[ abi = "cdecl" ]
9
11
native mod c_double {
@@ -16,6 +18,7 @@ native mod c_double {
16
18
pure fn atan2 ( a : c_double , b : c_double ) -> c_double ;
17
19
pure fn cbrt ( n : c_double ) -> c_double ;
18
20
pure fn ceil ( n : c_double ) -> c_double ;
21
+ pure fn copysign ( x : c_double , y : c_double ) -> c_double ;
19
22
pure fn cos ( n : c_double ) -> c_double ;
20
23
pure fn cosh ( n : c_double ) -> c_double ;
21
24
pure fn erf ( n : c_double ) -> c_double ;
@@ -26,15 +29,16 @@ native mod c_double {
26
29
#[ link_name="fabs" ] pure fn abs ( n : c_double ) -> c_double ;
27
30
#[ link_name="fdim" ] pure fn sub_pos ( a : c_double , b : c_double ) -> c_double ;
28
31
pure fn floor ( n : c_double ) -> c_double ;
29
- #[ link_name="fma" ] pure fn mul_add ( a : c_double , b : c_double , c : c_double ) -> c_double ;
32
+ #[ link_name="fma" ] pure fn mul_add ( a : c_double , b : c_double ,
33
+ c : c_double ) -> c_double ;
30
34
#[ link_name="fmax" ] pure fn fmax ( a : c_double , b : c_double ) -> c_double ;
31
35
#[ link_name="fmin" ] pure fn fmin ( a : c_double , b : c_double ) -> c_double ;
32
36
pure fn nextafter ( x : c_double , y : c_double ) -> c_double ;
33
- #[ link_name="fmod" ] pure fn rem ( x : c_double , y : c_double ) -> c_double ;
34
37
pure fn frexp ( n : c_double , & value: c_int ) -> c_double ;
35
38
pure fn hypot ( x : c_double , y : c_double ) -> c_double ;
36
39
pure fn ldexp ( x : c_double , n : c_int ) -> c_double ;
37
- #[ link_name="lgamma_r" ] pure fn lgamma ( n : c_double , & sign: c_int ) -> c_double ;
40
+ #[ link_name="lgamma_r" ] pure fn lgamma ( n : c_double ,
41
+ & sign: c_int ) -> c_double ;
38
42
#[ link_name="log" ] pure fn ln ( n : c_double ) -> c_double ;
39
43
pure fn logb ( n : c_double ) -> c_double ;
40
44
#[ link_name="log1p" ] pure fn ln1p ( n : c_double ) -> c_double ;
@@ -45,6 +49,7 @@ native mod c_double {
45
49
pure fn pow ( n : c_double , e : c_double ) -> c_double ;
46
50
pure fn rint ( n : c_double ) -> c_double ;
47
51
pure fn round ( n : c_double ) -> c_double ;
52
+ pure fn scalbn ( n : c_double , i : c_int ) -> c_double ;
48
53
pure fn sin ( n : c_double ) -> c_double ;
49
54
pure fn sinh ( n : c_double ) -> c_double ;
50
55
pure fn sqrt ( n : c_double ) -> c_double ;
@@ -66,6 +71,8 @@ native mod c_float {
66
71
#[ link_name="atan2f" ] pure fn atan2 ( a : c_float , b : c_float ) -> c_float ;
67
72
#[ link_name="cbrtf" ] pure fn cbrt ( n : c_float ) -> c_float ;
68
73
#[ link_name="ceilf" ] pure fn ceil ( n : c_float ) -> c_float ;
74
+ #[ link_name="copysignf" ] pure fn copysign ( x : c_float ,
75
+ y : c_float ) -> c_float ;
69
76
#[ link_name="cosf" ] pure fn cos ( n : c_float ) -> c_float ;
70
77
#[ link_name="coshf" ] pure fn cosh ( n : c_float ) -> c_float ;
71
78
#[ link_name="erff" ] pure fn erf ( n : c_float ) -> c_float ;
@@ -76,25 +83,30 @@ native mod c_float {
76
83
#[ link_name="fabsf" ] pure fn abs ( n : c_float ) -> c_float ;
77
84
#[ link_name="fdimf" ] pure fn sub_pos ( a : c_float , b : c_float ) -> c_float ;
78
85
#[ link_name="floorf" ] pure fn floor ( n : c_float ) -> c_float ;
79
- #[ link_name="frexpf" ] pure fn frexp ( n : c_double , & value: c_int ) -> c_float ;
80
- #[ link_name="fmaf" ] pure fn mul_add ( a : c_float , b : c_float , c : c_float ) -> c_float ;
86
+ #[ link_name="frexpf" ] pure fn frexp ( n : c_double ,
87
+ & value: c_int ) -> c_float ;
88
+ #[ link_name="fmaf" ] pure fn mul_add ( a : c_float ,
89
+ b : c_float , c : c_float ) -> c_float ;
81
90
#[ link_name="fmaxf" ] pure fn fmax ( a : c_float , b : c_float ) -> c_float ;
82
91
#[ link_name="fminf" ] pure fn fmin ( a : c_float , b : c_float ) -> c_float ;
83
- #[ link_name="nextafterf" ] pure fn nextafter ( x : c_float , y : c_float ) -> c_float ;
84
- # [ link_name= "fmodf" ] pure fn rem ( x : c_float , y : c_float ) -> c_float ;
92
+ #[ link_name="nextafterf" ] pure fn nextafter ( x : c_float ,
93
+ y : c_float ) -> c_float ;
85
94
#[ link_name="hypotf" ] pure fn hypot ( x : c_float , y : c_float ) -> c_float ;
86
95
#[ link_name="ldexpf" ] pure fn ldexp ( x : c_float , n : c_int ) -> c_float ;
87
- #[ link_name="lgammaf_r" ] pure fn lgamma ( n : c_float , & sign: c_int ) -> c_float ;
96
+ #[ link_name="lgammaf_r" ] pure fn lgamma ( n : c_float ,
97
+ & sign: c_int ) -> c_float ;
88
98
#[ link_name="logf" ] pure fn ln ( n : c_float ) -> c_float ;
89
99
#[ link_name="logbf" ] pure fn logb ( n : c_float ) -> c_float ;
90
100
#[ link_name="log1p" ] pure fn ln1p ( n : c_double ) -> c_double ;
91
101
#[ link_name="log2f" ] pure fn log2 ( n : c_float ) -> c_float ;
92
102
#[ link_name="log10f" ] pure fn log10 ( n : c_float ) -> c_float ;
93
103
#[ link_name="ilogbf" ] pure fn ilogb ( n : c_float ) -> c_int ;
94
- #[ link_name="modff" ] pure fn modf ( n : c_float , & iptr: c_float ) -> c_float ;
104
+ #[ link_name="modff" ] pure fn modf ( n : c_float ,
105
+ & iptr: c_float ) -> c_float ;
95
106
#[ link_name="powf" ] pure fn pow ( n : c_float , e : c_float ) -> c_float ;
96
107
#[ link_name="rintf" ] pure fn rint ( n : c_float ) -> c_float ;
97
108
#[ link_name="roundf" ] pure fn round ( n : c_float ) -> c_float ;
109
+ #[ link_name="scalbnf" ] pure fn scalbn ( n : c_float , i : c_int ) -> c_float ;
98
110
#[ link_name="sinf" ] pure fn sin ( n : c_float ) -> c_float ;
99
111
#[ link_name="sinhf" ] pure fn sinh ( n : c_float ) -> c_float ;
100
112
#[ link_name="sqrtf" ] pure fn sqrt ( n : c_float ) -> c_float ;
0 commit comments