コード例 #1
0
def test_bigint():
    AreEqual(BigInteger.Add(1,99999999999999999999999999999999999999999999999999999999999) ,BigInteger.Subtract(100000000000000000000000000000000000000000000000000000000001,1))
    AreEqual(BigInteger.Multiply(400,500) , BigInteger.Divide(1000000,5))
    AreEqual(BigInteger.Multiply(400,8) , BigInteger.LeftShift(400,3))
    AreEqual(BigInteger.Divide(400,8) , BigInteger.RightShift(400,3))
    AreEqual(BigInteger.RightShift(BigInteger.LeftShift(400,100),100) , 400)
    AreEqual(BigInteger.RightShift(BigInteger.LeftShift(-12345678987654321,100),100) , -12345678987654321)
    if is_net40:
        AssertError(ValueError, BigInteger.RightShift, 400, -100)
        AssertError(ValueError, BigInteger.LeftShift, 400, -100)
        AssertError(ValueError, BigInteger.RightShift, -12345678987654321, -100)
        AssertError(ValueError, BigInteger.LeftShift, -12345678987654321, -100)
    else:
        AreEqual(BigInteger.LeftShift(BigInteger.RightShift(400,-100),-100) , 400)
        AreEqual(BigInteger.LeftShift(BigInteger.RightShift(-12345678987654321,-100),-100) , -12345678987654321)
    AreEqual(BigInteger(-123456781234567812345678123456781234567812345678123456781234567812345678).OnesComplement().OnesComplement() , -123456781234567812345678123456781234567812345678123456781234567812345678)
    AreEqual(BigInteger(-1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678).OnesComplement() , -(-1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678 + 1 ))
    Assert(BigInteger.Xor(-1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678,BigInteger(-1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678).OnesComplement()) , -1)
    AreEqual(BigInteger.BitwiseAnd(0xff00ff00,BigInteger.BitwiseOr(0x00ff00ff,0xaabbaabb)) , BigInteger(0xaa00aa00))
    AreEqual(BigInteger.Mod(BigInteger(-9999999999999999999999999999999999999999),1000000000000000000) , -BigInteger.Mod(9999999999999999999999999999999999999999,BigInteger(-1000000000000000000)))
    
    AreEqual(BigInteger.ToInt64(0x7fffffffffffffff) , 9223372036854775807)
    AssertError(OverflowError, BigInteger.ToInt64, 0x8000000000000000)
    
    AreEqual(BigInteger(-0).ToBoolean(p) , False )
    AreEqual(BigInteger(-1212321.3213).ToBoolean(p) , True )
    AreEqual(BigInteger(1212321384892342394723947).ToBoolean(p) , True )
    
    AreEqual(BigInteger(0).ToChar(p) , Char.MinValue)
    AreEqual(BigInteger(65).ToChar(p) , IConvertible.ToChar('A', p))
    AreEqual(BigInteger(0xffff).ToChar(p) , Char.MaxValue)
    AssertError(OverflowError, BigInteger(-1).ToChar, p)
    
    AreEqual(BigInteger(100).ToDouble(p) , 100.0)
    AreEqual(BigInteger(BigInteger(100).ToDouble(p)).ToSingle(p) , BigInteger(100.1213123).ToFloat())
    
    Assert(BigInteger(100) != 100.32)
    AreEqual(BigInteger(100) , 100.0)
    
    Assert( 100.32 != BigInteger(100))
    AreEqual(100.0 , BigInteger(100) )
コード例 #2
0
ファイル: test_ironmath.py プロジェクト: skywalle/ironpython3
    def test_bigint(self):
        from System import Char, IConvertible
        from System.Numerics import BigInteger, Complex
        self.assertEqual(
            BigInteger.Add(
                1,
                99999999999999999999999999999999999999999999999999999999999),
            BigInteger.Subtract(
                100000000000000000000000000000000000000000000000000000000001,
                1))
        self.assertEqual(BigInteger.Multiply(400, 500),
                         BigInteger.Divide(1000000, 5))
        self.assertEqual(BigInteger.Multiply(400, 8),
                         BigInteger.LeftShift(400, 3))
        self.assertEqual(BigInteger.Divide(400, 8),
                         BigInteger.RightShift(400, 3))
        self.assertEqual(
            BigInteger.RightShift(BigInteger.LeftShift(400, 100), 100), 400)
        self.assertEqual(
            BigInteger.RightShift(
                BigInteger.LeftShift(-12345678987654321, 100), 100),
            -12345678987654321)
        self.assertRaises(ValueError, BigInteger.RightShift, 400, -100)
        self.assertRaises(ValueError, BigInteger.LeftShift, 400, -100)
        self.assertRaises(ValueError, BigInteger.RightShift,
                          -12345678987654321, -100)
        self.assertRaises(ValueError, BigInteger.LeftShift, -12345678987654321,
                          -100)
        self.assertEqual(
            BigInteger(
                -123456781234567812345678123456781234567812345678123456781234567812345678
            ).OnesComplement().OnesComplement(),
            -123456781234567812345678123456781234567812345678123456781234567812345678
        )
        self.assertEqual(
            BigInteger(
                -1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678
            ).OnesComplement(),
            -(-1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678
              + 1))
        self.assertTrue(
            BigInteger.Xor(
                -1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678,
                BigInteger(
                    -1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678
                ).OnesComplement()), -1)
        self.assertEqual(
            BigInteger.BitwiseAnd(0xff00ff00,
                                  BigInteger.BitwiseOr(0x00ff00ff,
                                                       0xaabbaabb)),
            BigInteger(0xaa00aa00))
        self.assertEqual(
            BigInteger.Mod(
                BigInteger(-9999999999999999999999999999999999999999),
                1000000000000000000),
            -BigInteger.Mod(9999999999999999999999999999999999999999,
                            BigInteger(-1000000000000000000)))

        self.assertEqual(BigInteger.ToInt64(0x7fffffffffffffff),
                         9223372036854775807)
        self.assertRaises(OverflowError, BigInteger.ToInt64,
                          0x8000000000000000)

        self.assertEqual(BigInteger(-0).ToBoolean(self.p), False)
        self.assertEqual(BigInteger(-1212321.3213).ToBoolean(self.p), True)
        self.assertEqual(
            BigInteger(1212321384892342394723947).ToBoolean(self.p), True)

        self.assertEqual(BigInteger(0).ToChar(self.p), Char.MinValue)
        self.assertEqual(
            BigInteger(65).ToChar(self.p), IConvertible.ToChar('A', self.p))
        self.assertEqual(BigInteger(0xffff).ToChar(self.p), Char.MaxValue)
        self.assertRaises(OverflowError, BigInteger(-1).ToChar, self.p)

        self.assertEqual(BigInteger(100).ToDouble(self.p), 100.0)
        self.assertEqual(
            BigInteger(BigInteger(100).ToDouble(self.p)).ToSingle(self.p),
            BigInteger(100.1213123).ToFloat())

        self.assertTrue(BigInteger(100) != 100.32)
        self.assertEqual(BigInteger(100), 100.0)

        self.assertTrue(100.32 != BigInteger(100))
        self.assertEqual(100.0, BigInteger(100))
コード例 #3
0
ファイル: test_ironmath.py プロジェクト: slozier/ironpython3
    def test_bigint(self):
        from System import Int64, Boolean, Char, Double, Single, IConvertible
        from System.Numerics import BigInteger
        self.assertEqual(
            BigInteger.Add(
                big(1),
                99999999999999999999999999999999999999999999999999999999999),
            BigInteger.Subtract(
                100000000000000000000000000000000000000000000000000000000001,
                big(1)))
        self.assertEqual(BigInteger.Multiply(big(400), big(500)),
                         BigInteger.Divide(big(1000000), big(5)))
        self.assertEqual(BigInteger.Multiply(big(400), big(8)),
                         big(400) << big(3))
        self.assertEqual(BigInteger.Divide(big(400), big(8)),
                         big(400) >> big(3))
        self.assertEqual((big(400) << big(100)) >> big(100), big(400))
        self.assertEqual((-12345678987654321 << big(100)) >> big(100),
                         -12345678987654321)
        self.assertRaises(ValueError, lambda x, y: x >> y, big(400), -big(100))
        self.assertRaises(ValueError, lambda x, y: x << y, big(400), -big(100))
        self.assertRaises(ValueError, lambda x, y: x >> y, -12345678987654321,
                          -big(100))
        self.assertRaises(ValueError, lambda x, y: x << y, -12345678987654321,
                          -big(100))
        self.assertEqual(
            ~(~big(
                -123456781234567812345678123456781234567812345678123456781234567812345678
            )),
            -123456781234567812345678123456781234567812345678123456781234567812345678
        )
        self.assertEqual(
            ~big(
                -1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678
            ),
            -(-1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678
              + big(1)))
        self.assertTrue(
            big(-1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678
                ) ^
            (~big(
                -1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678
            )), -big(1))
        self.assertEqual(
            big(0xff00ff00) & (big(0x00ff00ff) | big(0xaabbaabb)),
            big(0xaa00aa00))
        self.assertEqual(
            big(-9999999999999999999999999999999999999999) %
            1000000000000000000, -(9999999999999999999999999999999999999999 %
                                   big(-1000000000000000000)))

        self.assertEqual(Int64(big(0x7fffffffffffffff)), 9223372036854775807)
        self.assertRaises(OverflowError, Int64, big(0x8000000000000000))

        self.assertEqual(Boolean(big(-0)), False)
        self.assertEqual(Boolean(big(int(-1212321.3213))), True)
        self.assertEqual(Boolean(big(1212321384892342394723947)), True)

        self.assertEqual(Char(big(0)), Char.MinValue)
        self.assertEqual(Char(big(65)), IConvertible.ToChar('A', self.p))
        self.assertEqual(Char(big(0xffff)), Char.MaxValue)
        self.assertRaises(OverflowError, Char, big(-1))

        self.assertEqual(Double(big(100)), 100.0)
        self.assertEqual(Single(big(100)), 100.0)
        self.assertEqual(Single(big(100)),
                         IConvertible.ToSingle(int(100.1213123), self.p))

        self.assertTrue(big(100) != 100.32)
        self.assertEqual(big(100), 100.0)

        self.assertTrue(100.32 != big(100))
        self.assertEqual(100.0, big(100))