| ... | @@ -672,6 +672,102 @@ test "big.int subWrap single-multi, signed, limb aligned" { | ... | @@ -672,6 +672,102 @@ test "big.int subWrap single-multi, signed, limb aligned" { |
| 672 | try testing.expect((try a.to(SignedDoubleLimb)) == maxInt(SignedDoubleLimb)); | 672 | try testing.expect((try a.to(SignedDoubleLimb)) == maxInt(SignedDoubleLimb)); |
| 673 | } | 673 | } |
| 674 | | 674 | |
| | 675 | test "big.int addSat single-single, unsigned" { |
| | 676 | var a = try Managed.initSet(testing.allocator, maxInt(u17) - 5); |
| | 677 | defer a.deinit(); |
| | 678 | |
| | 679 | var b = try Managed.initSet(testing.allocator, 10); |
| | 680 | defer b.deinit(); |
| | 681 | |
| | 682 | try a.addSat(a.toConst(), b.toConst(), .unsigned, 17); |
| | 683 | |
| | 684 | try testing.expect((try a.to(u17)) == maxInt(u17)); |
| | 685 | } |
| | 686 | |
| | 687 | test "big.int subSat single-single, unsigned" { |
| | 688 | var a = try Managed.initSet(testing.allocator, 123); |
| | 689 | defer a.deinit(); |
| | 690 | |
| | 691 | var b = try Managed.initSet(testing.allocator, 4000); |
| | 692 | defer b.deinit(); |
| | 693 | |
| | 694 | try a.subSat(a.toConst(), b.toConst(), .unsigned, 17); |
| | 695 | |
| | 696 | try testing.expect((try a.to(u17)) == 0); |
| | 697 | } |
| | 698 | |
| | 699 | test "big.int addSat multi-multi, unsigned, limb aligned" { |
| | 700 | var a = try Managed.initSet(testing.allocator, maxInt(DoubleLimb)); |
| | 701 | defer a.deinit(); |
| | 702 | |
| | 703 | var b = try Managed.initSet(testing.allocator, maxInt(DoubleLimb)); |
| | 704 | defer b.deinit(); |
| | 705 | |
| | 706 | try a.addSat(a.toConst(), b.toConst(), .unsigned, @bitSizeOf(DoubleLimb)); |
| | 707 | |
| | 708 | try testing.expect((try a.to(DoubleLimb)) == maxInt(DoubleLimb)); |
| | 709 | } |
| | 710 | |
| | 711 | test "big.int subSat single-multi, unsigned, limb aligned" { |
| | 712 | var a = try Managed.initSet(testing.allocator, 10); |
| | 713 | defer a.deinit(); |
| | 714 | |
| | 715 | var b = try Managed.initSet(testing.allocator, maxInt(DoubleLimb) + 100); |
| | 716 | defer b.deinit(); |
| | 717 | |
| | 718 | try a.subSat(a.toConst(), b.toConst(), .unsigned, @bitSizeOf(DoubleLimb)); |
| | 719 | |
| | 720 | try testing.expect((try a.to(DoubleLimb)) == 0); |
| | 721 | } |
| | 722 | |
| | 723 | test "big.int addSat single-single, signed" { |
| | 724 | var a = try Managed.initSet(testing.allocator, maxInt(i14)); |
| | 725 | defer a.deinit(); |
| | 726 | |
| | 727 | var b = try Managed.initSet(testing.allocator, 1); |
| | 728 | defer b.deinit(); |
| | 729 | |
| | 730 | try a.addSat(a.toConst(), b.toConst(), .signed, @bitSizeOf(i14)); |
| | 731 | |
| | 732 | try testing.expect((try a.to(i14)) == maxInt(i14)); |
| | 733 | } |
| | 734 | |
| | 735 | test "big.int subSat single-single, signed" { |
| | 736 | var a = try Managed.initSet(testing.allocator, minInt(i21)); |
| | 737 | defer a.deinit(); |
| | 738 | |
| | 739 | var b = try Managed.initSet(testing.allocator, 1); |
| | 740 | defer b.deinit(); |
| | 741 | |
| | 742 | try a.subSat(a.toConst(), b.toConst(), .signed, @bitSizeOf(i21)); |
| | 743 | |
| | 744 | try testing.expect((try a.to(i21)) == minInt(i21)); |
| | 745 | } |
| | 746 | |
| | 747 | test "big.int addSat multi-multi, signed, limb aligned" { |
| | 748 | var a = try Managed.initSet(testing.allocator, maxInt(SignedDoubleLimb)); |
| | 749 | defer a.deinit(); |
| | 750 | |
| | 751 | var b = try Managed.initSet(testing.allocator, maxInt(SignedDoubleLimb)); |
| | 752 | defer b.deinit(); |
| | 753 | |
| | 754 | try a.addSat(a.toConst(), b.toConst(), .signed, @bitSizeOf(SignedDoubleLimb)); |
| | 755 | |
| | 756 | try testing.expect((try a.to(SignedDoubleLimb)) == maxInt(SignedDoubleLimb)); |
| | 757 | } |
| | 758 | |
| | 759 | test "big.int subSat single-multi, signed, limb aligned" { |
| | 760 | var a = try Managed.initSet(testing.allocator, minInt(SignedDoubleLimb)); |
| | 761 | defer a.deinit(); |
| | 762 | |
| | 763 | var b = try Managed.initSet(testing.allocator, 1); |
| | 764 | defer b.deinit(); |
| | 765 | |
| | 766 | try a.subSat(a.toConst(), b.toConst(), .signed, @bitSizeOf(SignedDoubleLimb)); |
| | 767 | |
| | 768 | try testing.expect((try a.to(SignedDoubleLimb)) == minInt(SignedDoubleLimb)); |
| | 769 | } |
| | 770 | |
| 675 | test "big.int sub single-single" { | 771 | test "big.int sub single-single" { |
| 676 | var a = try Managed.initSet(testing.allocator, 50); | 772 | var a = try Managed.initSet(testing.allocator, 50); |
| 677 | defer a.deinit(); | 773 | defer a.deinit(); |