@@ -26,73 +26,74 @@ pub extern mod c_double_utils {
2626
2727 // Alpabetically sorted by link_name
2828
29- pure fn acos ( n : c_double ) -> c_double ;
30- pure fn asin ( n : c_double ) -> c_double ;
31- pure fn atan ( n : c_double ) -> c_double ;
32- pure fn atan2 ( a : c_double , b : c_double ) -> c_double ;
33- pure fn cbrt ( n : c_double ) -> c_double ;
34- pure fn ceil ( n : c_double ) -> c_double ;
35- pure fn copysign ( x : c_double , y : c_double ) -> c_double ;
36- pure fn cos ( n : c_double ) -> c_double ;
37- pure fn cosh ( n : c_double ) -> c_double ;
38- pure fn erf ( n : c_double ) -> c_double ;
39- pure fn erfc ( n : c_double ) -> c_double ;
40- pure fn exp ( n : c_double ) -> c_double ;
41- pure fn expm1 ( n : c_double ) -> c_double ;
42- pure fn exp2 ( n : c_double ) -> c_double ;
43- #[ link_name="fabs" ] pure fn abs ( n : c_double ) -> c_double ;
29+ unsafe fn acos ( n : c_double ) -> c_double ;
30+ unsafe fn asin ( n : c_double ) -> c_double ;
31+ unsafe fn atan ( n : c_double ) -> c_double ;
32+ unsafe fn atan2 ( a : c_double , b : c_double ) -> c_double ;
33+ unsafe fn cbrt ( n : c_double ) -> c_double ;
34+ unsafe fn ceil ( n : c_double ) -> c_double ;
35+ unsafe fn copysign ( x : c_double , y : c_double ) -> c_double ;
36+ unsafe fn cos ( n : c_double ) -> c_double ;
37+ unsafe fn cosh ( n : c_double ) -> c_double ;
38+ unsafe fn erf ( n : c_double ) -> c_double ;
39+ unsafe fn erfc ( n : c_double ) -> c_double ;
40+ unsafe fn exp ( n : c_double ) -> c_double ;
41+ unsafe fn expm1 ( n : c_double ) -> c_double ;
42+ unsafe fn exp2 ( n : c_double ) -> c_double ;
43+ #[ link_name="fabs" ] unsafe fn abs ( n : c_double ) -> c_double ;
4444 // rename: for clarity and consistency with add/sub/mul/div
45- #[ link_name="fdim" ] pure fn abs_sub ( a : c_double , b : c_double ) -> c_double ;
46- pure fn floor ( n : c_double ) -> c_double ;
45+ #[ link_name="fdim" ]
46+ unsafe fn abs_sub ( a : c_double , b : c_double ) -> c_double ;
47+ unsafe fn floor ( n : c_double ) -> c_double ;
4748 // rename: for clarity and consistency with add/sub/mul/div
48- #[ link_name="fma" ] pure fn mul_add ( a : c_double , b : c_double ,
49+ #[ link_name="fma" ] unsafe fn mul_add ( a : c_double , b : c_double ,
4950 c : c_double ) -> c_double ;
50- #[ link_name="fmax" ] pure fn fmax ( a : c_double , b : c_double ) -> c_double ;
51- #[ link_name="fmin" ] pure fn fmin ( a : c_double , b : c_double ) -> c_double ;
52- pure fn nextafter ( x : c_double , y : c_double ) -> c_double ;
53- pure fn frexp ( n : c_double , value : & mut c_int ) -> c_double ;
54- pure fn hypot ( x : c_double , y : c_double ) -> c_double ;
55- pure fn ldexp ( x : c_double , n : c_int ) -> c_double ;
51+ #[ link_name="fmax" ] unsafe fn fmax ( a : c_double , b : c_double ) -> c_double ;
52+ #[ link_name="fmin" ] unsafe fn fmin ( a : c_double , b : c_double ) -> c_double ;
53+ unsafe fn nextafter ( x : c_double , y : c_double ) -> c_double ;
54+ unsafe fn frexp ( n : c_double , value : & mut c_int ) -> c_double ;
55+ unsafe fn hypot ( x : c_double , y : c_double ) -> c_double ;
56+ unsafe fn ldexp ( x : c_double , n : c_int ) -> c_double ;
5657 #[ cfg( unix) ]
57- #[ link_name="lgamma_r" ] pure fn lgamma ( n : c_double ,
58+ #[ link_name="lgamma_r" ] unsafe fn lgamma ( n : c_double ,
5859 sign : & mut c_int ) -> c_double ;
5960 #[ cfg( windows) ]
60- #[ link_name="__lgamma_r" ] pure fn lgamma ( n : c_double ,
61+ #[ link_name="__lgamma_r" ] unsafe fn lgamma ( n : c_double ,
6162 sign : & mut c_int ) -> c_double ;
6263 // renamed: log is a reserved keyword; ln seems more natural, too
63- #[ link_name="log" ] pure fn ln ( n : c_double ) -> c_double ;
64+ #[ link_name="log" ] unsafe fn ln ( n : c_double ) -> c_double ;
6465 // renamed: "logb" /often/ is confused for log2 by beginners
65- #[ link_name="logb" ] pure fn log_radix ( n : c_double ) -> c_double ;
66+ #[ link_name="logb" ] unsafe fn log_radix ( n : c_double ) -> c_double ;
6667 // renamed: to be consitent with log as ln
67- #[ link_name="log1p" ] pure fn ln1p ( n : c_double ) -> c_double ;
68- pure fn log10 ( n : c_double ) -> c_double ;
69- pure fn log2 ( n : c_double ) -> c_double ;
70- #[ link_name="ilogb" ] pure fn ilog_radix ( n : c_double ) -> c_int ;
71- pure fn modf ( n : c_double , iptr : & mut c_double ) -> c_double ;
72- pure fn pow ( n : c_double , e : c_double ) -> c_double ;
68+ #[ link_name="log1p" ] unsafe fn ln1p ( n : c_double ) -> c_double ;
69+ unsafe fn log10 ( n : c_double ) -> c_double ;
70+ unsafe fn log2 ( n : c_double ) -> c_double ;
71+ #[ link_name="ilogb" ] unsafe fn ilog_radix ( n : c_double ) -> c_int ;
72+ unsafe fn modf ( n : c_double , iptr : & mut c_double ) -> c_double ;
73+ unsafe fn pow ( n : c_double , e : c_double ) -> c_double ;
7374// FIXME (#1379): enable when rounding modes become available
74- // pure fn rint(n: c_double) -> c_double;
75- pure fn round ( n : c_double ) -> c_double ;
75+ // unsafe fn rint(n: c_double) -> c_double;
76+ unsafe fn round ( n : c_double ) -> c_double ;
7677 // rename: for consistency with logradix
77- #[ link_name="scalbn" ] pure fn ldexp_radix ( n : c_double , i : c_int ) ->
78+ #[ link_name="scalbn" ] unsafe fn ldexp_radix ( n : c_double , i : c_int ) ->
7879 c_double ;
79- pure fn sin ( n : c_double ) -> c_double ;
80- pure fn sinh ( n : c_double ) -> c_double ;
81- pure fn sqrt ( n : c_double ) -> c_double ;
82- pure fn tan ( n : c_double ) -> c_double ;
83- pure fn tanh ( n : c_double ) -> c_double ;
84- pure fn tgamma ( n : c_double ) -> c_double ;
85- pure fn trunc ( n : c_double ) -> c_double ;
80+ unsafe fn sin ( n : c_double ) -> c_double ;
81+ unsafe fn sinh ( n : c_double ) -> c_double ;
82+ unsafe fn sqrt ( n : c_double ) -> c_double ;
83+ unsafe fn tan ( n : c_double ) -> c_double ;
84+ unsafe fn tanh ( n : c_double ) -> c_double ;
85+ unsafe fn tgamma ( n : c_double ) -> c_double ;
86+ unsafe fn trunc ( n : c_double ) -> c_double ;
8687
8788 // These are commonly only available for doubles
8889
89- pure fn j0 ( n : c_double ) -> c_double ;
90- pure fn j1 ( n : c_double ) -> c_double ;
91- pure fn jn ( i : c_int , n : c_double ) -> c_double ;
90+ unsafe fn j0 ( n : c_double ) -> c_double ;
91+ unsafe fn j1 ( n : c_double ) -> c_double ;
92+ unsafe fn jn ( i : c_int , n : c_double ) -> c_double ;
9293
93- pure fn y0 ( n : c_double ) -> c_double ;
94- pure fn y1 ( n : c_double ) -> c_double ;
95- pure fn yn ( i : c_int , n : c_double ) -> c_double ;
94+ unsafe fn y0 ( n : c_double ) -> c_double ;
95+ unsafe fn y1 ( n : c_double ) -> c_double ;
96+ unsafe fn yn ( i : c_int , n : c_double ) -> c_double ;
9697}
9798
9899#[ link_name = "m" ]
@@ -101,64 +102,64 @@ pub extern mod c_float_utils {
101102
102103 // Alpabetically sorted by link_name
103104
104- #[ link_name="acosf" ] pure fn acos ( n : c_float ) -> c_float ;
105- #[ link_name="asinf" ] pure fn asin ( n : c_float ) -> c_float ;
106- #[ link_name="atanf" ] pure fn atan ( n : c_float ) -> c_float ;
107- #[ link_name="atan2f" ] pure fn atan2 ( a : c_float , b : c_float ) -> c_float ;
108- #[ link_name="cbrtf" ] pure fn cbrt ( n : c_float ) -> c_float ;
109- #[ link_name="ceilf" ] pure fn ceil ( n : c_float ) -> c_float ;
110- #[ link_name="copysignf" ] pure fn copysign ( x : c_float ,
105+ #[ link_name="acosf" ] unsafe fn acos ( n : c_float ) -> c_float ;
106+ #[ link_name="asinf" ] unsafe fn asin ( n : c_float ) -> c_float ;
107+ #[ link_name="atanf" ] unsafe fn atan ( n : c_float ) -> c_float ;
108+ #[ link_name="atan2f" ] unsafe fn atan2 ( a : c_float , b : c_float ) -> c_float ;
109+ #[ link_name="cbrtf" ] unsafe fn cbrt ( n : c_float ) -> c_float ;
110+ #[ link_name="ceilf" ] unsafe fn ceil ( n : c_float ) -> c_float ;
111+ #[ link_name="copysignf" ] unsafe fn copysign ( x : c_float ,
111112 y : c_float ) -> c_float ;
112- #[ link_name="cosf" ] pure fn cos ( n : c_float ) -> c_float ;
113- #[ link_name="coshf" ] pure fn cosh ( n : c_float ) -> c_float ;
114- #[ link_name="erff" ] pure fn erf ( n : c_float ) -> c_float ;
115- #[ link_name="erfcf" ] pure fn erfc ( n : c_float ) -> c_float ;
116- #[ link_name="expf" ] pure fn exp ( n : c_float ) -> c_float ;
117- #[ link_name="expm1f" ] pure fn expm1 ( n : c_float ) -> c_float ;
118- #[ link_name="exp2f" ] pure fn exp2 ( n : c_float ) -> c_float ;
119- #[ link_name="fabsf" ] pure fn abs ( n : c_float ) -> c_float ;
120- #[ link_name="fdimf" ] pure fn abs_sub ( a : c_float , b : c_float ) -> c_float ;
121- #[ link_name="floorf" ] pure fn floor ( n : c_float ) -> c_float ;
122- #[ link_name="frexpf" ] pure fn frexp ( n : c_float ,
113+ #[ link_name="cosf" ] unsafe fn cos ( n : c_float ) -> c_float ;
114+ #[ link_name="coshf" ] unsafe fn cosh ( n : c_float ) -> c_float ;
115+ #[ link_name="erff" ] unsafe fn erf ( n : c_float ) -> c_float ;
116+ #[ link_name="erfcf" ] unsafe fn erfc ( n : c_float ) -> c_float ;
117+ #[ link_name="expf" ] unsafe fn exp ( n : c_float ) -> c_float ;
118+ #[ link_name="expm1f" ] unsafe fn expm1 ( n : c_float ) -> c_float ;
119+ #[ link_name="exp2f" ] unsafe fn exp2 ( n : c_float ) -> c_float ;
120+ #[ link_name="fabsf" ] unsafe fn abs ( n : c_float ) -> c_float ;
121+ #[ link_name="fdimf" ] unsafe fn abs_sub ( a : c_float , b : c_float ) -> c_float ;
122+ #[ link_name="floorf" ] unsafe fn floor ( n : c_float ) -> c_float ;
123+ #[ link_name="frexpf" ] unsafe fn frexp ( n : c_float ,
123124 value : & mut c_int ) -> c_float ;
124- #[ link_name="fmaf" ] pure fn mul_add ( a : c_float ,
125+ #[ link_name="fmaf" ] unsafe fn mul_add ( a : c_float ,
125126 b : c_float , c : c_float ) -> c_float ;
126- #[ link_name="fmaxf" ] pure fn fmax ( a : c_float , b : c_float ) -> c_float ;
127- #[ link_name="fminf" ] pure fn fmin ( a : c_float , b : c_float ) -> c_float ;
128- #[ link_name="nextafterf" ] pure fn nextafter ( x : c_float ,
127+ #[ link_name="fmaxf" ] unsafe fn fmax ( a : c_float , b : c_float ) -> c_float ;
128+ #[ link_name="fminf" ] unsafe fn fmin ( a : c_float , b : c_float ) -> c_float ;
129+ #[ link_name="nextafterf" ] unsafe fn nextafter ( x : c_float ,
129130 y : c_float ) -> c_float ;
130- #[ link_name="hypotf" ] pure fn hypot ( x : c_float , y : c_float ) -> c_float ;
131- #[ link_name="ldexpf" ] pure fn ldexp ( x : c_float , n : c_int ) -> c_float ;
131+ #[ link_name="hypotf" ] unsafe fn hypot ( x : c_float , y : c_float ) -> c_float ;
132+ #[ link_name="ldexpf" ] unsafe fn ldexp ( x : c_float , n : c_int ) -> c_float ;
132133
133134 #[ cfg( unix) ]
134- #[ link_name="lgammaf_r" ] pure fn lgamma ( n : c_float ,
135+ #[ link_name="lgammaf_r" ] unsafe fn lgamma ( n : c_float ,
135136 sign : & mut c_int ) -> c_float ;
136137
137138 #[ cfg( windows) ]
138- #[ link_name="__lgammaf_r" ] pure fn lgamma ( n : c_float ,
139+ #[ link_name="__lgammaf_r" ] unsafe fn lgamma ( n : c_float ,
139140 sign : & mut c_int ) -> c_float ;
140141
141- #[ link_name="logf" ] pure fn ln ( n : c_float ) -> c_float ;
142- #[ link_name="logbf" ] pure fn log_radix ( n : c_float ) -> c_float ;
143- #[ link_name="log1pf" ] pure fn ln1p ( n : c_float ) -> c_float ;
144- #[ link_name="log2f" ] pure fn log2 ( n : c_float ) -> c_float ;
145- #[ link_name="log10f" ] pure fn log10 ( n : c_float ) -> c_float ;
146- #[ link_name="ilogbf" ] pure fn ilog_radix ( n : c_float ) -> c_int ;
147- #[ link_name="modff" ] pure fn modf ( n : c_float ,
142+ #[ link_name="logf" ] unsafe fn ln ( n : c_float ) -> c_float ;
143+ #[ link_name="logbf" ] unsafe fn log_radix ( n : c_float ) -> c_float ;
144+ #[ link_name="log1pf" ] unsafe fn ln1p ( n : c_float ) -> c_float ;
145+ #[ link_name="log2f" ] unsafe fn log2 ( n : c_float ) -> c_float ;
146+ #[ link_name="log10f" ] unsafe fn log10 ( n : c_float ) -> c_float ;
147+ #[ link_name="ilogbf" ] unsafe fn ilog_radix ( n : c_float ) -> c_int ;
148+ #[ link_name="modff" ] unsafe fn modf ( n : c_float ,
148149 iptr : & mut c_float ) -> c_float ;
149- #[ link_name="powf" ] pure fn pow ( n : c_float , e : c_float ) -> c_float ;
150+ #[ link_name="powf" ] unsafe fn pow ( n : c_float , e : c_float ) -> c_float ;
150151// FIXME (#1379): enable when rounding modes become available
151- // #[link_name="rintf"] pure fn rint(n: c_float) -> c_float;
152- #[ link_name="roundf" ] pure fn round ( n : c_float ) -> c_float ;
153- #[ link_name="scalbnf" ] pure fn ldexp_radix ( n : c_float , i : c_int )
152+ // #[link_name="rintf"] unsafe fn rint(n: c_float) -> c_float;
153+ #[ link_name="roundf" ] unsafe fn round ( n : c_float ) -> c_float ;
154+ #[ link_name="scalbnf" ] unsafe fn ldexp_radix ( n : c_float , i : c_int )
154155 -> c_float ;
155- #[ link_name="sinf" ] pure fn sin ( n : c_float ) -> c_float ;
156- #[ link_name="sinhf" ] pure fn sinh ( n : c_float ) -> c_float ;
157- #[ link_name="sqrtf" ] pure fn sqrt ( n : c_float ) -> c_float ;
158- #[ link_name="tanf" ] pure fn tan ( n : c_float ) -> c_float ;
159- #[ link_name="tanhf" ] pure fn tanh ( n : c_float ) -> c_float ;
160- #[ link_name="tgammaf" ] pure fn tgamma ( n : c_float ) -> c_float ;
161- #[ link_name="truncf" ] pure fn trunc ( n : c_float ) -> c_float ;
156+ #[ link_name="sinf" ] unsafe fn sin ( n : c_float ) -> c_float ;
157+ #[ link_name="sinhf" ] unsafe fn sinh ( n : c_float ) -> c_float ;
158+ #[ link_name="sqrtf" ] unsafe fn sqrt ( n : c_float ) -> c_float ;
159+ #[ link_name="tanf" ] unsafe fn tan ( n : c_float ) -> c_float ;
160+ #[ link_name="tanhf" ] unsafe fn tanh ( n : c_float ) -> c_float ;
161+ #[ link_name="tgammaf" ] unsafe fn tgamma ( n : c_float ) -> c_float ;
162+ #[ link_name="truncf" ] unsafe fn trunc ( n : c_float ) -> c_float ;
162163}
163164
164165// PORT check these by running src/etc/machconsts.c for your architecture
0 commit comments