Skip to content

Commit e264548

Browse files
author
Siva Chandra Reddy
committed
[libc][obvious] Fix x86 long double conversion to integer.
Fixes incorrectly constructed ceill tests.
1 parent dac0b1d commit e264548

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

libc/test/src/math/ceill_test.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,25 +47,25 @@ TEST(CeillTest, RoundedNumbers) {
4747
}
4848

4949
TEST(CeillTest, Fractions) {
50-
EXPECT_FP_EQ(0.0l, __llvm_libc::ceill(0.5l));
50+
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(0.5l));
5151
EXPECT_FP_EQ(-0.0l, __llvm_libc::ceill(-0.5l));
52-
EXPECT_FP_EQ(0.0l, __llvm_libc::ceill(0.115l));
52+
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(0.115l));
5353
EXPECT_FP_EQ(-0.0l, __llvm_libc::ceill(-0.115l));
54-
EXPECT_FP_EQ(0.0l, __llvm_libc::ceill(0.715l));
54+
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(0.715l));
5555
EXPECT_FP_EQ(-0.0l, __llvm_libc::ceill(-0.715l));
56-
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(1.3l));
56+
EXPECT_FP_EQ(2.0l, __llvm_libc::ceill(1.3l));
5757
EXPECT_FP_EQ(-1.0l, __llvm_libc::ceill(-1.3l));
58-
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(1.5l));
58+
EXPECT_FP_EQ(2.0l, __llvm_libc::ceill(1.5l));
5959
EXPECT_FP_EQ(-1.0l, __llvm_libc::ceill(-1.5l));
60-
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(1.75l));
60+
EXPECT_FP_EQ(2.0l, __llvm_libc::ceill(1.75l));
6161
EXPECT_FP_EQ(-1.0l, __llvm_libc::ceill(-1.75l));
62-
EXPECT_FP_EQ(10.0l, __llvm_libc::ceill(10.32l));
62+
EXPECT_FP_EQ(11.0l, __llvm_libc::ceill(10.32l));
6363
EXPECT_FP_EQ(-10.0l, __llvm_libc::ceill(-10.32l));
64-
EXPECT_FP_EQ(10.0l, __llvm_libc::ceill(10.65l));
64+
EXPECT_FP_EQ(11.0l, __llvm_libc::ceill(10.65l));
6565
EXPECT_FP_EQ(-10.0l, __llvm_libc::ceill(-10.65l));
66-
EXPECT_FP_EQ(1234.0l, __llvm_libc::ceill(1234.38l));
66+
EXPECT_FP_EQ(1235.0l, __llvm_libc::ceill(1234.38l));
6767
EXPECT_FP_EQ(-1234.0l, __llvm_libc::ceill(-1234.38l));
68-
EXPECT_FP_EQ(1234.0l, __llvm_libc::ceill(1234.96l));
68+
EXPECT_FP_EQ(1235.0l, __llvm_libc::ceill(1234.96l));
6969
EXPECT_FP_EQ(-1234.0l, __llvm_libc::ceill(-1234.96l));
7070
}
7171

libc/utils/FPUtil/LongDoubleBitsX86.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ template <> struct __attribute__((packed)) FPBits<long double> {
9696
// there can be garbage bits in the padding. So, we zero the padding bits
9797
// in |result|.
9898
static constexpr UIntType mask =
99-
(UIntType(1) << (sizeof(long double) -
100-
Padding<sizeof(uintptr_t)>::value / 8)) -
99+
(UIntType(1) << (sizeof(long double) * 8 -
100+
Padding<sizeof(uintptr_t)>::value)) -
101101
1;
102102
return result & mask;
103103
}

0 commit comments

Comments
 (0)