@@ -16,13 +16,18 @@ export
16
16
ldexp, ln, ln1p, log10, log2, modf, rint, round, pow, sin, sinh, sqrt,
17
17
tan, tanh, trunc;
18
18
19
+ export f64, f32 ;
20
+
21
+ import f64 = math_f64;
22
+ import f32 = math_f32;
23
+
19
24
// These two must match in width according to architecture
20
25
21
26
import ctypes:: m_float;
22
27
import ctypes:: c_int;
28
+ import ptr;
23
29
import m_float = math_f64;
24
30
25
- // FIXME replace with redirect to m_float::consts::FOO as soon as it works
26
31
/*
27
32
Module: consts
28
33
*/
@@ -143,23 +148,23 @@ Function: acos
143
148
Returns the arccosine of an angle (measured in rad)
144
149
*/
145
150
pure fn acos ( x : float ) -> float
146
- { m_float:: acos ( x as m_float ) as float }
151
+ { be m_float:: acos ( x as m_float ) as float }
147
152
148
153
/*
149
154
Function: asin
150
155
151
156
Returns the arcsine of an angle (measured in rad)
152
157
*/
153
158
pure fn asin ( x : float ) -> float
154
- { m_float:: asin ( x as m_float ) as float }
159
+ { be m_float:: asin ( x as m_float ) as float }
155
160
156
161
/*
157
162
Function: atan
158
163
159
164
Returns the arctangents of an angle (measured in rad)
160
165
*/
161
166
pure fn atan ( x : float ) -> float
162
- { m_float:: atan ( x as m_float ) as float }
167
+ { be m_float:: atan ( x as m_float ) as float }
163
168
164
169
165
170
/*
@@ -168,23 +173,23 @@ Function: atan2
168
173
Returns the arctangent of an angle (measured in rad)
169
174
*/
170
175
pure fn atan2 ( y : float , x : float ) -> float
171
- { m_float:: atan2 ( y as m_float , x as m_float ) as float }
176
+ { be m_float:: atan2 ( y as m_float , x as m_float ) as float }
172
177
173
178
/*
174
179
Function: ceil
175
180
176
181
Returns the smallest integral value less than or equal to `n`
177
182
*/
178
183
pure fn ceil ( n : float ) -> float
179
- { m_float:: ceil ( n as m_float ) as float }
184
+ { be m_float:: ceil ( n as m_float ) as float }
180
185
181
186
/*
182
187
Function: cos
183
188
184
189
Returns the cosine of an angle `x` (measured in rad)
185
190
*/
186
191
pure fn cos ( x : float ) -> float
187
- { m_float:: cos ( x as m_float ) as float }
192
+ { be m_float:: cos ( x as m_float ) as float }
188
193
189
194
/*
190
195
Function: cosh
@@ -193,7 +198,7 @@ Returns the hyperbolic cosine of `x`
193
198
194
199
*/
195
200
pure fn cosh ( x : float ) -> float
196
- { m_float:: cosh ( x as m_float ) as float }
201
+ { be m_float:: cosh ( x as m_float ) as float }
197
202
198
203
199
204
/*
@@ -202,47 +207,47 @@ Function: exp
202
207
Returns `consts::e` to the power of `n*
203
208
*/
204
209
pure fn exp ( n : float ) -> float
205
- { m_float:: exp ( n as m_float ) as float }
210
+ { be m_float:: exp ( n as m_float ) as float }
206
211
207
212
/*
208
213
Function: abs
209
214
210
215
Returns the absolute value of `n`
211
216
*/
212
217
pure fn abs ( n : float ) -> float
213
- { m_float:: abs ( n as m_float ) as float }
218
+ { be m_float:: abs ( n as m_float ) as float }
214
219
215
220
/*
216
221
Function: floor
217
222
218
223
Returns the largest integral value less than or equal to `n`
219
224
*/
220
225
pure fn floor ( n : float ) -> float
221
- { m_float:: floor ( n as m_float ) as float }
226
+ { be m_float:: floor ( n as m_float ) as float }
222
227
223
228
/*
224
229
Function: fmod
225
230
226
231
Returns the floating-point remainder of `x/y`
227
232
*/
228
233
pure fn fmod ( x : float , y : float ) -> float
229
- { m_float:: fmod ( x as m_float , y as m_float ) as float }
234
+ { be m_float:: fmod ( x as m_float , y as m_float ) as float }
230
235
231
236
/*
232
237
Function: ln
233
238
234
239
Returns the natural logaritm of `n`
235
240
*/
236
241
pure fn ln ( n : float ) -> float
237
- { m_float:: ln ( n as m_float ) as float }
242
+ { be m_float:: ln ( n as m_float ) as float }
238
243
239
244
/*
240
245
Function: ldexp
241
246
242
247
Returns `x` multiplied by 2 to the power of `n`
243
248
*/
244
249
pure fn ldexp ( n : float , i : int ) -> float
245
- { m_float:: ldexp ( n as m_float , i as c_int ) as float }
250
+ { be m_float:: ldexp ( n as m_float , i as c_int ) as float }
246
251
247
252
/*
248
253
Function: ln1p
@@ -251,24 +256,23 @@ Returns the natural logarithm of `1+n` accurately,
251
256
even for very small values of `n`
252
257
*/
253
258
pure fn ln1p ( n : float ) -> float
254
- { m_float:: ln1p ( n as m_float ) as float }
259
+ { be m_float:: ln1p ( n as m_float ) as float }
255
260
256
261
/*
257
262
Function: log10
258
263
259
264
Returns the logarithm to base 10 of `n`
260
265
*/
261
266
pure fn log10 ( n : float ) -> float
262
- { m_float:: log10 ( n as m_float ) as float }
267
+ { be m_float:: log10 ( n as m_float ) as float }
263
268
264
269
/*
265
270
Function: log2
266
271
267
272
Returns the logarithm to base 2 of `n`
268
273
*/
269
274
pure fn log2 ( n : float ) -> float
270
- { m_float:: log2 ( n as m_float ) as float }
271
-
275
+ { be m_float:: log2 ( n as m_float ) as float }
272
276
273
277
/*
274
278
Function: modf
@@ -282,14 +286,10 @@ Returns:
282
286
283
287
The fractional part of `n`
284
288
*/
285
- pure fn modf ( n : float , & iptr: float ) -> float {
286
- unchecked {
287
- let f = iptr as m_float ;
288
- let r = m_float:: modf ( n as m_float , f) as float ;
289
- iptr = f as float ;
290
- ret r;
291
- }
292
- }
289
+ #[ no( warn_trivial_casts) ] // FIXME Implement
290
+ pure fn modf ( n : float , & iptr: float ) -> float { unsafe {
291
+ be m_float:: modf ( n as m_float , ptr:: addr_of ( iptr) as * m_float ) as float
292
+ } }
293
293
294
294
/*
295
295
Function: frexp
@@ -306,13 +306,13 @@ Returns:
306
306
The fractional part of `n`
307
307
*/
308
308
pure fn frexp ( n : float , & exp: c_int ) -> float
309
- { m_float:: frexp ( n as m_float , exp) as float }
309
+ { be m_float:: frexp ( n as m_float , exp) as float }
310
310
311
311
/*
312
312
Function: pow
313
313
*/
314
314
pure fn pow ( v : float , e : float ) -> float
315
- { m_float:: pow ( v as m_float , e as m_float ) as float }
315
+ { be m_float:: pow ( v as m_float , e as m_float ) as float }
316
316
317
317
318
318
/*
@@ -322,7 +322,7 @@ Returns the integral value nearest to `x` (according to the
322
322
prevailing rounding mode) in floating-point format
323
323
*/
324
324
pure fn rint ( x : float ) -> float
325
- { m_float:: rint ( x as m_float ) as float }
325
+ { be m_float:: rint ( x as m_float ) as float }
326
326
327
327
/*
328
328
Function: round
@@ -332,31 +332,31 @@ Return the integral value nearest to `x` rounding half-way
332
332
cases away from zero, regardless of the current rounding direction.
333
333
*/
334
334
pure fn round ( x : float ) -> float
335
- { m_float:: round ( x as m_float ) as float }
335
+ { be m_float:: round ( x as m_float ) as float }
336
336
337
337
/*
338
338
Function: sin
339
339
340
340
Returns the sine of an angle `x` (measured in rad)
341
341
*/
342
342
pure fn sin ( x : float ) -> float
343
- { m_float:: sin ( x as m_float ) as float }
343
+ { be m_float:: sin ( x as m_float ) as float }
344
344
345
345
/*
346
346
Function: sinh
347
347
348
348
Returns the hyperbolic sine of an angle `x` (measured in rad)
349
349
*/
350
350
pure fn sinh ( x : float ) -> float
351
- { m_float:: sinh ( x as m_float ) as float }
351
+ { be m_float:: sinh ( x as m_float ) as float }
352
352
353
353
/*
354
354
Function: sqrt
355
355
356
356
Returns the square root of `x`
357
357
*/
358
358
pure fn sqrt ( x : float ) -> float
359
- { m_float:: sqrt ( x as m_float ) as float }
359
+ { be m_float:: sqrt ( x as m_float ) as float }
360
360
361
361
/*
362
362
Function: tan
@@ -365,7 +365,7 @@ Returns the tangent of an angle `x` (measured in rad)
365
365
366
366
*/
367
367
pure fn tan ( x : float ) -> float
368
- { m_float:: tan ( x as m_float ) as float }
368
+ { be m_float:: tan ( x as m_float ) as float }
369
369
370
370
/*
371
371
Function: tanh
@@ -374,7 +374,7 @@ Returns the hyperbolic tangent of an angle `x` (measured in rad)
374
374
375
375
*/
376
376
pure fn tanh ( x : float ) -> float
377
- { m_float:: tanh ( x as m_float ) as float }
377
+ { be m_float:: tanh ( x as m_float ) as float }
378
378
379
379
/*
380
380
Function: trunc
@@ -383,7 +383,7 @@ Returns the integral value nearest to but no larger in magnitude than `x`
383
383
384
384
*/
385
385
pure fn trunc ( x : float ) -> float
386
- { m_float:: trunc ( x as m_float ) as float }
386
+ { be m_float:: trunc ( x as m_float ) as float }
387
387
388
388
389
389
0 commit comments