@@ -64,48 +64,56 @@ mod cmath {
64
64
}
65
65
}
66
66
67
- // FIXME(#11621): These constants should be deprecated once CTFE is implemented
68
- // in favour of calling their respective functions in `Bounded` and `Float`.
69
-
70
67
pub static RADIX : uint = 2 u;
71
68
72
- pub static MANTISSA_DIGITS : uint = 53 u ;
73
- pub static DIGITS : uint = 15 u ;
69
+ pub static MANTISSA_DIGITS : uint = 24 u ;
70
+ pub static DIGITS : uint = 6 u ;
74
71
75
- pub static EPSILON : f64 = 2.220446e-16_f64 ;
72
+ pub static EPSILON : f32 = 1.19209290e-07_f32 ;
76
73
77
- // FIXME (#1433): this is wrong, replace with hexadecimal (%a) statics
78
- // below.
79
- pub static MIN_VALUE : f64 = 2.225074e-308_f64 ;
80
- pub static MAX_VALUE : f64 = 1.797693e+308_f64 ;
74
+ /// Minimum normalized f32 value
75
+ pub static MIN_VALUE : f32 = 1.17549435e-38_f32 ;
76
+ /// Maximum f32 value
77
+ pub static MAX_VALUE : f32 = 3.40282347e+38_f32 ;
81
78
82
- pub static MIN_EXP : uint = -1021 u ;
83
- pub static MAX_EXP : uint = 1024 u ;
79
+ pub static MIN_EXP : int = -125 ;
80
+ pub static MAX_EXP : int = 128 ;
84
81
85
- pub static MIN_10_EXP : int = -307 ;
86
- pub static MAX_10_EXP : int = 308 ;
82
+ pub static MIN_10_EXP : int = -37 ;
83
+ pub static MAX_10_EXP : int = 38 ;
87
84
88
85
pub static NAN : f32 = 0.0_f32 /0.0_f32 ;
89
86
pub static INFINITY : f32 = 1.0_f32 /0.0_f32 ;
90
87
pub static NEG_INFINITY : f32 = -1.0_f32 /0.0_f32 ;
91
88
92
89
/// Various useful constants.
93
90
pub mod consts {
94
- // FIXME (requires Issue #1433 to fix): replace with mathematical
95
- // staticants from cmath.
91
+ // FIXME: replace with mathematical constants from cmath.
96
92
97
93
// FIXME(#11621): These constants should be deprecated once CTFE is
98
94
// implemented in favour of calling their respective functions in `Float`.
99
95
100
96
/// Archimedes' constant
101
97
pub static PI : f32 = 3.14159265358979323846264338327950288_f32 ;
102
98
99
+ /// pi * 2.0
100
+ pub static PI_2 : f32 = 6.28318530717958647692528676655900576_f32 ;
101
+
103
102
/// pi/2.0
104
103
pub static FRAC_PI_2 : f32 = 1.57079632679489661923132169163975144_f32 ;
105
104
105
+ /// pi/3.0
106
+ pub static FRAC_PI_3 : f32 = 1.04719755119659774615421446109316763_f32 ;
107
+
106
108
/// pi/4.0
107
109
pub static FRAC_PI_4 : f32 = 0.785398163397448309615660845819875721_f32 ;
108
110
111
+ /// pi/6.0
112
+ pub static FRAC_PI_6 : f32 = 0.52359877559829887307710723054658381_f32 ;
113
+
114
+ /// pi/8.0
115
+ pub static FRAC_PI_8 : f32 = 0.39269908169872415480783042290993786_f32 ;
116
+
109
117
/// 1.0/pi
110
118
pub static FRAC_1_PI : f32 = 0.318309886183790671537767526745028724_f32 ;
111
119
@@ -251,24 +259,25 @@ impl Signed for f32 {
251
259
}
252
260
253
261
impl Bounded for f32 {
262
+ // NOTE: this is the smallest non-infinite f32 value, *not* MIN_VALUE
254
263
#[ inline]
255
- fn min_value ( ) -> f32 { 1.17549435e-38 }
264
+ fn min_value ( ) -> f32 { - MAX_VALUE }
256
265
257
266
#[ inline]
258
- fn max_value ( ) -> f32 { 3.40282347e+38 }
267
+ fn max_value ( ) -> f32 { MAX_VALUE }
259
268
}
260
269
261
270
impl Primitive for f32 { }
262
271
263
272
impl Float for f32 {
264
273
#[ inline]
265
- fn nan ( ) -> f32 { 0.0 / 0.0 }
274
+ fn nan ( ) -> f32 { NAN }
266
275
267
276
#[ inline]
268
- fn infinity ( ) -> f32 { 1.0 / 0.0 }
277
+ fn infinity ( ) -> f32 { INFINITY }
269
278
270
279
#[ inline]
271
- fn neg_infinity ( ) -> f32 { - 1.0 / 0.0 }
280
+ fn neg_infinity ( ) -> f32 { NEG_INFINITY }
272
281
273
282
#[ inline]
274
283
fn neg_zero ( ) -> f32 { -0.0 }
@@ -313,25 +322,25 @@ impl Float for f32 {
313
322
}
314
323
315
324
#[ inline]
316
- fn mantissa_digits ( _: Option < f32 > ) -> uint { 24 }
325
+ fn mantissa_digits ( _: Option < f32 > ) -> uint { MANTISSA_DIGITS }
317
326
318
327
#[ inline]
319
- fn digits ( _: Option < f32 > ) -> uint { 6 }
328
+ fn digits ( _: Option < f32 > ) -> uint { DIGITS }
320
329
321
330
#[ inline]
322
- fn epsilon ( ) -> f32 { 1.19209290e-07 }
331
+ fn epsilon ( ) -> f32 { EPSILON }
323
332
324
333
#[ inline]
325
- fn min_exp ( _: Option < f32 > ) -> int { - 125 }
334
+ fn min_exp ( _: Option < f32 > ) -> int { MIN_EXP }
326
335
327
336
#[ inline]
328
- fn max_exp ( _: Option < f32 > ) -> int { 128 }
337
+ fn max_exp ( _: Option < f32 > ) -> int { MAX_EXP }
329
338
330
339
#[ inline]
331
- fn min_10_exp ( _: Option < f32 > ) -> int { - 37 }
340
+ fn min_10_exp ( _: Option < f32 > ) -> int { MIN_10_EXP }
332
341
333
342
#[ inline]
334
- fn max_10_exp ( _: Option < f32 > ) -> int { 38 }
343
+ fn max_10_exp ( _: Option < f32 > ) -> int { MAX_10_EXP }
335
344
336
345
/// Constructs a floating point number by multiplying `x` by 2 raised to the
337
346
/// power of `exp`
@@ -442,11 +451,11 @@ impl Float for f32 {
442
451
443
452
/// sqrt(2.0)
444
453
#[ inline]
445
- fn sqrt2 ( ) -> f32 { 1.41421356237309504880168872420969808 }
454
+ fn sqrt2 ( ) -> f32 { consts :: SQRT2 }
446
455
447
456
/// 1.0 / sqrt(2.0)
448
457
#[ inline]
449
- fn frac_1_sqrt2 ( ) -> f32 { 0.707106781186547524400844362104849039 }
458
+ fn frac_1_sqrt2 ( ) -> f32 { consts :: FRAC_1_SQRT2 }
450
459
451
460
#[ inline]
452
461
fn sqrt ( self ) -> f32 {
@@ -468,43 +477,43 @@ impl Float for f32 {
468
477
469
478
/// Archimedes' constant
470
479
#[ inline]
471
- fn pi ( ) -> f32 { 3.14159265358979323846264338327950288 }
480
+ fn pi ( ) -> f32 { consts :: PI }
472
481
473
482
/// 2.0 * pi
474
483
#[ inline]
475
- fn two_pi ( ) -> f32 { 6.28318530717958647692528676655900576 }
484
+ fn two_pi ( ) -> f32 { consts :: PI_2 }
476
485
477
486
/// pi / 2.0
478
487
#[ inline]
479
- fn frac_pi_2 ( ) -> f32 { 1.57079632679489661923132169163975144 }
488
+ fn frac_pi_2 ( ) -> f32 { consts :: FRAC_PI_2 }
480
489
481
490
/// pi / 3.0
482
491
#[ inline]
483
- fn frac_pi_3 ( ) -> f32 { 1.04719755119659774615421446109316763 }
492
+ fn frac_pi_3 ( ) -> f32 { consts :: FRAC_PI_3 }
484
493
485
494
/// pi / 4.0
486
495
#[ inline]
487
- fn frac_pi_4 ( ) -> f32 { 0.785398163397448309615660845819875721 }
496
+ fn frac_pi_4 ( ) -> f32 { consts :: FRAC_PI_4 }
488
497
489
498
/// pi / 6.0
490
499
#[ inline]
491
- fn frac_pi_6 ( ) -> f32 { 0.52359877559829887307710723054658381 }
500
+ fn frac_pi_6 ( ) -> f32 { consts :: FRAC_PI_6 }
492
501
493
502
/// pi / 8.0
494
503
#[ inline]
495
- fn frac_pi_8 ( ) -> f32 { 0.39269908169872415480783042290993786 }
504
+ fn frac_pi_8 ( ) -> f32 { consts :: FRAC_PI_8 }
496
505
497
506
/// 1 .0/ pi
498
507
#[ inline]
499
- fn frac_1_pi ( ) -> f32 { 0.318309886183790671537767526745028724 }
508
+ fn frac_1_pi ( ) -> f32 { consts :: FRAC_1_PI }
500
509
501
510
/// 2.0 / pi
502
511
#[ inline]
503
- fn frac_2_pi ( ) -> f32 { 0.636619772367581343075535053490057448 }
512
+ fn frac_2_pi ( ) -> f32 { consts :: FRAC_2_PI }
504
513
505
514
/// 2.0 / sqrt(pi)
506
515
#[ inline]
507
- fn frac_2_sqrtpi ( ) -> f32 { 1.12837916709551257389615890312154517 }
516
+ fn frac_2_sqrtpi ( ) -> f32 { consts :: FRAC_2_SQRTPI }
508
517
509
518
#[ inline]
510
519
fn sin ( self ) -> f32 {
@@ -549,23 +558,23 @@ impl Float for f32 {
549
558
550
559
/// Euler's number
551
560
#[ inline]
552
- fn e ( ) -> f32 { 2.71828182845904523536028747135266250 }
561
+ fn e ( ) -> f32 { consts :: E }
553
562
554
563
/// log2(e)
555
564
#[ inline]
556
- fn log2_e ( ) -> f32 { 1.44269504088896340735992468100189214 }
565
+ fn log2_e ( ) -> f32 { consts :: LOG2_E }
557
566
558
567
/// log10(e)
559
568
#[ inline]
560
- fn log10_e ( ) -> f32 { 0.434294481903251827651128918916605082 }
569
+ fn log10_e ( ) -> f32 { consts :: LOG10_E }
561
570
562
571
/// ln(2.0)
563
572
#[ inline]
564
- fn ln_2 ( ) -> f32 { 0.693147180559945309417232121458176568 }
573
+ fn ln_2 ( ) -> f32 { consts :: LN_2 }
565
574
566
575
/// ln(10.0)
567
576
#[ inline]
568
- fn ln_10 ( ) -> f32 { 2.30258509299404568401799145468436421 }
577
+ fn ln_10 ( ) -> f32 { consts :: LN_10 }
569
578
570
579
/// Returns the exponential of the number
571
580
#[ inline]
0 commit comments