File tree Expand file tree Collapse file tree 5 files changed +21
-56
lines changed
library/coretests/tests/floats Expand file tree Collapse file tree 5 files changed +21
-56
lines changed Original file line number Diff line number Diff line change @@ -55,20 +55,6 @@ fn test_num_f128() {
5555// FIXME(f16_f128,miri): many of these have to be disabled since miri does not yet support
5656// the intrinsics.
5757
58- #[ test]
59- fn test_nan ( ) {
60- let nan: f128 = f128:: NAN ;
61- assert ! ( nan. is_nan( ) ) ;
62- assert ! ( !nan. is_infinite( ) ) ;
63- assert ! ( !nan. is_finite( ) ) ;
64- assert ! ( nan. is_sign_positive( ) ) ;
65- assert ! ( !nan. is_sign_negative( ) ) ;
66- assert ! ( !nan. is_normal( ) ) ;
67- assert_eq ! ( Fp :: Nan , nan. classify( ) ) ;
68- // Ensure the quiet bit is set.
69- assert ! ( nan. to_bits( ) & ( 1 << ( f128:: MANTISSA_DIGITS - 2 ) ) != 0 ) ;
70- }
71-
7258#[ test]
7359fn test_infinity ( ) {
7460 let inf: f128 = f128:: INFINITY ;
Original file line number Diff line number Diff line change @@ -51,20 +51,6 @@ fn test_num_f16() {
5151// FIXME(f16_f128,miri): many of these have to be disabled since miri does not yet support
5252// the intrinsics.
5353
54- #[ test]
55- fn test_nan ( ) {
56- let nan: f16 = f16:: NAN ;
57- assert ! ( nan. is_nan( ) ) ;
58- assert ! ( !nan. is_infinite( ) ) ;
59- assert ! ( !nan. is_finite( ) ) ;
60- assert ! ( nan. is_sign_positive( ) ) ;
61- assert ! ( !nan. is_sign_negative( ) ) ;
62- assert ! ( !nan. is_normal( ) ) ;
63- assert_eq ! ( Fp :: Nan , nan. classify( ) ) ;
64- // Ensure the quiet bit is set.
65- assert ! ( nan. to_bits( ) & ( 1 << ( f16:: MANTISSA_DIGITS - 2 ) ) != 0 ) ;
66- }
67-
6854#[ test]
6955fn test_infinity ( ) {
7056 let inf: f16 = f16:: INFINITY ;
Original file line number Diff line number Diff line change @@ -35,20 +35,6 @@ fn test_num_f32() {
3535 super :: test_num ( 10f32 , 2f32 ) ;
3636}
3737
38- #[ test]
39- fn test_nan ( ) {
40- let nan: f32 = f32:: NAN ;
41- assert ! ( nan. is_nan( ) ) ;
42- assert ! ( !nan. is_infinite( ) ) ;
43- assert ! ( !nan. is_finite( ) ) ;
44- assert ! ( !nan. is_normal( ) ) ;
45- assert ! ( nan. is_sign_positive( ) ) ;
46- assert ! ( !nan. is_sign_negative( ) ) ;
47- assert_eq ! ( Fp :: Nan , nan. classify( ) ) ;
48- // Ensure the quiet bit is set.
49- assert ! ( nan. to_bits( ) & ( 1 << ( f32 :: MANTISSA_DIGITS - 2 ) ) != 0 ) ;
50- }
51-
5238#[ test]
5339fn test_infinity ( ) {
5440 let inf: f32 = f32:: INFINITY ;
Original file line number Diff line number Diff line change @@ -30,20 +30,6 @@ fn test_num_f64() {
3030 super :: test_num ( 10f64 , 2f64 ) ;
3131}
3232
33- #[ test]
34- fn test_nan ( ) {
35- let nan: f64 = f64:: NAN ;
36- assert ! ( nan. is_nan( ) ) ;
37- assert ! ( !nan. is_infinite( ) ) ;
38- assert ! ( !nan. is_finite( ) ) ;
39- assert ! ( !nan. is_normal( ) ) ;
40- assert ! ( nan. is_sign_positive( ) ) ;
41- assert ! ( !nan. is_sign_negative( ) ) ;
42- assert_eq ! ( Fp :: Nan , nan. classify( ) ) ;
43- // Ensure the quiet bit is set.
44- assert ! ( nan. to_bits( ) & ( 1 << ( f64 :: MANTISSA_DIGITS - 2 ) ) != 0 ) ;
45- }
46-
4733#[ test]
4834fn test_infinity ( ) {
4935 let inf: f64 = f64:: INFINITY ;
Original file line number Diff line number Diff line change @@ -695,3 +695,24 @@ float_test! {
695695 assert!( Float :: NEG_INFINITY . fract( ) . is_nan( ) ) ;
696696 }
697697}
698+
699+ float_test ! {
700+ name: nan,
701+ attrs: {
702+ f16: #[ cfg( any( miri, target_has_reliable_f16_math) ) ] ,
703+ f128: #[ cfg( any( miri, target_has_reliable_f128_math) ) ] ,
704+ } ,
705+ test<Float > {
706+ use std:: num:: FpCategory as Fp ;
707+ let nan: Float = Float :: NAN ;
708+ assert!( nan. is_nan( ) ) ;
709+ assert!( !nan. is_infinite( ) ) ;
710+ assert!( !nan. is_finite( ) ) ;
711+ assert!( !nan. is_normal( ) ) ;
712+ assert!( nan. is_sign_positive( ) ) ;
713+ assert!( !nan. is_sign_negative( ) ) ;
714+ assert!( matches!( nan. classify( ) , Fp :: Nan ) ) ;
715+ // Ensure the quiet bit is set.
716+ assert!( nan. to_bits( ) & ( 1 << ( Float :: MANTISSA_DIGITS - 2 ) ) != 0 ) ;
717+ }
718+ }
You can’t perform that action at this time.
0 commit comments