Пример #1
0
 def test_neg(self):
     vi = VInteger(325)
     assert (-vi).get_digits() == [-3, -2, -5]
     vi = VInteger(0)
     assert (-vi).get_digits() == [0]
     vi = VInteger(-325)
     assert (-vi).get_digits() == [3, 2, 5]
Пример #2
0
 def test_from_vinculum(self):
     for _ in range(100):
         a = random.randint(-1000000000, 1000000000)
         ads = VInteger(a).get_digits()
         vads = VProp.to_vinculum(VInteger(a))
         vads = VProp.from_vinculum(vads).get_digits()
         assert ads == vads
Пример #3
0
 def test_sub(self):
     for _ in range(100):
         i1 = random.randint(-1000000000, 1000000000)
         i2 = random.randint(-1000000000, 1000000000)
         v1 = VInteger(i1)
         v2 = VInteger(i2)
         assert (v1 - v2).get_digits() == VInteger(i1 - i2).get_digits()
Пример #4
0
 def test_vert_cross(self):
     for _ in range (100):
         i1 = random.randint(-999999999, 999999999)
         i2 = random.randint(-999999999, 999999999)
         v1 = VInteger(i1)
         v2 = VInteger(i2)
         mv1v2 = VMul.vert_cross(v1, v2)
         assert mv1v2.get_digits() == VInteger(i1 * i2).get_digits()
Пример #5
0
 def test_vert_cross_product(self):
     for _ in range(100):
         i1 = random.randint(-999999999, 999999999)
         i2 = random.randint(-999999999, 999999999)
         v1 = VInteger(i1)
         v2 = VInteger(i2)
         mv1v2 = v1.vert_cross_product(v2)
         assert mv1v2 == VInteger(i1 * i2)
Пример #6
0
    def test_near_base(self):
        for _ in range (10):
            i1 = random.randint(81, 120)
            i2 = random.randint(81, 120)
            v1 = VInteger(i1)
            v2 = VInteger(i2)
            mv1v2 = VMul.near_base(v1, v2, base=VInteger(100))
            assert mv1v2.get_digits() == VInteger(i1 * i2).get_digits()

        for _ in range (10):
            i1 = random.randint(801, 1200)
            i2 = random.randint(801, 1200)
            v1 = VInteger(i1)
            v2 = VInteger(i2)
            mv1v2 = VMul.near_base(v1, v2, base=VInteger(1000))
            assert mv1v2.get_digits() == VInteger(i1 * i2).get_digits()
Пример #7
0
    def test_under_base(self):
        for _ in range (5):
            i1 = random.randint(87, 99)
            i2 = random.randint(87, 99)
            v1 = VInteger(i1)
            v2 = VInteger(i2)
            mv1v2 = VMul.under_base(v1, v2)
            assert mv1v2.get_digits() == VInteger(i1 * i2).get_digits()

        for _ in range (5):
            i1 = random.randint(870, 999)
            i2 = random.randint(870, 999)
            v1 = VInteger(i1)
            v2 = VInteger(i2)
            mv1v2 = VMul.under_base(v1, v2)
            assert mv1v2.get_digits() == VInteger(i1 * i2).get_digits()
Пример #8
0
    def test_over_base(self):
        for _ in range (5):
            i1 = random.randint(101, 120)
            i2 = random.randint(101, 120)
            v1 = VInteger(i1)
            v2 = VInteger(i2)
            mv1v2 = VMul.over_base(v1, v2)
            assert mv1v2.get_digits() == VInteger(i1 * i2).get_digits()

        for _ in range (5):
            i1 = random.randint(1001, 1200)
            i2 = random.randint(1001, 1200)
            v1 = VInteger(i1)
            v2 = VInteger(i2)
            mv1v2 = VMul.over_base(v1, v2)
            assert mv1v2.get_digits() == VInteger(i1 * i2).get_digits()
Пример #9
0
    def test_comparisons(self):
        c = (VInteger(123) == VInteger(123))
        assert c == True
        c = (VInteger(123) == VInteger(124))
        assert c == False
        c = (VInteger(123) != VInteger(124))
        assert c == True

        c = (VInteger(123) < VInteger(124))
        assert c == True
        c = (VInteger(123) <= VInteger(124))
        assert c == True
        c = (VInteger(123) > VInteger(124))
        assert c == False
        c = (VInteger(123) >= VInteger(124))
        assert c == False
Пример #10
0
 def test_int(self):
     assert int(VInteger(665)) == 665
     assert int(VInteger(-665)) == -665
     assert int(VInteger.fromints([-6, 4, -5])) == -565
Пример #11
0
 def test_deficit(self):
     assert VProp.deficit(VInteger(825)).get_digits() == [-1, -7, -5]
     assert VProp.deficit(VInteger(-825)).get_digits() == [1, 7, 5]
     assert VProp.deficit(VInteger.fromints([3, 4, 5])).get_digits() == [-6, -5, -5]
     assert VProp.deficit(VInteger.fromints([3, -4, 5])).get_digits() == [-7, -3, -5]
     assert VProp.deficit(VInteger(100)).get_digits() == [0]
Пример #12
0
 def test_surplus(self):
     assert VProp.surplus(VInteger(113)).get_digits() == [1, 3]
     assert VProp.surplus(VInteger(-113)).get_digits() == [-1, -3]
     assert VProp.surplus(VInteger.fromints([1, 2, 3, 7])).get_digits() == [2, 3, 7]
     assert VProp.surplus(VInteger.fromints([1, 2, -3, -7])).get_digits() == [1, 6, 3]
     assert VProp.surplus(VInteger(100)).get_digits() == [0]
Пример #13
0
    def test_padlr_zero(self):
        vi = VInteger(325)
        assert vi.padl_zero(3).get_digits() == [0, 0, 0, 3, 2, 5]

        vi = VInteger(325)
        assert vi.padr_zero(3).get_digits() == [3, 2, 5, 0, 0, 0]

        vi = VInteger(325)
        assert vi.padl_zero(3).unpadl_zero().get_digits() == [3, 2, 5]

        vi = VInteger(0)
        assert vi.padl_zero(3).unpadl_zero().get_digits() == [0]
    def test_duplex_square(self):
        m = VMonomial([VInteger(3)])
        assert m.duplex() == VInteger(9)
        m = VMonomial([VInteger(4), VInteger(3)])
        assert m.duplex() == VInteger(24)
        m = VMonomial([VInteger(5), VInteger(2), VInteger(3)])
        assert m.duplex() == VInteger(34)

        m = VMonomial([VInteger(3)])
        assert m.square() == VMonomial([VInteger(9)])
        m = VMonomial([VInteger(4), VInteger(3)])
        assert m.square() == VMonomial(
            [VInteger(16), VInteger(24),
             VInteger(9)])
        m = VMonomial([VInteger(5), VInteger(2), VInteger(3)])
        assert m.square() == VMonomial([
            VInteger(25),
            VInteger(20),
            VInteger(34),
            VInteger(12),
            VInteger(9)
        ])
Пример #15
0
 def test_as_vinteger(self):
     assert VDigit(3).as_vinteger().get_digits() == VInteger(3).get_digits()
     assert VDigit(-3).as_vinteger().get_digits() == VInteger(
         -3).get_digits()
Пример #16
0
    def test_duplex_square(self):
        assert VInteger(3).duplex() == VInteger(9)
        assert VInteger(43).duplex() == VInteger(24)
        assert VInteger(523).duplex() == VInteger(34)

        assert VInteger(3).square() == VInteger(9)
        assert VInteger(43).square() == VInteger(1849)
        assert VInteger(523).square() == VInteger(273529)
Пример #17
0
 def test_nikhilam_by_9_two_digit(self):
     ans = VDiv.nikhilam_by_9_two_digit(VInteger(12))
     assert ans == {'quotient': VInteger(1), 'remainder': VInteger(3)}
     ans = VDiv.nikhilam_by_9_two_digit(VInteger(62))
     assert ans == {'quotient': VInteger(6), 'remainder': VInteger(8)}
     ans = VDiv.nikhilam_by_9_two_digit(VInteger(65))
     assert ans == {'quotient': VInteger(7), 'remainder': VInteger(2)}
     ans = VDiv.nikhilam_by_9_two_digit(VInteger(72))
     assert ans == {'quotient': VInteger(8), 'remainder': VInteger(0)}
Пример #18
0
    def test_nikhilam_by_9_three_digit(self):
        ans = VDiv.nikhilam_by_9_three_digit(VInteger(103))
        assert ans == {'quotient': VInteger(11), 'remainder': VInteger(4)}
        ans = VDiv.nikhilam_by_9_three_digit(VInteger(211))
        assert ans == {'quotient': VInteger(23), 'remainder': VInteger(4)}
        ans = VDiv.nikhilam_by_9_three_digit(VInteger(871))
        assert ans == {'quotient': VInteger(96), 'remainder': VInteger(7)}
        ans = VDiv.nikhilam_by_9_three_digit(VInteger(877))
        assert ans == {'quotient': VInteger(97), 'remainder': VInteger(4)}

        for _ in range(20):
            i = VInteger(random.randint(101, 999))
            ans = VDiv.nikhilam_by_9_three_digit(i)
            assert ans['quotient']*VInteger(9) + ans['remainder'] == i
Пример #19
0
 def test_nikhilam_by_9_many_digit(self):
     for _ in range(20):
         i = VInteger(random.randint(101, 9999999))
         ans = VDiv.nikhilam_by_9_many_digit(i)
         assert ans['quotient']*VInteger(9) + ans['remainder'] == i
Пример #20
0
 def test_to_vinculum(self):
     assert VInteger(4).to_vinculum().get_digits() == [4]
     assert VInteger(8).to_vinculum().get_digits() == [1, -2]
     assert VInteger(35).to_vinculum().get_digits() == [3, 5]
     assert VInteger(38).to_vinculum().get_digits() == [4, -2]
     assert VInteger(62).to_vinculum().get_digits() == [1, -4, 2]
     assert VInteger(67).to_vinculum().get_digits() == [1, -3, -3]
     assert VInteger(243).to_vinculum().get_digits() == [2, 4, 3]
     assert VInteger(207).to_vinculum().get_digits() == [2, 1, -3]
     assert VInteger(267).to_vinculum().get_digits() == [3, -3, -3]
     assert VInteger(627).to_vinculum().get_digits() == [1, -4, 3, -3]
     assert VInteger(672).to_vinculum().get_digits() == [1, -3, -3, 2]
     assert VInteger(19802476).to_vinculum().get_digits() == [
         2, 0, -2, 0, 2, 5, -2, -4
     ]
     assert VInteger(91287625).to_vinculum().get_digits() == [
         1, -1, 1, 3, -1, -2, -4, 2, 5
     ]
Пример #21
0
 def test_to_vinculum(self):
     assert VProp.to_vinculum(VInteger(19802476)).get_digits() == [2, 0, -2, 0, 2, 5, -2, -4]
     assert VProp.to_vinculum(VInteger(91287625)).get_digits() == [1, -1, 1, 3, -1, -2, -4, 2, 5]