public static void Main()
{
Random rnd = new Random();
// BinToBcd および BcdToBin のチェック
#if CHECK_BCD
for(int i=1; i<100; ++i)
{
TestBcd(unchecked((ulong)rnd.Next(99999999)));
TestBcd(unchecked((ulong)rnd.Next() + 99999999UL));
}
TestBcd(99999999UL);
TestBcd(100000000UL);
#endif
// MulDiv のチェック
#if CHECK_MUL_DIV
for(int i=1; i<100; ++i)
{
TestMulDiv(unchecked((ulong)rnd.Next()), unchecked((ulong)rnd.Next()));
TestMulDiv(unchecked((ulong)rnd.Next()), unchecked((ulong)(rnd.Next(0x10000) - 0x8000)));
TestMulDiv(unchecked((ulong)(rnd.Next(0x10000) - 0x8000)), unchecked((ulong)rnd.Next()));
TestMulDiv(unchecked((ulong)(rnd.Next(0x10000) - 0x8000)), unchecked((ulong)(rnd.Next(0x10000) - 0x8000)));
}
#endif
// Mul のチェック
#if CHECK_MUL
for(int i=1; i<100; ++i)
{
TestMul(unchecked((ulong)rnd.Next()), unchecked((ulong)rnd.Next()));
TestMul(unchecked((ulong)rnd.Next()), unchecked((ulong)(rnd.Next(0x10000) - 0x8000)));
TestMul(unchecked((ulong)(rnd.Next(0x10000) - 0x8000)), unchecked((ulong)rnd.Next()));
TestMul(unchecked((ulong)(rnd.Next(0x10000) - 0x8000)), unchecked((ulong)(rnd.Next(0x10000) - 0x8000)));
}
#endif
// Div のチェック
#if CHECK_DIV
for(int i=1; i<100; ++i)
{
TestDiv(unchecked((ulong)rnd.Next()), unchecked((ulong)rnd.Next()));
TestDiv(unchecked((ulong)rnd.Next()), unchecked((ulong)(rnd.Next(0x10000) - 0x8000)));
TestDiv(unchecked((ulong)(rnd.Next(0x10000) - 0x8000)), unchecked((ulong)rnd.Next()));
TestDiv(unchecked((ulong)(rnd.Next(0x10000) - 0x8000)), unchecked((ulong)(rnd.Next(0x10000) - 0x8000)));
}
#endif
}