File tree Expand file tree Collapse file tree 2 files changed +52
-0
lines changed Expand file tree Collapse file tree 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