Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ operator*()

static BigInteger System.Numerics.BigInteger.operator* ( BigInteger left,
BigInteger right )
inlinestatic

Definition at line 1868 of file BigInteger.cs.

1869 {
1870 bool flag = left._bits == null;
1871 bool flag2 = right._bits == null;
1872 if (flag && flag2)
1873 {
1874 return (long)left._sign * (long)right._sign;
1875 }
1876 if (flag)
1877 {
1878 uint[] array = BigIntegerCalculator.Multiply(right._bits, NumericsHelpers.Abs(left._sign));
1879 return new BigInteger(array, array, (left._sign < 0) ^ (right._sign < 0));
1880 }
1881 if (flag2)
1882 {
1883 uint[] array2 = BigIntegerCalculator.Multiply(left._bits, NumericsHelpers.Abs(right._sign));
1884 return new BigInteger(array2, array2, (left._sign < 0) ^ (right._sign < 0));
1885 }
1886 if (left._bits == right._bits)
1887 {
1888 uint[] array3 = BigIntegerCalculator.Square(left._bits);
1889 return new BigInteger(array3, array3, (left._sign < 0) ^ (right._sign < 0));
1890 }
1891 if (left._bits.Length < right._bits.Length)
1892 {
1893 uint[] array4 = BigIntegerCalculator.Multiply(right._bits, left._bits);
1894 return new BigInteger(array4, array4, (left._sign < 0) ^ (right._sign < 0));
1895 }
1896 uint[] array5 = BigIntegerCalculator.Multiply(left._bits, right._bits);
1897 return new BigInteger(array5, array5, (left._sign < 0) ^ (right._sign < 0));
1898 }

References System.Numerics.BigInteger.BigInteger(), System.Numerics.BigInteger._bits, System.Numerics.BigInteger._sign, System.Numerics.NumericsHelpers.Abs(), System.array, System.Numerics.BigIntegerCalculator.Multiply(), and System.Numerics.BigIntegerCalculator.Square().