File tree 2 files changed +52
-0
lines changed
2 files changed +52
-0
lines changed Original file line number Diff line number Diff line change @@ -441,6 +441,32 @@ impl f32 {
441
441
self . abs_private ( ) < Self :: INFINITY
442
442
}
443
443
444
+ /// Returns `true` if the number is [subnormal].
445
+ ///
446
+ /// ```
447
+ /// #![feature(is_subnormal)]
448
+ /// let min = f32::MIN_POSITIVE; // 1.17549435e-38f32
449
+ /// let max = f32::MAX;
450
+ /// let lower_than_min = 1.0e-40_f32;
451
+ /// let zero = 0.0_f32;
452
+ ///
453
+ /// assert!(!min.is_subnormal());
454
+ /// assert!(!max.is_subnormal());
455
+ ///
456
+ /// assert!(!zero.is_subnormal());
457
+ /// assert!(!f32::NAN.is_subnormal());
458
+ /// assert!(!f32::INFINITY.is_subnormal());
459
+ /// // Values between `0` and `min` are Subnormal.
460
+ /// assert!(lower_than_min.is_subnormal());
461
+ /// ```
462
+ /// [subnormal]: https://en.wikipedia.org/wiki/Denormal_number
463
+ #[ unstable( feature = "is_subnormal" , issue = "79288" ) ]
464
+ #[ rustc_const_unstable( feature = "const_float_classify" , issue = "72505" ) ]
465
+ #[ inline]
466
+ pub const fn is_subnormal ( self ) -> bool {
467
+ matches ! ( self . classify( ) , FpCategory :: Subnormal )
468
+ }
469
+
444
470
/// Returns `true` if the number is neither zero, infinite,
445
471
/// [subnormal], or `NaN`.
446
472
///
Original file line number Diff line number Diff line change @@ -440,6 +440,32 @@ impl f64 {
440
440
self . abs_private ( ) < Self :: INFINITY
441
441
}
442
442
443
+ /// Returns `true` if the number is [subnormal].
444
+ ///
445
+ /// ```
446
+ /// #![feature(is_subnormal)]
447
+ /// let min = f64::MIN_POSITIVE; // 2.2250738585072014e-308_f64
448
+ /// let max = f64::MAX;
449
+ /// let lower_than_min = 1.0e-308_f64;
450
+ /// let zero = 0.0_f64;
451
+ ///
452
+ /// assert!(!min.is_subnormal());
453
+ /// assert!(!max.is_subnormal());
454
+ ///
455
+ /// assert!(!zero.is_subnormal());
456
+ /// assert!(!f64::NAN.is_subnormal());
457
+ /// assert!(!f64::INFINITY.is_subnormal());
458
+ /// // Values between `0` and `min` are Subnormal.
459
+ /// assert!(lower_than_min.is_subnormal());
460
+ /// ```
461
+ /// [subnormal]: https://en.wikipedia.org/wiki/Denormal_number
462
+ #[ unstable( feature = "is_subnormal" , issue = "79288" ) ]
463
+ #[ rustc_const_unstable( feature = "const_float_classify" , issue = "72505" ) ]
464
+ #[ inline]
465
+ pub const fn is_subnormal ( self ) -> bool {
466
+ matches ! ( self . classify( ) , FpCategory :: Subnormal )
467
+ }
468
+
443
469
/// Returns `true` if the number is neither zero, infinite,
444
470
/// [subnormal], or `NaN`.
445
471
///
You can’t perform that action at this time.
0 commit comments