コード例 #1
0
ファイル: UInt128Test.cs プロジェクト: zyzhu/metanumerics
 public void UInt128Comparison()
 {
     UInt128[] orderedValues = new UInt128[] { UInt128.Zero, UInt128.One, Int64.MaxValue /* why without cast */, UInt64.MaxValue, /*Int128.MaxValue, */ UInt128.MaxValue };
     for (int i = 0; i < orderedValues.Length; i++)
     {
         for (int j = 0; j < orderedValues.Length; j++)
         {
             if (i < j)
             {
                 Assert.IsTrue(UInt128.Compare(orderedValues[i], orderedValues[j]) == -1);
                 Assert.IsTrue(orderedValues[i].CompareTo(orderedValues[j]) == -1);
                 Assert.IsTrue(orderedValues[i] < orderedValues[j]);
                 Assert.IsFalse(orderedValues[i] >= orderedValues[j]);
             }
             else if (i == j)
             {
                 Assert.IsTrue(UInt128.Compare(orderedValues[i], orderedValues[j]) == 0);
                 Assert.IsTrue(orderedValues[i].CompareTo(orderedValues[j]) == 0);
                 Assert.IsFalse(orderedValues[i] < orderedValues[j]);
                 Assert.IsFalse(orderedValues[i] > orderedValues[j]);
                 Assert.IsTrue(orderedValues[i] <= orderedValues[j]);
             }
             else
             {
                 Assert.IsTrue(UInt128.Compare(orderedValues[i], orderedValues[j]) == +1);
                 Assert.IsTrue(orderedValues[i].CompareTo(orderedValues[j]) == +1);
                 Assert.IsTrue(orderedValues[i] > orderedValues[j]);
                 Assert.IsFalse(orderedValues[i] <= orderedValues[j]);
             }
         }
     }
 }
コード例 #2
0
ファイル: UInt128Test.cs プロジェクト: zyzhu/metanumerics
        public void UInt128BigIntegerAgreement()
        {
            BigInteger b = BigInteger.Parse(UInt128.MaxValue.ToString()) + 1;

            foreach (UInt128 u in GetRandomUInt128(new Random(2), 16))
            {
                BigInteger u1 = (BigInteger)u;
                foreach (UInt128 v in GetRandomUInt128(new Random(3), 16))
                {
                    BigInteger v1 = (BigInteger)v;

                    // Comparison
                    Assert.IsTrue(UInt128.Compare(u, v) == BigInteger.Compare(u1, v1));
                    Assert.IsTrue((u < v) == (u1 < v1));
                    Assert.IsTrue((u > v) == (u1 > v1));

                    // Sum
                    UInt128    s  = u + v;
                    BigInteger s1 = (u1 + v1) % b;
                    Assert.IsTrue((BigInteger)s == s1);

                    // Difference
                    if (u >= v)
                    {
                        UInt128    d  = u - v;
                        BigInteger d1 = u1 - v1;
                        Assert.IsTrue((BigInteger)d == d1);
                    }

                    // Product
                    UInt128    p  = u * v;
                    BigInteger p1 = (u1 * v1) % b;
                    Assert.IsTrue((BigInteger)p == p1);

                    // Quotient
                    UInt128    q  = u / v;
                    BigInteger q1 = u1 / v1;
                    Assert.IsTrue((BigInteger)q == q1);
                }
            }
        }