Lines Matching +full:- +full:f
1 //===-- Unittests for powf ------------------------------------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
22 constexpr float neg_odd_integer = -3.0f;
23 constexpr float neg_even_integer = -6.0f;
24 constexpr float neg_non_integer = -1.1f;
25 constexpr float pos_odd_integer = 5.0f;
26 constexpr float pos_even_integer = 8.0f;
27 constexpr float pos_non_integer = 1.3f;
28 constexpr float one_half = 0.5f;
35 // pow( 0.0f, exponent )
46 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(zero, zero));
47 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(zero, neg_zero));
48 EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::powf(zero, inf));
53 // pow( -0.0f, exponent )
64 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(neg_zero, zero));
65 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(neg_zero, neg_zero));
66 EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::powf(neg_zero, inf));
71 // pow( 1.0f, exponent )
72 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, zero));
73 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, neg_zero));
74 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, 1.0f));
75 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, -1.0f));
76 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, neg_odd_integer));
77 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, neg_even_integer));
78 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, neg_non_integer));
79 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, pos_odd_integer));
80 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, pos_even_integer));
81 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, pos_non_integer));
82 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, inf));
83 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, neg_inf));
84 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(1.0f, aNaN));
86 // pow( 1.0f, exponent )
87 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(-1.0f, zero));
88 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(-1.0f, neg_zero));
89 EXPECT_FP_EQ(-1.0f, LIBC_NAMESPACE::powf(-1.0f, 1.0f));
90 EXPECT_FP_EQ(-1.0f, LIBC_NAMESPACE::powf(-1.0f, -1.0f));
91 EXPECT_FP_EQ(-1.0f, LIBC_NAMESPACE::powf(-1.0f, neg_odd_integer));
92 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(-1.0f, neg_even_integer));
94 LIBC_NAMESPACE::powf(-1.0f, neg_non_integer), FE_INVALID);
95 EXPECT_FP_EQ(-1.0f, LIBC_NAMESPACE::powf(-1.0f, pos_odd_integer));
96 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(-1.0f, pos_even_integer));
98 LIBC_NAMESPACE::powf(-1.0f, pos_non_integer), FE_INVALID);
99 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(-1.0f, inf));
100 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(-1.0f, neg_inf));
101 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::powf(-1.0f, aNaN));
104 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(inf, zero));
105 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(inf, neg_zero));
106 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::powf(inf, 1.0f));
107 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::powf(inf, -1.0f));
119 // pow( -inf, exponent )
120 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(neg_inf, zero));
121 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(neg_inf, neg_zero));
122 EXPECT_FP_EQ(neg_inf, LIBC_NAMESPACE::powf(neg_inf, 1.0f));
123 EXPECT_FP_EQ(neg_zero, LIBC_NAMESPACE::powf(neg_inf, -1.0f));
136 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(aNaN, zero));
137 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(aNaN, neg_zero));
138 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::powf(aNaN, 1.0f));
139 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::powf(aNaN, -1.0f));
151 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::powf(0.1f, inf));
152 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::powf(-0.1f, inf));
153 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::powf(1.1f, inf));
154 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::powf(-1.1f, inf));
156 // pow ( base, -inf )
157 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::powf(0.1f, neg_inf));
158 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::powf(-0.1f, neg_inf));
159 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::powf(1.1f, neg_inf));
160 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::powf(-1.1f, neg_inf));
163 EXPECT_FP_EQ(0x1.0p15f, LIBC_NAMESPACE::powf(2.0f, 15.0f));
164 EXPECT_FP_EQ(0x1.0p126f, LIBC_NAMESPACE::powf(2.0f, 126.0f));
165 EXPECT_FP_EQ(0x1.0p-45f, LIBC_NAMESPACE::powf(2.0f, -45.0f));
166 EXPECT_FP_EQ(0x1.0p-126f, LIBC_NAMESPACE::powf(2.0f, -126.0f));
167 EXPECT_FP_EQ(0x1.0p-149f, LIBC_NAMESPACE::powf(2.0f, -149.0f));
170 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(10.0f, 0.0f));
171 EXPECT_FP_EQ(10.0f, LIBC_NAMESPACE::powf(10.0f, 1.0f));
172 EXPECT_FP_EQ(100.0f, LIBC_NAMESPACE::powf(10.0f, 2.0f));
173 EXPECT_FP_EQ(1000.0f, LIBC_NAMESPACE::powf(10.0f, 3.0f));
174 EXPECT_FP_EQ(10000.0f, LIBC_NAMESPACE::powf(10.0f, 4.0f));
175 EXPECT_FP_EQ(100000.0f, LIBC_NAMESPACE::powf(10.0f, 5.0f));
176 EXPECT_FP_EQ(1000000.0f, LIBC_NAMESPACE::powf(10.0f, 6.0f));
177 EXPECT_FP_EQ(10000000.0f, LIBC_NAMESPACE::powf(10.0f, 7.0f));
178 EXPECT_FP_EQ(100000000.0f, LIBC_NAMESPACE::powf(10.0f, 8.0f));
179 EXPECT_FP_EQ(1000000000.0f, LIBC_NAMESPACE::powf(10.0f, 9.0f));
180 EXPECT_FP_EQ(10000000000.0f, LIBC_NAMESPACE::powf(10.0f, 10.0f));
185 EXPECT_FP_EQ_WITH_EXCEPTION(inf, LIBC_NAMESPACE::powf(3.1f, 201.0f),
189 EXPECT_FP_EQ_WITH_EXCEPTION(0.0f, LIBC_NAMESPACE::powf(3.1f, -201.0f),
194 EXPECT_FP_EQ(-0.0f, LIBC_NAMESPACE::powf(-0.015625f, 25.0f));
195 EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::powf(-0.015625f, 26.0f));
205 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::powf(-min_denormal, 0.5f));
206 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(2.0f, min_denormal));
212 EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::powf(-min_denormal, 0.5f));
213 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(2.0f, min_denormal));
219 EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::powf(-min_denormal, 0.5f));
220 EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::powf(2.0f, min_denormal));