Lines Matching full:pow
1 //===-- Unittests for pow -------------------------------------------------===//
10 #include "src/math/pow.h"
32 // pow( 0.0, exponent ) in TEST_F()
33 EXPECT_FP_EQ_WITH_EXCEPTION(inf, LIBC_NAMESPACE::pow(zero, NEG_ODD_INTEGER), in TEST_F()
36 inf, LIBC_NAMESPACE::pow(zero, NEG_EVEN_INTEGER), FE_DIVBYZERO); in TEST_F()
37 EXPECT_FP_EQ_WITH_EXCEPTION(inf, LIBC_NAMESPACE::pow(zero, NEG_NON_INTEGER), in TEST_F()
39 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(zero, POS_ODD_INTEGER)); in TEST_F()
40 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(zero, POS_EVEN_INTEGER)); in TEST_F()
41 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(zero, POS_NON_INTEGER)); in TEST_F()
42 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(zero, ONE_HALF)); in TEST_F()
43 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(zero, zero)); in TEST_F()
44 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(zero, neg_zero)); in TEST_F()
45 EXPECT_FP_EQ(0.0, LIBC_NAMESPACE::pow(zero, inf)); in TEST_F()
46 EXPECT_FP_EQ_WITH_EXCEPTION(inf, LIBC_NAMESPACE::pow(zero, neg_inf), in TEST_F()
48 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(zero, aNaN)); in TEST_F()
50 // pow( -0.0, exponent ) in TEST_F()
52 neg_inf, LIBC_NAMESPACE::pow(neg_zero, NEG_ODD_INTEGER), FE_DIVBYZERO); in TEST_F()
54 inf, LIBC_NAMESPACE::pow(neg_zero, NEG_EVEN_INTEGER), FE_DIVBYZERO); in TEST_F()
56 inf, LIBC_NAMESPACE::pow(neg_zero, NEG_NON_INTEGER), FE_DIVBYZERO); in TEST_F()
57 EXPECT_FP_EQ(neg_zero, LIBC_NAMESPACE::pow(neg_zero, POS_ODD_INTEGER)); in TEST_F()
58 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(neg_zero, POS_EVEN_INTEGER)); in TEST_F()
59 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(neg_zero, POS_NON_INTEGER)); in TEST_F()
60 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(neg_zero, ONE_HALF)); in TEST_F()
61 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(neg_zero, zero)); in TEST_F()
62 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(neg_zero, neg_zero)); in TEST_F()
63 EXPECT_FP_EQ(0.0, LIBC_NAMESPACE::pow(neg_zero, inf)); in TEST_F()
64 EXPECT_FP_EQ_WITH_EXCEPTION(inf, LIBC_NAMESPACE::pow(neg_zero, neg_inf), in TEST_F()
66 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(neg_zero, aNaN)); in TEST_F()
68 // pow( 1.0, exponent ) in TEST_F()
69 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, zero)); in TEST_F()
70 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, neg_zero)); in TEST_F()
71 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, 1.0)); in TEST_F()
72 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, -1.0)); in TEST_F()
73 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, NEG_ODD_INTEGER)); in TEST_F()
74 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, NEG_EVEN_INTEGER)); in TEST_F()
75 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, NEG_NON_INTEGER)); in TEST_F()
76 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, POS_ODD_INTEGER)); in TEST_F()
77 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, POS_EVEN_INTEGER)); in TEST_F()
78 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, POS_NON_INTEGER)); in TEST_F()
79 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, inf)); in TEST_F()
80 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, neg_inf)); in TEST_F()
81 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(1.0, aNaN)); in TEST_F()
83 // pow( 1.0, exponent ) in TEST_F()
84 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(-1.0, zero)); in TEST_F()
85 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(-1.0, neg_zero)); in TEST_F()
86 EXPECT_FP_EQ(-1.0, LIBC_NAMESPACE::pow(-1.0, 1.0)); in TEST_F()
87 EXPECT_FP_EQ(-1.0, LIBC_NAMESPACE::pow(-1.0, -1.0)); in TEST_F()
88 EXPECT_FP_EQ(-1.0, LIBC_NAMESPACE::pow(-1.0, NEG_ODD_INTEGER)); in TEST_F()
89 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(-1.0, NEG_EVEN_INTEGER)); in TEST_F()
90 EXPECT_FP_IS_NAN_WITH_EXCEPTION(LIBC_NAMESPACE::pow(-1.0, NEG_NON_INTEGER), in TEST_F()
92 EXPECT_FP_EQ(-1.0, LIBC_NAMESPACE::pow(-1.0, POS_ODD_INTEGER)); in TEST_F()
93 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(-1.0, POS_EVEN_INTEGER)); in TEST_F()
94 EXPECT_FP_IS_NAN_WITH_EXCEPTION(LIBC_NAMESPACE::pow(-1.0, POS_NON_INTEGER), in TEST_F()
96 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(-1.0, inf)); in TEST_F()
97 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(-1.0, neg_inf)); in TEST_F()
98 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(-1.0, aNaN)); in TEST_F()
100 // pow( inf, exponent ) in TEST_F()
101 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(inf, zero)); in TEST_F()
102 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(inf, neg_zero)); in TEST_F()
103 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(inf, 1.0)); in TEST_F()
104 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(inf, -1.0)); in TEST_F()
105 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(inf, NEG_ODD_INTEGER)); in TEST_F()
106 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(inf, NEG_EVEN_INTEGER)); in TEST_F()
107 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(inf, NEG_NON_INTEGER)); in TEST_F()
108 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(inf, POS_ODD_INTEGER)); in TEST_F()
109 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(inf, POS_EVEN_INTEGER)); in TEST_F()
110 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(inf, POS_NON_INTEGER)); in TEST_F()
111 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(inf, ONE_HALF)); in TEST_F()
112 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(inf, inf)); in TEST_F()
113 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(inf, neg_inf)); in TEST_F()
114 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(inf, aNaN)); in TEST_F()
116 // pow( -inf, exponent ) in TEST_F()
117 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(neg_inf, zero)); in TEST_F()
118 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(neg_inf, neg_zero)); in TEST_F()
119 EXPECT_FP_EQ(neg_inf, LIBC_NAMESPACE::pow(neg_inf, 1.0)); in TEST_F()
120 EXPECT_FP_EQ(neg_zero, LIBC_NAMESPACE::pow(neg_inf, -1.0)); in TEST_F()
121 EXPECT_FP_EQ(neg_zero, LIBC_NAMESPACE::pow(neg_inf, NEG_ODD_INTEGER)); in TEST_F()
122 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(neg_inf, NEG_EVEN_INTEGER)); in TEST_F()
123 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(neg_inf, NEG_NON_INTEGER)); in TEST_F()
124 EXPECT_FP_EQ(neg_inf, LIBC_NAMESPACE::pow(neg_inf, POS_ODD_INTEGER)); in TEST_F()
125 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(neg_inf, POS_EVEN_INTEGER)); in TEST_F()
126 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(neg_inf, POS_NON_INTEGER)); in TEST_F()
127 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(neg_inf, ONE_HALF)); in TEST_F()
128 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(neg_inf, inf)); in TEST_F()
129 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(neg_inf, neg_inf)); in TEST_F()
130 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(neg_inf, aNaN)); in TEST_F()
132 // pow ( aNaN, exponent ) in TEST_F()
133 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(aNaN, zero)); in TEST_F()
134 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(aNaN, neg_zero)); in TEST_F()
135 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(aNaN, 1.0)); in TEST_F()
136 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(aNaN, -1.0)); in TEST_F()
137 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(aNaN, NEG_ODD_INTEGER)); in TEST_F()
138 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(aNaN, NEG_EVEN_INTEGER)); in TEST_F()
139 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(aNaN, NEG_NON_INTEGER)); in TEST_F()
140 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(aNaN, POS_ODD_INTEGER)); in TEST_F()
141 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(aNaN, POS_EVEN_INTEGER)); in TEST_F()
142 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(aNaN, POS_NON_INTEGER)); in TEST_F()
143 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(aNaN, inf)); in TEST_F()
144 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(aNaN, neg_inf)); in TEST_F()
145 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(aNaN, aNaN)); in TEST_F()
147 // pow ( base, inf ) in TEST_F()
148 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(0.1, inf)); in TEST_F()
149 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(-0.1, inf)); in TEST_F()
150 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(1.1, inf)); in TEST_F()
151 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(-1.1, inf)); in TEST_F()
153 // pow ( base, -inf ) in TEST_F()
154 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(0.1, neg_inf)); in TEST_F()
155 EXPECT_FP_EQ(inf, LIBC_NAMESPACE::pow(-0.1, neg_inf)); in TEST_F()
156 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(1.1, neg_inf)); in TEST_F()
157 EXPECT_FP_EQ(zero, LIBC_NAMESPACE::pow(-1.1, neg_inf)); in TEST_F()
161 // EXPECT_FP_EQ(0x1.0p15, LIBC_NAMESPACE::pow(2.0, 15.0)); in TEST_F()
162 // EXPECT_FP_EQ(0x1.0p126, LIBC_NAMESPACE::pow(2.0, 126.0)); in TEST_F()
163 // EXPECT_FP_EQ(0x1.0p-45, LIBC_NAMESPACE::pow(2.0, -45.0)); in TEST_F()
164 // EXPECT_FP_EQ(0x1.0p-126, LIBC_NAMESPACE::pow(2.0, -126.0)); in TEST_F()
165 // EXPECT_FP_EQ(0x1.0p-149, LIBC_NAMESPACE::pow(2.0, -149.0)); in TEST_F()
169 // EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(10.0, 0.0)); in TEST_F()
170 // EXPECT_FP_EQ(10.0, LIBC_NAMESPACE::pow(10.0, 1.0)); in TEST_F()
171 // EXPECT_FP_EQ(100.0, LIBC_NAMESPACE::pow(10.0, 2.0)); in TEST_F()
172 // EXPECT_FP_EQ(1000.0, LIBC_NAMESPACE::pow(10.0, 3.0)); in TEST_F()
173 // EXPECT_FP_EQ(10000.0, LIBC_NAMESPACE::pow(10.0, 4.0)); in TEST_F()
174 // EXPECT_FP_EQ(100000.0, LIBC_NAMESPACE::pow(10.0, 5.0)); in TEST_F()
175 // EXPECT_FP_EQ(1000000.0, LIBC_NAMESPACE::pow(10.0, 6.0)); in TEST_F()
176 // EXPECT_FP_EQ(10000000.0, LIBC_NAMESPACE::pow(10.0, 7.0)); in TEST_F()
177 // EXPECT_FP_EQ(100000000.0, LIBC_NAMESPACE::pow(10.0, 8.0)); in TEST_F()
178 // EXPECT_FP_EQ(1000000000.0, LIBC_NAMESPACE::pow(10.0, 9.0)); in TEST_F()
179 // EXPECT_FP_EQ(10000000000.0, LIBC_NAMESPACE::pow(10.0, 10.0)); in TEST_F()
184 EXPECT_FP_EQ_WITH_EXCEPTION(inf, LIBC_NAMESPACE::pow(3.1, 2001.0), in TEST_F()
188 EXPECT_FP_EQ_WITH_EXCEPTION(0.0, LIBC_NAMESPACE::pow(3.1, -2001.0), in TEST_F()
201 EXPECT_FP_IS_NAN(LIBC_NAMESPACE::pow(-min_denormal, 0.5)); in TEST_F()
202 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(2.0, min_denormal)); in TEST_F()
208 EXPECT_FP_EQ(0.0, LIBC_NAMESPACE::pow(-min_denormal, 0.5)); in TEST_F()
209 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(2.0, min_denormal)); in TEST_F()
215 EXPECT_FP_EQ(0.0, LIBC_NAMESPACE::pow(-min_denormal, 0.5)); in TEST_F()
216 EXPECT_FP_EQ(1.0, LIBC_NAMESPACE::pow(2.0, min_denormal)); in TEST_F()