From f2c2851efe0505328d1f4074b313a2922bcd8f2c Mon Sep 17 00:00:00 2001 From: Serguei Katkov Date: Wed, 1 Nov 2017 07:56:55 +0000 Subject: Fix APFloat mod sign fmod specification requires the sign of the remainder is the same as numerator in case remainder is zero. Reviewers: gottesmm, scanon, arsenm, davide, craig.topper Reviewed By: scanon Subscribers: wdng, llvm-commits Differential Revision: https://reviews.llvm.org/D39225 llvm-svn: 317081 --- llvm/unittests/ADT/APFloatTest.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'llvm/unittests/ADT/APFloatTest.cpp') diff --git a/llvm/unittests/ADT/APFloatTest.cpp b/llvm/unittests/ADT/APFloatTest.cpp index 280a0862ccc..84fb6fad156 100644 --- a/llvm/unittests/ADT/APFloatTest.cpp +++ b/llvm/unittests/ADT/APFloatTest.cpp @@ -3289,6 +3289,20 @@ TEST(APFloatTest, mod) { EXPECT_EQ(f1.mod(f2), APFloat::opInvalidOp); EXPECT_TRUE(f1.isNaN()); } + { + APFloat f1(APFloat::IEEEdouble(), "-4.0"); + APFloat f2(APFloat::IEEEdouble(), "-2.0"); + APFloat expected(APFloat::IEEEdouble(), "-0.0"); + EXPECT_EQ(f1.mod(f2), APFloat::opOK); + EXPECT_TRUE(f1.bitwiseIsEqual(expected)); + } + { + APFloat f1(APFloat::IEEEdouble(), "-4.0"); + APFloat f2(APFloat::IEEEdouble(), "2.0"); + APFloat expected(APFloat::IEEEdouble(), "-0.0"); + EXPECT_EQ(f1.mod(f2), APFloat::opOK); + EXPECT_TRUE(f1.bitwiseIsEqual(expected)); + } } TEST(APFloatTest, PPCDoubleDoubleAddSpecial) { -- cgit v1.2.3