Skip to content

Commit 1b4a079

Browse files
authored
[libc][NFC] Use FPBits builders instead of custom constructs (#75942)
1 parent e32e147 commit 1b4a079

File tree

13 files changed

+40
-44
lines changed

13 files changed

+40
-44
lines changed

libc/src/math/generic/coshf.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ LLVM_LIBC_FUNCTION(float, coshf, (float x)) {
3535

3636
int rounding = fputil::quick_get_round();
3737
if (LIBC_UNLIKELY(rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO))
38-
return FPBits(FPBits::MAX_NORMAL).get_val();
38+
return FPBits::max_normal();
3939

4040
fputil::set_errno_if_required(ERANGE);
4141
fputil::raise_except_if_required(FE_OVERFLOW);

libc/src/math/generic/exp.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ double set_exceptional(double x) {
199199
return x;
200200

201201
if (fputil::quick_get_round() == FE_UPWARD)
202-
return static_cast<double>(FPBits(FPBits::MIN_SUBNORMAL));
202+
return FPBits::min_denormal();
203203
fputil::set_errno_if_required(ERANGE);
204204
fputil::raise_except_if_required(FE_UNDERFLOW);
205205
return 0.0;
@@ -210,7 +210,7 @@ double set_exceptional(double x) {
210210
if (x_u < 0x7ff0'0000'0000'0000ULL) {
211211
int rounding = fputil::quick_get_round();
212212
if (rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO)
213-
return static_cast<double>(FPBits(FPBits::MAX_NORMAL));
213+
return FPBits::max_normal();
214214

215215
fputil::set_errno_if_required(ERANGE);
216216
fputil::raise_except_if_required(FE_OVERFLOW);

libc/src/math/generic/exp10.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ double set_exceptional(double x) {
246246
return x;
247247

248248
if (fputil::quick_get_round() == FE_UPWARD)
249-
return static_cast<double>(FPBits(FPBits::MIN_SUBNORMAL));
249+
return FPBits::min_denormal();
250250
fputil::set_errno_if_required(ERANGE);
251251
fputil::raise_except_if_required(FE_UNDERFLOW);
252252
return 0.0;
@@ -260,7 +260,7 @@ double set_exceptional(double x) {
260260
if (x_u < 0x7ff0'0000'0000'0000ULL) {
261261
int rounding = fputil::quick_get_round();
262262
if (rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO)
263-
return static_cast<double>(FPBits(FPBits::MAX_NORMAL));
263+
return FPBits::max_normal();
264264

265265
fputil::set_errno_if_required(ERANGE);
266266
fputil::raise_except_if_required(FE_OVERFLOW);

libc/src/math/generic/exp10f_impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ LIBC_INLINE float exp10f(float x) {
4242
if (xbits.is_nan())
4343
return x;
4444
if (fputil::fenv_is_round_up())
45-
return static_cast<float>(FPBits(FPBits::MIN_SUBNORMAL));
45+
return FPBits::min_denormal();
4646
fputil::set_errno_if_required(ERANGE);
4747
fputil::raise_except_if_required(FE_UNDERFLOW);
4848
return 0.0f;

libc/src/math/generic/exp2.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ double set_exceptional(double x) {
221221
return x;
222222

223223
if (fputil::quick_get_round() == FE_UPWARD)
224-
return static_cast<double>(FPBits(FPBits::MIN_SUBNORMAL));
224+
return FPBits::min_denormal();
225225
fputil::set_errno_if_required(ERANGE);
226226
fputil::raise_except_if_required(FE_UNDERFLOW);
227227
return 0.0;
@@ -235,7 +235,7 @@ double set_exceptional(double x) {
235235
if (x_u < 0x7ff0'0000'0000'0000ULL) {
236236
int rounding = fputil::quick_get_round();
237237
if (rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO)
238-
return static_cast<double>(FPBits(FPBits::MAX_NORMAL));
238+
return FPBits::max_normal();
239239

240240
fputil::set_errno_if_required(ERANGE);
241241
fputil::raise_except_if_required(FE_OVERFLOW);

libc/src/math/generic/expf.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ LLVM_LIBC_FUNCTION(float, expf, (float x)) {
5050
if (xbits.is_nan())
5151
return x;
5252
if (fputil::fenv_is_round_up())
53-
return static_cast<float>(FPBits(FPBits::MIN_SUBNORMAL));
53+
return FPBits::min_denormal();
5454
fputil::set_errno_if_required(ERANGE);
5555
fputil::raise_except_if_required(FE_UNDERFLOW);
5656
return 0.0f;
@@ -61,7 +61,7 @@ LLVM_LIBC_FUNCTION(float, expf, (float x)) {
6161
if (xbits.uintval() < 0x7f80'0000U) {
6262
int rounding = fputil::quick_get_round();
6363
if (rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO)
64-
return static_cast<float>(FPBits(FPBits::MAX_NORMAL));
64+
return FPBits::max_normal();
6565

6666
fputil::set_errno_if_required(ERANGE);
6767
fputil::raise_except_if_required(FE_OVERFLOW);

libc/src/math/generic/expm1.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ double set_exceptional(double x) {
261261
if (x_u < 0x7ff0'0000'0000'0000ULL) {
262262
int rounding = fputil::quick_get_round();
263263
if (rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO)
264-
return static_cast<double>(FPBits(FPBits::MAX_NORMAL));
264+
return FPBits::max_normal();
265265

266266
fputil::set_errno_if_required(ERANGE);
267267
fputil::raise_except_if_required(FE_OVERFLOW);

libc/src/math/generic/expm1f.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ LLVM_LIBC_FUNCTION(float, expm1f, (float x)) {
6868
if (xbits.uintval() < 0x7f80'0000U) {
6969
int rounding = fputil::quick_get_round();
7070
if (rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO)
71-
return static_cast<float>(FPBits(FPBits::MAX_NORMAL));
71+
return FPBits::max_normal();
7272

7373
fputil::set_errno_if_required(ERANGE);
7474
fputil::raise_except_if_required(FE_OVERFLOW);

libc/src/math/generic/sinhf.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ LLVM_LIBC_FUNCTION(float, sinhf, (float x)) {
5757
int rounding = fputil::quick_get_round();
5858
if (sign) {
5959
if (LIBC_UNLIKELY(rounding == FE_UPWARD || rounding == FE_TOWARDZERO))
60-
return FPBits(FPBits::MAX_NORMAL | FPBits::SIGN_MASK).get_val();
60+
return -FPBits::max_normal();
6161
} else {
6262
if (LIBC_UNLIKELY(rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO))
63-
return FPBits(FPBits::MAX_NORMAL).get_val();
63+
return FPBits::max_normal();
6464
}
6565

6666
fputil::set_errno_if_required(ERANGE);

libc/test/src/math/FmaTest.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,14 @@ class FmaTestTemplate : public LIBC_NAMESPACE::testing::Test {
5050
EXPECT_FP_EQ(func(inf, neg_inf, nan), nan);
5151

5252
// Test underflow rounding up.
53-
EXPECT_FP_EQ(func(T(0.5), T(FPBits(FPBits::MIN_SUBNORMAL)),
54-
T(FPBits(FPBits::MIN_SUBNORMAL))),
53+
EXPECT_FP_EQ(func(T(0.5), FPBits::min_denormal(), FPBits::min_denormal()),
5554
T(FPBits(StorageType(2))));
5655
// Test underflow rounding down.
5756
T v = T(FPBits(FPBits::MIN_NORMAL + StorageType(1)));
58-
EXPECT_FP_EQ(func(T(1) / T(FPBits::MIN_NORMAL << 1), v,
59-
T(FPBits(FPBits::MIN_NORMAL))),
60-
v);
57+
EXPECT_FP_EQ(
58+
func(T(1) / T(FPBits::MIN_NORMAL << 1), v, FPBits::min_normal()), v);
6159
// Test overflow.
62-
T z = T(FPBits(FPBits::MAX_NORMAL));
60+
T z = FPBits::max_normal();
6361
EXPECT_FP_EQ(func(T(1.75), z, -z), T(0.75) * z);
6462
// Exact cancellation.
6563
EXPECT_FP_EQ(func(T(3.0), T(5.0), -T(15.0)), T(0.0));

libc/test/src/math/HypotTest.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ class HypotTestTemplate : public LIBC_NAMESPACE::testing::Test {
2424
using Func = T (*)(T, T);
2525
using FPBits = LIBC_NAMESPACE::fputil::FPBits<T>;
2626
using StorageType = typename FPBits::StorageType;
27-
const T nan = T(FPBits::build_quiet_nan(1));
28-
const T inf = T(FPBits::inf());
29-
const T neg_inf = T(FPBits::neg_inf());
30-
const T zero = T(FPBits::zero());
31-
const T neg_zero = T(FPBits::neg_zero());
32-
const T max_normal = T(FPBits(FPBits::MAX_NORMAL));
33-
const T min_normal = T(FPBits(FPBits::MIN_NORMAL));
34-
const T max_subnormal = T(FPBits(FPBits::MAX_SUBNORMAL));
35-
const T min_subnormal = T(FPBits(FPBits::MIN_SUBNORMAL));
27+
const T nan = FPBits::build_quiet_nan(1);
28+
const T inf = FPBits::inf();
29+
const T neg_inf = FPBits::neg_inf();
30+
const T zero = FPBits::zero();
31+
const T neg_zero = FPBits::neg_zero();
32+
const T max_normal = FPBits::max_normal();
33+
const T min_normal = FPBits::min_normal();
34+
const T max_subnormal = FPBits::max_denormal();
35+
const T min_subnormal = FPBits::min_denormal();
3636

3737
public:
3838
void test_special_numbers(Func func) {

libc/test/src/math/smoke/FmaTest.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,14 @@ class FmaTestTemplate : public LIBC_NAMESPACE::testing::Test {
3737
EXPECT_FP_EQ(func(inf, neg_inf, nan), nan);
3838

3939
// Test underflow rounding up.
40-
EXPECT_FP_EQ(func(T(0.5), T(FPBits(FPBits::MIN_SUBNORMAL)),
41-
T(FPBits(FPBits::MIN_SUBNORMAL))),
40+
EXPECT_FP_EQ(func(T(0.5), FPBits::min_denormal(), FPBits::min_denormal()),
4241
T(FPBits(StorageType(2))));
4342
// Test underflow rounding down.
4443
T v = T(FPBits(FPBits::MIN_NORMAL + StorageType(1)));
45-
EXPECT_FP_EQ(func(T(1) / T(FPBits::MIN_NORMAL << 1), v,
46-
T(FPBits(FPBits::MIN_NORMAL))),
47-
v);
44+
EXPECT_FP_EQ(
45+
func(T(1) / T(FPBits::MIN_NORMAL << 1), v, FPBits::min_normal()), v);
4846
// Test overflow.
49-
T z = T(FPBits(FPBits::MAX_NORMAL));
47+
T z = FPBits::max_normal();
5048
EXPECT_FP_EQ(func(T(1.75), z, -z), T(0.75) * z);
5149
// Exact cancellation.
5250
EXPECT_FP_EQ(func(T(3.0), T(5.0), -T(15.0)), T(0.0));

libc/test/src/math/smoke/HypotTest.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ class HypotTestTemplate : public LIBC_NAMESPACE::testing::Test {
2121
using Func = T (*)(T, T);
2222
using FPBits = LIBC_NAMESPACE::fputil::FPBits<T>;
2323
using StorageType = typename FPBits::StorageType;
24-
const T nan = T(FPBits::build_quiet_nan(1));
25-
const T inf = T(FPBits::inf());
26-
const T neg_inf = T(FPBits::neg_inf());
27-
const T zero = T(FPBits::zero());
28-
const T neg_zero = T(FPBits::neg_zero());
29-
const T max_normal = T(FPBits(FPBits::MAX_NORMAL));
30-
const T min_normal = T(FPBits(FPBits::MIN_NORMAL));
31-
const T max_subnormal = T(FPBits(FPBits::MAX_SUBNORMAL));
32-
const T min_subnormal = T(FPBits(FPBits::MIN_SUBNORMAL));
24+
const T nan = FPBits::build_quiet_nan(1);
25+
const T inf = FPBits::inf();
26+
const T neg_inf = FPBits::neg_inf();
27+
const T zero = FPBits::zero();
28+
const T neg_zero = FPBits::neg_zero();
29+
const T max_normal = FPBits::max_normal();
30+
const T min_normal = FPBits::min_normal();
31+
const T max_subnormal = FPBits::max_denormal();
32+
const T min_subnormal = FPBits::min_denormal();
3333

3434
public:
3535
void test_special_numbers(Func func) {

0 commit comments

Comments
 (0)