powiXf2_test.zig (23516B) - Raw
1 // ported from https://github.com/llvm-mirror/compiler-rt/blob/release_80/test/builtins/Unit/ 2 // powisf2_test.c, powidf2_test.c, powitf2_test.c, powixf2_test.c 3 // powihf2 adapted from powisf2 tests 4 5 const powiXf2 = @import("powiXf2.zig"); 6 const std = @import("std"); 7 const builtin = @import("builtin"); 8 const testing = std.testing; 9 const math = std.math; 10 11 fn test__powihf2(a: f16, b: i32, expected: f16) !void { 12 const result = powiXf2.__powihf2(a, b); 13 try testing.expectEqual(expected, result); 14 } 15 16 fn test__powisf2(a: f32, b: i32, expected: f32) !void { 17 const result = powiXf2.__powisf2(a, b); 18 try testing.expectEqual(expected, result); 19 } 20 21 fn test__powidf2(a: f64, b: i32, expected: f64) !void { 22 const result = powiXf2.__powidf2(a, b); 23 try testing.expectEqual(expected, result); 24 } 25 26 fn test__powitf2(a: f128, b: i32, expected: f128) !void { 27 const result = powiXf2.__powitf2(a, b); 28 try testing.expectEqual(expected, result); 29 } 30 31 fn test__powixf2(a: f80, b: i32, expected: f80) !void { 32 const result = powiXf2.__powixf2(a, b); 33 try testing.expectEqual(expected, result); 34 } 35 36 test "powihf2" { 37 const inf_f16 = math.inf(f16); 38 try test__powisf2(0, 0, 1); 39 try test__powihf2(1, 0, 1); 40 try test__powihf2(1.5, 0, 1); 41 try test__powihf2(2, 0, 1); 42 try test__powihf2(inf_f16, 0, 1); 43 44 try test__powihf2(-0.0, 0, 1); 45 try test__powihf2(-1, 0, 1); 46 try test__powihf2(-1.5, 0, 1); 47 try test__powihf2(-2, 0, 1); 48 try test__powihf2(-inf_f16, 0, 1); 49 50 try test__powihf2(0, 1, 0); 51 try test__powihf2(0, 2, 0); 52 try test__powihf2(0, 3, 0); 53 try test__powihf2(0, 4, 0); 54 try test__powihf2(0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 0); 55 try test__powihf2(0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), 0); 56 57 try test__powihf2(-0.0, 1, -0.0); 58 try test__powihf2(-0.0, 2, 0); 59 try test__powihf2(-0.0, 3, -0.0); 60 try test__powihf2(-0.0, 4, 0); 61 try test__powihf2(-0.0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 0); 62 try test__powihf2(-0.0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), -0.0); 63 64 try test__powihf2(1, 1, 1); 65 try test__powihf2(1, 2, 1); 66 try test__powihf2(1, 3, 1); 67 try test__powihf2(1, 4, 1); 68 try test__powihf2(1, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 1); 69 try test__powihf2(1, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), 1); 70 71 try test__powihf2(inf_f16, 1, inf_f16); 72 try test__powihf2(inf_f16, 2, inf_f16); 73 try test__powihf2(inf_f16, 3, inf_f16); 74 try test__powihf2(inf_f16, 4, inf_f16); 75 try test__powihf2(inf_f16, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), inf_f16); 76 try test__powihf2(inf_f16, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), inf_f16); 77 78 try test__powihf2(-inf_f16, 1, -inf_f16); 79 try test__powihf2(-inf_f16, 2, inf_f16); 80 try test__powihf2(-inf_f16, 3, -inf_f16); 81 try test__powihf2(-inf_f16, 4, inf_f16); 82 try test__powihf2(-inf_f16, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), inf_f16); 83 try test__powihf2(-inf_f16, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), -inf_f16); 84 // 85 try test__powihf2(0, -1, inf_f16); 86 try test__powihf2(0, -2, inf_f16); 87 try test__powihf2(0, -3, inf_f16); 88 try test__powihf2(0, -4, inf_f16); 89 try test__powihf2(0, @as(i32, @bitCast(@as(u32, 0x80000002))), inf_f16); // 0 ^ anything = +inf 90 try test__powihf2(0, @as(i32, @bitCast(@as(u32, 0x80000001))), inf_f16); 91 try test__powihf2(0, @as(i32, @bitCast(@as(u32, 0x80000000))), inf_f16); 92 93 try test__powihf2(-0.0, -1, -inf_f16); 94 try test__powihf2(-0.0, -2, inf_f16); 95 try test__powihf2(-0.0, -3, -inf_f16); 96 try test__powihf2(-0.0, -4, inf_f16); 97 try test__powihf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000002))), inf_f16); // -0 ^ anything even = +inf 98 try test__powihf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000001))), -inf_f16); // -0 ^ anything odd = -inf 99 try test__powihf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000000))), inf_f16); 100 101 try test__powihf2(1, -1, 1); 102 try test__powihf2(1, -2, 1); 103 try test__powihf2(1, -3, 1); 104 try test__powihf2(1, -4, 1); 105 try test__powihf2(1, @as(i32, @bitCast(@as(u32, 0x80000002))), 1); // 1.0 ^ anything = 1 106 try test__powihf2(1, @as(i32, @bitCast(@as(u32, 0x80000001))), 1); 107 try test__powihf2(1, @as(i32, @bitCast(@as(u32, 0x80000000))), 1); 108 109 try test__powihf2(inf_f16, -1, 0); 110 try test__powihf2(inf_f16, -2, 0); 111 try test__powihf2(inf_f16, -3, 0); 112 try test__powihf2(inf_f16, -4, 0); 113 try test__powihf2(inf_f16, @as(i32, @bitCast(@as(u32, 0x80000002))), 0); 114 try test__powihf2(inf_f16, @as(i32, @bitCast(@as(u32, 0x80000001))), 0); 115 try test__powihf2(inf_f16, @as(i32, @bitCast(@as(u32, 0x80000000))), 0); 116 // 117 try test__powihf2(-inf_f16, -1, -0.0); 118 try test__powihf2(-inf_f16, -2, 0); 119 try test__powihf2(-inf_f16, -3, -0.0); 120 try test__powihf2(-inf_f16, -4, 0); 121 try test__powihf2(-inf_f16, @as(i32, @bitCast(@as(u32, 0x80000002))), 0); 122 try test__powihf2(-inf_f16, @as(i32, @bitCast(@as(u32, 0x80000001))), -0.0); 123 try test__powihf2(-inf_f16, @as(i32, @bitCast(@as(u32, 0x80000000))), 0); 124 125 try test__powihf2(2, 10, 1024.0); 126 try test__powihf2(-2, 10, 1024.0); 127 try test__powihf2(2, -10, 1.0 / 1024.0); 128 try test__powihf2(-2, -10, 1.0 / 1024.0); 129 130 try test__powihf2(2, 14, 16384.0); 131 try test__powihf2(-2, 14, 16384.0); 132 try test__powihf2(2, 15, 32768.0); 133 try test__powihf2(-2, 15, -32768.0); 134 try test__powihf2(2, 16, inf_f16); 135 try test__powihf2(-2, 16, inf_f16); 136 137 try test__powihf2(2, -13, 1.0 / 8192.0); 138 try test__powihf2(-2, -13, -1.0 / 8192.0); 139 try test__powihf2(2, -15, 1.0 / 32768.0); 140 try test__powihf2(-2, -15, -1.0 / 32768.0); 141 try test__powihf2(2, -16, 0.0); // expected = 0.0 = 1/(-2**16) 142 try test__powihf2(-2, -16, 0.0); // expected = 0.0 = 1/(2**16) 143 } 144 145 test "powisf2" { 146 const inf_f32 = math.inf(f32); 147 try test__powisf2(0, 0, 1); 148 try test__powisf2(1, 0, 1); 149 try test__powisf2(1.5, 0, 1); 150 try test__powisf2(2, 0, 1); 151 try test__powisf2(inf_f32, 0, 1); 152 153 try test__powisf2(-0.0, 0, 1); 154 try test__powisf2(-1, 0, 1); 155 try test__powisf2(-1.5, 0, 1); 156 try test__powisf2(-2, 0, 1); 157 try test__powisf2(-inf_f32, 0, 1); 158 159 try test__powisf2(0, 1, 0); 160 try test__powisf2(0, 2, 0); 161 try test__powisf2(0, 3, 0); 162 try test__powisf2(0, 4, 0); 163 try test__powisf2(0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 0); 164 try test__powisf2(0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), 0); 165 166 try test__powisf2(-0.0, 1, -0.0); 167 try test__powisf2(-0.0, 2, 0); 168 try test__powisf2(-0.0, 3, -0.0); 169 try test__powisf2(-0.0, 4, 0); 170 try test__powisf2(-0.0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 0); 171 try test__powisf2(-0.0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), -0.0); 172 173 try test__powisf2(1, 1, 1); 174 try test__powisf2(1, 2, 1); 175 try test__powisf2(1, 3, 1); 176 try test__powisf2(1, 4, 1); 177 try test__powisf2(1, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 1); 178 try test__powisf2(1, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), 1); 179 180 try test__powisf2(inf_f32, 1, inf_f32); 181 try test__powisf2(inf_f32, 2, inf_f32); 182 try test__powisf2(inf_f32, 3, inf_f32); 183 try test__powisf2(inf_f32, 4, inf_f32); 184 try test__powisf2(inf_f32, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), inf_f32); 185 try test__powisf2(inf_f32, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), inf_f32); 186 187 try test__powisf2(-inf_f32, 1, -inf_f32); 188 try test__powisf2(-inf_f32, 2, inf_f32); 189 try test__powisf2(-inf_f32, 3, -inf_f32); 190 try test__powisf2(-inf_f32, 4, inf_f32); 191 try test__powisf2(-inf_f32, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), inf_f32); 192 try test__powisf2(-inf_f32, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), -inf_f32); 193 194 try test__powisf2(0, -1, inf_f32); 195 try test__powisf2(0, -2, inf_f32); 196 try test__powisf2(0, -3, inf_f32); 197 try test__powisf2(0, -4, inf_f32); 198 try test__powisf2(0, @as(i32, @bitCast(@as(u32, 0x80000002))), inf_f32); 199 try test__powisf2(0, @as(i32, @bitCast(@as(u32, 0x80000001))), inf_f32); 200 try test__powisf2(0, @as(i32, @bitCast(@as(u32, 0x80000000))), inf_f32); 201 202 try test__powisf2(-0.0, -1, -inf_f32); 203 try test__powisf2(-0.0, -2, inf_f32); 204 try test__powisf2(-0.0, -3, -inf_f32); 205 try test__powisf2(-0.0, -4, inf_f32); 206 try test__powisf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000002))), inf_f32); 207 try test__powisf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000001))), -inf_f32); 208 try test__powisf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000000))), inf_f32); 209 210 try test__powisf2(1, -1, 1); 211 try test__powisf2(1, -2, 1); 212 try test__powisf2(1, -3, 1); 213 try test__powisf2(1, -4, 1); 214 try test__powisf2(1, @as(i32, @bitCast(@as(u32, 0x80000002))), 1); 215 try test__powisf2(1, @as(i32, @bitCast(@as(u32, 0x80000001))), 1); 216 try test__powisf2(1, @as(i32, @bitCast(@as(u32, 0x80000000))), 1); 217 218 try test__powisf2(inf_f32, -1, 0); 219 try test__powisf2(inf_f32, -2, 0); 220 try test__powisf2(inf_f32, -3, 0); 221 try test__powisf2(inf_f32, -4, 0); 222 try test__powisf2(inf_f32, @as(i32, @bitCast(@as(u32, 0x80000002))), 0); 223 try test__powisf2(inf_f32, @as(i32, @bitCast(@as(u32, 0x80000001))), 0); 224 try test__powisf2(inf_f32, @as(i32, @bitCast(@as(u32, 0x80000000))), 0); 225 226 try test__powisf2(-inf_f32, -1, -0.0); 227 try test__powisf2(-inf_f32, -2, 0); 228 try test__powisf2(-inf_f32, -3, -0.0); 229 try test__powisf2(-inf_f32, -4, 0); 230 try test__powisf2(-inf_f32, @as(i32, @bitCast(@as(u32, 0x80000002))), 0); 231 try test__powisf2(-inf_f32, @as(i32, @bitCast(@as(u32, 0x80000001))), -0.0); 232 try test__powisf2(-inf_f32, @as(i32, @bitCast(@as(u32, 0x80000000))), 0); 233 234 try test__powisf2(2.0, 10, 1024.0); 235 try test__powisf2(-2, 10, 1024.0); 236 try test__powisf2(2, -10, 1.0 / 1024.0); 237 try test__powisf2(-2, -10, 1.0 / 1024.0); 238 // 239 try test__powisf2(2, 19, 524288.0); 240 try test__powisf2(-2, 19, -524288.0); 241 try test__powisf2(2, -19, 1.0 / 524288.0); 242 try test__powisf2(-2, -19, -1.0 / 524288.0); 243 244 try test__powisf2(2, 31, 2147483648.0); 245 try test__powisf2(-2, 31, -2147483648.0); 246 try test__powisf2(2, -31, 1.0 / 2147483648.0); 247 try test__powisf2(-2, -31, -1.0 / 2147483648.0); 248 } 249 250 test "powidf2" { 251 const inf_f64 = math.inf(f64); 252 try test__powidf2(0, 0, 1); 253 try test__powidf2(1, 0, 1); 254 try test__powidf2(1.5, 0, 1); 255 try test__powidf2(2, 0, 1); 256 try test__powidf2(inf_f64, 0, 1); 257 258 try test__powidf2(-0.0, 0, 1); 259 try test__powidf2(-1, 0, 1); 260 try test__powidf2(-1.5, 0, 1); 261 try test__powidf2(-2, 0, 1); 262 try test__powidf2(-inf_f64, 0, 1); 263 264 try test__powidf2(0, 1, 0); 265 try test__powidf2(0, 2, 0); 266 try test__powidf2(0, 3, 0); 267 try test__powidf2(0, 4, 0); 268 try test__powidf2(0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 0); 269 try test__powidf2(0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), 0); 270 271 try test__powidf2(-0.0, 1, -0.0); 272 try test__powidf2(-0.0, 2, 0); 273 try test__powidf2(-0.0, 3, -0.0); 274 try test__powidf2(-0.0, 4, 0); 275 try test__powidf2(-0.0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 0); 276 try test__powidf2(-0.0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), -0.0); 277 278 try test__powidf2(1, 1, 1); 279 try test__powidf2(1, 2, 1); 280 try test__powidf2(1, 3, 1); 281 try test__powidf2(1, 4, 1); 282 try test__powidf2(1, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 1); 283 try test__powidf2(1, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), 1); 284 285 try test__powidf2(inf_f64, 1, inf_f64); 286 try test__powidf2(inf_f64, 2, inf_f64); 287 try test__powidf2(inf_f64, 3, inf_f64); 288 try test__powidf2(inf_f64, 4, inf_f64); 289 try test__powidf2(inf_f64, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), inf_f64); 290 try test__powidf2(inf_f64, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), inf_f64); 291 292 try test__powidf2(-inf_f64, 1, -inf_f64); 293 try test__powidf2(-inf_f64, 2, inf_f64); 294 try test__powidf2(-inf_f64, 3, -inf_f64); 295 try test__powidf2(-inf_f64, 4, inf_f64); 296 try test__powidf2(-inf_f64, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), inf_f64); 297 try test__powidf2(-inf_f64, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), -inf_f64); 298 299 try test__powidf2(0, -1, inf_f64); 300 try test__powidf2(0, -2, inf_f64); 301 try test__powidf2(0, -3, inf_f64); 302 try test__powidf2(0, -4, inf_f64); 303 try test__powidf2(0, @as(i32, @bitCast(@as(u32, 0x80000002))), inf_f64); 304 try test__powidf2(0, @as(i32, @bitCast(@as(u32, 0x80000001))), inf_f64); 305 try test__powidf2(0, @as(i32, @bitCast(@as(u32, 0x80000000))), inf_f64); 306 307 try test__powidf2(-0.0, -1, -inf_f64); 308 try test__powidf2(-0.0, -2, inf_f64); 309 try test__powidf2(-0.0, -3, -inf_f64); 310 try test__powidf2(-0.0, -4, inf_f64); 311 try test__powidf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000002))), inf_f64); 312 try test__powidf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000001))), -inf_f64); 313 try test__powidf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000000))), inf_f64); 314 315 try test__powidf2(1, -1, 1); 316 try test__powidf2(1, -2, 1); 317 try test__powidf2(1, -3, 1); 318 try test__powidf2(1, -4, 1); 319 try test__powidf2(1, @as(i32, @bitCast(@as(u32, 0x80000002))), 1); 320 try test__powidf2(1, @as(i32, @bitCast(@as(u32, 0x80000001))), 1); 321 try test__powidf2(1, @as(i32, @bitCast(@as(u32, 0x80000000))), 1); 322 323 try test__powidf2(inf_f64, -1, 0); 324 try test__powidf2(inf_f64, -2, 0); 325 try test__powidf2(inf_f64, -3, 0); 326 try test__powidf2(inf_f64, -4, 0); 327 try test__powidf2(inf_f64, @as(i32, @bitCast(@as(u32, 0x80000002))), 0); 328 try test__powidf2(inf_f64, @as(i32, @bitCast(@as(u32, 0x80000001))), 0); 329 try test__powidf2(inf_f64, @as(i32, @bitCast(@as(u32, 0x80000000))), 0); 330 331 try test__powidf2(-inf_f64, -1, -0.0); 332 try test__powidf2(-inf_f64, -2, 0); 333 try test__powidf2(-inf_f64, -3, -0.0); 334 try test__powidf2(-inf_f64, -4, 0); 335 try test__powidf2(-inf_f64, @as(i32, @bitCast(@as(u32, 0x80000002))), 0); 336 try test__powidf2(-inf_f64, @as(i32, @bitCast(@as(u32, 0x80000001))), -0.0); 337 try test__powidf2(-inf_f64, @as(i32, @bitCast(@as(u32, 0x80000000))), 0); 338 339 try test__powidf2(2, 10, 1024.0); 340 try test__powidf2(-2, 10, 1024.0); 341 try test__powidf2(2, -10, 1.0 / 1024.0); 342 try test__powidf2(-2, -10, 1.0 / 1024.0); 343 344 try test__powidf2(2, 19, 524288.0); 345 try test__powidf2(-2, 19, -524288.0); 346 try test__powidf2(2, -19, 1.0 / 524288.0); 347 try test__powidf2(-2, -19, -1.0 / 524288.0); 348 349 try test__powidf2(2, 31, 2147483648.0); 350 try test__powidf2(-2, 31, -2147483648.0); 351 try test__powidf2(2, -31, 1.0 / 2147483648.0); 352 try test__powidf2(-2, -31, -1.0 / 2147483648.0); 353 } 354 355 test "powitf2" { 356 const inf_f128 = math.inf(f128); 357 try test__powitf2(0, 0, 1); 358 try test__powitf2(1, 0, 1); 359 try test__powitf2(1.5, 0, 1); 360 try test__powitf2(2, 0, 1); 361 try test__powitf2(inf_f128, 0, 1); 362 363 try test__powitf2(-0.0, 0, 1); 364 try test__powitf2(-1, 0, 1); 365 try test__powitf2(-1.5, 0, 1); 366 try test__powitf2(-2, 0, 1); 367 try test__powitf2(-inf_f128, 0, 1); 368 369 try test__powitf2(0, 1, 0); 370 try test__powitf2(0, 2, 0); 371 try test__powitf2(0, 3, 0); 372 try test__powitf2(0, 4, 0); 373 try test__powitf2(0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 0); 374 try test__powitf2(0, 0x7FFFFFFF, 0); 375 376 try test__powitf2(-0.0, 1, -0.0); 377 try test__powitf2(-0.0, 2, 0); 378 try test__powitf2(-0.0, 3, -0.0); 379 try test__powitf2(-0.0, 4, 0); 380 try test__powitf2(-0.0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 0); 381 try test__powitf2(-0.0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), -0.0); 382 383 try test__powitf2(1, 1, 1); 384 try test__powitf2(1, 2, 1); 385 try test__powitf2(1, 3, 1); 386 try test__powitf2(1, 4, 1); 387 try test__powitf2(1, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 1); 388 try test__powitf2(1, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), 1); 389 390 try test__powitf2(inf_f128, 1, inf_f128); 391 try test__powitf2(inf_f128, 2, inf_f128); 392 try test__powitf2(inf_f128, 3, inf_f128); 393 try test__powitf2(inf_f128, 4, inf_f128); 394 try test__powitf2(inf_f128, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), inf_f128); 395 try test__powitf2(inf_f128, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), inf_f128); 396 397 try test__powitf2(-inf_f128, 1, -inf_f128); 398 try test__powitf2(-inf_f128, 2, inf_f128); 399 try test__powitf2(-inf_f128, 3, -inf_f128); 400 try test__powitf2(-inf_f128, 4, inf_f128); 401 try test__powitf2(-inf_f128, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), inf_f128); 402 try test__powitf2(-inf_f128, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), -inf_f128); 403 404 try test__powitf2(0, -1, inf_f128); 405 try test__powitf2(0, -2, inf_f128); 406 try test__powitf2(0, -3, inf_f128); 407 try test__powitf2(0, -4, inf_f128); 408 try test__powitf2(0, @as(i32, @bitCast(@as(u32, 0x80000002))), inf_f128); 409 try test__powitf2(0, @as(i32, @bitCast(@as(u32, 0x80000001))), inf_f128); 410 try test__powitf2(0, @as(i32, @bitCast(@as(u32, 0x80000000))), inf_f128); 411 412 try test__powitf2(-0.0, -1, -inf_f128); 413 try test__powitf2(-0.0, -2, inf_f128); 414 try test__powitf2(-0.0, -3, -inf_f128); 415 try test__powitf2(-0.0, -4, inf_f128); 416 try test__powitf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000002))), inf_f128); 417 try test__powitf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000001))), -inf_f128); 418 try test__powitf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000000))), inf_f128); 419 420 try test__powitf2(1, -1, 1); 421 try test__powitf2(1, -2, 1); 422 try test__powitf2(1, -3, 1); 423 try test__powitf2(1, -4, 1); 424 try test__powitf2(1, @as(i32, @bitCast(@as(u32, 0x80000002))), 1); 425 try test__powitf2(1, @as(i32, @bitCast(@as(u32, 0x80000001))), 1); 426 try test__powitf2(1, @as(i32, @bitCast(@as(u32, 0x80000000))), 1); 427 428 try test__powitf2(inf_f128, -1, 0); 429 try test__powitf2(inf_f128, -2, 0); 430 try test__powitf2(inf_f128, -3, 0); 431 try test__powitf2(inf_f128, -4, 0); 432 try test__powitf2(inf_f128, @as(i32, @bitCast(@as(u32, 0x80000002))), 0); 433 try test__powitf2(inf_f128, @as(i32, @bitCast(@as(u32, 0x80000001))), 0); 434 try test__powitf2(inf_f128, @as(i32, @bitCast(@as(u32, 0x80000000))), 0); 435 436 try test__powitf2(-inf_f128, -1, -0.0); 437 try test__powitf2(-inf_f128, -2, 0); 438 try test__powitf2(-inf_f128, -3, -0.0); 439 try test__powitf2(-inf_f128, -4, 0); 440 try test__powitf2(-inf_f128, @as(i32, @bitCast(@as(u32, 0x80000002))), 0); 441 try test__powitf2(-inf_f128, @as(i32, @bitCast(@as(u32, 0x80000001))), -0.0); 442 try test__powitf2(-inf_f128, @as(i32, @bitCast(@as(u32, 0x80000000))), 0); 443 444 try test__powitf2(2, 10, 1024.0); 445 try test__powitf2(-2, 10, 1024.0); 446 try test__powitf2(2, -10, 1.0 / 1024.0); 447 try test__powitf2(-2, -10, 1.0 / 1024.0); 448 449 try test__powitf2(2, 19, 524288.0); 450 try test__powitf2(-2, 19, -524288.0); 451 try test__powitf2(2, -19, 1.0 / 524288.0); 452 try test__powitf2(-2, -19, -1.0 / 524288.0); 453 454 try test__powitf2(2, 31, 2147483648.0); 455 try test__powitf2(-2, 31, -2147483648.0); 456 try test__powitf2(2, -31, 1.0 / 2147483648.0); 457 try test__powitf2(-2, -31, -1.0 / 2147483648.0); 458 } 459 460 test "powixf2" { 461 const inf_f80 = math.inf(f80); 462 try test__powixf2(0, 0, 1); 463 try test__powixf2(1, 0, 1); 464 try test__powixf2(1.5, 0, 1); 465 try test__powixf2(2, 0, 1); 466 try test__powixf2(inf_f80, 0, 1); 467 468 try test__powixf2(-0.0, 0, 1); 469 try test__powixf2(-1, 0, 1); 470 try test__powixf2(-1.5, 0, 1); 471 try test__powixf2(-2, 0, 1); 472 try test__powixf2(-inf_f80, 0, 1); 473 474 try test__powixf2(0, 1, 0); 475 try test__powixf2(0, 2, 0); 476 try test__powixf2(0, 3, 0); 477 try test__powixf2(0, 4, 0); 478 try test__powixf2(0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 0); 479 try test__powixf2(0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), 0); 480 481 try test__powixf2(-0.0, 1, -0.0); 482 try test__powixf2(-0.0, 2, 0); 483 try test__powixf2(-0.0, 3, -0.0); 484 try test__powixf2(-0.0, 4, 0); 485 try test__powixf2(-0.0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 0); 486 try test__powixf2(-0.0, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), -0.0); 487 488 try test__powixf2(1, 1, 1); 489 try test__powixf2(1, 2, 1); 490 try test__powixf2(1, 3, 1); 491 try test__powixf2(1, 4, 1); 492 try test__powixf2(1, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), 1); 493 try test__powixf2(1, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), 1); 494 495 try test__powixf2(inf_f80, 1, inf_f80); 496 try test__powixf2(inf_f80, 2, inf_f80); 497 try test__powixf2(inf_f80, 3, inf_f80); 498 try test__powixf2(inf_f80, 4, inf_f80); 499 try test__powixf2(inf_f80, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), inf_f80); 500 try test__powixf2(inf_f80, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), inf_f80); 501 502 try test__powixf2(-inf_f80, 1, -inf_f80); 503 try test__powixf2(-inf_f80, 2, inf_f80); 504 try test__powixf2(-inf_f80, 3, -inf_f80); 505 try test__powixf2(-inf_f80, 4, inf_f80); 506 try test__powixf2(-inf_f80, @as(i32, @bitCast(@as(u32, 0x7FFFFFFE))), inf_f80); 507 try test__powixf2(-inf_f80, @as(i32, @bitCast(@as(u32, 0x7FFFFFFF))), -inf_f80); 508 509 try test__powixf2(0, -1, inf_f80); 510 try test__powixf2(0, -2, inf_f80); 511 try test__powixf2(0, -3, inf_f80); 512 try test__powixf2(0, -4, inf_f80); 513 try test__powixf2(0, @as(i32, @bitCast(@as(u32, 0x80000002))), inf_f80); 514 try test__powixf2(0, @as(i32, @bitCast(@as(u32, 0x80000001))), inf_f80); 515 try test__powixf2(0, @as(i32, @bitCast(@as(u32, 0x80000000))), inf_f80); 516 517 try test__powixf2(-0.0, -1, -inf_f80); 518 try test__powixf2(-0.0, -2, inf_f80); 519 try test__powixf2(-0.0, -3, -inf_f80); 520 try test__powixf2(-0.0, -4, inf_f80); 521 try test__powixf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000002))), inf_f80); 522 try test__powixf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000001))), -inf_f80); 523 try test__powixf2(-0.0, @as(i32, @bitCast(@as(u32, 0x80000000))), inf_f80); 524 525 try test__powixf2(1, -1, 1); 526 try test__powixf2(1, -2, 1); 527 try test__powixf2(1, -3, 1); 528 try test__powixf2(1, -4, 1); 529 try test__powixf2(1, @as(i32, @bitCast(@as(u32, 0x80000002))), 1); 530 try test__powixf2(1, @as(i32, @bitCast(@as(u32, 0x80000001))), 1); 531 try test__powixf2(1, @as(i32, @bitCast(@as(u32, 0x80000000))), 1); 532 533 try test__powixf2(inf_f80, -1, 0); 534 try test__powixf2(inf_f80, -2, 0); 535 try test__powixf2(inf_f80, -3, 0); 536 try test__powixf2(inf_f80, -4, 0); 537 try test__powixf2(inf_f80, @as(i32, @bitCast(@as(u32, 0x80000002))), 0); 538 try test__powixf2(inf_f80, @as(i32, @bitCast(@as(u32, 0x80000001))), 0); 539 try test__powixf2(inf_f80, @as(i32, @bitCast(@as(u32, 0x80000000))), 0); 540 541 try test__powixf2(-inf_f80, -1, -0.0); 542 try test__powixf2(-inf_f80, -2, 0); 543 try test__powixf2(-inf_f80, -3, -0.0); 544 try test__powixf2(-inf_f80, -4, 0); 545 try test__powixf2(-inf_f80, @as(i32, @bitCast(@as(u32, 0x80000002))), 0); 546 try test__powixf2(-inf_f80, @as(i32, @bitCast(@as(u32, 0x80000001))), -0.0); 547 try test__powixf2(-inf_f80, @as(i32, @bitCast(@as(u32, 0x80000000))), 0); 548 549 try test__powixf2(2, 10, 1024.0); 550 try test__powixf2(-2, 10, 1024.0); 551 try test__powixf2(2, -10, 1.0 / 1024.0); 552 try test__powixf2(-2, -10, 1.0 / 1024.0); 553 554 try test__powixf2(2, 19, 524288.0); 555 try test__powixf2(-2, 19, -524288.0); 556 try test__powixf2(2, -19, 1.0 / 524288.0); 557 try test__powixf2(-2, -19, -1.0 / 524288.0); 558 559 try test__powixf2(2, 31, 2147483648.0); 560 try test__powixf2(-2, 31, -2147483648.0); 561 try test__powixf2(2, -31, 1.0 / 2147483648.0); 562 try test__powixf2(-2, -31, -1.0 / 2147483648.0); 563 }