| ... | ... | @@ -99,7 +99,6 @@ test "negative f128 floatToInt at compile-time" { |
| 99 | 99 | |
| 100 | 100 | test "@sqrt" { |
| 101 | 101 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 102 | | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 103 | 102 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 104 | 103 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 105 | 104 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -115,15 +114,6 @@ fn testSqrt() !void { |
| 115 | 114 | try expect(math.approxEqAbs(f32, @sqrt(@as(f32, 1.1)), 1.0488088481701516, epsilon)); |
| 116 | 115 | try expect(math.approxEqAbs(f32, @sqrt(@as(f32, 2.0)), 1.4142135623730950, epsilon)); |
| 117 | 116 | |
| 118 | | { |
| 119 | | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 3.3, 4.4 }; |
| 120 | | var result = @sqrt(v); |
| 121 | | try expect(math.approxEqAbs(f32, @sqrt(@as(f32, 1.1)), result[0], epsilon)); |
| 122 | | try expect(math.approxEqAbs(f32, @sqrt(@as(f32, 2.2)), result[1], epsilon)); |
| 123 | | try expect(math.approxEqAbs(f32, @sqrt(@as(f32, 3.3)), result[2], epsilon)); |
| 124 | | try expect(math.approxEqAbs(f32, @sqrt(@as(f32, 4.4)), result[3], epsilon)); |
| 125 | | } |
| 126 | | |
| 127 | 117 | if (builtin.zig_backend == .stage1) { |
| 128 | 118 | if (has_f80_rt) { |
| 129 | 119 | // TODO https://github.com/ziglang/zig/issues/10875 |
| ... | ... | @@ -145,6 +135,26 @@ fn testSqrt() !void { |
| 145 | 135 | } |
| 146 | 136 | } |
| 147 | 137 | |
| 138 | test "@sqrt with vectors" { |
| 139 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 140 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 141 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 142 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 143 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 144 | |
| 145 | comptime try testSqrtWithVectors(); |
| 146 | try testSqrtWithVectors(); |
| 147 | } |
| 148 | |
| 149 | fn testSqrtWithVectors() !void { |
| 150 | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 3.3, 4.4 }; |
| 151 | var result = @sqrt(v); |
| 152 | try expect(math.approxEqAbs(f32, @sqrt(@as(f32, 1.1)), result[0], epsilon)); |
| 153 | try expect(math.approxEqAbs(f32, @sqrt(@as(f32, 2.2)), result[1], epsilon)); |
| 154 | try expect(math.approxEqAbs(f32, @sqrt(@as(f32, 3.3)), result[2], epsilon)); |
| 155 | try expect(math.approxEqAbs(f32, @sqrt(@as(f32, 4.4)), result[3], epsilon)); |
| 156 | } |
| 157 | |
| 148 | 158 | test "more @sqrt f16 tests" { |
| 149 | 159 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 150 | 160 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -176,7 +186,6 @@ test "@sin" { |
| 176 | 186 | return error.SkipZigTest; |
| 177 | 187 | } |
| 178 | 188 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 179 | | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 180 | 189 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 181 | 190 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 182 | 191 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -193,15 +202,27 @@ fn testSin() !void { |
| 193 | 202 | try expect(math.approxEqAbs(ty, @sin(@as(ty, std.math.pi / 2.0)), 1, eps)); |
| 194 | 203 | try expect(math.approxEqAbs(ty, @sin(@as(ty, std.math.pi / 4.0)), 0.7071067811865475, eps)); |
| 195 | 204 | } |
| 205 | } |
| 196 | 206 | |
| 197 | | { |
| 198 | | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 3.3, 4.4 }; |
| 199 | | var result = @sin(v); |
| 200 | | try expect(math.approxEqAbs(f32, @sin(@as(f32, 1.1)), result[0], epsilon)); |
| 201 | | try expect(math.approxEqAbs(f32, @sin(@as(f32, 2.2)), result[1], epsilon)); |
| 202 | | try expect(math.approxEqAbs(f32, @sin(@as(f32, 3.3)), result[2], epsilon)); |
| 203 | | try expect(math.approxEqAbs(f32, @sin(@as(f32, 4.4)), result[3], epsilon)); |
| 204 | | } |
| 207 | test "@sin with vectors" { |
| 208 | if (builtin.zig_backend == .stage1) return error.SkipZigTest; |
| 209 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 210 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 211 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 212 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 213 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 214 | |
| 215 | comptime try testSinWithVectors(); |
| 216 | try testSinWithVectors(); |
| 217 | } |
| 218 | |
| 219 | fn testSinWithVectors() !void { |
| 220 | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 3.3, 4.4 }; |
| 221 | var result = @sin(v); |
| 222 | try expect(math.approxEqAbs(f32, @sin(@as(f32, 1.1)), result[0], epsilon)); |
| 223 | try expect(math.approxEqAbs(f32, @sin(@as(f32, 2.2)), result[1], epsilon)); |
| 224 | try expect(math.approxEqAbs(f32, @sin(@as(f32, 3.3)), result[2], epsilon)); |
| 225 | try expect(math.approxEqAbs(f32, @sin(@as(f32, 4.4)), result[3], epsilon)); |
| 205 | 226 | } |
| 206 | 227 | |
| 207 | 228 | test "@cos" { |
| ... | ... | @@ -210,7 +231,6 @@ test "@cos" { |
| 210 | 231 | return error.SkipZigTest; |
| 211 | 232 | } |
| 212 | 233 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 213 | | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 214 | 234 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 215 | 235 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 216 | 236 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -227,20 +247,31 @@ fn testCos() !void { |
| 227 | 247 | try expect(math.approxEqAbs(ty, @cos(@as(ty, std.math.pi / 2.0)), 0, eps)); |
| 228 | 248 | try expect(math.approxEqAbs(ty, @cos(@as(ty, std.math.pi / 4.0)), 0.7071067811865475, eps)); |
| 229 | 249 | } |
| 250 | } |
| 230 | 251 | |
| 231 | | { |
| 232 | | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 3.3, 4.4 }; |
| 233 | | var result = @cos(v); |
| 234 | | try expect(math.approxEqAbs(f32, @cos(@as(f32, 1.1)), result[0], epsilon)); |
| 235 | | try expect(math.approxEqAbs(f32, @cos(@as(f32, 2.2)), result[1], epsilon)); |
| 236 | | try expect(math.approxEqAbs(f32, @cos(@as(f32, 3.3)), result[2], epsilon)); |
| 237 | | try expect(math.approxEqAbs(f32, @cos(@as(f32, 4.4)), result[3], epsilon)); |
| 238 | | } |
| 252 | test "@cos with vectors" { |
| 253 | if (builtin.zig_backend == .stage1) return error.SkipZigTest; |
| 254 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 255 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 256 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 257 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 258 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 259 | |
| 260 | comptime try testCosWithVectors(); |
| 261 | try testCosWithVectors(); |
| 262 | } |
| 263 | |
| 264 | fn testCosWithVectors() !void { |
| 265 | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 3.3, 4.4 }; |
| 266 | var result = @cos(v); |
| 267 | try expect(math.approxEqAbs(f32, @cos(@as(f32, 1.1)), result[0], epsilon)); |
| 268 | try expect(math.approxEqAbs(f32, @cos(@as(f32, 2.2)), result[1], epsilon)); |
| 269 | try expect(math.approxEqAbs(f32, @cos(@as(f32, 3.3)), result[2], epsilon)); |
| 270 | try expect(math.approxEqAbs(f32, @cos(@as(f32, 4.4)), result[3], epsilon)); |
| 239 | 271 | } |
| 240 | 272 | |
| 241 | 273 | test "@exp" { |
| 242 | 274 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 243 | | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 244 | 275 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 245 | 276 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 246 | 277 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -256,20 +287,30 @@ fn testExp() !void { |
| 256 | 287 | try expect(math.approxEqAbs(ty, @exp(@as(ty, 2)), 7.389056098930650, eps)); |
| 257 | 288 | try expect(math.approxEqAbs(ty, @exp(@as(ty, 5)), 148.4131591025766, eps)); |
| 258 | 289 | } |
| 290 | } |
| 259 | 291 | |
| 260 | | { |
| 261 | | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 }; |
| 262 | | var result = @exp(v); |
| 263 | | try expect(math.approxEqAbs(f32, @exp(@as(f32, 1.1)), result[0], epsilon)); |
| 264 | | try expect(math.approxEqAbs(f32, @exp(@as(f32, 2.2)), result[1], epsilon)); |
| 265 | | try expect(math.approxEqAbs(f32, @exp(@as(f32, 0.3)), result[2], epsilon)); |
| 266 | | try expect(math.approxEqAbs(f32, @exp(@as(f32, 0.4)), result[3], epsilon)); |
| 267 | | } |
| 292 | test "@exp with vectors" { |
| 293 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 294 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 295 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 296 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 297 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 298 | |
| 299 | comptime try testExpWithVectors(); |
| 300 | try testExpWithVectors(); |
| 301 | } |
| 302 | |
| 303 | fn testExpWithVectors() !void { |
| 304 | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 }; |
| 305 | var result = @exp(v); |
| 306 | try expect(math.approxEqAbs(f32, @exp(@as(f32, 1.1)), result[0], epsilon)); |
| 307 | try expect(math.approxEqAbs(f32, @exp(@as(f32, 2.2)), result[1], epsilon)); |
| 308 | try expect(math.approxEqAbs(f32, @exp(@as(f32, 0.3)), result[2], epsilon)); |
| 309 | try expect(math.approxEqAbs(f32, @exp(@as(f32, 0.4)), result[3], epsilon)); |
| 268 | 310 | } |
| 269 | 311 | |
| 270 | 312 | test "@exp2" { |
| 271 | 313 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 272 | | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 273 | 314 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 274 | 315 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 275 | 316 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -285,15 +326,26 @@ fn testExp2() !void { |
| 285 | 326 | try expect(math.approxEqAbs(ty, @exp2(@as(ty, 1.5)), 2.8284271247462, eps)); |
| 286 | 327 | try expect(math.approxEqAbs(ty, @exp2(@as(ty, 4.5)), 22.627416997969, eps)); |
| 287 | 328 | } |
| 329 | } |
| 288 | 330 | |
| 289 | | { |
| 290 | | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 }; |
| 291 | | var result = @exp2(v); |
| 292 | | try expect(math.approxEqAbs(f32, @exp2(@as(f32, 1.1)), result[0], epsilon)); |
| 293 | | try expect(math.approxEqAbs(f32, @exp2(@as(f32, 2.2)), result[1], epsilon)); |
| 294 | | try expect(math.approxEqAbs(f32, @exp2(@as(f32, 0.3)), result[2], epsilon)); |
| 295 | | try expect(math.approxEqAbs(f32, @exp2(@as(f32, 0.4)), result[3], epsilon)); |
| 296 | | } |
| 331 | test "@exp2" { |
| 332 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 333 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 334 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 335 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 336 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 337 | |
| 338 | comptime try testExp2WithVectors(); |
| 339 | try testExp2WithVectors(); |
| 340 | } |
| 341 | |
| 342 | fn testExp2WithVectors() !void { |
| 343 | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 }; |
| 344 | var result = @exp2(v); |
| 345 | try expect(math.approxEqAbs(f32, @exp2(@as(f32, 1.1)), result[0], epsilon)); |
| 346 | try expect(math.approxEqAbs(f32, @exp2(@as(f32, 2.2)), result[1], epsilon)); |
| 347 | try expect(math.approxEqAbs(f32, @exp2(@as(f32, 0.3)), result[2], epsilon)); |
| 348 | try expect(math.approxEqAbs(f32, @exp2(@as(f32, 0.4)), result[3], epsilon)); |
| 297 | 349 | } |
| 298 | 350 | |
| 299 | 351 | test "@log" { |
| ... | ... | @@ -348,7 +400,6 @@ test "@log2" { |
| 348 | 400 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 349 | 401 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 350 | 402 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 351 | | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 352 | 403 | |
| 353 | 404 | comptime try testLog2(); |
| 354 | 405 | try testLog2(); |
| ... | ... | @@ -361,15 +412,26 @@ fn testLog2() !void { |
| 361 | 412 | try expect(math.approxEqAbs(ty, @log2(@as(ty, 6)), 2.5849625007212, eps)); |
| 362 | 413 | try expect(math.approxEqAbs(ty, @log2(@as(ty, 10)), 3.3219280948874, eps)); |
| 363 | 414 | } |
| 415 | } |
| 364 | 416 | |
| 365 | | { |
| 366 | | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 }; |
| 367 | | var result = @log2(v); |
| 368 | | try expect(@log2(@as(f32, 1.1)) == result[0]); |
| 369 | | try expect(@log2(@as(f32, 2.2)) == result[1]); |
| 370 | | try expect(@log2(@as(f32, 0.3)) == result[2]); |
| 371 | | try expect(@log2(@as(f32, 0.4)) == result[3]); |
| 372 | | } |
| 417 | test "@log2 with vectors" { |
| 418 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 419 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 420 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 421 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 422 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 423 | |
| 424 | comptime try testLog2WithVectors(); |
| 425 | try testLog2WithVectors(); |
| 426 | } |
| 427 | |
| 428 | fn testLog2WithVectors() !void { |
| 429 | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 }; |
| 430 | var result = @log2(v); |
| 431 | try expect(@log2(@as(f32, 1.1)) == result[0]); |
| 432 | try expect(@log2(@as(f32, 2.2)) == result[1]); |
| 433 | try expect(@log2(@as(f32, 0.3)) == result[2]); |
| 434 | try expect(@log2(@as(f32, 0.4)) == result[3]); |
| 373 | 435 | } |
| 374 | 436 | |
| 375 | 437 | test "@log10" { |
| ... | ... | @@ -377,7 +439,6 @@ test "@log10" { |
| 377 | 439 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 378 | 440 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 379 | 441 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 380 | | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 381 | 442 | |
| 382 | 443 | comptime try testLog10(); |
| 383 | 444 | try testLog10(); |
| ... | ... | @@ -390,20 +451,30 @@ fn testLog10() !void { |
| 390 | 451 | try expect(math.approxEqAbs(ty, @log10(@as(ty, 15)), 1.176091259056, eps)); |
| 391 | 452 | try expect(math.approxEqAbs(ty, @log10(@as(ty, 50)), 1.698970004336, eps)); |
| 392 | 453 | } |
| 454 | } |
| 393 | 455 | |
| 394 | | { |
| 395 | | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 }; |
| 396 | | var result = @log10(v); |
| 397 | | try expect(@log10(@as(f32, 1.1)) == result[0]); |
| 398 | | try expect(@log10(@as(f32, 2.2)) == result[1]); |
| 399 | | try expect(@log10(@as(f32, 0.3)) == result[2]); |
| 400 | | try expect(@log10(@as(f32, 0.4)) == result[3]); |
| 401 | | } |
| 456 | test "@log10 with vectors" { |
| 457 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 458 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 459 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 460 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 461 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 462 | |
| 463 | comptime try testLog10WithVectors(); |
| 464 | try testLog10WithVectors(); |
| 465 | } |
| 466 | |
| 467 | fn testLog10WithVectors() !void { |
| 468 | var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 }; |
| 469 | var result = @log10(v); |
| 470 | try expect(@log10(@as(f32, 1.1)) == result[0]); |
| 471 | try expect(@log10(@as(f32, 2.2)) == result[1]); |
| 472 | try expect(@log10(@as(f32, 0.3)) == result[2]); |
| 473 | try expect(@log10(@as(f32, 0.4)) == result[3]); |
| 402 | 474 | } |
| 403 | 475 | |
| 404 | 476 | test "@fabs" { |
| 405 | 477 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 406 | | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 407 | 478 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 408 | 479 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 409 | 480 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -428,20 +499,30 @@ fn testFabs() !void { |
| 428 | 499 | // try expect(@fabs(a) == 2.5); |
| 429 | 500 | // try expect(@fabs(b) == 2.5); |
| 430 | 501 | // } |
| 502 | } |
| 431 | 503 | |
| 432 | | { |
| 433 | | var v: @Vector(4, f32) = [_]f32{ 1.1, -2.2, 0.3, -0.4 }; |
| 434 | | var result = @fabs(v); |
| 435 | | try expect(math.approxEqAbs(f32, @fabs(@as(f32, 1.1)), result[0], epsilon)); |
| 436 | | try expect(math.approxEqAbs(f32, @fabs(@as(f32, -2.2)), result[1], epsilon)); |
| 437 | | try expect(math.approxEqAbs(f32, @fabs(@as(f32, 0.3)), result[2], epsilon)); |
| 438 | | try expect(math.approxEqAbs(f32, @fabs(@as(f32, -0.4)), result[3], epsilon)); |
| 439 | | } |
| 504 | test "@fabs with vectors" { |
| 505 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 506 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 507 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 508 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 509 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 510 | |
| 511 | comptime try testFabsWithVectors(); |
| 512 | try testFabsWithVectors(); |
| 513 | } |
| 514 | |
| 515 | fn testFabsWithVectors() !void { |
| 516 | var v: @Vector(4, f32) = [_]f32{ 1.1, -2.2, 0.3, -0.4 }; |
| 517 | var result = @fabs(v); |
| 518 | try expect(math.approxEqAbs(f32, @fabs(@as(f32, 1.1)), result[0], epsilon)); |
| 519 | try expect(math.approxEqAbs(f32, @fabs(@as(f32, -2.2)), result[1], epsilon)); |
| 520 | try expect(math.approxEqAbs(f32, @fabs(@as(f32, 0.3)), result[2], epsilon)); |
| 521 | try expect(math.approxEqAbs(f32, @fabs(@as(f32, -0.4)), result[3], epsilon)); |
| 440 | 522 | } |
| 441 | 523 | |
| 442 | 524 | test "@floor" { |
| 443 | 525 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 444 | | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 445 | 526 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 446 | 527 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 447 | 528 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -461,20 +542,30 @@ fn testFloor() !void { |
| 461 | 542 | // var a: f80 = 3.5; |
| 462 | 543 | // try expect(@floor(a) == 3); |
| 463 | 544 | // } |
| 545 | } |
| 464 | 546 | |
| 465 | | { |
| 466 | | var v: @Vector(4, f32) = [_]f32{ 1.1, -2.2, 0.3, -0.4 }; |
| 467 | | var result = @floor(v); |
| 468 | | try expect(math.approxEqAbs(f32, @floor(@as(f32, 1.1)), result[0], epsilon)); |
| 469 | | try expect(math.approxEqAbs(f32, @floor(@as(f32, -2.2)), result[1], epsilon)); |
| 470 | | try expect(math.approxEqAbs(f32, @floor(@as(f32, 0.3)), result[2], epsilon)); |
| 471 | | try expect(math.approxEqAbs(f32, @floor(@as(f32, -0.4)), result[3], epsilon)); |
| 472 | | } |
| 547 | test "@floor with vectors" { |
| 548 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 549 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 550 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 551 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 552 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 553 | |
| 554 | comptime try testFloorWithVectors(); |
| 555 | try testFloorWithVectors(); |
| 556 | } |
| 557 | |
| 558 | fn testFloorWithVectors() !void { |
| 559 | var v: @Vector(4, f32) = [_]f32{ 1.1, -2.2, 0.3, -0.4 }; |
| 560 | var result = @floor(v); |
| 561 | try expect(math.approxEqAbs(f32, @floor(@as(f32, 1.1)), result[0], epsilon)); |
| 562 | try expect(math.approxEqAbs(f32, @floor(@as(f32, -2.2)), result[1], epsilon)); |
| 563 | try expect(math.approxEqAbs(f32, @floor(@as(f32, 0.3)), result[2], epsilon)); |
| 564 | try expect(math.approxEqAbs(f32, @floor(@as(f32, -0.4)), result[3], epsilon)); |
| 473 | 565 | } |
| 474 | 566 | |
| 475 | 567 | test "@ceil" { |
| 476 | 568 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 477 | | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 478 | 569 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 479 | 570 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 480 | 571 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -494,20 +585,30 @@ fn testCeil() !void { |
| 494 | 585 | // var a: f80 = 3.5; |
| 495 | 586 | // try expect(@ceil(a) == 4); |
| 496 | 587 | // } |
| 588 | } |
| 497 | 589 | |
| 498 | | { |
| 499 | | var v: @Vector(4, f32) = [_]f32{ 1.1, -2.2, 0.3, -0.4 }; |
| 500 | | var result = @ceil(v); |
| 501 | | try expect(math.approxEqAbs(f32, @ceil(@as(f32, 1.1)), result[0], epsilon)); |
| 502 | | try expect(math.approxEqAbs(f32, @ceil(@as(f32, -2.2)), result[1], epsilon)); |
| 503 | | try expect(math.approxEqAbs(f32, @ceil(@as(f32, 0.3)), result[2], epsilon)); |
| 504 | | try expect(math.approxEqAbs(f32, @ceil(@as(f32, -0.4)), result[3], epsilon)); |
| 505 | | } |
| 590 | test "@ceil with vectors" { |
| 591 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 592 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 593 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 594 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 595 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 596 | |
| 597 | comptime try testCeilWithVectors(); |
| 598 | try testCeilWithVectors(); |
| 599 | } |
| 600 | |
| 601 | fn testCeilWithVectors() !void { |
| 602 | var v: @Vector(4, f32) = [_]f32{ 1.1, -2.2, 0.3, -0.4 }; |
| 603 | var result = @ceil(v); |
| 604 | try expect(math.approxEqAbs(f32, @ceil(@as(f32, 1.1)), result[0], epsilon)); |
| 605 | try expect(math.approxEqAbs(f32, @ceil(@as(f32, -2.2)), result[1], epsilon)); |
| 606 | try expect(math.approxEqAbs(f32, @ceil(@as(f32, 0.3)), result[2], epsilon)); |
| 607 | try expect(math.approxEqAbs(f32, @ceil(@as(f32, -0.4)), result[3], epsilon)); |
| 506 | 608 | } |
| 507 | 609 | |
| 508 | 610 | test "@trunc" { |
| 509 | 611 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 510 | | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 511 | 612 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 512 | 613 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 513 | 614 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -527,15 +628,26 @@ fn testTrunc() !void { |
| 527 | 628 | // var a: f80 = -3.5; |
| 528 | 629 | // try expect(@trunc(a) == -3); |
| 529 | 630 | // } |
| 631 | } |
| 530 | 632 | |
| 531 | | { |
| 532 | | var v: @Vector(4, f32) = [_]f32{ 1.1, -2.2, 0.3, -0.4 }; |
| 533 | | var result = @trunc(v); |
| 534 | | try expect(math.approxEqAbs(f32, @trunc(@as(f32, 1.1)), result[0], epsilon)); |
| 535 | | try expect(math.approxEqAbs(f32, @trunc(@as(f32, -2.2)), result[1], epsilon)); |
| 536 | | try expect(math.approxEqAbs(f32, @trunc(@as(f32, 0.3)), result[2], epsilon)); |
| 537 | | try expect(math.approxEqAbs(f32, @trunc(@as(f32, -0.4)), result[3], epsilon)); |
| 538 | | } |
| 633 | test "@trunc with vectors" { |
| 634 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 635 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 636 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 637 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 638 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 639 | |
| 640 | comptime try testTruncWithVectors(); |
| 641 | try testTruncWithVectors(); |
| 642 | } |
| 643 | |
| 644 | fn testTruncWithVectors() !void { |
| 645 | var v: @Vector(4, f32) = [_]f32{ 1.1, -2.2, 0.3, -0.4 }; |
| 646 | var result = @trunc(v); |
| 647 | try expect(math.approxEqAbs(f32, @trunc(@as(f32, 1.1)), result[0], epsilon)); |
| 648 | try expect(math.approxEqAbs(f32, @trunc(@as(f32, -2.2)), result[1], epsilon)); |
| 649 | try expect(math.approxEqAbs(f32, @trunc(@as(f32, 0.3)), result[2], epsilon)); |
| 650 | try expect(math.approxEqAbs(f32, @trunc(@as(f32, -0.4)), result[3], epsilon)); |
| 539 | 651 | } |
| 540 | 652 | |
| 541 | 653 | test "negation f16" { |