csharp/EPAM.Deltix.DFP.Benchmark/BidDecimalData.cs (862 lines of code) (raw):
using BID_UINT64 = System.UInt64;
using BID_SINT64 = System.Int64;
using BID_UINT32 = System.UInt32;
using BID_UINT8 = System.Byte;
using BID_SINT8 = System.SByte;
using _IDEC_flags = System.UInt32;
namespace EPAM.Deltix.DFP
{
public struct BID_UINT128
{
public BID_UINT64 w0, w1;
public BID_UINT128(BID_UINT64 w0, BID_UINT64 w1)
{
this.w0 = w0;
this.w1 = w1;
}
}
public struct BID_UINT192
{
public BID_UINT64 w0, w1, w2;
public BID_UINT192(BID_UINT64 w0, BID_UINT64 w1, BID_UINT64 w2)
{
this.w0 = w0;
this.w1 = w1;
this.w2 = w2;
}
}
public struct BID_UINT256
{
public BID_UINT64 w0, w1, w2, w3;
public BID_UINT256(BID_UINT64 w0, BID_UINT64 w1, BID_UINT64 w2, BID_UINT64 w3)
{
this.w0 = w0;
this.w1 = w1;
this.w2 = w2;
this.w3 = w3;
}
}
internal static class BidDecimalData
{
public static readonly BID_UINT64[,] bid_round_const_table =
{
{
// RN
0UL, // 0 extra digits
5UL, // 1 extra digits
50UL, // 2 extra digits
500UL, // 3 extra digits
5000UL, // 4 extra digits
50000UL, // 5 extra digits
500000UL, // 6 extra digits
5000000UL, // 7 extra digits
50000000UL, // 8 extra digits
500000000UL, // 9 extra digits
5000000000UL, // 10 extra digits
50000000000UL, // 11 extra digits
500000000000UL, // 12 extra digits
5000000000000UL, // 13 extra digits
50000000000000UL, // 14 extra digits
500000000000000UL, // 15 extra digits
5000000000000000UL, // 16 extra digits
50000000000000000UL, // 17 extra digits
500000000000000000UL // 18 extra digits
},
{
// RD
0UL, // 0 extra digits
0UL, // 1 extra digits
0UL, // 2 extra digits
00UL, // 3 extra digits
000UL, // 4 extra digits
0000UL, // 5 extra digits
00000UL, // 6 extra digits
000000UL, // 7 extra digits
0000000UL, // 8 extra digits
00000000UL, // 9 extra digits
000000000UL, // 10 extra digits
0000000000UL, // 11 extra digits
00000000000UL, // 12 extra digits
000000000000UL, // 13 extra digits
0000000000000UL, // 14 extra digits
00000000000000UL, // 15 extra digits
000000000000000UL, // 16 extra digits
0000000000000000UL, // 17 extra digits
00000000000000000UL // 18 extra digits
},
{
// round to Inf
0UL, // 0 extra digits
9UL, // 1 extra digits
99UL, // 2 extra digits
999UL, // 3 extra digits
9999UL, // 4 extra digits
99999UL, // 5 extra digits
999999UL, // 6 extra digits
9999999UL, // 7 extra digits
99999999UL, // 8 extra digits
999999999UL, // 9 extra digits
9999999999UL, // 10 extra digits
99999999999UL, // 11 extra digits
999999999999UL, // 12 extra digits
9999999999999UL, // 13 extra digits
99999999999999UL, // 14 extra digits
999999999999999UL, // 15 extra digits
9999999999999999UL, // 16 extra digits
99999999999999999UL, // 17 extra digits
999999999999999999UL // 18 extra digits
},
{
// RZ
0UL, // 0 extra digits
0UL, // 1 extra digits
0UL, // 2 extra digits
00UL, // 3 extra digits
000UL, // 4 extra digits
0000UL, // 5 extra digits
00000UL, // 6 extra digits
000000UL, // 7 extra digits
0000000UL, // 8 extra digits
00000000UL, // 9 extra digits
000000000UL, // 10 extra digits
0000000000UL, // 11 extra digits
00000000000UL, // 12 extra digits
000000000000UL, // 13 extra digits
0000000000000UL, // 14 extra digits
00000000000000UL, // 15 extra digits
000000000000000UL, // 16 extra digits
0000000000000000UL, // 17 extra digits
00000000000000000UL // 18 extra digits
},
{
// round ties away from 0
0UL, // 0 extra digits
5UL, // 1 extra digits
50UL, // 2 extra digits
500UL, // 3 extra digits
5000UL, // 4 extra digits
50000UL, // 5 extra digits
500000UL, // 6 extra digits
5000000UL, // 7 extra digits
50000000UL, // 8 extra digits
500000000UL, // 9 extra digits
5000000000UL, // 10 extra digits
50000000000UL, // 11 extra digits
500000000000UL, // 12 extra digits
5000000000000UL, // 13 extra digits
50000000000000UL, // 14 extra digits
500000000000000UL, // 15 extra digits
5000000000000000UL, // 16 extra digits
50000000000000000UL, // 17 extra digits
500000000000000000UL // 18 extra digits
},
};
//BID_UINT128 bid_round_const_table_128[][36] = {
// { //RN
// {{0UL, 0UL}}, // 0 extra digits
// {{5UL, 0UL}}, // 1 extra digits
// {{50UL, 0UL}}, // 2 extra digits
// {{500UL, 0UL}}, // 3 extra digits
// {{5000UL, 0UL}}, // 4 extra digits
// {{50000UL, 0UL}}, // 5 extra digits
// {{500000UL, 0UL}}, // 6 extra digits
// {{5000000UL, 0UL}}, // 7 extra digits
// {{50000000UL, 0UL}}, // 8 extra digits
// {{500000000UL, 0UL}}, // 9 extra digits
// {{5000000000UL, 0UL}}, // 10 extra digits
// {{50000000000UL, 0UL}}, // 11 extra digits
// {{500000000000UL, 0UL}}, // 12 extra digits
// {{5000000000000UL, 0UL}}, // 13 extra digits
// {{50000000000000UL, 0UL}}, // 14 extra digits
// {{500000000000000UL, 0UL}}, // 15 extra digits
// {{5000000000000000UL, 0UL}}, // 16 extra digits
// {{50000000000000000UL, 0UL}}, // 17 extra digits
// {{500000000000000000UL, 0UL}}, // 18 extra digits
// {{5000000000000000000UL, 0UL}}, // 19 extra digits
// {{0xb5e3af16b1880000UL, 2UL}}, //20
// {{0x1ae4d6e2ef500000UL, 27UL}}, //21
// {{0xcf064dd59200000UL, 271UL}}, //22
// {{0x8163f0a57b400000UL, 2710UL}}, //23
// {{0xde76676d0800000UL, 27105UL}}, //24
// {{0x8b0a00a425000000UL, 0x422caUL}}, //25
// {{0x6e64066972000000UL, 0x295be9UL}}, //26
// {{0x4fe8401e74000000UL, 0x19d971eUL}}, //27
// {{0x1f12813088000000UL, 0x1027e72fUL}}, //28
// {{0x36b90be550000000UL, 0xa18f07d7UL}}, //29
// {{0x233a76f520000000UL, 0x64f964e68UL}}, //30
// {{0x6048a59340000000UL, 0x3f1bdf1011UL}}, //31
// {{0xc2d677c080000000UL, 0x27716b6a0adUL}}, //32
// {{0x9c60ad8500000000UL, 0x18a6e32246c9UL}}, //33
// {{0x1bc6c73200000000UL, 0xf684df56c3e0UL}}, //34
// {{0x15c3c7f400000000UL, 0x9a130b963a6c1UL}}, //35
// }
// ,
// { //RD
// {{0UL, 0UL}}, // 0 extra digits
// {{0UL, 0UL}}, // 1 extra digits
// {{0UL, 0UL}}, // 2 extra digits
// {{00UL, 0UL}}, // 3 extra digits
// {{000UL, 0UL}}, // 4 extra digits
// {{0000UL, 0UL}}, // 5 extra digits
// {{00000UL, 0UL}}, // 6 extra digits
// {{000000UL, 0UL}}, // 7 extra digits
// {{0000000UL, 0UL}}, // 8 extra digits
// {{00000000UL, 0UL}}, // 9 extra digits
// {{000000000UL, 0UL}}, // 10 extra digits
// {{0000000000UL, 0UL}}, // 11 extra digits
// {{00000000000UL, 0UL}}, // 12 extra digits
// {{000000000000UL, 0UL}}, // 13 extra digits
// {{0000000000000UL, 0UL}}, // 14 extra digits
// {{00000000000000UL, 0UL}}, // 15 extra digits
// {{000000000000000UL, 0UL}}, // 16 extra digits
// {{0000000000000000UL, 0UL}}, // 17 extra digits
// {{00000000000000000UL, 0UL}}, // 18 extra digits
// {{000000000000000000UL, 0UL}}, // 19 extra digits
// {{0UL, 0UL}}, //20
// {{0UL, 0UL}}, //21
// {{0UL, 0UL}}, //22
// {{0UL, 0UL}}, //23
// {{0UL, 0UL}}, //24
// {{0UL, 0UL}}, //25
// {{0UL, 0UL}}, //26
// {{0UL, 0UL}}, //27
// {{0UL, 0UL}}, //28
// {{0UL, 0UL}}, //29
// {{0UL, 0UL}}, //30
// {{0UL, 0UL}}, //31
// {{0UL, 0UL}}, //32
// {{0UL, 0UL}}, //33
// {{0UL, 0UL}}, //34
// {{0UL, 0UL}}, //35
// }
// ,
// { //RU
// {{0UL, 0UL}}, // 0 extra digits
// {{9UL, 0UL}}, // 1 extra digits
// {{99UL, 0UL}}, // 2 extra digits
// {{999UL, 0UL}}, // 3 extra digits
// {{9999UL, 0UL}}, // 4 extra digits
// {{99999UL, 0UL}}, // 5 extra digits
// {{999999UL, 0UL}}, // 6 extra digits
// {{9999999UL, 0UL}}, // 7 extra digits
// {{99999999UL, 0UL}}, // 8 extra digits
// {{999999999UL, 0UL}}, // 9 extra digits
// {{9999999999UL, 0UL}}, // 10 extra digits
// {{99999999999UL, 0UL}}, // 11 extra digits
// {{999999999999UL, 0UL}}, // 12 extra digits
// {{9999999999999UL, 0UL}}, // 13 extra digits
// {{99999999999999UL, 0UL}}, // 14 extra digits
// {{999999999999999UL, 0UL}}, // 15 extra digits
// {{9999999999999999UL, 0UL}}, // 16 extra digits
// {{99999999999999999UL, 0UL}}, // 17 extra digits
// {{999999999999999999UL, 0UL}}, // 18 extra digits
// {{9999999999999999999UL, 0UL}}, // 19 extra digits
// {{0x6BC75E2D630FFFFFull, 0x5UL}}, //20
// {{0x35C9ADC5DE9FFFFFull, 0x36UL}}, //21
// {{0x19E0C9BAB23FFFFFull, 0x21eUL}}, //22
// {{0x2C7E14AF67FFFFFull, 0x152dUL}}, //23
// {{0x1BCECCEDA0FFFFFFull, 0xd3c2UL}}, //24
// {{0x1614014849FFFFFFull, 0x84595UL}}, //25
// {{0xDCC80CD2E3FFFFFFull, 0x52b7d2UL}}, //26
// {{0x9FD0803CE7FFFFFFull, 0x33B2E3Cull}}, //27
// {{0x3E2502610FFFFFFFull, 0x204FCE5Eull}}, //28
// {{0x6D7217CA9FFFFFFFull, 0x1431E0FAEull}}, //29
// {{0x4674EDEA3FFFFFFFull, 0xC9F2C9CD0UL}}, //30
// {{0xC0914B267FFFFFFFull, 0x7E37BE2022UL}}, //31
// {{0x85ACEF80FFFFFFFFull, 0x4EE2D6D415Bull}}, //32
// {{0x38c15b09ffffffffUL, 0x314dc6448d93UL}}, //33
// {{0x378d8e63ffffffffUL, 0x1ed09bead87c0UL}}, //34
// {{0x2b878fe7ffffffffUL, 0x13426172c74d82UL}}, //35
// }
// ,
// { //RZ
// {{0UL, 0UL}}, // 0 extra digits
// {{0UL, 0UL}}, // 1 extra digits
// {{0UL, 0UL}}, // 2 extra digits
// {{00UL, 0UL}}, // 3 extra digits
// {{000UL, 0UL}}, // 4 extra digits
// {{0000UL, 0UL}}, // 5 extra digits
// {{00000UL, 0UL}}, // 6 extra digits
// {{000000UL, 0UL}}, // 7 extra digits
// {{0000000UL, 0UL}}, // 8 extra digits
// {{00000000UL, 0UL}}, // 9 extra digits
// {{000000000UL, 0UL}}, // 10 extra digits
// {{0000000000UL, 0UL}}, // 11 extra digits
// {{00000000000UL, 0UL}}, // 12 extra digits
// {{000000000000UL, 0UL}}, // 13 extra digits
// {{0000000000000UL, 0UL}}, // 14 extra digits
// {{00000000000000UL, 0UL}}, // 15 extra digits
// {{000000000000000UL, 0UL}}, // 16 extra digits
// {{0000000000000000UL, 0UL}}, // 17 extra digits
// {{00000000000000000UL, 0UL}}, // 18 extra digits
// {{000000000000000000UL, 0UL}}, // 19 extra digits
// {{0UL, 0UL}}, //20
// {{0UL, 0UL}}, //21
// {{0UL, 0UL}}, //22
// {{0UL, 0UL}}, //23
// {{0UL, 0UL}}, //24
// {{0UL, 0UL}}, //25
// {{0UL, 0UL}}, //26
// {{0UL, 0UL}}, //27
// {{0UL, 0UL}}, //28
// {{0UL, 0UL}}, //29
// {{0UL, 0UL}}, //30
// {{0UL, 0UL}}, //31
// {{0UL, 0UL}}, //32
// {{0UL, 0UL}}, //33
// {{0UL, 0UL}}, //34
// {{0UL, 0UL}}, //35
// }
// ,
// { //RN, ties away
// {{0UL, 0UL}}, // 0 extra digits
// {{5UL, 0UL}}, // 1 extra digits
// {{50UL, 0UL}}, // 2 extra digits
// {{500UL, 0UL}}, // 3 extra digits
// {{5000UL, 0UL}}, // 4 extra digits
// {{50000UL, 0UL}}, // 5 extra digits
// {{500000UL, 0UL}}, // 6 extra digits
// {{5000000UL, 0UL}}, // 7 extra digits
// {{50000000UL, 0UL}}, // 8 extra digits
// {{500000000UL, 0UL}}, // 9 extra digits
// {{5000000000UL, 0UL}}, // 10 extra digits
// {{50000000000UL, 0UL}}, // 11 extra digits
// {{500000000000UL, 0UL}}, // 12 extra digits
// {{5000000000000UL, 0UL}}, // 13 extra digits
// {{50000000000000UL, 0UL}}, // 14 extra digits
// {{500000000000000UL, 0UL}}, // 15 extra digits
// {{5000000000000000UL, 0UL}}, // 16 extra digits
// {{50000000000000000UL, 0UL}}, // 17 extra digits
// {{500000000000000000UL, 0UL}}, // 18 extra digits
// {{5000000000000000000UL, 0UL}}, // 19 extra digits
// {{0xb5e3af16b1880000UL, 2UL}}, //20
// {{0x1ae4d6e2ef500000UL, 27UL}}, //21
// {{0xcf064dd59200000UL, 271UL}}, //22
// {{0x8163f0a57b400000UL, 2710UL}}, //23
// {{0xde76676d0800000UL, 27105UL}}, //24
// {{0x8b0a00a425000000UL, 0x422caUL}}, //25
// {{0x6e64066972000000UL, 0x295be9UL}}, //26
// {{0x4fe8401e74000000UL, 0x19d971eUL}}, //27
// {{0x1f12813088000000UL, 0x1027e72fUL}}, //28
// {{0x36b90be550000000UL, 0xa18f07d7UL}}, //29
// {{0x233a76f520000000UL, 0x64f964e68UL}}, //30
// {{0x6048a59340000000UL, 0x3f1bdf1011UL}}, //31
// {{0xc2d677c080000000UL, 0x27716b6a0adUL}}, //32
// {{0x9c60ad8500000000UL, 0x18a6e32246c9UL}}, //33
// {{0x1bc6c73200000000UL, 0xf684df56c3e0UL}}, //34
// {{0x15c3c7f400000000UL, 0x9a130b963a6c1UL}}, //35
// }
//};
public static readonly BID_UINT128[] bid_reciprocals10_128 =
{
new BID_UINT128(0UL, 0UL), // 0 extra digits
new BID_UINT128(0x3333333333333334UL, 0x3333333333333333UL), // 1 extra digit
new BID_UINT128(0x51eb851eb851eb86UL, 0x051eb851eb851eb8UL), // 2 extra digits
new BID_UINT128(0x3b645a1cac083127UL, 0x0083126e978d4fdfUL), // 3 extra digits
new BID_UINT128(0x4af4f0d844d013aaUL, 0x00346dc5d6388659UL), // 10^(-4) * 2^131
new BID_UINT128(0x08c3f3e0370cdc88UL, 0x0029f16b11c6d1e1UL), // 10^(-5) * 2^134
new BID_UINT128(0x6d698fe69270b06dUL, 0x00218def416bdb1aUL), // 10^(-6) * 2^137
new BID_UINT128(0xaf0f4ca41d811a47UL, 0x0035afe535795e90UL), // 10^(-7) * 2^141
new BID_UINT128(0xbf3f70834acdaea0UL, 0x002af31dc4611873UL), // 10^(-8) * 2^144
new BID_UINT128(0x65cc5a02a23e254dUL, 0x00225c17d04dad29UL), // 10^(-9) * 2^147
new BID_UINT128(0x6fad5cd10396a214UL, 0x0036f9bfb3af7b75UL), // 10^(-10) * 2^151
new BID_UINT128(0xbfbde3da69454e76UL, 0x002bfaffc2f2c92aUL), // 10^(-11) * 2^154
new BID_UINT128(0x32fe4fe1edd10b92UL, 0x00232f33025bd422UL), // 10^(-12) * 2^157
new BID_UINT128(0x84ca19697c81ac1cUL, 0x00384b84d092ed03UL), // 10^(-13) * 2^161
new BID_UINT128(0x03d4e1213067bce4UL, 0x002d09370d425736UL), // 10^(-14) * 2^164
new BID_UINT128(0x3643e74dc052fd83UL, 0x0024075f3dceac2bUL), // 10^(-15) * 2^167
new BID_UINT128(0x56d30baf9a1e626bUL, 0x0039a5652fb11378UL), // 10^(-16) * 2^171
new BID_UINT128(0x12426fbfae7eb522UL, 0x002e1dea8c8da92dUL), // 10^(-17) * 2^174
new BID_UINT128(0x41cebfcc8b9890e8UL, 0x0024e4bba3a48757UL), // 10^(-18) * 2^177
new BID_UINT128(0x694acc7a78f41b0dUL, 0x003b07929f6da558UL), // 10^(-19) * 2^181
new BID_UINT128(0xbaa23d2ec729af3eUL, 0x002f394219248446UL), // 10^(-20) * 2^184
new BID_UINT128(0xfbb4fdbf05baf298UL, 0x0025c768141d369eUL), // 10^(-21) * 2^187
new BID_UINT128(0x2c54c931a2c4b759UL, 0x003c7240202ebdcbUL), // 10^(-22) * 2^191
new BID_UINT128(0x89dd6dc14f03c5e1UL, 0x00305b66802564a2UL), // 10^(-23) * 2^194
new BID_UINT128(0xd4b1249aa59c9e4eUL, 0x0026af8533511d4eUL), // 10^(-24) * 2^197
new BID_UINT128(0x544ea0f76f60fd49UL, 0x003de5a1ebb4fbb1UL), // 10^(-25) * 2^201
new BID_UINT128(0x76a54d92bf80caa1UL, 0x00318481895d9627UL), // 10^(-26) * 2^204
new BID_UINT128(0x921dd7a89933d54eUL, 0x00279d346de4781fUL), // 10^(-27) * 2^207
new BID_UINT128(0x8362f2a75b862215UL, 0x003f61ed7ca0c032UL), // 10^(-28) * 2^211
new BID_UINT128(0xcf825bb91604e811UL, 0x0032b4bdfd4d668eUL), // 10^(-29) * 2^214
new BID_UINT128(0x0c684960de6a5341UL, 0x00289097fdd7853fUL), // 10^(-30) * 2^217
new BID_UINT128(0x3d203ab3e521dc34UL, 0x002073accb12d0ffUL), // 10^(-31) * 2^220
new BID_UINT128(0x2e99f7863b696053UL, 0x0033ec47ab514e65UL), // 10^(-32) * 2^224
new BID_UINT128(0x587b2c6b62bab376UL, 0x002989d2ef743eb7UL), // 10^(-33) * 2^227
new BID_UINT128(0xad2f56bc4efbc2c5UL, 0x00213b0f25f69892UL), // 10^(-34) * 2^230
new BID_UINT128(0x0f2abc9d8c9689d1UL, 0x01a95a5b7f87a0efUL), // 35 extra digits
};
public static readonly int[] bid_recip_scale =
{
129 - 128, // 1
129 - 128, // 1/10
129 - 128, // 1/10^2
129 - 128, // 1/10^3
3, // 131 - 128
6, // 134 - 128
9, // 137 - 128
13, // 141 - 128
16, // 144 - 128
19, // 147 - 128
23, // 151 - 128
26, // 154 - 128
29, // 157 - 128
33, // 161 - 128
36, // 164 - 128
39, // 167 - 128
43, // 171 - 128
46, // 174 - 128
49, // 177 - 128
53, // 181 - 128
56, // 184 - 128
59, // 187 - 128
63, // 191 - 128
66, // 194 - 128
69, // 197 - 128
73, // 201 - 128
76, // 204 - 128
79, // 207 - 128
83, // 211 - 128
86, // 214 - 128
89, // 217 - 128
92, // 220 - 128
96, // 224 - 128
99, // 227 - 128
102, // 230 - 128
109, // 237 - 128, 1/10^35
};
/// <summary>
/// tables used in computation
/// </summary>
public static readonly int[] bid_estimate_decimal_digits =
{
1, //2^0 =1 < 10^0
1, //2^1 =2 < 10^1
1, //2^2 =4 < 10^1
1, //2^3 =8 < 10^1
2, //2^4 =16 < 10^2
2, //2^5 =32 < 10^2
2, //2^6 =64 < 10^2
3, //2^7 =128 < 10^3
3, //2^8 =256 < 10^3
3, //2^9 =512 < 10^3
4, //2^10=1024 < 10^4
4, //2^11=2048 < 10^4
4, //2^12=4096 < 10^4
4, //2^13=8192 < 10^4
5, //2^14=16384 < 10^5
5, //2^15=32768 < 10^5
5, //2^16=65536 < 10^5
6, //2^17=131072 < 10^6
6, //2^18=262144 < 10^6
6, //2^19=524288 < 10^6
7, //2^20=1048576 < 10^7
7, //2^21=2097152 < 10^7
7, //2^22=4194304 < 10^7
7, //2^23=8388608 < 10^7
8, //2^24=16777216 < 10^8
8, //2^25=33554432 < 10^8
8, //2^26=67108864 < 10^8
9, //2^27=134217728 < 10^9
9, //2^28=268435456 < 10^9
9, //2^29=536870912 < 10^9
10, //2^30=1073741824< 10^10
10, //2^31=2147483648< 10^10
10, //2^32=4294967296 < 10^10
10, //2^33=8589934592 < 10^10
11, //2^34=17179869184 < 10^11
11, //2^35=34359738368 < 10^11
11, //2^36=68719476736 < 10^11
12, //2^37=137438953472 < 10^12
12, //2^38=274877906944 < 10^12
12, //2^39=549755813888 < 10^12
13, //2^40=1099511627776 < 10^13
13, //2^41=2199023255552 < 10^13
13, //2^42=4398046511104 < 10^13
13, //2^43=8796093022208 < 10^13
14, //2^44=17592186044416 < 10^14
14, //2^45=35184372088832 < 10^14
14, //2^46=70368744177664 < 10^14
15, //2^47=140737488355328< 10^15
15, //2^48=281474976710656 < 10^15
15, //2^49=562949953421312 < 10^15
16, //2^50=1125899906842624 < 10^16
16, //2^51=2251799813685248 < 10^16
16, //2^52=4503599627370496 < 10^16
16, //2^53=9007199254740992 < 10^16
17, //2^54=18014398509481984 < 10^17
17, //2^55=36028797018963968 < 10^17
17, //2^56=72057594037927936 < 10^17
18, //2^57=144115188075855872 < 10^18
18, //2^58=288230376151711744 < 10^18
18, //2^59=576460752303423488 < 10^18
19, //2^60=1152921504606846976< 10^19
19, //2^61=2305843009213693952< 10^19
19, //2^62=4611686018427387904< 10^19
19, //2^63=9223372036854775808< 10^19
20, //2^64=18446744073709551616
20, //2^65=36893488147419103232
20, //2^66=73786976294838206464
21, //2^67=147573952589676412928
21, //2^68=295147905179352825856
21, //2^69=590295810358705651712
22, //2^70=1180591620717411303424
22, //2^71=2361183241434822606848
22, //2^72=4722366482869645213696
22, //2^73=9444732965739290427392
23, //2^74=18889465931478580854784
23, //2^75=37778931862957161709568
23, //2^76=75557863725914323419136
24, //2^77=151115727451828646838272
24, //2^78=302231454903657293676544
24, //2^79=604462909807314587353088
25, //2^80=1208925819614629174706176
25, //2^81=2417851639229258349412352
25, //2^82=4835703278458516698824704
25, //2^83=9671406556917033397649408
26, //2^84=19342813113834066795298816
26, //2^85=38685626227668133590597632
26, //2^86=77371252455336267181195264
27, //2^87=154742504910672534362390528
27, //2^88=309485009821345068724781056
27, //2^89=618970019642690137449562112
28, //2^90=1237940039285380274899124224
28, //2^91=2475880078570760549798248448
28, //2^92=4951760157141521099596496896
28, //2^93=9903520314283042199192993792
29, //2^94=19807040628566084398385987584
29, //2^95=39614081257132168796771975168
29, //2^96=79228162514264337593543950336
30, //2^97=158456325028528675187087900672
30, //2^98=316912650057057350374175801344
30, //2^99=633825300114114700748351602688
31, //2^100=1267650600228229401496703205376
31, //2^101=2535301200456458802993406410752
31, //2^102=5070602400912917605986812821504
32, //2^103=10141204801825835211973625643008
32, //2^104=20282409603651670423947251286016
32, //2^105=40564819207303340847894502572032
32, //2^106=81129638414606681695789005144064
33, //2^107=162259276829213363391578010288128
33, // 2^108
33, // 2^109
34, // 2^110
34, // 2^111
34, // 2^112
35, // 2^113
35, // 2^114
35, // 2^115
35, // 2^116
36, // 2^117
36, // 2^118
36, // 2^119
37, // 2^120
37, // 2^121
37, // 2^122
38, // 2^123
38, // 2^124
38, // 2^125
38, // 2^126
39, // 2^127
39 // 2^128
};
public static readonly BID_UINT128[] bid_power10_table_128 =
{
new BID_UINT128(0x0000000000000001UL, 0x0000000000000000UL), // 10^0
new BID_UINT128(0x000000000000000aUL, 0x0000000000000000UL), // 10^1
new BID_UINT128(0x0000000000000064UL, 0x0000000000000000UL), // 10^2
new BID_UINT128(0x00000000000003e8UL, 0x0000000000000000UL), // 10^3
new BID_UINT128(0x0000000000002710UL, 0x0000000000000000UL), // 10^4
new BID_UINT128(0x00000000000186a0UL, 0x0000000000000000UL), // 10^5
new BID_UINT128(0x00000000000f4240UL, 0x0000000000000000UL), // 10^6
new BID_UINT128(0x0000000000989680UL, 0x0000000000000000UL), // 10^7
new BID_UINT128(0x0000000005f5e100UL, 0x0000000000000000UL), // 10^8
new BID_UINT128(0x000000003b9aca00UL, 0x0000000000000000UL), // 10^9
new BID_UINT128(0x00000002540be400UL, 0x0000000000000000UL), // 10^10
new BID_UINT128(0x000000174876e800UL, 0x0000000000000000UL), // 10^11
new BID_UINT128(0x000000e8d4a51000UL, 0x0000000000000000UL), // 10^12
new BID_UINT128(0x000009184e72a000UL, 0x0000000000000000UL), // 10^13
new BID_UINT128(0x00005af3107a4000UL, 0x0000000000000000UL), // 10^14
new BID_UINT128(0x00038d7ea4c68000UL, 0x0000000000000000UL), // 10^15
new BID_UINT128(0x002386f26fc10000UL, 0x0000000000000000UL), // 10^16
new BID_UINT128(0x016345785d8a0000UL, 0x0000000000000000UL), // 10^17
new BID_UINT128(0x0de0b6b3a7640000UL, 0x0000000000000000UL), // 10^18
new BID_UINT128(0x8ac7230489e80000UL, 0x0000000000000000UL), // 10^19
new BID_UINT128(0x6bc75e2d63100000UL, 0x0000000000000005UL), // 10^20
new BID_UINT128(0x35c9adc5dea00000UL, 0x0000000000000036UL), // 10^21
new BID_UINT128(0x19e0c9bab2400000UL, 0x000000000000021eUL), // 10^22
new BID_UINT128(0x02c7e14af6800000UL, 0x000000000000152dUL), // 10^23
new BID_UINT128(0x1bcecceda1000000UL, 0x000000000000d3c2UL), // 10^24
new BID_UINT128(0x161401484a000000UL, 0x0000000000084595UL), // 10^25
new BID_UINT128(0xdcc80cd2e4000000UL, 0x000000000052b7d2UL), // 10^26
new BID_UINT128(0x9fd0803ce8000000UL, 0x00000000033b2e3cUL), // 10^27
new BID_UINT128(0x3e25026110000000UL, 0x00000000204fce5eUL), // 10^28
new BID_UINT128(0x6d7217caa0000000UL, 0x00000001431e0faeUL), // 10^29
new BID_UINT128(0x4674edea40000000UL, 0x0000000c9f2c9cd0UL), // 10^30
new BID_UINT128(0xc0914b2680000000UL, 0x0000007e37be2022UL), // 10^31
new BID_UINT128(0x85acef8100000000UL, 0x000004ee2d6d415bUL), // 10^32
new BID_UINT128(0x38c15b0a00000000UL, 0x0000314dc6448d93UL), // 10^33
new BID_UINT128(0x378d8e6400000000UL, 0x0001ed09bead87c0UL), // 10^34
new BID_UINT128(0x2b878fe800000000UL, 0x0013426172c74d82UL), // 10^35
new BID_UINT128(0xb34b9f1000000000UL, 0x00c097ce7bc90715UL), // 10^36
new BID_UINT128(0x00f436a000000000UL, 0x0785ee10d5da46d9UL), // 10^37
new BID_UINT128(0x098a224000000000UL, 0x4b3b4ca85a86c47aUL), // 10^38
};
public static readonly int[] bid_estimate_bin_expon =
{
0, // 10^0
3, // 10^1
6, // 10^2
9, // 10^3
13, // 10^4
16, // 10^5
19, // 10^6
23, // 10^7
26, // 10^8
29, // 10^9
33, // 10^10
36, // 10^11
39, // 10^12
43, // 10^13
46, // 10^14
49, // 10^15
53 // 10^16
};
public static readonly BID_UINT64[] bid_power10_index_binexp =
{
0x000000000000000aUL,
0x000000000000000aUL,
0x000000000000000aUL,
0x000000000000000aUL,
0x0000000000000064UL,
0x0000000000000064UL,
0x0000000000000064UL,
0x00000000000003e8UL,
0x00000000000003e8UL,
0x00000000000003e8UL,
0x0000000000002710UL,
0x0000000000002710UL,
0x0000000000002710UL,
0x0000000000002710UL,
0x00000000000186a0UL,
0x00000000000186a0UL,
0x00000000000186a0UL,
0x00000000000f4240UL,
0x00000000000f4240UL,
0x00000000000f4240UL,
0x0000000000989680UL,
0x0000000000989680UL,
0x0000000000989680UL,
0x0000000000989680UL,
0x0000000005f5e100UL,
0x0000000005f5e100UL,
0x0000000005f5e100UL,
0x000000003b9aca00UL,
0x000000003b9aca00UL,
0x000000003b9aca00UL,
0x00000002540be400UL,
0x00000002540be400UL,
0x00000002540be400UL,
0x00000002540be400UL,
0x000000174876e800UL,
0x000000174876e800UL,
0x000000174876e800UL,
0x000000e8d4a51000UL,
0x000000e8d4a51000UL,
0x000000e8d4a51000UL,
0x000009184e72a000UL,
0x000009184e72a000UL,
0x000009184e72a000UL,
0x000009184e72a000UL,
0x00005af3107a4000UL,
0x00005af3107a4000UL,
0x00005af3107a4000UL,
0x00038d7ea4c68000UL,
0x00038d7ea4c68000UL,
0x00038d7ea4c68000UL,
0x002386f26fc10000UL,
0x002386f26fc10000UL,
0x002386f26fc10000UL,
0x002386f26fc10000UL,
0x016345785d8a0000UL,
0x016345785d8a0000UL,
0x016345785d8a0000UL,
0x0de0b6b3a7640000UL,
0x0de0b6b3a7640000UL,
0x0de0b6b3a7640000UL,
0x8ac7230489e80000UL,
0x8ac7230489e80000UL,
0x8ac7230489e80000UL,
0x8ac7230489e80000UL
};
public static readonly int[] bid_short_recip_scale =
{
1,
65 - 64,
69 - 64,
71 - 64,
75 - 64,
78 - 64,
81 - 64,
85 - 64,
88 - 64,
91 - 64,
95 - 64,
98 - 64,
101 - 64,
105 - 64,
108 - 64,
111 - 64,
115 - 64, //114 - 64
118 - 64
};
public static readonly BID_UINT64[] bid_reciprocals10_64 =
{
1UL, // dummy value for 0 extra digits
0x3333333333333334UL, // 1 extra digit
0x51eb851eb851eb86UL,
0x20c49ba5e353f7cfUL,
0x346dc5d63886594bUL,
0x29f16b11c6d1e109UL,
0x218def416bdb1a6eUL,
0x35afe535795e90b0UL,
0x2af31dc4611873c0UL,
0x225c17d04dad2966UL,
0x36f9bfb3af7b7570UL,
0x2bfaffc2f2c92ac0UL,
0x232f33025bd42233UL,
0x384b84d092ed0385UL,
0x2d09370d42573604UL,
0x24075f3dceac2b37UL,
0x39a5652fb1137857UL,
0x2e1dea8c8da92d13UL
};
//int bid_bid_bid_recip_scale32 [] =
//{
// 1,
// 33-32,
// 35-32,
// 39-32,
// 43-32,
// 46-32,
// 50-32,
// 53-32,
// 57-32
//};
//BID_UINT64 bid_bid_reciprocals10_32[] = {
// 1UL, //dummy,
// 0x33333334UL,
// 0x147AE148UL,
// 0x20C49BA6UL,
// 0x346DC5D7UL, //4
// 0x29F16B12UL,
// 0x431BDE83UL,
// 0x35AFE536UL,
// 0x55E63B89UL
//};
//BID_UINT128 bid_power10_index_binexp_128[] = {
// {{0x000000000000000aUL, 0x0000000000000000UL}},
// {{0x000000000000000aUL, 0x0000000000000000UL}},
// {{0x000000000000000aUL, 0x0000000000000000UL}},
// {{0x000000000000000aUL, 0x0000000000000000UL}},
// {{0x0000000000000064UL, 0x0000000000000000UL}},
// {{0x0000000000000064UL, 0x0000000000000000UL}},
// {{0x0000000000000064UL, 0x0000000000000000UL}},
// {{0x00000000000003e8UL, 0x0000000000000000UL}},
// {{0x00000000000003e8UL, 0x0000000000000000UL}},
// {{0x00000000000003e8UL, 0x0000000000000000UL}},
// {{0x0000000000002710UL, 0x0000000000000000UL}},
// {{0x0000000000002710UL, 0x0000000000000000UL}},
// {{0x0000000000002710UL, 0x0000000000000000UL}},
// {{0x0000000000002710UL, 0x0000000000000000UL}},
// {{0x00000000000186a0UL, 0x0000000000000000UL}},
// {{0x00000000000186a0UL, 0x0000000000000000UL}},
// {{0x00000000000186a0UL, 0x0000000000000000UL}},
// {{0x00000000000f4240UL, 0x0000000000000000UL}},
// {{0x00000000000f4240UL, 0x0000000000000000UL}},
// {{0x00000000000f4240UL, 0x0000000000000000UL}},
// {{0x0000000000989680UL, 0x0000000000000000UL}},
// {{0x0000000000989680UL, 0x0000000000000000UL}},
// {{0x0000000000989680UL, 0x0000000000000000UL}},
// {{0x0000000000989680UL, 0x0000000000000000UL}},
// {{0x0000000005f5e100UL, 0x0000000000000000UL}},
// {{0x0000000005f5e100UL, 0x0000000000000000UL}},
// {{0x0000000005f5e100UL, 0x0000000000000000UL}},
// {{0x000000003b9aca00UL, 0x0000000000000000UL}},
// {{0x000000003b9aca00UL, 0x0000000000000000UL}},
// {{0x000000003b9aca00UL, 0x0000000000000000UL}},
// {{0x00000002540be400UL, 0x0000000000000000UL}},
// {{0x00000002540be400UL, 0x0000000000000000UL}},
// {{0x00000002540be400UL, 0x0000000000000000UL}},
// {{0x00000002540be400UL, 0x0000000000000000UL}},
// {{0x000000174876e800UL, 0x0000000000000000UL}},
// {{0x000000174876e800UL, 0x0000000000000000UL}},
// {{0x000000174876e800UL, 0x0000000000000000UL}},
// {{0x000000e8d4a51000UL, 0x0000000000000000UL}},
// {{0x000000e8d4a51000UL, 0x0000000000000000UL}},
// {{0x000000e8d4a51000UL, 0x0000000000000000UL}},
// {{0x000009184e72a000UL, 0x0000000000000000UL}},
// {{0x000009184e72a000UL, 0x0000000000000000UL}},
// {{0x000009184e72a000UL, 0x0000000000000000UL}},
// {{0x000009184e72a000UL, 0x0000000000000000UL}},
// {{0x00005af3107a4000UL, 0x0000000000000000UL}},
// {{0x00005af3107a4000UL, 0x0000000000000000UL}},
// {{0x00005af3107a4000UL, 0x0000000000000000UL}},
// {{0x00038d7ea4c68000UL, 0x0000000000000000UL}},
// {{0x00038d7ea4c68000UL, 0x0000000000000000UL}},
// {{0x00038d7ea4c68000UL, 0x0000000000000000UL}},
// {{0x002386f26fc10000UL, 0x0000000000000000UL}},
// {{0x002386f26fc10000UL, 0x0000000000000000UL}},
// {{0x002386f26fc10000UL, 0x0000000000000000UL}},
// {{0x002386f26fc10000UL, 0x0000000000000000UL}},
// {{0x016345785d8a0000UL, 0x0000000000000000UL}},
// {{0x016345785d8a0000UL, 0x0000000000000000UL}},
// {{0x016345785d8a0000UL, 0x0000000000000000UL}},
// {{0x0de0b6b3a7640000UL, 0x0000000000000000UL}},
// {{0x0de0b6b3a7640000UL, 0x0000000000000000UL}},
// {{0x0de0b6b3a7640000UL, 0x0000000000000000UL}},
// {{0x8ac7230489e80000UL, 0x0000000000000000UL}},
// {{0x8ac7230489e80000UL, 0x0000000000000000UL}},
// {{0x8ac7230489e80000UL, 0x0000000000000000UL}},
// {{0x8ac7230489e80000UL, 0x0000000000000000UL}},
// {{0x6bc75e2d63100000UL, 0x0000000000000005UL}}, // 10^20
// {{0x6bc75e2d63100000UL, 0x0000000000000005UL}}, // 10^20
// {{0x6bc75e2d63100000UL, 0x0000000000000005UL}}, // 10^20
// {{0x35c9adc5dea00000UL, 0x0000000000000036UL}}, // 10^21
// {{0x35c9adc5dea00000UL, 0x0000000000000036UL}}, // 10^21
// {{0x35c9adc5dea00000UL, 0x0000000000000036UL}}, // 10^21
// {{0x19e0c9bab2400000UL, 0x000000000000021eUL}}, // 10^22
// {{0x19e0c9bab2400000UL, 0x000000000000021eUL}}, // 10^22
// {{0x19e0c9bab2400000UL, 0x000000000000021eUL}}, // 10^22
// {{0x19e0c9bab2400000UL, 0x000000000000021eUL}}, // 10^22
// {{0x02c7e14af6800000UL, 0x000000000000152dUL}}, // 10^23
// {{0x02c7e14af6800000UL, 0x000000000000152dUL}}, // 10^23
// {{0x02c7e14af6800000UL, 0x000000000000152dUL}}, // 10^23
// {{0x1bcecceda1000000UL, 0x000000000000d3c2UL}}, // 10^24
// {{0x1bcecceda1000000UL, 0x000000000000d3c2UL}}, // 10^24
// {{0x1bcecceda1000000UL, 0x000000000000d3c2UL}}, // 10^24
// {{0x161401484a000000UL, 0x0000000000084595UL}}, // 10^25
// {{0x161401484a000000UL, 0x0000000000084595UL}}, // 10^25
// {{0x161401484a000000UL, 0x0000000000084595UL}}, // 10^25
// {{0x161401484a000000UL, 0x0000000000084595UL}}, // 10^25
// {{0xdcc80cd2e4000000UL, 0x000000000052b7d2UL}}, // 10^26
// {{0xdcc80cd2e4000000UL, 0x000000000052b7d2UL}}, // 10^26
// {{0xdcc80cd2e4000000UL, 0x000000000052b7d2UL}}, // 10^26
// {{0x9fd0803ce8000000UL, 0x00000000033b2e3cUL}}, // 10^27
// {{0x9fd0803ce8000000UL, 0x00000000033b2e3cUL}}, // 10^27
// {{0x9fd0803ce8000000UL, 0x00000000033b2e3cUL}}, // 10^27
// {{0x3e25026110000000UL, 0x00000000204fce5eUL}}, // 10^28
// {{0x3e25026110000000UL, 0x00000000204fce5eUL}}, // 10^28
// {{0x3e25026110000000UL, 0x00000000204fce5eUL}}, // 10^28
// {{0x3e25026110000000UL, 0x00000000204fce5eUL}}, // 10^28
// {{0x6d7217caa0000000UL, 0x00000001431e0faeUL}}, // 10^29
// {{0x6d7217caa0000000UL, 0x00000001431e0faeUL}}, // 10^29
// {{0x6d7217caa0000000UL, 0x00000001431e0faeUL}}, // 10^29
// {{0x4674edea40000000UL, 0x0000000c9f2c9cd0UL}}, // 10^30
// {{0x4674edea40000000UL, 0x0000000c9f2c9cd0UL}}, // 10^30
// {{0x4674edea40000000UL, 0x0000000c9f2c9cd0UL}}, // 10^30
// {{0xc0914b2680000000UL, 0x0000007e37be2022UL}}, // 10^31
// {{0xc0914b2680000000UL, 0x0000007e37be2022UL}}, // 10^31
// {{0xc0914b2680000000UL, 0x0000007e37be2022UL}}, // 10^31
// {{0x85acef8100000000UL, 0x000004ee2d6d415bUL}}, // 10^32
// {{0x85acef8100000000UL, 0x000004ee2d6d415bUL}}, // 10^32
// {{0x85acef8100000000UL, 0x000004ee2d6d415bUL}}, // 10^32
// {{0x85acef8100000000UL, 0x000004ee2d6d415bUL}}, // 10^32
// {{0x38c15b0a00000000UL, 0x0000314dc6448d93UL}}, // 10^33
// {{0x38c15b0a00000000UL, 0x0000314dc6448d93UL}}, // 10^33
// {{0x38c15b0a00000000UL, 0x0000314dc6448d93UL}}, // 10^33, entry 112
// {{0x378d8e6400000000UL, 0x0001ed09bead87c0UL}}, // 10^34
// {{0x378d8e6400000000UL, 0x0001ed09bead87c0UL}}, // 10^34
// {{0x378d8e6400000000UL, 0x0001ed09bead87c0UL}}, // 10^34
// {{0x2b878fe800000000UL, 0x0013426172c74d82UL}}, // 10^35
// {{0x2b878fe800000000UL, 0x0013426172c74d82UL}}, // 10^35
// {{0x2b878fe800000000UL, 0x0013426172c74d82UL}}, // 10^35
// {{0x2b878fe800000000UL, 0x0013426172c74d82UL}}, // 10^35
// {{0xb34b9f1000000000UL, 0x00c097ce7bc90715UL}}, // 10^36
// {{0x00f436a000000000UL, 0x0785ee10d5da46d9UL}}, // 10^37
// {{0x00f436a000000000UL, 0x0785ee10d5da46d9UL}}, // 10^37
// {{0x00f436a000000000UL, 0x0785ee10d5da46d9UL}}, // 10^37
// {{0x098a224000000000UL, 0x4b3b4ca85a86c47aUL}}, // 10^38
// {{0x098a224000000000UL, 0x4b3b4ca85a86c47aUL}}, // 10^38
// {{0x098a224000000000UL, 0x4b3b4ca85a86c47aUL}}, // 10^38
// {{0x098a224000000000UL, 0x4b3b4ca85a86c47aUL}}, // 10^38
//};
public static readonly BID_SINT8[,] bid_factors /*[1024][2]*/ =
{
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 2 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 5, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 2 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 6, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 2 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 5, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 2 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 3 }, { 1, 0 }, { 0, 0 }, { 7, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 2 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 5, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 2 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 6, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 2 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 5, 0 }, { 0, 2 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 3 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 8, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 2 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 5, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 2 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 6, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 2 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 2 },
{ 0, 0 }, { 5, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 3 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 7, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 2 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 5, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 2 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 6, 0 }, { 0, 0 }, { 1, 2 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 2 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 5, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 3 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 9, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 2 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 5, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 2 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 2 }, { 6, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 2 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 5, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 4 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 7, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 2 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 5, 0 }, { 0, 0 }, { 1, 0 }, { 0, 2 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 2 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 6, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 2 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 5, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 3 },
{ 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 8, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 2 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 5, 2 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 2 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 6, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 2 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 5, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 3 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 7, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 2 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 2 }, { 1, 0 }, { 0, 0 }, { 5, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 2 },
{ 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 6, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 2 }, { 4, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 5, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 3, 3 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 0 }, { 0, 1 }, { 1, 0 }, { 0, 0 }, { 4, 0 }, { 0, 0 }, { 1, 1 },
{ 0, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 3, 0 }, { 0, 0 }, { 1, 0 }, { 0, 0 }, { 2, 1 },
{ 0, 0 }, { 1, 0 }, { 0, 0 }, { 10, 0 },
};
// bid_convert_table[j][k][i] = digit i (base 10^8) of k*2^(26+7*j)
public static readonly BID_UINT32[,,] bid_convert_table /*[5][128][2]*/ =
{
{
{ 0, 0 }, { 67108864, 0 }, { 34217728, 1 }, { 1326592, 2 }, { 68435456, 2 },
{ 35544320, 3 }, { 2653184, 4 }, { 69762048, 4 }, { 36870912, 5 }, { 3979776, 6 },
{ 71088640, 6 }, { 38197504, 7 }, { 5306368, 8 }, { 72415232, 8 }, { 39524096, 9 },
{ 6632960, 10 }, { 73741824, 10 }, { 40850688, 11 }, { 7959552, 12 }, { 75068416, 12 },
{ 42177280, 13 }, { 9286144, 14 }, { 76395008, 14 }, { 43503872, 15 }, { 10612736, 16 },
{ 77721600, 16 }, { 44830464, 17 }, { 11939328, 18 }, { 79048192, 18 }, { 46157056, 19 },
{ 13265920, 20 }, { 80374784, 20 }, { 47483648, 21 }, { 14592512, 22 }, { 81701376, 22 },
{ 48810240, 23 }, { 15919104, 24 }, { 83027968, 24 }, { 50136832, 25 }, { 17245696, 26 },
{ 84354560, 26 }, { 51463424, 27 }, { 18572288, 28 }, { 85681152, 28 }, { 52790016, 29 },
{ 19898880, 30 }, { 87007744, 30 }, { 54116608, 31 }, { 21225472, 32 }, { 88334336, 32 },
{ 55443200, 33 }, { 22552064, 34 }, { 89660928, 34 }, { 56769792, 35 }, { 23878656, 36 },
{ 90987520, 36 }, { 58096384, 37 }, { 25205248, 38 }, { 92314112, 38 }, { 59422976, 39 },
{ 26531840, 40 }, { 93640704, 40 }, { 60749568, 41 }, { 27858432, 42 }, { 94967296, 42 },
{ 62076160, 43 }, { 29185024, 44 }, { 96293888, 44 }, { 63402752, 45 }, { 30511616, 46 },
{ 97620480, 46 }, { 64729344, 47 }, { 31838208, 48 }, { 98947072, 48 }, { 66055936, 49 },
{ 33164800, 50 }, { 273664, 51 }, { 67382528, 51 }, { 34491392, 52 }, { 1600256, 53 },
{ 68709120, 53 }, { 35817984, 54 }, { 2926848, 55 }, { 70035712, 55 }, { 37144576, 56 },
{ 4253440, 57 }, { 71362304, 57 }, { 38471168, 58 }, { 5580032, 59 }, { 72688896, 59 },
{ 39797760, 60 }, { 6906624, 61 }, { 74015488, 61 }, { 41124352, 62 }, { 8233216, 63 },
{ 75342080, 63 }, { 42450944, 64 }, { 9559808, 65 }, { 76668672, 65 }, { 43777536, 66 },
{ 10886400, 67 }, { 77995264, 67 }, { 45104128, 68 }, { 12212992, 69 }, { 79321856, 69 },
{ 46430720, 70 }, { 13539584, 71 }, { 80648448, 71 }, { 47757312, 72 }, { 14866176, 73 },
{ 81975040, 73 }, { 49083904, 74 }, { 16192768, 75 }, { 83301632, 75 }, { 50410496, 76 },
{ 17519360, 77 }, { 84628224, 77 }, { 51737088, 78 }, { 18845952, 79 }, { 85954816, 79 },
{ 53063680, 80 }, { 20172544, 81 }, { 87281408, 81 }, { 54390272, 82 }, { 21499136, 83 },
{ 88608000, 83 }, { 55716864, 84 }, { 22825728, 85 },
},
{
{ 0, 0 }, { 89934592, 85 }, { 79869184, 171 }, { 69803776, 257 }, { 59738368, 343 },
{ 49672960, 429 }, { 39607552, 515 }, { 29542144, 601 }, { 19476736, 687 }, { 9411328, 773 },
{ 99345920, 858 }, { 89280512, 944 }, { 79215104, 1030 }, { 69149696, 1116 }, { 59084288, 1202 },
{ 49018880, 1288 }, { 38953472, 1374 }, { 28888064, 1460 }, { 18822656, 1546 }, { 8757248, 1632 },
{ 98691840, 1717 }, { 88626432, 1803 }, { 78561024, 1889 }, { 68495616, 1975 }, { 58430208, 2061 },
{ 48364800, 2147 }, { 38299392, 2233 }, { 28233984, 2319 }, { 18168576, 2405 }, { 8103168, 2491 },
{ 98037760, 2576 }, { 87972352, 2662 }, { 77906944, 2748 }, { 67841536, 2834 }, { 57776128, 2920 },
{ 47710720, 3006 }, { 37645312, 3092 }, { 27579904, 3178 }, { 17514496, 3264 }, { 7449088, 3350 },
{ 97383680, 3435 }, { 87318272, 3521 }, { 77252864, 3607 }, { 67187456, 3693 }, { 57122048, 3779 },
{ 47056640, 3865 }, { 36991232, 3951 }, { 26925824, 4037 }, { 16860416, 4123 }, { 6795008, 4209 },
{ 96729600, 4294 }, { 86664192, 4380 }, { 76598784, 4466 }, { 66533376, 4552 }, { 56467968, 4638 },
{ 46402560, 4724 }, { 36337152, 4810 }, { 26271744, 4896 }, { 16206336, 4982 }, { 6140928, 5068 },
{ 96075520, 5153 }, { 86010112, 5239 }, { 75944704, 5325 }, { 65879296, 5411 }, { 55813888, 5497 },
{ 45748480, 5583 }, { 35683072, 5669 }, { 25617664, 5755 }, { 15552256, 5841 }, { 5486848, 5927 },
{ 95421440, 6012 }, { 85356032, 6098 }, { 75290624, 6184 }, { 65225216, 6270 }, { 55159808, 6356 },
{ 45094400, 6442 }, { 35028992, 6528 }, { 24963584, 6614 }, { 14898176, 6700 }, { 4832768, 6786 },
{ 94767360, 6871 }, { 84701952, 6957 }, { 74636544, 7043 }, { 64571136, 7129 }, { 54505728, 7215 },
{ 44440320, 7301 }, { 34374912, 7387 }, { 24309504, 7473 }, { 14244096, 7559 }, { 4178688, 7645 },
{ 94113280, 7730 }, { 84047872, 7816 }, { 73982464, 7902 }, { 63917056, 7988 }, { 53851648, 8074 },
{ 43786240, 8160 }, { 33720832, 8246 }, { 23655424, 8332 }, { 13590016, 8418 }, { 3524608, 8504 },
{ 93459200, 8589 }, { 83393792, 8675 }, { 73328384, 8761 }, { 63262976, 8847 }, { 53197568, 8933 },
{ 43132160, 9019 }, { 33066752, 9105 }, { 23001344, 9191 }, { 12935936, 9277 }, { 2870528, 9363 },
{ 92805120, 9448 }, { 82739712, 9534 }, { 72674304, 9620 }, { 62608896, 9706 }, { 52543488, 9792 },
{ 42478080, 9878 }, { 32412672, 9964 }, { 22347264, 10050 }, { 12281856, 10136 }, { 2216448, 10222 },
{ 92151040, 10307 }, { 82085632, 10393 }, { 72020224, 10479 }, { 61954816, 10565 }, { 51889408, 10651 },
{ 41824000, 10737 }, { 31758592, 10823 }, { 21693184, 10909 },
},
{
{ 0, 0 }, { 11627776, 10995 }, { 23255552, 21990 }, { 34883328, 32985 }, { 46511104, 43980 },
{ 58138880, 54975 }, { 69766656, 65970 }, { 81394432, 76965 }, { 93022208, 87960 }, { 4649984, 98956 },
{ 16277760, 109951 }, { 27905536, 120946 }, { 39533312, 131941 }, { 51161088, 142936 }, { 62788864, 153931 },
{ 74416640, 164926 }, { 86044416, 175921 }, { 97672192, 186916 }, { 9299968, 197912 }, { 20927744, 208907 },
{ 32555520, 219902 }, { 44183296, 230897 }, { 55811072, 241892 }, { 67438848, 252887 }, { 79066624, 263882 },
{ 90694400, 274877 }, { 2322176, 285873 }, { 13949952, 296868 }, { 25577728, 307863 }, { 37205504, 318858 },
{ 48833280, 329853 }, { 60461056, 340848 }, { 72088832, 351843 }, { 83716608, 362838 }, { 95344384, 373833 },
{ 6972160, 384829 }, { 18599936, 395824 }, { 30227712, 406819 }, { 41855488, 417814 }, { 53483264, 428809 },
{ 65111040, 439804 }, { 76738816, 450799 }, { 88366592, 461794 }, { 99994368, 472789 }, { 11622144, 483785 },
{ 23249920, 494780 }, { 34877696, 505775 }, { 46505472, 516770 }, { 58133248, 527765 }, { 69761024, 538760 },
{ 81388800, 549755 }, { 93016576, 560750 }, { 4644352, 571746 }, { 16272128, 582741 }, { 27899904, 593736 },
{ 39527680, 604731 }, { 51155456, 615726 }, { 62783232, 626721 }, { 74411008, 637716 }, { 86038784, 648711 },
{ 97666560, 659706 }, { 9294336, 670702 }, { 20922112, 681697 }, { 32549888, 692692 }, { 44177664, 703687 },
{ 55805440, 714682 }, { 67433216, 725677 }, { 79060992, 736672 }, { 90688768, 747667 }, { 2316544, 758663 },
{ 13944320, 769658 }, { 25572096, 780653 }, { 37199872, 791648 }, { 48827648, 802643 }, { 60455424, 813638 },
{ 72083200, 824633 }, { 83710976, 835628 }, { 95338752, 846623 }, { 6966528, 857619 }, { 18594304, 868614 },
{ 30222080, 879609 }, { 41849856, 890604 }, { 53477632, 901599 }, { 65105408, 912594 }, { 76733184, 923589 },
{ 88360960, 934584 }, { 99988736, 945579 }, { 11616512, 956575 }, { 23244288, 967570 }, { 34872064, 978565 },
{ 46499840, 989560 }, { 58127616, 1000555 }, { 69755392, 1011550 }, { 81383168, 1022545 }, { 93010944, 1033540 },
{ 4638720, 1044536 }, { 16266496, 1055531 }, { 27894272, 1066526 }, { 39522048, 1077521 }, { 51149824, 1088516 },
{ 62777600, 1099511 }, { 74405376, 1110506 }, { 86033152, 1121501 }, { 97660928, 1132496 }, { 9288704, 1143492 },
{ 20916480, 1154487 }, { 32544256, 1165482 }, { 44172032, 1176477 }, { 55799808, 1187472 }, { 67427584, 1198467 },
{ 79055360, 1209462 }, { 90683136, 1220457 }, { 2310912, 1231453 }, { 13938688, 1242448 }, { 25566464, 1253443 },
{ 37194240, 1264438 }, { 48822016, 1275433 }, { 60449792, 1286428 }, { 72077568, 1297423 }, { 83705344, 1308418 },
{ 95333120, 1319413 }, { 6960896, 1330409 }, { 18588672, 1341404 }, { 30216448, 1352399 }, { 41844224, 1363394 },
{ 53472000, 1374389 }, { 65099776, 1385384 }, { 76727552, 1396379 },
},
{
{ 0, 0 }, { 88355328, 1407374 }, { 76710656, 2814749 }, { 65065984, 4222124 }, { 53421312, 5629499 },
{ 41776640, 7036874 }, { 30131968, 8444249 }, { 18487296, 9851624 }, { 6842624, 11258999 }, { 95197952, 12666373 },
{ 83553280, 14073748 }, { 71908608, 15481123 }, { 60263936, 16888498 }, { 48619264, 18295873 }, { 36974592, 19703248 },
{ 25329920, 21110623 }, { 13685248, 22517998 }, { 2040576, 23925373 }, { 90395904, 25332747 }, { 78751232, 26740122 },
{ 67106560, 28147497 }, { 55461888, 29554872 }, { 43817216, 30962247 }, { 32172544, 32369622 }, { 20527872, 33776997 },
{ 8883200, 35184372 }, { 97238528, 36591746 }, { 85593856, 37999121 }, { 73949184, 39406496 }, { 62304512, 40813871 },
{ 50659840, 42221246 }, { 39015168, 43628621 }, { 27370496, 45035996 }, { 15725824, 46443371 }, { 4081152, 47850746 },
{ 92436480, 49258120 }, { 80791808, 50665495 }, { 69147136, 52072870 }, { 57502464, 53480245 }, { 45857792, 54887620 },
{ 34213120, 56294995 }, { 22568448, 57702370 }, { 10923776, 59109745 }, { 99279104, 60517119 }, { 87634432, 61924494 },
{ 75989760, 63331869 }, { 64345088, 64739244 }, { 52700416, 66146619 }, { 41055744, 67553994 }, { 29411072, 68961369 },
{ 17766400, 70368744 }, { 6121728, 71776119 }, { 94477056, 73183493 }, { 82832384, 74590868 }, { 71187712, 75998243 },
{ 59543040, 77405618 }, { 47898368, 78812993 }, { 36253696, 80220368 }, { 24609024, 81627743 }, { 12964352, 83035118 },
{ 1319680, 84442493 }, { 89675008, 85849867 }, { 78030336, 87257242 }, { 66385664, 88664617 }, { 54740992, 90071992 },
{ 43096320, 91479367 }, { 31451648, 92886742 }, { 19806976, 94294117 }, { 8162304, 95701492 }, { 96517632, 97108866 },
{ 84872960, 98516241 }, { 73228288, 99923616 }, { 61583616, 1330991 }, { 49938944, 2738366 }, { 38294272, 4145741 },
{ 26649600, 5553116 }, { 15004928, 6960491 }, { 3360256, 8367866 }, { 91715584, 9775240 }, { 80070912, 11182615 },
{ 68426240, 12589990 }, { 56781568, 13997365 }, { 45136896, 15404740 }, { 33492224, 16812115 }, { 21847552, 18219490 },
{ 10202880, 19626865 }, { 98558208, 21034239 }, { 86913536, 22441614 }, { 75268864, 23848989 }, { 63624192, 25256364 },
{ 51979520, 26663739 }, { 40334848, 28071114 }, { 28690176, 29478489 }, { 17045504, 30885864 }, { 5400832, 32293239 },
{ 93756160, 33700613 }, { 82111488, 35107988 }, { 70466816, 36515363 }, { 58822144, 37922738 }, { 47177472, 39330113 },
{ 35532800, 40737488 }, { 23888128, 42144863 }, { 12243456, 43552238 }, { 598784, 44959613 }, { 88954112, 46366987 },
{ 77309440, 47774362 }, { 65664768, 49181737 }, { 54020096, 50589112 }, { 42375424, 51996487 }, { 30730752, 53403862 },
{ 19086080, 54811237 }, { 7441408, 56218612 }, { 95796736, 57625986 }, { 84152064, 59033361 }, { 72507392, 60440736 },
{ 60862720, 61848111 }, { 49218048, 63255486 }, { 37573376, 64662861 }, { 25928704, 66070236 }, { 14284032, 67477611 },
{ 2639360, 68884986 }, { 90994688, 70292360 }, { 79350016, 71699735 }, { 67705344, 73107110 }, { 56060672, 74514485 },
{ 44416000, 75921860 }, { 32771328, 77329235 }, { 21126656, 78736610 },
},
{
{ 0, 0 }, { 9481984, 80143985 }, { 18963968, 60287970 }, { 28445952, 40431955 }, { 37927936, 20575940 },
{ 47409920, 719925 }, { 56891904, 80863910 }, { 66373888, 61007895 }, { 75855872, 41151880 }, { 85337856, 21295865 },
{ 94819840, 1439850 }, { 4301824, 81583836 }, { 13783808, 61727821 }, { 23265792, 41871806 }, { 32747776, 22015791 },
{ 42229760, 2159776 }, { 51711744, 82303761 }, { 61193728, 62447746 }, { 70675712, 42591731 }, { 80157696, 22735716 },
{ 89639680, 2879701 }, { 99121664, 83023686 }, { 8603648, 63167672 }, { 18085632, 43311657 }, { 27567616, 23455642 },
{ 37049600, 3599627 }, { 46531584, 83743612 }, { 56013568, 63887597 }, { 65495552, 44031582 }, { 74977536, 24175567 },
{ 84459520, 4319552 }, { 93941504, 84463537 }, { 3423488, 64607523 }, { 12905472, 44751508 }, { 22387456, 24895493 },
{ 31869440, 5039478 }, { 41351424, 85183463 }, { 50833408, 65327448 }, { 60315392, 45471433 }, { 69797376, 25615418 },
{ 79279360, 5759403 }, { 88761344, 85903388 }, { 98243328, 66047373 }, { 7725312, 46191359 }, { 17207296, 26335344 },
{ 26689280, 6479329 }, { 36171264, 86623314 }, { 45653248, 66767299 }, { 55135232, 46911284 }, { 64617216, 27055269 },
{ 74099200, 7199254 }, { 83581184, 87343239 }, { 93063168, 67487224 }, { 2545152, 47631210 }, { 12027136, 27775195 },
{ 21509120, 7919180 }, { 30991104, 88063165 }, { 40473088, 68207150 }, { 49955072, 48351135 }, { 59437056, 28495120 },
{ 68919040, 8639105 }, { 78401024, 88783090 }, { 87883008, 68927075 }, { 97364992, 49071060 }, { 6846976, 29215046 },
{ 16328960, 9359031 }, { 25810944, 89503016 }, { 35292928, 69647001 }, { 44774912, 49790986 }, { 54256896, 29934971 },
{ 63738880, 10078956 }, { 73220864, 90222941 }, { 82702848, 70366926 }, { 92184832, 50510911 }, { 1666816, 30654897 },
{ 11148800, 10798882 }, { 20630784, 90942867 }, { 30112768, 71086852 }, { 39594752, 51230837 }, { 49076736, 31374822 },
{ 58558720, 11518807 }, { 68040704, 91662792 }, { 77522688, 71806777 }, { 87004672, 51950762 }, { 96486656, 32094747 },
{ 5968640, 12238733 }, { 15450624, 92382718 }, { 24932608, 72526703 }, { 34414592, 52670688 }, { 43896576, 32814673 },
{ 53378560, 12958658 }, { 62860544, 93102643 }, { 72342528, 73246628 }, { 81824512, 53390613 }, { 91306496, 33534598 },
{ 788480, 13678584 }, { 10270464, 93822569 }, { 19752448, 73966554 }, { 29234432, 54110539 }, { 38716416, 34254524 },
{ 48198400, 14398509 }, { 57680384, 94542494 }, { 67162368, 74686479 }, { 76644352, 54830464 }, { 86126336, 34974449 },
{ 95608320, 15118434 }, { 5090304, 95262420 }, { 14572288, 75406405 }, { 24054272, 55550390 }, { 33536256, 35694375 },
{ 43018240, 15838360 }, { 52500224, 95982345 }, { 61982208, 76126330 }, { 71464192, 56270315 }, { 80946176, 36414300 },
{ 90428160, 16558285 }, { 99910144, 96702270 }, { 9392128, 76846256 }, { 18874112, 56990241 }, { 28356096, 37134226 },
{ 37838080, 17278211 }, { 47320064, 97422196 }, { 56802048, 77566181 }, { 66284032, 57710166 }, { 75766016, 37854151 },
{ 85248000, 17998136 }, { 94729984, 98142121 }, { 4211968, 78286107 },
},
};
// for even k, ((bid_packed_10000_zeros[k>>3])>>(k&7))&3)=greatest(i) s.t. 10^i divides k
public static readonly BID_UINT8[] bid_packed_10000_zeros =
{
0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1,
0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4,
0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10,
0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40,
0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0,
0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1,
0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4,
0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10,
0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40,
0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0,
0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2,
0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4,
0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10,
0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40,
0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0,
0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1,
0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4,
0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20,
0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40,
0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0,
0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1,
0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4,
0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10,
0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40,
0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0,
0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1,
0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4,
0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10,
0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40,
0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0,
0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1,
0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4,
0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10,
0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40,
0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0,
0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2,
0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4,
0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10,
0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40,
0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0,
0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1,
0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4,
0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20,
0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40,
0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0,
0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1,
0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4,
0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10,
0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40,
0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0,
0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1,
0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4,
0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10,
0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40,
0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0,
0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1,
0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4,
0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10,
0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40,
0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0,
0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2,
0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4,
0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10,
0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40,
0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0,
0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1,
0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4,
0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20,
0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40,
0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0,
0x1, 0x4, 0x10, 0x40, 0x0, 0x3, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1,
0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4,
0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10,
0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40,
0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0,
0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1,
0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x2, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4,
0x10, 0x40, 0x0, 0x1, 0x4, 0x20, 0x40, 0x0, 0x1, 0x4, 0x10, 0x40, 0x0, 0x1, 0x4, 0x10,
0x40, 0x0,
};
}
}