Example #1
0
        public void BigIntegerTest()
        {
            var bigInteger       = stackalloc uint[100];
            var bigIntegerLength = 0;

            fixed(char *chars = &__("1218121812181218121812181218121812181218", out var length))
            {
                bigIntegerLength = NumberHelper.Decimal.ParseBigInteger(chars, length, bigInteger).written;
            }

            NumberHelper.Mult(bigInteger, bigIntegerLength, uint.MaxValue, out var carry);

            if (carry != 0)
            {
                bigInteger[bigIntegerLength] = carry;

                ++bigIntegerLength;
            }

            AreEqual(carry, 3U);

            NumberHelper.Add(bigInteger, bigIntegerLength, 123, out carry);

            if (carry != 0)
            {
                bigInteger[bigIntegerLength] = carry;

                ++bigIntegerLength;
            }

            bigIntegerLength = NumberHelper.Sub(bigInteger, bigIntegerLength, 456, out var remainder);

            AreEqual(remainder, 0U);

            bigIntegerLength = NumberHelper.Div(bigInteger, bigIntegerLength, 753, out remainder);

            AreEqual(remainder, 210U);

            var str = stackalloc char[100];

            var strLength = NumberHelper.Decimal.ToString(bigInteger, bigIntegerLength, str);

            AreEqual(StringHelper.ToString(str, strLength), "6947932728611506568983591586250258491983961839");

            strLength = NumberHelper.Hex.ToString(bigInteger, bigIntegerLength, str);

            AreEqual(StringHelper.ToString(str, strLength), "1378e5b2e5219f9f248d9e89890dcc85a029eef");
        }