@@ -10182,78 +10182,4 @@ TEST(APFloatTest, FrexpQuietSNaN) {
1018210182 EXPECT_FALSE (Result.isSignaling ());
1018310183}
1018410184
10185- TEST (APFloatTest, expf) {
10186- std::array<llvm::RoundingMode, 4 > allRoundingModes = {
10187- APFloat::rmNearestTiesToEven, APFloat::rmTowardPositive,
10188- APFloat::rmTowardNegative, APFloat::rmTowardZero};
10189- for (auto rm : allRoundingModes) {
10190- // exp(+-0) = 1 for all rounding modes.
10191- EXPECT_EQ (1 .0f , llvm::exp (APFloat (0 .0f ), rm).convertToFloat ());
10192- EXPECT_EQ (1 .0f , llvm::exp (APFloat (-0 .0f ), rm).convertToFloat ());
10193- // exp(+Inf) = +Inf for all rounding modes.
10194- EXPECT_EQ (std::numeric_limits<float >::infinity (),
10195- llvm::exp (APFloat::getInf (APFloat::IEEEsingle (), false ), rm)
10196- .convertToFloat ());
10197- // exp(-Inf) = 0 for all rounding modes.
10198- EXPECT_EQ (0 .0f , llvm::exp (APFloat::getInf (APFloat::IEEEsingle (), true ), rm)
10199- .convertToFloat ());
10200- // exp(NaN) = NaN for all rounding modes.
10201- EXPECT_TRUE (llvm::exp (APFloat::getNaN (APFloat::IEEEsingle ()), rm).isNaN ());
10202- }
10203- // exp(1)
10204- EXPECT_EQ (
10205- 0x1 .5bf0a8p1f,
10206- llvm::exp (APFloat (1 .0f ), APFloat::rmNearestTiesToEven).convertToFloat ());
10207- EXPECT_EQ (
10208- 0x1 .5bf0aap1f,
10209- llvm::exp (APFloat (1 .0f ), APFloat::rmTowardPositive).convertToFloat ());
10210- EXPECT_EQ (
10211- 0x1 .5bf0a8p1f,
10212- llvm::exp (APFloat (1 .0f ), APFloat::rmTowardNegative).convertToFloat ());
10213- EXPECT_EQ (0x1 .5bf0a8p1f,
10214- llvm::exp (APFloat (1 .0f ), APFloat::rmTowardZero).convertToFloat ());
10215- // exp(float max)
10216- EXPECT_EQ (std::numeric_limits<float >::infinity (),
10217- llvm::exp (APFloat::getLargest (APFloat::IEEEsingle (), false ),
10218- APFloat::rmNearestTiesToEven)
10219- .convertToFloat ());
10220- EXPECT_EQ (std::numeric_limits<float >::infinity (),
10221- llvm::exp (APFloat::getLargest (APFloat::IEEEsingle (), false ),
10222- APFloat::rmTowardPositive)
10223- .convertToFloat ());
10224- EXPECT_EQ (std::numeric_limits<float >::max (),
10225- llvm::exp (APFloat::getLargest (APFloat::IEEEsingle (), false ),
10226- APFloat::rmTowardNegative)
10227- .convertToFloat ());
10228- EXPECT_EQ (std::numeric_limits<float >::max (),
10229- llvm::exp (APFloat::getLargest (APFloat::IEEEsingle (), false ),
10230- APFloat::rmTowardZero)
10231- .convertToFloat ());
10232- // exp(min_denormal)
10233- EXPECT_EQ (1 .0f , llvm::exp (APFloat::getSmallest (APFloat::IEEEsingle (), false ),
10234- APFloat::rmNearestTiesToEven)
10235- .convertToFloat ());
10236- EXPECT_EQ (0x1 .000002p0f,
10237- llvm::exp (APFloat::getSmallest (APFloat::IEEEsingle (), false ),
10238- APFloat::rmTowardPositive)
10239- .convertToFloat ());
10240- EXPECT_EQ (1 .0f , llvm::exp (APFloat::getSmallest (APFloat::IEEEsingle (), false ),
10241- APFloat::rmTowardNegative)
10242- .convertToFloat ());
10243- EXPECT_EQ (1 .0f , llvm::exp (APFloat::getSmallest (APFloat::IEEEsingle (), false ),
10244- APFloat::rmTowardZero)
10245- .convertToFloat ());
10246- // Default rounding mode.
10247- // exp(-1)
10248- EXPECT_EQ (0x1 .78b564p-2f , llvm::exp (APFloat (-1 .0f )).convertToFloat ());
10249- EXPECT_EQ (
10250- 0x1 .78b564p-2f ,
10251- llvm::exp (APFloat (-1 .0f ), APFloat::rmTowardPositive).convertToFloat ());
10252- EXPECT_EQ (
10253- 0x1 .78b562p-2f ,
10254- llvm::exp (APFloat (-1 .0f ), APFloat::rmTowardNegative).convertToFloat ());
10255- EXPECT_EQ (0x1 .78b562p-2f ,
10256- llvm::exp (APFloat (-1 .0f ), APFloat::rmTowardZero).convertToFloat ());
10257- }
10258-
1025910185} // namespace
0 commit comments