private static void LargeValueLogTests(int startShift, int bigShiftLoopLimit, int smallShift = 0, int smallShiftLoopLimit = 1)
{
BigInteger init = BigInteger.One << startShift;
double logbase = 2D;
for (int i = 0; i < smallShiftLoopLimit; i++)
{
BigInteger temp = init << ((i + 1) * smallShift);
for (int j = 0; j<bigShiftLoopLimit; j++)
{
temp = temp << (int.MaxValue / 2);
double expected =
(double)startShift +
smallShift * (double)(i + 1) +
(int.MaxValue / 2) * (double)(j + 1);
Assert.True(ApproxEqual(BigInteger.Log(temp, logbase), expected));
}
}
}