Loading mfbt/FloatingPoint.h +0 −14 Original line number Diff line number Diff line Loading @@ -155,20 +155,6 @@ struct FloatingPoint final : private detail::FloatingPointTrait<T> { "all bits accounted for"); }; /** Determines whether a float/double is NaN. */ template <typename T> static MOZ_ALWAYS_INLINE bool IsNaN(T aValue) { /* * A float/double is NaN if all exponent bits are 1 and the significand * contains at least one non-zero bit. */ typedef FloatingPoint<T> Traits; typedef typename Traits::Bits Bits; return (BitwiseCast<Bits>(aValue) & Traits::kExponentBits) == Traits::kExponentBits && (BitwiseCast<Bits>(aValue) & Traits::kSignificandBits) != 0; } /** Determines whether a float/double is +Infinity or -Infinity. */ template <typename T> static MOZ_ALWAYS_INLINE bool IsInfinite(T aValue) { Loading mfbt/tests/TestFloatingPoint.cpp +10 −17 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ using mozilla::FuzzyEqualsMultiplicative; using mozilla::IsFinite; using mozilla::IsFloat32Representable; using mozilla::IsInfinite; using mozilla::IsNaN; using mozilla::IsNegative; using mozilla::IsNegativeZero; using mozilla::IsPositiveZero; Loading Loading @@ -310,15 +309,12 @@ static void TestEqualsIsForNonInteger(T aVal) { }; static void TestDoublesPredicates() { A(IsNaN(UnspecifiedNaN<double>())); A(IsNaN(SpecificNaN<double>(1, 17))); A(std::isnan(UnspecifiedNaN<double>())); A(std::isnan(SpecificNaN<double>(1, 17))); ; A(IsNaN(SpecificNaN<double>(0, 0xfffffffffff0fULL))); A(!IsNaN(0.0)); A(!IsNaN(-0.0)); A(!IsNaN(1.0)); A(!IsNaN(PositiveInfinity<double>())); A(!IsNaN(NegativeInfinity<double>())); A(std::isnan(SpecificNaN<double>(0, 0xfffffffffff0fULL))); A(!std::isnan(PositiveInfinity<double>())); A(!std::isnan(NegativeInfinity<double>())); A(IsInfinite(PositiveInfinity<double>())); A(IsInfinite(NegativeInfinity<double>())); Loading Loading @@ -412,15 +408,12 @@ static void TestDoublesPredicates() { } static void TestFloatsPredicates() { A(IsNaN(UnspecifiedNaN<float>())); A(IsNaN(SpecificNaN<float>(1, 17))); A(std::isnan(UnspecifiedNaN<float>())); A(std::isnan(SpecificNaN<float>(1, 17))); ; A(IsNaN(SpecificNaN<float>(0, 0x7fff0fUL))); A(!IsNaN(0.0f)); A(!IsNaN(-0.0f)); A(!IsNaN(1.0f)); A(!IsNaN(PositiveInfinity<float>())); A(!IsNaN(NegativeInfinity<float>())); A(std::isnan(SpecificNaN<float>(0, 0x7fff0fUL))); A(!std::isnan(PositiveInfinity<float>())); A(!std::isnan(NegativeInfinity<float>())); A(IsInfinite(PositiveInfinity<float>())); A(IsInfinite(NegativeInfinity<float>())); Loading Loading
mfbt/FloatingPoint.h +0 −14 Original line number Diff line number Diff line Loading @@ -155,20 +155,6 @@ struct FloatingPoint final : private detail::FloatingPointTrait<T> { "all bits accounted for"); }; /** Determines whether a float/double is NaN. */ template <typename T> static MOZ_ALWAYS_INLINE bool IsNaN(T aValue) { /* * A float/double is NaN if all exponent bits are 1 and the significand * contains at least one non-zero bit. */ typedef FloatingPoint<T> Traits; typedef typename Traits::Bits Bits; return (BitwiseCast<Bits>(aValue) & Traits::kExponentBits) == Traits::kExponentBits && (BitwiseCast<Bits>(aValue) & Traits::kSignificandBits) != 0; } /** Determines whether a float/double is +Infinity or -Infinity. */ template <typename T> static MOZ_ALWAYS_INLINE bool IsInfinite(T aValue) { Loading
mfbt/tests/TestFloatingPoint.cpp +10 −17 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ using mozilla::FuzzyEqualsMultiplicative; using mozilla::IsFinite; using mozilla::IsFloat32Representable; using mozilla::IsInfinite; using mozilla::IsNaN; using mozilla::IsNegative; using mozilla::IsNegativeZero; using mozilla::IsPositiveZero; Loading Loading @@ -310,15 +309,12 @@ static void TestEqualsIsForNonInteger(T aVal) { }; static void TestDoublesPredicates() { A(IsNaN(UnspecifiedNaN<double>())); A(IsNaN(SpecificNaN<double>(1, 17))); A(std::isnan(UnspecifiedNaN<double>())); A(std::isnan(SpecificNaN<double>(1, 17))); ; A(IsNaN(SpecificNaN<double>(0, 0xfffffffffff0fULL))); A(!IsNaN(0.0)); A(!IsNaN(-0.0)); A(!IsNaN(1.0)); A(!IsNaN(PositiveInfinity<double>())); A(!IsNaN(NegativeInfinity<double>())); A(std::isnan(SpecificNaN<double>(0, 0xfffffffffff0fULL))); A(!std::isnan(PositiveInfinity<double>())); A(!std::isnan(NegativeInfinity<double>())); A(IsInfinite(PositiveInfinity<double>())); A(IsInfinite(NegativeInfinity<double>())); Loading Loading @@ -412,15 +408,12 @@ static void TestDoublesPredicates() { } static void TestFloatsPredicates() { A(IsNaN(UnspecifiedNaN<float>())); A(IsNaN(SpecificNaN<float>(1, 17))); A(std::isnan(UnspecifiedNaN<float>())); A(std::isnan(SpecificNaN<float>(1, 17))); ; A(IsNaN(SpecificNaN<float>(0, 0x7fff0fUL))); A(!IsNaN(0.0f)); A(!IsNaN(-0.0f)); A(!IsNaN(1.0f)); A(!IsNaN(PositiveInfinity<float>())); A(!IsNaN(NegativeInfinity<float>())); A(std::isnan(SpecificNaN<float>(0, 0x7fff0fUL))); A(!std::isnan(PositiveInfinity<float>())); A(!std::isnan(NegativeInfinity<float>())); A(IsInfinite(PositiveInfinity<float>())); A(IsInfinite(NegativeInfinity<float>())); Loading