コード例 #1
0
        public void Bc_Complement()
        {
            var n = new BigConstant(PrimitiveType.Word128, 0x3FF);
            var c = n.Complement();

            Assert.AreEqual("0x0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00<128>", c.ToString());
        }
コード例 #2
0
        public void Bc_BigSlice()
        {
            var n     = new BigInteger(-1) & ~0xFF; // mask out low byte
            var c     = BigConstant.CreateUnsigned(PrimitiveType.Word256, n);
            var slice = c.Slice(PrimitiveType.Word128, 32);

            Assert.AreSame(PrimitiveType.Word128, slice.DataType);
            Assert.AreEqual("0x0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF<128>", slice.ToString());
        }
コード例 #3
0
        public void UDiv_BigInteger_SmallResult()
        {
            var big         = new BigInteger(Enumerable.Range(0, 16).Select(_ => (byte)0xFF).ToArray());
            var numerator   = new BigConstant(PrimitiveType.Int128, big);
            var denominator = Constant.UInt64(3);
            var result      = Operator.UDiv.ApplyConstants(numerator, denominator);

            Assert.AreEqual("0x5555555555555555<u64>", result.ToString());
            Assert.IsInstanceOf <Constant>(result);
        }
コード例 #4
0
        public void IMod_BigInteger()
        {
            var big = new BigInteger(0x7FFF_FFFF_FFFF_FFFF);

            big = big * big;
            var numerator   = new BigConstant(PrimitiveType.Int128, big);
            var denominator = Constant.Int64(10);
            var result      = Operator.IMod.ApplyConstants(numerator, denominator);

            Assert.AreEqual("9<i64>", result.ToString());
            Assert.IsInstanceOf <Constant>(result);
        }
コード例 #5
0
        public void Bc_Slice()
        {
            var n = new BigInteger(-1) & ~0xFF; // mask out low byte

            Console.WriteLine(n);
            var c = BigConstant.CreateUnsigned(PrimitiveType.Word256, n);

            Console.WriteLine(c);
            var slice = c.Slice(PrimitiveType.Int32, 32);

            Assert.AreEqual(-1, slice.GetValue());
        }
コード例 #6
0
        public void UDiv_BigInteger()
        {
            var big = new BigInteger(0xFFFF_FFFF_FFFF_FFFF);

            big = big * 1000;
            var numerator   = new BigConstant(PrimitiveType.Int128, big);
            var denominator = Constant.UInt64(1000);
            var result      = Operator.UDiv.ApplyConstants(numerator, denominator);

            Assert.AreEqual("0xFFFFFFFFFFFFFFFF<u64>", result.ToString());
            Assert.IsInstanceOf <Constant>(result);
        }
コード例 #7
0
        public void Bc_Unsigned()
        {
            var c = BigConstant.CreateUnsigned(PrimitiveType.UInt16, -1);

            Assert.AreEqual(new BigInteger(0xFFFF), c.Value);
        }