7
7
// ===----------------------------------------------------------------------===//
8
8
9
9
#include " hdr/fenv_macros.h"
10
+ #include " src/__support/FPUtil/cast.h"
10
11
#include " src/errno/libc_errno.h"
11
12
#include " src/math/tanhf16.h"
12
13
#include " test/UnitTest/FPMatcher.h"
@@ -23,11 +24,11 @@ TEST_F(LlvmLibcTanhf16Test, SpecialNumbers) {
23
24
EXPECT_FP_EQ_WITH_EXCEPTION (aNaN, LIBC_NAMESPACE::tanhf16 (sNaN ), FE_INVALID);
24
25
EXPECT_MATH_ERRNO (0 );
25
26
26
- EXPECT_FP_EQ_ALL_ROUNDING (static_cast <float16>(1.0 ),
27
+ EXPECT_FP_EQ_ALL_ROUNDING (LIBC_NAMESPACE::fputil::cast <float16>(1.0 ),
27
28
LIBC_NAMESPACE::tanhf16 (inf));
28
29
EXPECT_MATH_ERRNO (0 );
29
30
30
- EXPECT_FP_EQ_ALL_ROUNDING (static_cast <float16>(-1.0 ),
31
+ EXPECT_FP_EQ_ALL_ROUNDING (LIBC_NAMESPACE::fputil::cast <float16>(-1.0 ),
31
32
LIBC_NAMESPACE::tanhf16 (neg_inf));
32
33
EXPECT_MATH_ERRNO (0 );
33
34
@@ -41,91 +42,102 @@ TEST_F(LlvmLibcTanhf16Test, SpecialNumbers) {
41
42
TEST_F (LlvmLibcTanhf16Test, ResultNearBounds) {
42
43
LIBC_NAMESPACE::libc_errno = 0 ;
43
44
44
- EXPECT_FP_EQ_WITH_EXCEPTION (static_cast <float16>(1.0 ),
45
+ EXPECT_FP_EQ_WITH_EXCEPTION (LIBC_NAMESPACE::fputil::cast <float16>(1.0 ),
45
46
LIBC_NAMESPACE::tanhf16 (max_normal), FE_INEXACT);
46
47
EXPECT_MATH_ERRNO (0 );
47
48
48
- EXPECT_FP_EQ_WITH_EXCEPTION (static_cast <float16>(-1.0 ),
49
+ EXPECT_FP_EQ_WITH_EXCEPTION (LIBC_NAMESPACE::fputil::cast <float16>(-1.0 ),
49
50
LIBC_NAMESPACE::tanhf16 (neg_max_normal),
50
51
FE_INEXACT);
51
52
EXPECT_MATH_ERRNO (0 );
52
53
53
54
// round(atanh(1 - 2^-11), HP, RU);
54
- float16 x = static_cast <float16>(0x1 .0a4p+2 );
55
+ float16 x = LIBC_NAMESPACE::fputil::cast <float16>(0x1 .0a4p+2 );
55
56
56
57
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_NEAREST (
57
- static_cast <float16>(0x1 .ffcp -1 ), LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
58
+ LIBC_NAMESPACE::fputil::cast<float16>(0x1 .ffcp -1 ),
59
+ LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
58
60
EXPECT_MATH_ERRNO (0 );
59
61
60
62
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_UPWARD (
61
- static_cast <float16>(1.0 ), LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
63
+ LIBC_NAMESPACE::fputil::cast<float16>(1.0 ), LIBC_NAMESPACE::tanhf16 (x),
64
+ FE_INEXACT);
62
65
EXPECT_MATH_ERRNO (0 );
63
66
64
67
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_DOWNWARD (
65
- static_cast <float16>(0x1 .ffcp -1 ), LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
68
+ LIBC_NAMESPACE::fputil::cast<float16>(0x1 .ffcp -1 ),
69
+ LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
66
70
EXPECT_MATH_ERRNO (0 );
67
71
68
72
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_TOWARD_ZERO (
69
- static_cast <float16>(0x1 .ffcp -1 ), LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
73
+ LIBC_NAMESPACE::fputil::cast<float16>(0x1 .ffcp -1 ),
74
+ LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
70
75
EXPECT_MATH_ERRNO (0 );
71
76
72
- x = static_cast <float16>(0x1 .208p+2 );
77
+ x = LIBC_NAMESPACE::fputil::cast <float16>(0x1 .208p+2 );
73
78
74
79
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_NEAREST (
75
- static_cast <float16>(1.0 ), LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
80
+ LIBC_NAMESPACE::fputil::cast<float16>(1.0 ), LIBC_NAMESPACE::tanhf16 (x),
81
+ FE_INEXACT);
76
82
EXPECT_MATH_ERRNO (0 );
77
83
78
84
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_UPWARD (
79
- static_cast <float16>(1.0 ), LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
85
+ LIBC_NAMESPACE::fputil::cast<float16>(1.0 ), LIBC_NAMESPACE::tanhf16 (x),
86
+ FE_INEXACT);
80
87
EXPECT_MATH_ERRNO (0 );
81
88
82
89
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_DOWNWARD (
83
- static_cast <float16>(0x1 .ffcp -1 ), LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
90
+ LIBC_NAMESPACE::fputil::cast<float16>(0x1 .ffcp -1 ),
91
+ LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
84
92
EXPECT_MATH_ERRNO (0 );
85
93
86
94
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_TOWARD_ZERO (
87
- static_cast <float16>(0x1 .ffcp -1 ), LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
95
+ LIBC_NAMESPACE::fputil::cast<float16>(0x1 .ffcp -1 ),
96
+ LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
88
97
EXPECT_MATH_ERRNO (0 );
89
98
90
99
// round(atanh(-1 + 2^-11), HP, RD);
91
- x = static_cast <float16>(-0x1 .0a4p+2 );
100
+ x = LIBC_NAMESPACE::fputil::cast <float16>(-0x1 .0a4p+2 );
92
101
93
102
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_NEAREST (
94
- static_cast <float16>(-0x1 .ffcp -1 ), LIBC_NAMESPACE::tanhf16 (x ),
95
- FE_INEXACT);
103
+ LIBC_NAMESPACE::fputil::cast <float16>(-0x1 .ffcp -1 ),
104
+ LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
96
105
EXPECT_MATH_ERRNO (0 );
97
106
98
- EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_UPWARD (static_cast <float16>(- 0x1 . ffcp - 1 ),
99
- LIBC_NAMESPACE::tanhf16 (x ),
100
- FE_INEXACT);
107
+ EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_UPWARD (
108
+ LIBC_NAMESPACE::fputil::cast<float16>(- 0x1 . ffcp - 1 ),
109
+ LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
101
110
EXPECT_MATH_ERRNO (0 );
102
111
103
112
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_DOWNWARD (
104
- static_cast <float16>(-1.0 ), LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
113
+ LIBC_NAMESPACE::fputil::cast<float16>(-1.0 ), LIBC_NAMESPACE::tanhf16 (x),
114
+ FE_INEXACT);
105
115
EXPECT_MATH_ERRNO (0 );
106
116
107
117
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_TOWARD_ZERO (
108
- static_cast <float16>(-0x1 .ffcp -1 ), LIBC_NAMESPACE::tanhf16 (x ),
109
- FE_INEXACT);
118
+ LIBC_NAMESPACE::fputil::cast <float16>(-0x1 .ffcp -1 ),
119
+ LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
110
120
EXPECT_MATH_ERRNO (0 );
111
121
112
- x = static_cast <float16>(-0x1 .208p+2 );
122
+ x = LIBC_NAMESPACE::fputil::cast <float16>(-0x1 .208p+2 );
113
123
114
124
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_NEAREST (
115
- static_cast <float16>(-1.0 ), LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
125
+ LIBC_NAMESPACE::fputil::cast<float16>(-1.0 ), LIBC_NAMESPACE::tanhf16 (x),
126
+ FE_INEXACT);
116
127
EXPECT_MATH_ERRNO (0 );
117
128
118
- EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_UPWARD (static_cast <float16>(- 0x1 . ffcp - 1 ),
119
- LIBC_NAMESPACE::tanhf16 (x ),
120
- FE_INEXACT);
129
+ EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_UPWARD (
130
+ LIBC_NAMESPACE::fputil::cast<float16>(- 0x1 . ffcp - 1 ),
131
+ LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
121
132
EXPECT_MATH_ERRNO (0 );
122
133
123
134
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_DOWNWARD (
124
- static_cast <float16>(-1.0 ), LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
135
+ LIBC_NAMESPACE::fputil::cast<float16>(-1.0 ), LIBC_NAMESPACE::tanhf16 (x),
136
+ FE_INEXACT);
125
137
EXPECT_MATH_ERRNO (0 );
126
138
127
139
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_TOWARD_ZERO (
128
- static_cast <float16>(-0x1 .ffcp -1 ), LIBC_NAMESPACE::tanhf16 (x ),
129
- FE_INEXACT);
140
+ LIBC_NAMESPACE::fputil::cast <float16>(-0x1 .ffcp -1 ),
141
+ LIBC_NAMESPACE::tanhf16 (x), FE_INEXACT);
130
142
EXPECT_MATH_ERRNO (0 );
131
143
}
0 commit comments