1 // RUN: %clang_builtins %s %librt -o %t && %run %t
2 // REQUIRES: librt_has_powixf2
3 // UNSUPPORTED: target=powerpc64{{.*}}
4 // REQUIRES: x86-target-arch
14 COMPILER_RT_ABI
long double __powixf2(long double a
, int b
);
16 int test__powixf2(long double a
, int b
, long double expected
)
18 long double x
= __powixf2(a
, b
);
19 int correct
= (x
== expected
) && (signbit(x
) == signbit(expected
));
21 printf("error in __powixf2(%Lf, %d) = %Lf, expected %Lf\n",
31 if (test__powixf2(0, 0, 1))
33 if (test__powixf2(1, 0, 1))
35 if (test__powixf2(1.5, 0, 1))
37 if (test__powixf2(2, 0, 1))
39 if (test__powixf2(INFINITY
, 0, 1))
42 if (test__powixf2(-0., 0, 1))
44 if (test__powixf2(-1, 0, 1))
46 if (test__powixf2(-1.5, 0, 1))
48 if (test__powixf2(-2, 0, 1))
50 if (test__powixf2(-INFINITY
, 0, 1))
53 if (test__powixf2(0, 1, 0))
55 if (test__powixf2(0, 2, 0))
57 if (test__powixf2(0, 3, 0))
59 if (test__powixf2(0, 4, 0))
61 if (test__powixf2(0, INT_MAX
- 1, 0))
63 if (test__powixf2(0, INT_MAX
, 0))
66 if (test__powixf2(-0., 1, -0.))
68 if (test__powixf2(-0., 2, 0))
70 if (test__powixf2(-0., 3, -0.))
72 if (test__powixf2(-0., 4, 0))
74 if (test__powixf2(-0., INT_MAX
- 1, 0))
76 if (test__powixf2(-0., INT_MAX
, -0.))
79 if (test__powixf2(1, 1, 1))
81 if (test__powixf2(1, 2, 1))
83 if (test__powixf2(1, 3, 1))
85 if (test__powixf2(1, 4, 1))
87 if (test__powixf2(1, INT_MAX
- 1, 1))
89 if (test__powixf2(1, INT_MAX
, 1))
92 if (test__powixf2(INFINITY
, 1, INFINITY
))
94 if (test__powixf2(INFINITY
, 2, INFINITY
))
96 if (test__powixf2(INFINITY
, 3, INFINITY
))
98 if (test__powixf2(INFINITY
, 4, INFINITY
))
100 if (test__powixf2(INFINITY
, INT_MAX
- 1, INFINITY
))
102 if (test__powixf2(INFINITY
, INT_MAX
, INFINITY
))
105 if (test__powixf2(-INFINITY
, 1, -INFINITY
))
107 if (test__powixf2(-INFINITY
, 2, INFINITY
))
109 if (test__powixf2(-INFINITY
, 3, -INFINITY
))
111 if (test__powixf2(-INFINITY
, 4, INFINITY
))
113 if (test__powixf2(-INFINITY
, INT_MAX
- 1, INFINITY
))
115 if (test__powixf2(-INFINITY
, INT_MAX
, -INFINITY
))
118 if (test__powixf2(0, -1, INFINITY
))
120 if (test__powixf2(0, -2, INFINITY
))
122 if (test__powixf2(0, -3, INFINITY
))
124 if (test__powixf2(0, -4, INFINITY
))
126 if (test__powixf2(0, INT_MIN
+ 2, INFINITY
))
128 if (test__powixf2(0, INT_MIN
+ 1, INFINITY
))
130 if (test__powixf2(0, INT_MIN
, INFINITY
))
133 if (test__powixf2(-0., -1, -INFINITY
))
135 if (test__powixf2(-0., -2, INFINITY
))
137 if (test__powixf2(-0., -3, -INFINITY
))
139 if (test__powixf2(-0., -4, INFINITY
))
141 if (test__powixf2(-0., INT_MIN
+ 2, INFINITY
))
143 if (test__powixf2(-0., INT_MIN
+ 1, -INFINITY
))
145 if (test__powixf2(-0., INT_MIN
, INFINITY
))
148 if (test__powixf2(1, -1, 1))
150 if (test__powixf2(1, -2, 1))
152 if (test__powixf2(1, -3, 1))
154 if (test__powixf2(1, -4, 1))
156 if (test__powixf2(1, INT_MIN
+ 2, 1))
158 if (test__powixf2(1, INT_MIN
+ 1, 1))
160 if (test__powixf2(1, INT_MIN
, 1))
163 if (test__powixf2(INFINITY
, -1, 0))
165 if (test__powixf2(INFINITY
, -2, 0))
167 if (test__powixf2(INFINITY
, -3, 0))
169 if (test__powixf2(INFINITY
, -4, 0))
171 if (test__powixf2(INFINITY
, INT_MIN
+ 2, 0))
173 if (test__powixf2(INFINITY
, INT_MIN
+ 1, 0))
175 if (test__powixf2(INFINITY
, INT_MIN
, 0))
178 if (test__powixf2(-INFINITY
, -1, -0.))
180 if (test__powixf2(-INFINITY
, -2, 0))
182 if (test__powixf2(-INFINITY
, -3, -0.))
184 if (test__powixf2(-INFINITY
, -4, 0))
186 if (test__powixf2(-INFINITY
, INT_MIN
+ 2, 0))
188 if (test__powixf2(-INFINITY
, INT_MIN
+ 1, -0.))
190 if (test__powixf2(-INFINITY
, INT_MIN
, 0))
193 if (test__powixf2(2, 10, 1024.))
195 if (test__powixf2(-2, 10, 1024.))
197 if (test__powixf2(2, -10, 1/1024.))
199 if (test__powixf2(-2, -10, 1/1024.))
202 if (test__powixf2(2, 19, 524288.))
204 if (test__powixf2(-2, 19, -524288.))
206 if (test__powixf2(2, -19, 1/524288.))
208 if (test__powixf2(-2, -19, -1/524288.))
211 if (test__powixf2(2, 31, 2147483648.))
213 if (test__powixf2(-2, 31, -2147483648.))
215 if (test__powixf2(2, -31, 1/2147483648.))
217 if (test__powixf2(-2, -31, -1/2147483648.))