@@ -10,6 +10,7 @@ extern crate num_traits;
10
10
11
11
use core:: cmp:: Ordering ;
12
12
use core:: convert:: TryFrom ;
13
+ use core:: num:: FpCategory ;
13
14
use core:: ops:: { Add , AddAssign , Deref , DerefMut , Div , DivAssign , Mul , MulAssign , Neg , Rem ,
14
15
RemAssign , Sub , SubAssign } ;
15
16
use core:: hash:: { Hash , Hasher } ;
@@ -334,6 +335,37 @@ impl<T: ToPrimitive> ToPrimitive for OrderedFloat<T> {
334
335
fn to_f64 ( & self ) -> Option < f64 > { self . 0 . to_f64 ( ) }
335
336
}
336
337
338
+ impl < T : Float > num_traits:: float:: FloatCore for OrderedFloat < T > {
339
+ fn nan ( ) -> Self { OrderedFloat ( T :: nan ( ) ) }
340
+ fn infinity ( ) -> Self { OrderedFloat ( T :: infinity ( ) ) }
341
+ fn neg_infinity ( ) -> Self { OrderedFloat ( T :: neg_infinity ( ) ) }
342
+ fn neg_zero ( ) -> Self { OrderedFloat ( T :: neg_zero ( ) ) }
343
+ fn min_value ( ) -> Self { OrderedFloat ( T :: min_value ( ) ) }
344
+ fn min_positive_value ( ) -> Self { OrderedFloat ( T :: min_positive_value ( ) ) }
345
+ fn max_value ( ) -> Self { OrderedFloat ( T :: max_value ( ) ) }
346
+ fn is_nan ( self ) -> bool { self . 0 . is_nan ( ) }
347
+ fn is_infinite ( self ) -> bool { self . 0 . is_infinite ( ) }
348
+ fn is_finite ( self ) -> bool { self . 0 . is_finite ( ) }
349
+ fn is_normal ( self ) -> bool { self . 0 . is_normal ( ) }
350
+ fn classify ( self ) -> FpCategory { self . 0 . classify ( ) }
351
+ fn floor ( self ) -> Self { OrderedFloat ( self . 0 . floor ( ) ) }
352
+ fn ceil ( self ) -> Self { OrderedFloat ( self . 0 . ceil ( ) ) }
353
+ fn round ( self ) -> Self { OrderedFloat ( self . 0 . round ( ) ) }
354
+ fn trunc ( self ) -> Self { OrderedFloat ( self . 0 . trunc ( ) ) }
355
+ fn fract ( self ) -> Self { OrderedFloat ( self . 0 . fract ( ) ) }
356
+ fn abs ( self ) -> Self { OrderedFloat ( self . 0 . abs ( ) ) }
357
+ fn signum ( self ) -> Self { OrderedFloat ( self . 0 . signum ( ) ) }
358
+ fn is_sign_positive ( self ) -> bool { self . 0 . is_sign_positive ( ) }
359
+ fn is_sign_negative ( self ) -> bool { self . 0 . is_sign_negative ( ) }
360
+ fn recip ( self ) -> Self { OrderedFloat ( self . 0 . recip ( ) ) }
361
+ fn powi ( self , n : i32 ) -> Self { OrderedFloat ( self . 0 . powi ( n) ) }
362
+ fn integer_decode ( self ) -> ( u64 , i16 , i8 ) { self . 0 . integer_decode ( ) }
363
+ fn epsilon ( ) -> Self { OrderedFloat ( T :: epsilon ( ) ) }
364
+ fn to_degrees ( self ) -> Self { OrderedFloat ( self . 0 . to_degrees ( ) ) }
365
+ fn to_radians ( self ) -> Self { OrderedFloat ( self . 0 . to_radians ( ) ) }
366
+ }
367
+
368
+ #[ cfg( feature = "std" ) ]
337
369
impl < T : Float > Float for OrderedFloat < T > {
338
370
fn nan ( ) -> Self { OrderedFloat ( T :: nan ( ) ) }
339
371
fn infinity ( ) -> Self { OrderedFloat ( T :: infinity ( ) ) }
@@ -346,7 +378,7 @@ impl<T: Float> Float for OrderedFloat<T> {
346
378
fn is_infinite ( self ) -> bool { self . 0 . is_infinite ( ) }
347
379
fn is_finite ( self ) -> bool { self . 0 . is_finite ( ) }
348
380
fn is_normal ( self ) -> bool { self . 0 . is_normal ( ) }
349
- fn classify ( self ) -> std :: num :: FpCategory { self . 0 . classify ( ) }
381
+ fn classify ( self ) -> FpCategory { self . 0 . classify ( ) }
350
382
fn floor ( self ) -> Self { OrderedFloat ( self . 0 . floor ( ) ) }
351
383
fn ceil ( self ) -> Self { OrderedFloat ( self . 0 . ceil ( ) ) }
352
384
fn round ( self ) -> Self { OrderedFloat ( self . 0 . round ( ) ) }
@@ -392,6 +424,9 @@ impl<T: Float> Float for OrderedFloat<T> {
392
424
fn acosh ( self ) -> Self { OrderedFloat ( self . 0 . acosh ( ) ) }
393
425
fn atanh ( self ) -> Self { OrderedFloat ( self . 0 . atanh ( ) ) }
394
426
fn integer_decode ( self ) -> ( u64 , i16 , i8 ) { self . 0 . integer_decode ( ) }
427
+ fn epsilon ( ) -> Self { OrderedFloat ( T :: epsilon ( ) ) }
428
+ fn to_degrees ( self ) -> Self { OrderedFloat ( self . 0 . to_degrees ( ) ) }
429
+ fn to_radians ( self ) -> Self { OrderedFloat ( self . 0 . to_radians ( ) ) }
395
430
}
396
431
397
432
0 commit comments