@@ -250,6 +250,28 @@ mod f16;
250250mod f32;
251251mod f64;
252252
253+ float_test ! {
254+ name: nan,
255+ attrs: {
256+ const : #[ cfg( false ) ] ,
257+ f16: #[ cfg( any( miri, target_has_reliable_f16) ) ] ,
258+ f128: #[ cfg( any( miri, target_has_reliable_f128) ) ] ,
259+ } ,
260+ test<Float > {
261+ use std:: num:: FpCategory as Fp ;
262+ let nan: Float = Float :: NAN ;
263+ assert!( nan. is_nan( ) ) ;
264+ assert!( !nan. is_infinite( ) ) ;
265+ assert!( !nan. is_finite( ) ) ;
266+ assert!( !nan. is_normal( ) ) ;
267+ assert!( nan. is_sign_positive( ) ) ;
268+ assert!( !nan. is_sign_negative( ) ) ;
269+ assert!( matches!( nan. classify( ) , Fp :: Nan ) ) ;
270+ // Ensure the quiet bit is set.
271+ assert!( nan. to_bits( ) & ( 1 << ( Float :: MANTISSA_DIGITS - 2 ) ) != 0 ) ;
272+ }
273+ }
274+
253275float_test ! {
254276 name: min,
255277 attrs: {
@@ -695,24 +717,3 @@ float_test! {
695717 assert!( Float :: NEG_INFINITY . fract( ) . is_nan( ) ) ;
696718 }
697719}
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- }
0 commit comments