| ... | @@ -523,7 +523,7 @@ fn testLog10WithVectors() !void { | ... | @@ -523,7 +523,7 @@ fn testLog10WithVectors() !void { |
| 523 | try expect(@log10(@as(f32, 0.4)) == result[3]); | 523 | try expect(@log10(@as(f32, 0.4)) == result[3]); |
| 524 | } | 524 | } |
| 525 | | 525 | |
| 526 | test "@fabs" { | 526 | test "@abs" { |
| 527 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 527 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 528 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 528 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 529 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 529 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | @@ -533,24 +533,24 @@ test "@fabs" { | ... | @@ -533,24 +533,24 @@ test "@fabs" { |
| 533 | } | 533 | } |
| 534 | | 534 | |
| 535 | fn testFabs() !void { | 535 | fn testFabs() !void { |
| 536 | try expect(@fabs(@as(f16, -2.5)) == 2.5); | 536 | try expect(@abs(@as(f16, -2.5)) == 2.5); |
| 537 | try expect(@fabs(@as(f16, 2.5)) == 2.5); | 537 | try expect(@abs(@as(f16, 2.5)) == 2.5); |
| 538 | try expect(@fabs(@as(f32, -2.5)) == 2.5); | 538 | try expect(@abs(@as(f32, -2.5)) == 2.5); |
| 539 | try expect(@fabs(@as(f32, 2.5)) == 2.5); | 539 | try expect(@abs(@as(f32, 2.5)) == 2.5); |
| 540 | try expect(@fabs(@as(f64, -2.5)) == 2.5); | 540 | try expect(@abs(@as(f64, -2.5)) == 2.5); |
| 541 | try expect(@fabs(@as(f64, 2.5)) == 2.5); | 541 | try expect(@abs(@as(f64, 2.5)) == 2.5); |
| 542 | | 542 | |
| 543 | // TODO test f128, and c_longdouble | 543 | // TODO test f128, and c_longdouble |
| 544 | // https://github.com/ziglang/zig/issues/4026 | 544 | // https://github.com/ziglang/zig/issues/4026 |
| 545 | // { | 545 | // { |
| 546 | // var a: f80 = -2.5; | 546 | // var a: f80 = -2.5; |
| 547 | // var b: f80 = 2.5; | 547 | // var b: f80 = 2.5; |
| 548 | // try expect(@fabs(a) == 2.5); | 548 | // try expect(@abs(a) == 2.5); |
| 549 | // try expect(@fabs(b) == 2.5); | 549 | // try expect(@abs(b) == 2.5); |
| 550 | // } | 550 | // } |
| 551 | } | 551 | } |
| 552 | | 552 | |
| 553 | test "@fabs with vectors" { | 553 | test "@abs with vectors" { |
| 554 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 554 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 555 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 555 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 556 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 556 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| ... | @@ -562,14 +562,15 @@ test "@fabs with vectors" { | ... | @@ -562,14 +562,15 @@ test "@fabs with vectors" { |
| 562 | | 562 | |
| 563 | fn testFabsWithVectors() !void { | 563 | fn testFabsWithVectors() !void { |
| 564 | var v: @Vector(4, f32) = [_]f32{ 1.1, -2.2, 0.3, -0.4 }; | 564 | var v: @Vector(4, f32) = [_]f32{ 1.1, -2.2, 0.3, -0.4 }; |
| 565 | var result = @fabs(v); | 565 | var result = @abs(v); |
| 566 | try expect(math.approxEqAbs(f32, @fabs(@as(f32, 1.1)), result[0], epsilon)); | 566 | try expect(math.approxEqAbs(f32, @abs(@as(f32, 1.1)), result[0], epsilon)); |
| 567 | try expect(math.approxEqAbs(f32, @fabs(@as(f32, -2.2)), result[1], epsilon)); | 567 | try expect(math.approxEqAbs(f32, @abs(@as(f32, -2.2)), result[1], epsilon)); |
| 568 | try expect(math.approxEqAbs(f32, @fabs(@as(f32, 0.3)), result[2], epsilon)); | 568 | try expect(math.approxEqAbs(f32, @abs(@as(f32, 0.3)), result[2], epsilon)); |
| 569 | try expect(math.approxEqAbs(f32, @fabs(@as(f32, -0.4)), result[3], epsilon)); | 569 | try expect(math.approxEqAbs(f32, @abs(@as(f32, -0.4)), result[3], epsilon)); |
| 570 | } | 570 | } |
| 571 | | 571 | |
| 572 | test "another, possibly redundant, @fabs test" { | 572 | test "another, possibly redundant, @abs test" { |
| | 573 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 573 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 574 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 574 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 575 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 575 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 576 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| ... | @@ -587,11 +588,12 @@ test "another, possibly redundant, @fabs test" { | ... | @@ -587,11 +588,12 @@ test "another, possibly redundant, @fabs test" { |
| 587 | | 588 | |
| 588 | const x = 14.0; | 589 | const x = 14.0; |
| 589 | const y = -x; | 590 | const y = -x; |
| 590 | const z = @fabs(y); | 591 | const z = @abs(y); |
| 591 | try comptime std.testing.expectEqual(x, z); | 592 | try comptime std.testing.expectEqual(x, z); |
| 592 | } | 593 | } |
| 593 | | 594 | |
| 594 | test "@fabs f80" { | 595 | test "@abs f80" { |
| | 596 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 595 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 597 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 596 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 598 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 597 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 599 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| ... | @@ -604,11 +606,12 @@ test "@fabs f80" { | ... | @@ -604,11 +606,12 @@ test "@fabs f80" { |
| 604 | | 606 | |
| 605 | fn testFabsLegacy(comptime T: type, x: T) !void { | 607 | fn testFabsLegacy(comptime T: type, x: T) !void { |
| 606 | const y = -x; | 608 | const y = -x; |
| 607 | const z = @fabs(y); | 609 | const z = @abs(y); |
| 608 | try expect(x == z); | 610 | try expect(x == z); |
| 609 | } | 611 | } |
| 610 | | 612 | |
| 611 | test "a third @fabs test, surely there should not be three fabs tests" { | 613 | test "a third @abs test, surely there should not be three fabs tests" { |
| | 614 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 612 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 615 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 613 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 616 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 614 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | 617 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| ... | @@ -617,23 +620,23 @@ test "a third @fabs test, surely there should not be three fabs tests" { | ... | @@ -617,23 +620,23 @@ test "a third @fabs test, surely there should not be three fabs tests" { |
| 617 | | 620 | |
| 618 | inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| { | 621 | inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| { |
| 619 | // normals | 622 | // normals |
| 620 | try expect(@fabs(@as(T, 1.0)) == 1.0); | 623 | try expect(@abs(@as(T, 1.0)) == 1.0); |
| 621 | try expect(@fabs(@as(T, -1.0)) == 1.0); | 624 | try expect(@abs(@as(T, -1.0)) == 1.0); |
| 622 | try expect(@fabs(math.floatMin(T)) == math.floatMin(T)); | 625 | try expect(@abs(math.floatMin(T)) == math.floatMin(T)); |
| 623 | try expect(@fabs(-math.floatMin(T)) == math.floatMin(T)); | 626 | try expect(@abs(-math.floatMin(T)) == math.floatMin(T)); |
| 624 | try expect(@fabs(math.floatMax(T)) == math.floatMax(T)); | 627 | try expect(@abs(math.floatMax(T)) == math.floatMax(T)); |
| 625 | try expect(@fabs(-math.floatMax(T)) == math.floatMax(T)); | 628 | try expect(@abs(-math.floatMax(T)) == math.floatMax(T)); |
| 626 | | 629 | |
| 627 | // subnormals | 630 | // subnormals |
| 628 | try expect(@fabs(@as(T, 0.0)) == 0.0); | 631 | try expect(@abs(@as(T, 0.0)) == 0.0); |
| 629 | try expect(@fabs(@as(T, -0.0)) == 0.0); | 632 | try expect(@abs(@as(T, -0.0)) == 0.0); |
| 630 | try expect(@fabs(math.floatTrueMin(T)) == math.floatTrueMin(T)); | 633 | try expect(@abs(math.floatTrueMin(T)) == math.floatTrueMin(T)); |
| 631 | try expect(@fabs(-math.floatTrueMin(T)) == math.floatTrueMin(T)); | 634 | try expect(@abs(-math.floatTrueMin(T)) == math.floatTrueMin(T)); |
| 632 | | 635 | |
| 633 | // non-finite numbers | 636 | // non-finite numbers |
| 634 | try expect(math.isPositiveInf(@fabs(math.inf(T)))); | 637 | try expect(math.isPositiveInf(@abs(math.inf(T)))); |
| 635 | try expect(math.isPositiveInf(@fabs(-math.inf(T)))); | 638 | try expect(math.isPositiveInf(@abs(-math.inf(T)))); |
| 636 | try expect(math.isNan(@fabs(math.nan(T)))); | 639 | try expect(math.isNan(@abs(math.nan(T)))); |
| 637 | } | 640 | } |
| 638 | } | 641 | } |
| 639 | | 642 | |