public void Bc_Complement() { var n = new BigConstant(PrimitiveType.Word128, 0x3FF); var c = n.Complement(); Assert.AreEqual("0x0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00<128>", c.ToString()); }
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()); }
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); }
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); }
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()); }
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); }
public void Bc_Unsigned() { var c = BigConstant.CreateUnsigned(PrimitiveType.UInt16, -1); Assert.AreEqual(new BigInteger(0xFFFF), c.Value); }