From f54daffb72017be570aed535ac77b2f033a0c8bb Mon Sep 17 00:00:00 2001 From: Theodor Chikin Date: Wed, 8 Oct 2025 22:33:32 +0300 Subject: [PATCH] added precalculated twiddles table, fixed accuracy issues (switched from int32 to int64). Now FFT working correctly --- C/FP_math | Bin 16560 -> 16664 bytes C/FP_math.c | 97 +-- C/tmp | 2048 +++++++++++++++++++++++++-------------------------- 3 files changed, 1074 insertions(+), 1071 deletions(-) diff --git a/C/FP_math b/C/FP_math index b8efcff19ec8ddce81026fc22aab42409ca838a6..0849209a3cbfc5076c58c08282802f585c520417 100755 GIT binary patch literal 16664 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 literal 16560 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 1; - int c_delta_FP = cos_delta_FP_arr[m - 2]; - int s_delta_FP = sin_delta_FP_arr[m - 2]; - for (uint32_t start = 0; start < N; start += m) { - int wr = FP_acc; - int wi = 0; + int64_t *twiddle_re = wr_arr[m - 2]; + int64_t *twiddle_im = wi_arr[m - 2]; - for (uint32_t k = 0; k < half; k++) { - int u_re = buf[(start + k) * 2]; - int u_im = buf[(start + k) * 2 + 1]; - int v_re = buf[(start + k + half) * 2]; - int v_im = buf[(start + k + half) * 2 + 1]; + for (uint32_t k = 0; k < half; k++) { + int64_t wr = twiddle_re[k]; + int64_t wi = twiddle_im[k]; + int64_t u_re = buf[(start + k) * 2]; + int64_t u_im = buf[(start + k) * 2 + 1]; + int64_t v_re = buf[(start + k + half) * 2]; + int64_t v_im = buf[(start + k + half) * 2 + 1]; // t = w * v (в фиксированной точке) - int64_t t_re = ((int64_t)wr * v_re - (int64_t)wi * v_im) / FP_acc; - int64_t t_im = ((int64_t)wr * v_im + (int64_t)wi * v_re) / FP_acc; + int64_t t_re = (wr * v_re - wi * v_im) / FP_acc; + int64_t t_im = (wr * v_im + wi * v_re) / FP_acc; // верх/низ - buf[(start + k) * 2] = u_re + (int)t_re; - buf[(start + k) * 2 + 1] = u_im + (int)t_im; - buf[(start + k + half) * 2] = u_re - (int)t_re; - buf[(start + k + half) * 2 + 1] = u_im - (int)t_im; + buf[(start + k) * 2] = u_re + t_re; + buf[(start + k) * 2 + 1] = u_im + t_im; + buf[(start + k + half) * 2] = u_re - t_re; + buf[(start + k + half) * 2 + 1] = u_im - t_im; - // w *= w_m (обновление twiddle) - int64_t wr_new = ((int64_t)wr * c_delta_FP - (int64_t)wi * s_delta_FP) / FP_acc; - int64_t wi_new = ((int64_t)wr * s_delta_FP + (int64_t)wi * c_delta_FP) / FP_acc; - wr = (int)wr_new; - wi = (int)wi_new; - } - } - m <<= 1; - } + } + } + m <<= 1; + } for (uint32_t i = 0; i < inp_L; ++i){ //buf[i*2] /= inp_L; //buf[i*2+1] /= inp_L; - printf("re,im: %d, %d\n", buf[i*2], buf[i*2 +1]); + printf("re,im: %lld, %lld\n", (long long)buf[i*2], (long long)buf[i*2 +1]); } } -void imagery2abs(uint32_t* inp, uint32_t inp_L, uint32_t *out){ +void imagery2abs(int64_t* inp, uint32_t inp_L, int64_t *out){ printf("+++++++++++++++++++++\n"); printf("calculating abs^2\n"); for (uint32_t i = 0; i < inp_L; ++i){ - int val = (inp[i*2]*inp[i*2] + inp[i*2 +1]*inp[i*2 +1])/FP_acc; - printf("%d\n", val); + int64_t re = inp[i*2]; + int64_t im = inp[i*2 +1]; + int64_t val = (re * re + im * im) / FP_acc; + printf("%lld\n", (long long)val); out[i] = val; } } -void sin_cos_filler(int* sin_arr, int* cos_arr, uint32_t L){ +void sin_cos_filler(int64_t* sin_arr, int64_t* cos_arr, uint32_t L){ //[int(-sin(2.0 * pi / m) * FP_acc) for m in range(2,inp_L//2 + 2)] for (uint32_t i = 0; i < L; ++i){ int m = i + 2; double angle = 2.0* PI/m; sin_arr[i] = lround(-sin(angle) * FP_acc); cos_arr[i] = lround(cos(angle) * FP_acc); - printf("i, angle, sin, cos: %d %g %d %d\n", i, angle, sin_arr[i], cos_arr[i]); + uint32_t half = m >> 1; + for (uint32_t k = 0; k < half; ++k){ + double tw_angle = angle * k; + wr_arr[i][k] = lround(cos(tw_angle) * FP_acc); + wi_arr[i][k] = lround(-sin(tw_angle) * FP_acc); + } + printf("i, angle, sin, cos: %d %g %lld %lld\n", i, angle, (long long)sin_arr[i], (long long)cos_arr[i]); } } -void data_generator(uint32_t* X, uint32_t* Y, uint32_t N){ +void data_generator(int64_t* X, int64_t* Y, uint32_t N){ for (int i = 0; i < N; ++i){ - X[i] = (int) i; + X[i] = (int64_t)i; Y[i] = lround(sin(((double)i)*2.0* PI/(N/10))*FP_acc); -// Y[I] += 10*FP_acc; + Y[i] += 1*FP_acc; } } void main(){ char* logfilename = "tmp"; - uint32_t data_X[DATA_L] = {0,}; - uint32_t data_Y[DATA_L] = {0,}; - uint32_t data_res_FFT_imag[DATA_L*2] = {0,}; - uint32_t data_res_FFT_abs[DATA_L] = {0,}; + int64_t data_X[DATA_L] = {0,}; + int64_t data_Y[DATA_L] = {0,}; + int64_t data_res_FFT_imag[DATA_L*2] = {0,}; + int64_t data_res_FFT_abs[DATA_L] = {0,}; sin_cos_filler(sin_delta_FP_arr, cos_delta_FP_arr, DATA_L); @@ -145,8 +149,7 @@ void main(){ logfile_ptr = fopen(logfilename, "w"); fprintf(logfile_ptr, "X, Y, FFT\n"); for (uint32_t i = 0; i < DATA_L; ++i){ - fprintf(logfile_ptr, "%d, %d, %d \n", data_X[i], data_Y[i],data_res_FFT_abs[i]); + fprintf(logfile_ptr, "%lld, %lg, %lg \n", (long long)data_X[i], ((double)data_Y[i])/(double)FP_acc , (double)data_res_FFT_abs[i]/(double)FP_acc); } fclose(logfile_ptr); } - diff --git a/C/tmp b/C/tmp index 1c3f27f..2015f6e 100644 --- a/C/tmp +++ b/C/tmp @@ -1,1025 +1,1025 @@ X, Y, FFT -0, 0, 136 -1, 62, 269 -2, 123, 873 -3, 184, 1729 -4, 244, 3568 -5, 303, 6902 -6, 361, 16312 -7, 418, 28544 -8, 473, 73996 -9, 526, 321369 -10, 578, 2295409 -11, 627, 450446 -12, 674, 118120 -13, 718, 55293 -14, 759, 32601 -15, 798, 21779 -16, 834, 16211 -17, 866, 12292 -18, 895, 9817 -19, 921, 7996 -20, 943, 6774 -21, 962, 5788 -22, 977, 10472 -23, 988, 4232 -24, 996, 3741 -25, 1000, 3303 -26, 1000, 3957 -27, 996, 2643 -28, 988, 2440 -29, 977, 2226 -30, 962, 2101 -31, 943, 1834 -32, 921, 1804 -33, 895, 1684 -34, 866, 1547 -35, 834, 1439 -36, 798, 1362 -37, 759, 1258 -38, 718, 1004 -39, 674, 1088 -40, 627, 1039 -41, 578, 966 -42, 526, 2241 -43, 473, 903 -44, 418, 849 -45, 361, 803 -46, 303, 769 -47, 244, 713 -48, 184, 694 -49, 123, 644 -50, 62, 600 -51, 0, 595 -52, -62, 615 -53, -123, 644 -54, -184, 14886 -55, -244, 463 -56, -303, 444 -57, -361, 446 -58, -418, 516 -59, -473, 410 -60, -526, 400 -61, -578, 386 -62, -627, 370 -63, -674, 352 -64, -718, 372 -65, -759, 348 -66, -798, 342 -67, -834, 334 -68, -866, 326 -69, -895, 310 -70, -921, 274 -71, -943, 293 -72, -962, 285 -73, -977, 305 -74, -988, 1976 -75, -996, 230 -76, -1000, 236 -77, -1000, 236 -78, -996, 221 -79, -988, 215 -80, -977, 218 -81, -962, 216 -82, -943, 207 -83, -921, 192 -84, -895, 194 -85, -866, 194 -86, -834, 883 -87, -798, 176 -88, -759, 168 -89, -718, 163 -90, -674, 169 -91, -627, 169 -92, -578, 162 -93, -526, 150 -94, -473, 144 -95, -418, 150 -96, -361, 149 -97, -303, 142 -98, -244, 135 -99, -184, 133 -100, -123, 128 -101, -62, 128 -102, 0, 99 -103, 62, 118 -104, 123, 113 -105, 184, 105 -106, 244, 232 -107, 303, 106 -108, 361, 101 -109, 418, 96 -110, 473, 82 -111, 526, 87 -112, 578, 82 -113, 627, 80 -114, 674, 65 -115, 718, 56 -116, 759, 44 -117, 798, 77 -118, 834, 102926 -119, 866, 399 -120, 895, 207 -121, 921, 156 -122, 943, 131 -123, 962, 115 -124, 977, 106 -125, 988, 96 -126, 996, 88 -127, 1000, 78 -128, 1000, 92 -129, 996, 95 -130, 988, 84 -131, 977, 93 -132, 962, 88 -133, 943, 90 -134, 921, 68 -135, 895, 84 -136, 866, 86 -137, 834, 84 -138, 798, 230 -139, 759, 76 -140, 718, 76 -141, 674, 76 -142, 627, 72 -143, 578, 78 -144, 526, 74 -145, 473, 73 -146, 418, 75 -147, 361, 67 -148, 303, 73 -149, 244, 72 -150, 184, 355 -151, 123, 68 -152, 62, 65 -153, 0, 70 -154, -62, 77 -155, -123, 64 -156, -184, 61 -157, -244, 63 -158, -303, 59 -159, -361, 59 -160, -418, 63 -161, -473, 60 -162, -526, 61 -163, -578, 60 -164, -627, 61 -165, -674, 60 -166, -718, 47 -167, -759, 58 -168, -798, 56 -169, -834, 54 -170, -866, 105 -171, -895, 57 -172, -921, 55 -173, -943, 57 -174, -962, 55 -175, -977, 52 -176, -988, 53 -177, -996, 53 -178, -1000, 49 -179, -1000, 53 -180, -996, 54 -181, -988, 63 -182, -977, 2016 -183, -962, 45 -184, -943, 45 -185, -921, 45 -186, -895, 52 -187, -866, 48 -188, -834, 46 -189, -798, 50 -190, -759, 46 -191, -718, 43 -192, -674, 47 -193, -627, 50 -194, -578, 46 -195, -526, 45 -196, -473, 45 -197, -418, 44 -198, -361, 38 -199, -303, 43 -200, -244, 45 -201, -184, 49 -202, -123, 294 -203, -62, 40 -204, 0, 41 -205, 62, 41 -206, 123, 43 -207, 184, 42 -208, 244, 42 -209, 303, 43 -210, 361, 39 -211, 418, 42 -212, 473, 42 -213, 526, 42 -214, 578, 261 -215, 627, 44 -216, 674, 43 -217, 718, 44 -218, 759, 53 -219, 798, 43 -220, 834, 43 -221, 866, 43 -222, 895, 41 -223, 921, 46 -224, 943, 46 -225, 962, 45 -226, 977, 49 -227, 988, 45 -228, 996, 49 -229, 1000, 51 -230, 1000, 38 -231, 996, 59 -232, 988, 54 -233, 977, 58 -234, 962, 100 -235, 943, 61 -236, 921, 68 -237, 895, 73 -238, 866, 80 -239, 834, 88 -240, 798, 104 -241, 759, 125 -242, 718, 163 -243, 674, 232 -244, 627, 431 -245, 578, 1390 -246, 526, 646388 -247, 473, 688 -248, 418, 139 -249, 361, 48 -250, 303, 7 -251, 244, 21 -252, 184, 14 -253, 123, 13 -254, 62, 12 -255, 0, 16 -256, -62, 26 -257, -123, 26 -258, -184, 25 -259, -244, 26 -260, -303, 26 -261, -361, 26 -262, -418, 23 -263, -473, 28 -264, -526, 31 -265, -578, 45 -266, -627, 3940 -267, -674, 8 -268, -718, 12 -269, -759, 14 -270, -798, 13 -271, -834, 14 -272, -866, 17 -273, -895, 18 -274, -921, 18 -275, -943, 19 -276, -962, 18 -277, -977, 18 -278, -988, 117 -279, -996, 18 -280, -1000, 18 -281, -1000, 18 -282, -996, 23 -283, -988, 17 -284, -977, 18 -285, -962, 16 -286, -943, 17 -287, -921, 18 -288, -895, 18 -289, -866, 19 -290, -834, 18 -291, -798, 14 -292, -759, 19 -293, -718, 18 -294, -674, 13 -295, -627, 18 -296, -578, 18 -297, -526, 18 -298, -473, 34 -299, -418, 19 -300, -361, 19 -301, -303, 19 -302, -244, 17 -303, -184, 17 -304, -123, 18 -305, -62, 18 -306, 0, 17 -307, 62, 18 -308, 123, 19 -309, 184, 19 -310, 244, 760 -311, 303, 16 -312, 361, 15 -313, 418, 16 -314, 473, 17 -315, 526, 15 -316, 578, 16 -317, 627, 17 -318, 674, 17 -319, 718, 16 -320, 759, 17 -321, 798, 17 -322, 834, 16 -323, 866, 16 -324, 895, 16 -325, 921, 16 -326, 943, 14 -327, 962, 15 -328, 977, 15 -329, 988, 16 -330, 996, 98 -331, 1000, 7 -332, 1000, 19 -333, 996, 16 -334, 988, 17 -335, 977, 14 -336, 962, 16 -337, 943, 16 -338, 921, 16 -339, 895, 17 -340, 866, 16 -341, 834, 14 -342, 798, 93 -343, 759, 15 -344, 718, 14 -345, 674, 15 -346, 627, 16 -347, 578, 14 -348, 526, 13 -349, 473, 14 -350, 418, 12 -351, 361, 8 -352, 303, 20 -353, 244, 15 -354, 184, 15 -355, 123, 15 -356, 62, 15 -357, 0, 14 -358, -62, 11 -359, -123, 15 -360, -184, 13 -361, -244, 13 -362, -303, 25 -363, -361, 13 -364, -418, 13 -365, -473, 12 -366, -526, 12 -367, -578, 13 -368, -627, 11 -369, -674, 10 -370, -718, 11 -371, -759, 10 -372, -798, 4 -373, -834, 10 -374, -866, 18555 -375, -895, 70 -376, -921, 34 -377, -943, 27 -378, -962, 22 -379, -977, 21 -380, -988, 19 -381, -996, 20 -382, -1000, 16 -383, -1000, 15 -384, -996, 17 -385, -988, 16 -386, -977, 15 -387, -962, 17 -388, -943, 17 -389, -921, 18 -390, -895, 14 -391, -866, 16 -392, -834, 19 -393, -798, 18 -394, -759, 47 -395, -718, 17 -396, -674, 16 -397, -627, 16 -398, -578, 17 -399, -526, 18 -400, -473, 18 -401, -418, 17 -402, -361, 17 -403, -303, 17 -404, -244, 17 -405, -184, 18 -406, -123, 109 -407, -62, 17 -408, 0, 16 -409, 62, 17 -410, 123, 21 -411, 184, 17 -412, 244, 18 -413, 303, 17 -414, 361, 17 -415, 418, 18 -416, 473, 18 -417, 526, 17 -418, 578, 17 -419, 627, 18 -420, 674, 19 -421, 718, 20 -422, 759, 14 -423, 798, 18 -424, 834, 18 -425, 866, 18 -426, 895, 33 -427, 921, 18 -428, 943, 19 -429, 962, 18 -430, 977, 17 -431, 988, 17 -432, 996, 27 -433, 1000, 24 -434, 1000, 21 -435, 996, 22 -436, 988, 23 -437, 977, 25 -438, 962, 1032 -439, 943, 20 -440, 921, 20 -441, 895, 21 -442, 866, 27 -443, 834, 20 -444, 798, 21 -445, 759, 22 -446, 718, 21 -447, 674, 24 -448, 627, 24 -449, 578, 26 -450, 526, 24 -451, 473, 27 -452, 418, 32 -453, 361, 26 -454, 303, 23 -455, 244, 24 -456, 184, 27 -457, 123, 31 -458, 62, 164 -459, 0, 26 -460, -62, 28 -461, -123, 28 -462, -184, 29 -463, -244, 31 -464, -303, 33 -465, -361, 34 -466, -418, 35 -467, -473, 40 -468, -526, 38 -469, -578, 37 -470, -627, 329 -471, -674, 43 -472, -718, 40 -473, -759, 43 -474, -798, 58 -475, -834, 47 -476, -866, 50 -477, -895, 51 -478, -921, 58 -479, -943, 59 -480, -962, 65 -481, -977, 66 -482, -988, 74 -483, -996, 76 -484, -1000, 82 -485, -1000, 91 -486, -996, 80 -487, -988, 100 -488, -977, 117 -489, -962, 130 -490, -943, 186 -491, -921, 158 -492, -895, 180 -493, -866, 226 -494, -834, 254 -495, -798, 324 -496, -759, 410 -497, -718, 541 -498, -674, 796 -499, -627, 1308 -500, -578, 2740 -501, -526, 10251 -502, -473, 1262107 -503, -418, 6923 -504, -361, 1549 -505, -303, 571 -506, -244, 220 -507, -184, 132 -508, -123, 64 -509, -62, 28 -510, 0, 10 -511, 62, 4 -512, 123, 15 -513, 184, 15 -514, 244, 14 -515, 303, 15 -516, 361, 15 -517, 418, 14 -518, 473, 14 -519, 526, 19 -520, 578, 23 -521, 627, 40 -522, 674, 9215 -523, 718, 9 -524, 759, 6 -525, 798, 7 -526, 834, 8 -527, 866, 9 -528, 895, 9 -529, 921, 8 -530, 943, 9 -531, 962, 9 -532, 977, 8 -533, 988, 10 -534, 996, 69 -535, 1000, 9 -536, 1000, 9 -537, 996, 8 -538, 988, 11 -539, 977, 10 -540, 962, 10 -541, 943, 8 -542, 921, 9 -543, 895, 10 -544, 866, 10 -545, 834, 9 -546, 798, 9 -547, 759, 10 -548, 718, 10 -549, 674, 8 -550, 627, 9 -551, 578, 9 -552, 526, 9 -553, 473, 10 -554, 418, 19 -555, 361, 10 -556, 303, 11 -557, 244, 11 -558, 184, 11 -559, 123, 10 -560, 62, 10 -561, 0, 9 -562, -62, 10 -563, -123, 10 -564, -184, 10 -565, -244, 12 -566, -303, 473 -567, -361, 10 -568, -418, 9 -569, -473, 8 -570, -526, 12 -571, -578, 9 -572, -627, 12 -573, -674, 10 -574, -718, 9 -575, -759, 9 -576, -798, 10 -577, -834, 11 -578, -866, 9 -579, -895, 11 -580, -921, 11 -581, -943, 11 -582, -962, 8 -583, -977, 10 -584, -988, 10 -585, -996, 11 -586, -1000, 66 -587, -1000, 11 -588, -996, 10 -589, -988, 9 -590, -977, 11 -591, -962, 10 -592, -943, 15 -593, -921, 10 -594, -895, 8 -595, -866, 10 -596, -834, 10 -597, -798, 11 -598, -759, 65 -599, -718, 9 -600, -674, 10 -601, -627, 11 -602, -578, 11 -603, -526, 9 -604, -473, 10 -605, -418, 11 -606, -361, 9 -607, -303, 11 -608, -244, 10 -609, -184, 11 -610, -123, 10 -611, -62, 9 -612, 0, 10 -613, 62, 9 -614, 123, 8 -615, 184, 9 -616, 244, 9 -617, 303, 11 -618, 361, 19 -619, 418, 9 -620, 473, 9 -621, 526, 10 -622, 578, 8 -623, 627, 8 -624, 674, 8 -625, 718, 7 -626, 759, 7 -627, 798, 4 -628, 834, 4 -629, 866, 10 -630, 895, 14610 -631, 921, 55 -632, 943, 29 -633, 962, 20 -634, 977, 17 -635, 988, 14 -636, 996, 15 -637, 1000, 14 -638, 1000, 13 -639, 996, 11 -640, 988, 13 -641, 977, 13 -642, 962, 13 -643, 943, 13 -644, 921, 13 -645, 895, 13 -646, 866, 12 -647, 834, 12 -648, 798, 12 -649, 759, 14 -650, 718, 34 -651, 674, 9 -652, 627, 9 -653, 578, 21 -654, 526, 16 -655, 473, 14 -656, 418, 14 -657, 361, 14 -658, 303, 14 -659, 244, 14 -660, 184, 14 -661, 123, 15 -662, 62, 84 -663, 0, 15 -664, -62, 14 -665, -123, 15 -666, -184, 18 -667, -244, 14 -668, -303, 15 -669, -361, 16 -670, -418, 14 -671, -473, 15 -672, -526, 20 -673, -578, 7 -674, -627, 12 -675, -674, 14 -676, -718, 15 -677, -759, 14 -678, -798, 10 -679, -834, 13 -680, -866, 15 -681, -895, 15 -682, -921, 29 -683, -943, 15 -684, -962, 16 -685, -977, 16 -686, -988, 17 -687, -996, 16 -688, -1000, 17 -689, -1000, 16 -690, -996, 17 -691, -988, 18 -692, -977, 23 -693, -962, 12 -694, -943, 792 -695, -921, 15 -696, -895, 15 -697, -866, 15 -698, -834, 18 -699, -798, 15 -700, -759, 16 -701, -718, 17 -702, -674, 16 -703, -627, 17 -704, -578, 18 -705, -526, 17 -706, -473, 19 -707, -418, 18 -708, -361, 18 -709, -303, 19 -710, -244, 16 -711, -184, 17 -712, -123, 19 -713, -62, 23 -714, 0, 119 -715, 62, 18 -716, 123, 19 -717, 184, 19 -718, 244, 17 -719, 303, 21 -720, 361, 20 -721, 418, 20 -722, 473, 20 -723, 526, 22 -724, 578, 21 -725, 627, 23 -726, 674, 156 -727, 718, 20 -728, 759, 22 -729, 798, 23 -730, 834, 27 -731, 866, 23 -732, 895, 25 -733, 921, 18 -734, 943, 24 -735, 962, 27 -736, 977, 27 -737, 988, 27 -738, 996, 27 -739, 1000, 30 -740, 1000, 29 -741, 996, 31 -742, 988, 29 -743, 977, 31 -744, 962, 36 -745, 943, 38 -746, 921, 67 -747, 895, 42 -748, 866, 46 -749, 834, 52 -750, 798, 55 -751, 759, 64 -752, 718, 78 -753, 674, 98 -754, 627, 119 -755, 578, 189 -756, 526, 351 -757, 473, 1191 -758, 418, 569010 -759, 361, 631 -760, 303, 134 -761, 244, 47 -762, 184, 10 -763, 123, 17 -764, 62, 13 -765, 0, 11 -766, -62, 11 -767, -123, 13 -768, -184, 24 -769, -244, 22 -770, -303, 21 -771, -361, 24 -772, -418, 25 -773, -473, 27 -774, -526, 19 -775, -578, 26 -776, -627, 32 -777, -674, 48 -778, -718, 3595 -779, -759, 9 -780, -798, 13 -781, -834, 16 -782, -866, 16 -783, -895, 19 -784, -921, 19 -785, -943, 19 -786, -962, 19 -787, -977, 21 -788, -988, 22 -789, -996, 23 -790, -1000, 144 -791, -1000, 23 -792, -996, 22 -793, -988, 34 -794, -977, 21 -795, -962, 22 -796, -943, 22 -797, -921, 20 -798, -895, 23 -799, -866, 22 -800, -834, 24 -801, -798, 26 -802, -759, 24 -803, -718, 26 -804, -674, 25 -805, -627, 23 -806, -578, 21 -807, -526, 24 -808, -473, 25 -809, -418, 29 -810, -361, 40 -811, -303, 24 -812, -244, 26 -813, -184, 23 -814, -123, 26 -815, -62, 27 -816, 0, 28 -817, 62, 25 -818, 123, 31 -819, 184, 29 -820, 244, 31 -821, 303, 32 -822, 361, 1347 -823, 418, 26 -824, 473, 26 -825, 526, 25 -826, 578, 31 -827, 627, 26 -828, 674, 27 -829, 718, 25 -830, 759, 27 -831, 798, 29 -832, 834, 31 -833, 866, 29 -834, 895, 32 -835, 921, 32 -836, 943, 31 -837, 962, 34 -838, 977, 24 -839, 988, 33 -840, 996, 33 -841, 1000, 35 -842, 1000, 193 -843, 996, 30 -844, 988, 31 -845, 977, 34 -846, 962, 31 -847, 943, 33 -848, 921, 33 -849, 895, 34 -850, 866, 34 -851, 834, 35 -852, 798, 36 -853, 759, 35 -854, 718, 230 -855, 674, 32 -856, 627, 34 -857, 578, 35 -858, 526, 42 -859, 473, 36 -860, 418, 35 -861, 361, 36 -862, 303, 38 -863, 244, 38 -864, 184, 38 -865, 123, 39 -866, 62, 38 -867, 0, 36 -868, -62, 39 -869, -123, 38 -870, -184, 31 -871, -244, 40 -872, -303, 38 -873, -361, 38 -874, -418, 68 -875, -473, 41 -876, -526, 39 -877, -578, 35 -878, -627, 39 -879, -674, 35 -880, -718, 34 -881, -759, 31 -882, -798, 28 -883, -834, 23 -884, -866, 21 -885, -895, 49 -886, -921, 73240 -887, -943, 262 -888, -962, 134 -889, -977, 103 -890, -988, 85 -891, -996, 82 -892, -1000, 77 -893, -1000, 75 -894, -996, 60 -895, -988, 64 -896, -977, 67 -897, -962, 67 -898, -943, 67 -899, -921, 72 -900, -895, 71 -901, -866, 75 -902, -834, 58 -903, -798, 74 -904, -759, 78 -905, -718, 79 -906, -674, 184 -907, -627, 79 -908, -578, 81 -909, -526, 79 -910, -473, 81 -911, -418, 88 -912, -361, 90 -913, -303, 90 -914, -244, 80 -915, -184, 90 -916, -123, 91 -917, -62, 96 -918, 0, 649 -919, 62, 94 -920, 123, 95 -921, 184, 98 -922, 244, 111 -923, 303, 102 -924, 361, 104 -925, 418, 106 -926, 473, 103 -927, 526, 110 -928, 578, 116 -929, 627, 122 -930, 674, 119 -931, 718, 122 -932, 759, 128 -933, 798, 133 -934, 834, 85 -935, 866, 120 -936, 895, 129 -937, 921, 130 -938, 943, 217 -939, 962, 143 -940, 977, 149 -941, 988, 148 -942, 996, 155 -943, 1000, 161 -944, 1000, 166 -945, 996, 164 -946, 988, 171 -947, 977, 183 -948, 962, 195 -949, 943, 231 -950, 921, 10578 -951, 895, 173 -952, 866, 176 -953, 834, 184 -954, 798, 234 -955, 759, 190 -956, 718, 214 -957, 674, 211 -958, 627, 222 -959, 578, 226 -960, 526, 258 -961, 473, 266 -962, 418, 270 -963, 361, 281 -964, 303, 302 -965, 244, 309 -966, 184, 253 -967, 123, 315 -968, 62, 333 -969, 0, 362 -970, -62, 1713 -971, -123, 328 -972, -184, 369 -973, -244, 380 -974, -303, 376 -975, -361, 418 -976, -418, 447 -977, -473, 461 -978, -526, 490 -979, -578, 523 -980, -627, 544 -981, -674, 588 -982, -718, 5360 -983, -759, 626 -984, -798, 652 -985, -834, 692 -986, -866, 813 -987, -895, 780 -988, -921, 838 -989, -943, 879 -990, -962, 943 -991, -977, 1022 -992, -988, 1131 -993, -996, 1185 -994, -1000, 1370 -995, -1000, 1428 -996, -996, 1569 -997, -988, 1718 -998, -977, 1486 -999, -962, 2039 -1000, -943, 2341 -1001, -921, 2598 -1002, -895, 3162 -1003, -866, 3530 -1004, -834, 4107 -1005, -798, 4856 -1006, -759, 5951 -1007, -718, 7453 -1008, -674, 9738 -1009, -627, 13148 -1010, -578, 19483 -1011, -526, 32817 -1012, -473, 69678 -1013, -418, 264596 -1014, -361, 354996 -1015, -303, 185507 -1016, -244, 42489 -1017, -184, 16180 -1018, -123, 7601 -1019, -62, 3926 -1020, 0, 1991 -1021, 62, 933 -1022, 123, 435 -1023, 184, 117 +0, 1, 1.04933e+06 +1, 1.062, 0.269 +2, 1.123, 0.816 +3, 1.184, 1.747 +4, 1.244, 3.648 +5, 1.303, 7.062 +6, 1.361, 14.094 +7, 1.418, 29.067 +8, 1.473, 75.933 +9, 1.526, 330.542 +10, 1.578, 259542 +11, 1.627, 467.528 +12, 1.674, 122.474 +13, 1.718, 57.607 +14, 1.759, 34.084 +15, 1.798, 22.813 +16, 1.834, 16.9 +17, 1.866, 12.862 +18, 1.895, 10.319 +19, 1.921, 8.384 +20, 1.943, 7.07 +21, 1.962, 6.049 +22, 1.977, 5.659 +23, 1.988, 4.538 +24, 1.996, 4.017 +25, 2, 3.545 +26, 2, 3.072 +27, 1.996, 2.877 +28, 1.988, 2.631 +29, 1.977, 2.4 +30, 1.962, 2.255 +31, 1.943, 1.99 +32, 1.921, 1.9 +33, 1.895, 1.776 +34, 1.866, 1.64 +35, 1.834, 1.516 +36, 1.798, 1.449 +37, 1.759, 1.351 +38, 1.718, 1.222 +39, 1.674, 1.179 +40, 1.627, 1.13 +41, 1.578, 1.049 +42, 1.526, 1.211 +43, 1.473, 0.965 +44, 1.418, 0.907 +45, 1.361, 0.867 +46, 1.303, 0.825 +47, 1.244, 0.775 +48, 1.184, 0.75 +49, 1.123, 0.694 +50, 1.062, 0.655 +51, 1, 0.648 +52, 0.938, 0.644 +53, 0.877, 0.597 +54, 0.816, 0.686 +55, 0.756, 0.56 +56, 0.697, 0.54 +57, 0.639, 0.516 +58, 0.582, 0.491 +59, 0.527, 0.484 +60, 0.474, 0.475 +61, 0.422, 0.446 +62, 0.373, 0.447 +63, 0.326, 0.424 +64, 0.282, 0.412 +65, 0.241, 0.386 +66, 0.202, 0.38 +67, 0.166, 0.363 +68, 0.134, 0.361 +69, 0.105, 0.341 +70, 0.079, 0.342 +71, 0.057, 0.327 +72, 0.038, 0.32 +73, 0.023, 0.318 +74, 0.012, 0.366 +75, 0.004, 0.291 +76, 0, 0.289 +77, 0, 0.284 +78, 0.004, 0.266 +79, 0.012, 0.255 +80, 0.023, 0.26 +81, 0.038, 0.256 +82, 0.057, 0.248 +83, 0.079, 0.239 +84, 0.105, 0.234 +85, 0.134, 0.23 +86, 0.166, 0.255 +87, 0.202, 0.209 +88, 0.241, 0.209 +89, 0.282, 0.198 +90, 0.326, 0.176 +91, 0.373, 0.21 +92, 0.422, 0.209 +93, 0.474, 0.189 +94, 0.527, 0.189 +95, 0.582, 0.192 +96, 0.639, 0.181 +97, 0.697, 0.174 +98, 0.756, 0.17 +99, 0.816, 0.168 +100, 0.877, 0.164 +101, 0.938, 0.161 +102, 1, 0.15 +103, 1.062, 0.153 +104, 1.123, 0.153 +105, 1.184, 0.144 +106, 1.244, 0.173 +107, 1.303, 0.149 +108, 1.361, 0.14 +109, 1.418, 0.14 +110, 1.473, 0.131 +111, 1.526, 0.136 +112, 1.578, 0.135 +113, 1.627, 0.137 +114, 1.674, 0.127 +115, 1.718, 0.124 +116, 1.759, 0.126 +117, 1.798, 0.119 +118, 1.834, 0.121 +119, 1.866, 0.121 +120, 1.895, 0.116 +121, 1.921, 0.113 +122, 1.943, 0.107 +123, 1.962, 0.11 +124, 1.977, 0.108 +125, 1.988, 0.108 +126, 1.996, 0.105 +127, 2, 0.102 +128, 2, 0.101 +129, 1.996, 0.107 +130, 1.988, 0.089 +131, 1.977, 0.104 +132, 1.962, 0.098 +133, 1.943, 0.097 +134, 1.921, 0.093 +135, 1.895, 0.097 +136, 1.866, 0.093 +137, 1.834, 0.09 +138, 1.798, 0.091 +139, 1.759, 0.085 +140, 1.718, 0.087 +141, 1.674, 0.083 +142, 1.627, 0.087 +143, 1.578, 0.084 +144, 1.526, 0.082 +145, 1.473, 0.079 +146, 1.418, 0.078 +147, 1.361, 0.073 +148, 1.303, 0.077 +149, 1.244, 0.081 +150, 1.184, 0.088 +151, 1.123, 0.073 +152, 1.062, 0.074 +153, 1, 0.077 +154, 0.938, 0.065 +155, 0.877, 0.07 +156, 0.816, 0.073 +157, 0.756, 0.07 +158, 0.697, 0.069 +159, 0.639, 0.068 +160, 0.582, 0.068 +161, 0.527, 0.065 +162, 0.474, 0.065 +163, 0.422, 0.064 +164, 0.373, 0.065 +165, 0.326, 0.064 +166, 0.282, 0.06 +167, 0.241, 0.06 +168, 0.202, 0.061 +169, 0.166, 0.059 +170, 0.134, 0.071 +171, 0.105, 0.059 +172, 0.079, 0.059 +173, 0.057, 0.061 +174, 0.038, 0.053 +175, 0.023, 0.057 +176, 0.012, 0.056 +177, 0.004, 0.056 +178, 0, 0.053 +179, 0, 0.057 +180, 0.004, 0.053 +181, 0.012, 0.057 +182, 0.023, 0.067 +183, 0.038, 0.052 +184, 0.057, 0.052 +185, 0.079, 0.05 +186, 0.105, 0.051 +187, 0.134, 0.053 +188, 0.166, 0.049 +189, 0.202, 0.055 +190, 0.241, 0.047 +191, 0.282, 0.044 +192, 0.326, 0.048 +193, 0.373, 0.051 +194, 0.422, 0.048 +195, 0.474, 0.044 +196, 0.527, 0.047 +197, 0.582, 0.043 +198, 0.639, 0.044 +199, 0.697, 0.043 +200, 0.756, 0.045 +201, 0.816, 0.044 +202, 0.877, 0.051 +203, 0.938, 0.04 +204, 1, 0.044 +205, 1.062, 0.042 +206, 1.123, 0.042 +207, 1.184, 0.038 +208, 1.244, 0.044 +209, 1.303, 0.043 +210, 1.361, 0.044 +211, 1.418, 0.036 +212, 1.473, 0.039 +213, 1.526, 0.037 +214, 1.578, 0.046 +215, 1.627, 0.045 +216, 1.674, 0.038 +217, 1.718, 0.037 +218, 1.759, 0.038 +219, 1.798, 0.035 +220, 1.834, 0.037 +221, 1.866, 0.037 +222, 1.895, 0.036 +223, 1.921, 0.039 +224, 1.943, 0.036 +225, 1.962, 0.035 +226, 1.977, 0.035 +227, 1.988, 0.03 +228, 1.996, 0.035 +229, 2, 0.034 +230, 2, 0.032 +231, 1.996, 0.055 +232, 1.988, 0.035 +233, 1.977, 0.036 +234, 1.962, 0.041 +235, 1.943, 0.034 +236, 1.921, 0.033 +237, 1.895, 0.034 +238, 1.866, 0.033 +239, 1.834, 0.033 +240, 1.798, 0.033 +241, 1.759, 0.032 +242, 1.718, 0.034 +243, 1.674, 0.032 +244, 1.627, 0.033 +245, 1.578, 0.031 +246, 1.526, 0.065 +247, 1.473, 0.035 +248, 1.418, 0.03 +249, 1.361, 0.03 +250, 1.303, 0.027 +251, 1.244, 0.032 +252, 1.184, 0.029 +253, 1.123, 0.03 +254, 1.062, 0.03 +255, 1, 0.027 +256, 0.938, 0.03 +257, 0.877, 0.029 +258, 0.816, 0.028 +259, 0.756, 0.027 +260, 0.697, 0.028 +261, 0.639, 0.028 +262, 0.582, 0.026 +263, 0.527, 0.028 +264, 0.474, 0.028 +265, 0.422, 0.029 +266, 0.373, 0.059 +267, 0.326, 0.025 +268, 0.282, 0.027 +269, 0.241, 0.026 +270, 0.202, 0.03 +271, 0.166, 0.027 +272, 0.134, 0.027 +273, 0.105, 0.028 +274, 0.079, 0.025 +275, 0.057, 0.029 +276, 0.038, 0.026 +277, 0.023, 0.025 +278, 0.012, 0.031 +279, 0.004, 0.026 +280, 0, 0.025 +281, 0, 0.025 +282, 0.004, 0.026 +283, 0.012, 0.026 +284, 0.023, 0.024 +285, 0.038, 0.023 +286, 0.057, 0.024 +287, 0.079, 0.025 +288, 0.105, 0.024 +289, 0.134, 0.024 +290, 0.166, 0.024 +291, 0.202, 0.016 +292, 0.241, 0.026 +293, 0.282, 0.022 +294, 0.326, 0.022 +295, 0.373, 0.025 +296, 0.422, 0.023 +297, 0.474, 0.023 +298, 0.527, 0.029 +299, 0.582, 0.024 +300, 0.639, 0.024 +301, 0.697, 0.022 +302, 0.756, 0.024 +303, 0.816, 0.022 +304, 0.877, 0.023 +305, 0.938, 0.022 +306, 1, 0.023 +307, 1.062, 0.022 +308, 1.123, 0.021 +309, 1.184, 0.02 +310, 1.244, 0.028 +311, 1.303, 0.024 +312, 1.361, 0.021 +313, 1.418, 0.022 +314, 1.473, 0.021 +315, 1.526, 0.021 +316, 1.578, 0.021 +317, 1.627, 0.021 +318, 1.674, 0.02 +319, 1.718, 0.019 +320, 1.759, 0.021 +321, 1.798, 0.021 +322, 1.834, 0.019 +323, 1.866, 0.021 +324, 1.895, 0.021 +325, 1.921, 0.02 +326, 1.943, 0.019 +327, 1.962, 0.019 +328, 1.977, 0.019 +329, 1.988, 0.018 +330, 1.996, 0.023 +331, 2, 0.012 +332, 2, 0.025 +333, 1.996, 0.02 +334, 1.988, 0.02 +335, 1.977, 0.019 +336, 1.962, 0.02 +337, 1.943, 0.02 +338, 1.921, 0.02 +339, 1.895, 0.019 +340, 1.866, 0.019 +341, 1.834, 0.02 +342, 1.798, 0.023 +343, 1.759, 0.02 +344, 1.718, 0.02 +345, 1.674, 0.018 +346, 1.627, 0.019 +347, 1.578, 0.018 +348, 1.526, 0.019 +349, 1.473, 0.019 +350, 1.418, 0.016 +351, 1.361, 0.01 +352, 1.303, 0.026 +353, 1.244, 0.02 +354, 1.184, 0.019 +355, 1.123, 0.022 +356, 1.062, 0.02 +357, 1, 0.02 +358, 0.938, 0.019 +359, 0.877, 0.02 +360, 0.816, 0.019 +361, 0.756, 0.019 +362, 0.697, 0.023 +363, 0.639, 0.019 +364, 0.582, 0.018 +365, 0.527, 0.019 +366, 0.474, 0.018 +367, 0.422, 0.018 +368, 0.373, 0.019 +369, 0.326, 0.019 +370, 0.282, 0.022 +371, 0.241, 0.026 +372, 0.202, 0.011 +373, 0.166, 0.017 +374, 0.134, 0.016 +375, 0.105, 0.018 +376, 0.079, 0.016 +377, 0.057, 0.018 +378, 0.038, 0.015 +379, 0.023, 0.017 +380, 0.012, 0.016 +381, 0.004, 0.018 +382, 0, 0.017 +383, 0, 0.017 +384, 0.004, 0.017 +385, 0.012, 0.016 +386, 0.023, 0.016 +387, 0.038, 0.016 +388, 0.057, 0.017 +389, 0.079, 0.017 +390, 0.105, 0.016 +391, 0.134, 0.016 +392, 0.166, 0.018 +393, 0.202, 0.019 +394, 0.241, 0.017 +395, 0.282, 0.016 +396, 0.326, 0.017 +397, 0.373, 0.015 +398, 0.422, 0.015 +399, 0.474, 0.017 +400, 0.527, 0.016 +401, 0.582, 0.015 +402, 0.639, 0.015 +403, 0.697, 0.018 +404, 0.756, 0.016 +405, 0.816, 0.015 +406, 0.877, 0.019 +407, 0.938, 0.017 +408, 1, 0.016 +409, 1.062, 0.016 +410, 1.123, 0.015 +411, 1.184, 0.015 +412, 1.244, 0.016 +413, 1.303, 0.016 +414, 1.361, 0.015 +415, 1.418, 0.017 +416, 1.473, 0.017 +417, 1.526, 0.016 +418, 1.578, 0.016 +419, 1.627, 0.017 +420, 1.674, 0.016 +421, 1.718, 0.016 +422, 1.759, 0.016 +423, 1.798, 0.015 +424, 1.834, 0.016 +425, 1.866, 0.016 +426, 1.895, 0.018 +427, 1.921, 0.016 +428, 1.943, 0.015 +429, 1.962, 0.016 +430, 1.977, 0.014 +431, 1.988, 0.015 +432, 1.996, 0.021 +433, 2, 0.019 +434, 2, 0.017 +435, 1.996, 0.014 +436, 1.988, 0.016 +437, 1.977, 0.015 +438, 1.962, 0.018 +439, 1.943, 0.015 +440, 1.921, 0.015 +441, 1.895, 0.017 +442, 1.866, 0.014 +443, 1.834, 0.015 +444, 1.798, 0.015 +445, 1.759, 0.015 +446, 1.718, 0.016 +447, 1.674, 0.016 +448, 1.627, 0.015 +449, 1.578, 0.015 +450, 1.526, 0.015 +451, 1.473, 0.015 +452, 1.418, 0.017 +453, 1.361, 0.014 +454, 1.303, 0.015 +455, 1.244, 0.014 +456, 1.184, 0.015 +457, 1.123, 0.016 +458, 1.062, 0.017 +459, 1, 0.016 +460, 0.938, 0.016 +461, 0.877, 0.014 +462, 0.816, 0.014 +463, 0.756, 0.014 +464, 0.697, 0.016 +465, 0.639, 0.016 +466, 0.582, 0.015 +467, 0.527, 0.017 +468, 0.474, 0.015 +469, 0.422, 0.015 +470, 0.373, 0.017 +471, 0.326, 0.015 +472, 0.282, 0.013 +473, 0.241, 0.014 +474, 0.202, 0.015 +475, 0.166, 0.012 +476, 0.134, 0.015 +477, 0.105, 0.015 +478, 0.079, 0.015 +479, 0.057, 0.015 +480, 0.038, 0.015 +481, 0.023, 0.015 +482, 0.012, 0.015 +483, 0.004, 0.014 +484, 0, 0.015 +485, 0, 0.015 +486, 0.004, 0.014 +487, 0.012, 0.014 +488, 0.023, 0.015 +489, 0.038, 0.016 +490, 0.057, 0.019 +491, 0.079, 0.015 +492, 0.105, 0.014 +493, 0.134, 0.016 +494, 0.166, 0.015 +495, 0.202, 0.014 +496, 0.241, 0.015 +497, 0.282, 0.014 +498, 0.326, 0.013 +499, 0.373, 0.014 +500, 0.422, 0.016 +501, 0.474, 0.012 +502, 0.527, 0.04 +503, 0.582, 0.015 +504, 0.639, 0.014 +505, 0.697, 0.014 +506, 0.756, 0.015 +507, 0.816, 0.014 +508, 0.877, 0.015 +509, 0.938, 0.015 +510, 1, 0.015 +511, 1.062, 0.015 +512, 1.123, 0.015 +513, 1.184, 0.015 +514, 1.244, 0.015 +515, 1.303, 0.015 +516, 1.361, 0.015 +517, 1.418, 0.014 +518, 1.473, 0.015 +519, 1.526, 0.014 +520, 1.578, 0.014 +521, 1.627, 0.015 +522, 1.674, 0.04 +523, 1.718, 0.012 +524, 1.759, 0.016 +525, 1.798, 0.014 +526, 1.834, 0.013 +527, 1.866, 0.014 +528, 1.895, 0.015 +529, 1.921, 0.014 +530, 1.943, 0.015 +531, 1.962, 0.016 +532, 1.977, 0.014 +533, 1.988, 0.015 +534, 1.996, 0.019 +535, 2, 0.016 +536, 2, 0.015 +537, 1.996, 0.014 +538, 1.988, 0.014 +539, 1.977, 0.015 +540, 1.962, 0.015 +541, 1.943, 0.014 +542, 1.921, 0.015 +543, 1.895, 0.015 +544, 1.866, 0.015 +545, 1.834, 0.015 +546, 1.798, 0.015 +547, 1.759, 0.015 +548, 1.718, 0.015 +549, 1.674, 0.012 +550, 1.627, 0.015 +551, 1.578, 0.014 +552, 1.526, 0.013 +553, 1.473, 0.015 +554, 1.418, 0.017 +555, 1.361, 0.015 +556, 1.303, 0.015 +557, 1.244, 0.017 +558, 1.184, 0.015 +559, 1.123, 0.016 +560, 1.062, 0.016 +561, 1, 0.014 +562, 0.938, 0.014 +563, 0.877, 0.014 +564, 0.816, 0.016 +565, 0.756, 0.016 +566, 0.697, 0.017 +567, 0.639, 0.016 +568, 0.582, 0.015 +569, 0.527, 0.014 +570, 0.474, 0.015 +571, 0.422, 0.014 +572, 0.373, 0.017 +573, 0.326, 0.015 +574, 0.282, 0.015 +575, 0.241, 0.015 +576, 0.202, 0.015 +577, 0.166, 0.016 +578, 0.134, 0.016 +579, 0.105, 0.015 +580, 0.079, 0.015 +581, 0.057, 0.015 +582, 0.038, 0.014 +583, 0.023, 0.017 +584, 0.012, 0.015 +585, 0.004, 0.015 +586, 0, 0.018 +587, 0, 0.015 +588, 0.004, 0.016 +589, 0.012, 0.014 +590, 0.023, 0.017 +591, 0.038, 0.019 +592, 0.057, 0.021 +593, 0.079, 0.015 +594, 0.105, 0.014 +595, 0.134, 0.016 +596, 0.166, 0.015 +597, 0.202, 0.016 +598, 0.241, 0.018 +599, 0.282, 0.016 +600, 0.326, 0.016 +601, 0.373, 0.015 +602, 0.422, 0.016 +603, 0.474, 0.016 +604, 0.527, 0.016 +605, 0.582, 0.017 +606, 0.639, 0.016 +607, 0.697, 0.016 +608, 0.756, 0.017 +609, 0.816, 0.017 +610, 0.877, 0.015 +611, 0.938, 0.016 +612, 1, 0.016 +613, 1.062, 0.015 +614, 1.123, 0.015 +615, 1.184, 0.016 +616, 1.244, 0.016 +617, 1.303, 0.017 +618, 1.361, 0.019 +619, 1.418, 0.015 +620, 1.473, 0.016 +621, 1.526, 0.018 +622, 1.578, 0.015 +623, 1.627, 0.015 +624, 1.674, 0.016 +625, 1.718, 0.017 +626, 1.759, 0.015 +627, 1.798, 0.015 +628, 1.834, 0.017 +629, 1.866, 0.016 +630, 1.895, 0.017 +631, 1.921, 0.019 +632, 1.943, 0.018 +633, 1.962, 0.016 +634, 1.977, 0.016 +635, 1.988, 0.017 +636, 1.996, 0.017 +637, 2, 0.016 +638, 2, 0.016 +639, 1.996, 0.016 +640, 1.988, 0.017 +641, 1.977, 0.017 +642, 1.962, 0.017 +643, 1.943, 0.018 +644, 1.921, 0.016 +645, 1.895, 0.017 +646, 1.866, 0.015 +647, 1.834, 0.018 +648, 1.798, 0.016 +649, 1.759, 0.018 +650, 1.718, 0.016 +651, 1.674, 0.017 +652, 1.627, 0.011 +653, 1.578, 0.026 +654, 1.526, 0.022 +655, 1.473, 0.019 +656, 1.418, 0.019 +657, 1.361, 0.018 +658, 1.303, 0.018 +659, 1.244, 0.019 +660, 1.184, 0.018 +661, 1.123, 0.019 +662, 1.062, 0.023 +663, 1, 0.019 +664, 0.938, 0.019 +665, 0.877, 0.02 +666, 0.816, 0.019 +667, 0.756, 0.02 +668, 0.697, 0.02 +669, 0.639, 0.022 +670, 0.582, 0.019 +671, 0.527, 0.02 +672, 0.474, 0.026 +673, 0.422, 0.01 +674, 0.373, 0.016 +675, 0.326, 0.019 +676, 0.282, 0.019 +677, 0.241, 0.018 +678, 0.202, 0.019 +679, 0.166, 0.018 +680, 0.134, 0.02 +681, 0.105, 0.02 +682, 0.079, 0.023 +683, 0.057, 0.02 +684, 0.038, 0.019 +685, 0.023, 0.019 +686, 0.012, 0.02 +687, 0.004, 0.02 +688, 0, 0.02 +689, 0, 0.019 +690, 0.004, 0.02 +691, 0.012, 0.02 +692, 0.023, 0.025 +693, 0.038, 0.012 +694, 0.057, 0.023 +695, 0.079, 0.018 +696, 0.105, 0.019 +697, 0.134, 0.019 +698, 0.166, 0.019 +699, 0.202, 0.02 +700, 0.241, 0.021 +701, 0.282, 0.021 +702, 0.326, 0.019 +703, 0.373, 0.021 +704, 0.422, 0.021 +705, 0.474, 0.019 +706, 0.527, 0.02 +707, 0.582, 0.021 +708, 0.639, 0.021 +709, 0.697, 0.021 +710, 0.756, 0.021 +711, 0.816, 0.022 +712, 0.877, 0.021 +713, 0.938, 0.024 +714, 1, 0.028 +715, 1.062, 0.02 +716, 1.123, 0.021 +717, 1.184, 0.022 +718, 1.244, 0.023 +719, 1.303, 0.022 +720, 1.361, 0.023 +721, 1.418, 0.022 +722, 1.473, 0.024 +723, 1.526, 0.022 +724, 1.578, 0.024 +725, 1.627, 0.024 +726, 1.674, 0.029 +727, 1.718, 0.023 +728, 1.759, 0.023 +729, 1.798, 0.025 +730, 1.834, 0.022 +731, 1.866, 0.022 +732, 1.895, 0.026 +733, 1.921, 0.016 +734, 1.943, 0.024 +735, 1.962, 0.024 +736, 1.977, 0.024 +737, 1.988, 0.025 +738, 1.996, 0.024 +739, 2, 0.023 +740, 2, 0.024 +741, 1.996, 0.026 +742, 1.988, 0.026 +743, 1.977, 0.025 +744, 1.962, 0.025 +745, 1.943, 0.026 +746, 1.921, 0.031 +747, 1.895, 0.025 +748, 1.866, 0.026 +749, 1.834, 0.029 +750, 1.798, 0.025 +751, 1.759, 0.028 +752, 1.718, 0.027 +753, 1.674, 0.027 +754, 1.627, 0.03 +755, 1.578, 0.026 +756, 1.526, 0.027 +757, 1.473, 0.025 +758, 1.418, 0.059 +759, 1.361, 0.029 +760, 1.303, 0.028 +761, 1.244, 0.028 +762, 1.184, 0.026 +763, 1.123, 0.028 +764, 1.062, 0.028 +765, 1, 0.027 +766, 0.938, 0.028 +767, 0.877, 0.029 +768, 0.816, 0.03 +769, 0.756, 0.027 +770, 0.697, 0.03 +771, 0.639, 0.03 +772, 0.582, 0.029 +773, 0.527, 0.032 +774, 0.474, 0.027 +775, 0.422, 0.03 +776, 0.373, 0.03 +777, 0.326, 0.035 +778, 0.282, 0.065 +779, 0.241, 0.031 +780, 0.202, 0.033 +781, 0.166, 0.032 +782, 0.134, 0.034 +783, 0.105, 0.032 +784, 0.079, 0.033 +785, 0.057, 0.033 +786, 0.038, 0.033 +787, 0.023, 0.034 +788, 0.012, 0.033 +789, 0.004, 0.034 +790, 0, 0.041 +791, 0, 0.036 +792, 0.004, 0.035 +793, 0.012, 0.055 +794, 0.023, 0.032 +795, 0.038, 0.034 +796, 0.057, 0.035 +797, 0.079, 0.03 +798, 0.105, 0.035 +799, 0.134, 0.035 +800, 0.166, 0.036 +801, 0.202, 0.039 +802, 0.241, 0.036 +803, 0.282, 0.037 +804, 0.326, 0.037 +805, 0.373, 0.035 +806, 0.422, 0.038 +807, 0.474, 0.037 +808, 0.527, 0.038 +809, 0.582, 0.045 +810, 0.639, 0.046 +811, 0.697, 0.037 +812, 0.756, 0.039 +813, 0.816, 0.036 +814, 0.877, 0.044 +815, 0.938, 0.043 +816, 1, 0.044 +817, 1.062, 0.038 +818, 1.123, 0.042 +819, 1.184, 0.042 +820, 1.244, 0.044 +821, 1.303, 0.04 +822, 1.361, 0.051 +823, 1.418, 0.044 +824, 1.473, 0.045 +825, 1.526, 0.043 +826, 1.578, 0.044 +827, 1.627, 0.043 +828, 1.674, 0.047 +829, 1.718, 0.044 +830, 1.759, 0.048 +831, 1.798, 0.051 +832, 1.834, 0.048 +833, 1.866, 0.044 +834, 1.895, 0.047 +835, 1.921, 0.055 +836, 1.943, 0.049 +837, 1.962, 0.053 +838, 1.977, 0.051 +839, 1.988, 0.05 +840, 1.996, 0.052 +841, 2, 0.052 +842, 2, 0.067 +843, 1.996, 0.057 +844, 1.988, 0.053 +845, 1.977, 0.057 +846, 1.962, 0.053 +847, 1.943, 0.056 +848, 1.921, 0.056 +849, 1.895, 0.057 +850, 1.866, 0.053 +851, 1.834, 0.061 +852, 1.798, 0.059 +853, 1.759, 0.059 +854, 1.718, 0.071 +855, 1.674, 0.059 +856, 1.627, 0.061 +857, 1.578, 0.06 +858, 1.526, 0.06 +859, 1.473, 0.064 +860, 1.418, 0.065 +861, 1.361, 0.064 +862, 1.303, 0.065 +863, 1.244, 0.065 +864, 1.184, 0.068 +865, 1.123, 0.068 +866, 1.062, 0.069 +867, 1, 0.07 +868, 0.938, 0.073 +869, 0.877, 0.07 +870, 0.816, 0.065 +871, 0.756, 0.077 +872, 0.697, 0.074 +873, 0.639, 0.073 +874, 0.582, 0.088 +875, 0.527, 0.081 +876, 0.474, 0.077 +877, 0.422, 0.073 +878, 0.373, 0.078 +879, 0.326, 0.079 +880, 0.282, 0.082 +881, 0.241, 0.084 +882, 0.202, 0.087 +883, 0.166, 0.083 +884, 0.134, 0.087 +885, 0.105, 0.085 +886, 0.079, 0.091 +887, 0.057, 0.09 +888, 0.038, 0.093 +889, 0.023, 0.097 +890, 0.012, 0.093 +891, 0.004, 0.097 +892, 0, 0.098 +893, 0, 0.104 +894, 0.004, 0.089 +895, 0.012, 0.107 +896, 0.023, 0.101 +897, 0.038, 0.102 +898, 0.057, 0.105 +899, 0.079, 0.108 +900, 0.105, 0.108 +901, 0.134, 0.11 +902, 0.166, 0.107 +903, 0.202, 0.113 +904, 0.241, 0.116 +905, 0.282, 0.121 +906, 0.326, 0.121 +907, 0.373, 0.119 +908, 0.422, 0.126 +909, 0.474, 0.124 +910, 0.527, 0.127 +911, 0.582, 0.137 +912, 0.639, 0.135 +913, 0.697, 0.136 +914, 0.756, 0.131 +915, 0.816, 0.14 +916, 0.877, 0.14 +917, 0.938, 0.149 +918, 1, 0.173 +919, 1.062, 0.144 +920, 1.123, 0.153 +921, 1.184, 0.153 +922, 1.244, 0.15 +923, 1.303, 0.161 +924, 1.361, 0.164 +925, 1.418, 0.168 +926, 1.473, 0.17 +927, 1.526, 0.174 +928, 1.578, 0.181 +929, 1.627, 0.192 +930, 1.674, 0.189 +931, 1.718, 0.189 +932, 1.759, 0.209 +933, 1.798, 0.21 +934, 1.834, 0.176 +935, 1.866, 0.198 +936, 1.895, 0.209 +937, 1.921, 0.209 +938, 1.943, 0.255 +939, 1.962, 0.23 +940, 1.977, 0.234 +941, 1.988, 0.239 +942, 1.996, 0.248 +943, 2, 0.256 +944, 2, 0.26 +945, 1.996, 0.255 +946, 1.988, 0.266 +947, 1.977, 0.284 +948, 1.962, 0.289 +949, 1.943, 0.291 +950, 1.921, 0.366 +951, 1.895, 0.318 +952, 1.866, 0.32 +953, 1.834, 0.327 +954, 1.798, 0.342 +955, 1.759, 0.341 +956, 1.718, 0.361 +957, 1.674, 0.363 +958, 1.627, 0.38 +959, 1.578, 0.386 +960, 1.526, 0.412 +961, 1.473, 0.424 +962, 1.418, 0.447 +963, 1.361, 0.446 +964, 1.303, 0.475 +965, 1.244, 0.484 +966, 1.184, 0.491 +967, 1.123, 0.516 +968, 1.062, 0.54 +969, 1, 0.56 +970, 0.938, 0.686 +971, 0.877, 0.597 +972, 0.816, 0.644 +973, 0.756, 0.648 +974, 0.697, 0.655 +975, 0.639, 0.694 +976, 0.582, 0.75 +977, 0.527, 0.775 +978, 0.474, 0.825 +979, 0.422, 0.867 +980, 0.373, 0.907 +981, 0.326, 0.965 +982, 0.282, 1.211 +983, 0.241, 1.049 +984, 0.202, 1.13 +985, 0.166, 1.179 +986, 0.134, 1.222 +987, 0.105, 1.351 +988, 0.079, 1.449 +989, 0.057, 1.516 +990, 0.038, 1.64 +991, 0.023, 1.776 +992, 0.012, 1.9 +993, 0.004, 1.99 +994, 0, 2.255 +995, 0, 2.4 +996, 0.004, 2.631 +997, 0.012, 2.877 +998, 0.023, 3.072 +999, 0.038, 3.545 +1000, 0.057, 4.017 +1001, 0.079, 4.538 +1002, 0.105, 5.659 +1003, 0.134, 6.049 +1004, 0.166, 7.07 +1005, 0.202, 8.384 +1006, 0.241, 10.319 +1007, 0.282, 12.862 +1008, 0.326, 16.9 +1009, 0.373, 22.813 +1010, 0.422, 34.084 +1011, 0.474, 57.607 +1012, 0.527, 122.474 +1013, 0.582, 467.528 +1014, 0.639, 259542 +1015, 0.697, 330.542 +1016, 0.756, 75.933 +1017, 0.816, 29.067 +1018, 0.877, 14.094 +1019, 0.938, 7.062 +1020, 1, 3.648 +1021, 1.062, 1.747 +1022, 1.123, 0.816 +1023, 1.184, 0.269