├── .gitattributes ├── README.md ├── arm_rfft_split_f32.c ├── atan2_fast.c ├── effect_phaseVocoder.cpp ├── effect_phaseVocoder.h ├── examples ├── PhaseVocoderFemaleVoiceDryMix │ ├── AudioSampleBurning_in_my_soul.cpp │ ├── AudioSampleBurning_in_my_soul.h │ ├── AudioSampleDo_what_you_want_to_do.cpp │ ├── AudioSampleDo_what_you_want_to_do.h │ └── PhaseVocoderFemaleVoiceDryMix.ino └── PhaseVocoderFemaleVoiceWetMix │ ├── AudioSampleBurning_in_my_soul.cpp │ ├── AudioSampleBurning_in_my_soul.h │ ├── AudioSampleDo_what_you_want_to_do.cpp │ ├── AudioSampleDo_what_you_want_to_do.h │ └── PhaseVocoderFemaleVoiceWetMix.ino ├── keywords.txt ├── library.properties ├── revision.md ├── twiddle_coef.c └── windows.c /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AudioEffectPhaseVocoder v0.0.2 2 | 3 | --- 4 | Phase Vocoder Teensy Audio Object 5 | --- 6 | This is a work in progress, the current iteration might not work or work as expected. 7 | Works with Teensy-3.6(180Mhz)/4 using the Audio Library. 8 | -------------------------------------------------------------------------------- /arm_rfft_split_f32.c: -------------------------------------------------------------------------------- 1 | #include "Arduino.h" 2 | //-------------------------------------------------------------- 3 | void split_rfft_f32 ( 4 | float * pSrc, 5 | uint32_t fftLen, 6 | const float * pATable, 7 | const float * pBTable, 8 | float * pDst) 9 | { 10 | uint32_t i; /* Loop Counter */ 11 | float outR, outI; /* Temporary variables for output */ 12 | const float *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ 13 | float CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ 14 | float *pDst1 = &pDst[2], *pDst2 = &pDst[(4u * fftLen) - 1u]; /* temp pointers for output buffer */ 15 | float *pSrc1 = &pSrc[2], *pSrc2 = &pSrc[(2u * fftLen) - 1u]; /* temp pointers for input buffer */ 16 | 17 | /* Init coefficient pointers */ 18 | pCoefA = &pATable[2u]; 19 | pCoefB = &pBTable[2u]; 20 | 21 | i = fftLen - 1u; 22 | 23 | while (i > 0u) { 24 | /* 25 | outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] 26 | + pSrc[2 * n - 2 * i] * pBTable[2 * i] + 27 | pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); 28 | */ 29 | 30 | /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + 31 | pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - 32 | pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */ 33 | 34 | /* read pATable[2 * i] */ 35 | CoefA1 = *pCoefA++; 36 | /* pATable[2 * i + 1] */ 37 | CoefA2 = *pCoefA; 38 | 39 | /* pSrc[2 * i] * pATable[2 * i] */ 40 | outR = *pSrc1 * CoefA1; 41 | /* pSrc[2 * i] * CoefA2 */ 42 | outI = *pSrc1++ * CoefA2; 43 | 44 | /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */ 45 | outR -= (*pSrc1 + *pSrc2) * CoefA2; 46 | /* pSrc[2 * i + 1] * CoefA1 */ 47 | outI += *pSrc1++ * CoefA1; 48 | 49 | CoefB1 = *pCoefB; 50 | 51 | /* pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */ 52 | outI -= *pSrc2-- * CoefB1; 53 | /* pSrc[2 * fftLen - 2 * i] * CoefA2 */ 54 | outI -= *pSrc2 * CoefA2; 55 | 56 | /* pSrc[2 * fftLen - 2 * i] * CoefB1 */ 57 | outR += *pSrc2-- * CoefB1; 58 | 59 | /* write output */ 60 | *pDst1++ = outR / 2; 61 | *pDst1++ = outI / 2; 62 | 63 | /* write complex conjugate output */ 64 | *pDst2-- = -outI / 2; 65 | *pDst2-- = outR / 2; 66 | 67 | /* update coefficient pointer */ 68 | pCoefB = pCoefB + (2u); 69 | pCoefA = pCoefA + (2u - 1u); 70 | 71 | i--; 72 | 73 | } 74 | 75 | pDst[2u * fftLen] = pSrc[0] - pSrc[1]; 76 | pDst[(2u * fftLen) + 1u] = 0.0f; 77 | 78 | pDst[0] = pSrc[0] + pSrc[1]; 79 | pDst[1] = 0.0f; 80 | 81 | } 82 | 83 | //-------------------------------------------------------------- 84 | void split_rifft_f32 ( 85 | float * pSrc, 86 | uint32_t fftLen, 87 | const float * pATable, 88 | const float * pBTable, 89 | float * pDst) 90 | { 91 | float outR, outI; /* Temporary variables for output */ 92 | const float *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ 93 | float CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ 94 | float *pSrc1 = &pSrc[0], *pSrc2 = &pSrc[(2u * fftLen) + 1u]; 95 | 96 | pCoefA = &pATable[0]; 97 | pCoefB = &pBTable[0]; 98 | 99 | while (fftLen > 0u) 100 | { 101 | /* 102 | outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + 103 | pIn[2 * n - 2 * i] * pBTable[2 * i] - 104 | pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); 105 | outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - 106 | pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - 107 | pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); 108 | */ 109 | 110 | CoefA1 = *pCoefA++; 111 | CoefA2 = *pCoefA; 112 | 113 | /* outR = (pSrc[2 * i] * CoefA1 */ 114 | outR = *pSrc1 * CoefA1; 115 | 116 | /* - pSrc[2 * i] * CoefA2 */ 117 | outI = -(*pSrc1++) * CoefA2; 118 | 119 | /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */ 120 | outR += (*pSrc1 + *pSrc2) * CoefA2; 121 | 122 | /* pSrc[2 * i + 1] * CoefA1 */ 123 | outI += (*pSrc1++) * CoefA1; 124 | 125 | CoefB1 = *pCoefB; 126 | 127 | /* - pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */ 128 | outI -= *pSrc2-- * CoefB1; 129 | 130 | /* pSrc[2 * fftLen - 2 * i] * CoefB1 */ 131 | outR += *pSrc2 * CoefB1; 132 | //outR = ((CoefB1 + CoefA2) * (*pSrc2) + CoefA2 * (*pSrc1) + CoefA1 * (*pSrc1)) / 2; 133 | 134 | /* pSrc[2 * fftLen - 2 * i] * CoefA2 */ 135 | outI += *pSrc2-- * CoefA2; 136 | 137 | //outR = ((CoefB1 + CoefA2) * (*pSrc2) + (CoefA2 + CoefA1) * (*pSrc1)) / 2; 138 | 139 | /* write output */ 140 | *pDst++ = outR / 2; 141 | *pDst++ = outI / 2; 142 | 143 | /* update coefficient pointer */ 144 | pCoefB = pCoefB + (2u); 145 | pCoefA = pCoefA + (2u - 1u); 146 | 147 | /* Decrement loop count */ 148 | fftLen--; 149 | } 150 | 151 | } 152 | -------------------------------------------------------------------------------- /atan2_fast.c: -------------------------------------------------------------------------------- 1 | /*****************************************************************/ 2 | //https://gist.github.com/volkansalma/2972237#file-atan2_approximation-c 3 | #include "Arduino.h" 4 | #define PIBY2_FLOAT PI/2.0f 5 | 6 | // |error| < 0.005 7 | float atan2_fast( float y, float x ) { 8 | if ( x == 0.0f ) { 9 | if ( y > 0.0f ) return PIBY2_FLOAT; 10 | if ( y == 0.0f ) return 0.0f; 11 | return -PIBY2_FLOAT; 12 | } 13 | float atan; 14 | float z = y / x; 15 | if ( fabs( z ) < 1.0f ) { 16 | atan = z / (1.0f + 0.28f * z * z); 17 | if ( x < 0.0f ) { 18 | if ( y < 0.0f ) return atan - PI; 19 | return atan + PI; 20 | } 21 | } 22 | else { 23 | atan = PIBY2_FLOAT - z / (z * z + 0.28f); 24 | if ( y < 0.0f ) return atan - PI; 25 | } 26 | return atan; 27 | } 28 | -------------------------------------------------------------------------------- /effect_phaseVocoder.cpp: -------------------------------------------------------------------------------- 1 | /* Phase Vocoder for Teensy 3.5+/4 2 | * Copyright (c) 2019, Colin Duffy 3 | * 4 | * Based off Stephan M. Bernsee smbPitchShift. 5 | * http://blogs.zynaptiq.com/bernsee/repo/smbPitchShift.cpp 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice, development funding notice, and this permission 15 | * notice shall be included in all copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | * THE SOFTWARE. 24 | */ 25 | #include 26 | #include "effect_vocoder.h" 27 | 28 | void findMaxAndSort(uint8_t index, float magn) { 29 | 30 | } 31 | 32 | void AudioEffectPhaseVocoder::update(void) { 33 | audio_block_t *block; 34 | 35 | block = receiveReadOnly(); 36 | if (!block) return; 37 | 38 | #if defined(__ARM_ARCH_7EM__) 39 | switch (state) { 40 | case 0: 41 | blocklist[0] = block; 42 | state = 1; 43 | break; 44 | case 1: 45 | blocklist[1] = block; 46 | state = 2; 47 | break; 48 | case 2: 49 | blocklist[2] = block; 50 | state = 3; 51 | break; 52 | case 3: 53 | blocklist[3] = block; 54 | state = 4; 55 | break; 56 | case 4: 57 | blocklist[4] = block; 58 | state = 5; 59 | break; 60 | case 5: 61 | blocklist[5] = block; 62 | state = 6; 63 | break; 64 | case 6: 65 | blocklist[6] = block; 66 | state = 7; 67 | break; 68 | case 7: 69 | blocklist[7] = block; 70 | float diff_phase; 71 | long qpd, index = 0; 72 | 73 | for (int k = 0; k < 8; k++) { 74 | arm_q15_to_float(blocklist[k]->data, FFT_Frame + (k * AUDIO_BLOCK_SAMPLES), AUDIO_BLOCK_SAMPLES); 75 | } 76 | 77 | for (int k = 0; k < FFT_SIZE; k++) { 78 | FFT_Frame[k] = FFT_Frame[k] * window[k]; 79 | } 80 | 81 | arm_cfft_f32(instance, FFT_Frame, 0, 1); 82 | split_rfft_f32(FFT_Frame, HALF_FFT_SIZE, coefA, coefB, FFT_Split_Frame); 83 | 84 | float max_magn = 0.0f; 85 | uint16_t max_magn_index = 0; 86 | float i_frac = 0.0f; 87 | float ratio = 0.0f; 88 | 89 | int peakIndexs[10] = {0}; 90 | 91 | for (int k = 0; k < HALF_FFT_SIZE; k++) { 92 | float real = FFT_Split_Frame[2 * k]; 93 | float imag = FFT_Split_Frame[2 * k + 1]; 94 | float magn = 2.0f * sqrtf(real * real + imag * imag); 95 | if (magn > max_magn) { 96 | 97 | max_magn_index = k; 98 | max_magn = magn; 99 | } 100 | for (int i = 0; i < 10; i++) { 101 | if (magn > peakIndexs[i]) { 102 | peakIndexs[i] = magn; 103 | break; 104 | } 105 | } 106 | 107 | 108 | /*real = FFT_Split_Frame[2 * (max_magn_index-1)]; 109 | imag = FFT_Split_Frame[2 * (max_magn_index-1) + 1]; 110 | float magn_minus = 2.0f * sqrtf(real * real + imag * imag); 111 | 112 | real = FFT_Split_Frame[2 * (max_magn_index+1)]; 113 | imag = FFT_Split_Frame[2 * (max_magn_index+1) + 1]; 114 | float magn_plus = 2.0f * sqrtf(real * real + imag * imag); 115 | 116 | 117 | if (magn_plus == 0 && magn_minus == 0) { 118 | i_frac = max_magn_index; 119 | } 120 | else if(magn_plus > magn_minus) { 121 | ratio = max_magn/magn_plus; 122 | i_frac = max_magn_index + (2.0-ratio)/(1.0+ratio); 123 | } 124 | else { 125 | ratio = max_magn/magn_minus; 126 | i_frac = max_magn_index - (2.0-ratio)/(1.0+ratio); 127 | }*/ 128 | } 129 | 130 | 131 | memset(Synth_Magn, 0, HALF_FFT_SIZE * sizeof(float)); 132 | memset(Synth_Freq, 0, HALF_FFT_SIZE * sizeof(float)); 133 | 134 | for (int k = 0; k < HALF_FFT_SIZE; k++) { 135 | 136 | 137 | if (pshift != 1.0) { 138 | 139 | float real = FFT_Split_Frame[2 * k]; 140 | float imag = FFT_Split_Frame[2 * k + 1]; 141 | 142 | float phase = atan2_fast(imag, real); 143 | float magn = 2.0f * sqrtf(real * real + imag * imag); 144 | 145 | float last_phase = Last_Phase[k]; 146 | Last_Phase[k] = phase; 147 | 148 | int q = 0.07957747154594767f * (4.0f * phase - 4.0f * last_phase - PI * k); 149 | qpd = (q & 1) ^ q; 150 | 151 | diff_phase = -0.000000397912725f * (433096375.5250785f * qpd - 137858858 * phase + 137858858 * last_phase); 152 | 153 | index = k * pshift; 154 | //if (index < HALF_FFT_SIZE) { 155 | //Synth_Magn[index] += magn; 156 | //Synth_Freq[index] = diff_phase * pshift; 157 | if (k == max_magn_index+2 || k == max_magn_index || k == max_magn_index-2) { 158 | //if (k == max_magn_index) { 159 | //Serial.print("1: "); 160 | //Serial.print(max_magn_index); 161 | //Serial.print(" | k: "); 162 | //Serial.println(k); 163 | if (index < HALF_FFT_SIZE) { 164 | Synth_Magn[index] += magn; 165 | Synth_Freq[index] = diff_phase * pshift; 166 | } 167 | Synth_Magn[k] += 0; 168 | Synth_Freq[k] = diff_phase; 169 | } 170 | //else if (k == max_magn_index*2) { 171 | //else if ((k <= max_magn_index*2+2 && k >= max_magn_index*2-2)) { 172 | else if ((k == max_magn_index*2+2 || k == max_magn_index*2 || k == max_magn_index*2-2)) { 173 | //Serial.print("2: "); 174 | //Serial.print(max_magn_index); 175 | //Serial.print(" | k: "); 176 | //Serial.println(k); 177 | 178 | } else { 179 | //Serial.print("3: "); 180 | //Serial.print(max_magn_index); 181 | //Serial.print(" | k: "); 182 | //Serial.println(k); 183 | 184 | Synth_Magn[k] += magn; 185 | Synth_Freq[k] = diff_phase; 186 | } 187 | } else { 188 | index = k * pshift; 189 | if (index < HALF_FFT_SIZE) { 190 | float real = FFT_Split_Frame[2 * k]; 191 | float imag = FFT_Split_Frame[2 * k + 1]; 192 | 193 | float phase = atan2_fast(imag, real); 194 | float magn = 2.0f * sqrtf(real * real + imag * imag); 195 | 196 | float last_phase = Last_Phase[k]; 197 | Last_Phase[k] = phase; 198 | 199 | int q = 0.07957747154594767f * (4.0f * phase - 4.0f * last_phase - PI * k); 200 | qpd = (q & 1) ^ q; 201 | 202 | diff_phase = -0.000000397912725f * (433096375.5250785f * qpd - 137858858 * phase + 137858858 * last_phase); 203 | 204 | Synth_Magn[index] += magn; 205 | Synth_Freq[index] = diff_phase * pshift; 206 | } 207 | } 208 | } 209 | //Serial.println("------------------"); 210 | 211 | for (int k = 0; k < HALF_FFT_SIZE; k++) { 212 | float magn = Synth_Magn[k]; 213 | diff_phase = Synth_Freq[k]; 214 | 215 | diff_phase = 0.01823690973512442f * diff_phase; 216 | 217 | Phase_Sum[k] += diff_phase; 218 | float phase = Phase_Sum[k]; 219 | 220 | FFT_Split_Frame[2 * k] = magn * arm_cos_f32(phase); 221 | FFT_Split_Frame[2 * k + 1] = magn * arm_sin_f32(phase); 222 | } 223 | 224 | split_rifft_f32(FFT_Split_Frame, HALF_FFT_SIZE, coefA, coefB, IFFT_Synth_Split_Frame); 225 | arm_cfft_f32(instance, IFFT_Synth_Split_Frame, 1, 1); 226 | 227 | for (int k = 0; k < FFT_SIZE; k++) { 228 | Synth_Accum[k] += (IFFT_Synth_Split_Frame[k] * FFT_SIZE * window[k]) / (HALF_FFT_SIZE * OVER_SAMPLE); 229 | } 230 | 231 | audio_block_t *synthBlock = allocate(); 232 | arm_float_to_q15(Synth_Accum, synthBlock->data, AUDIO_BLOCK_SAMPLES); 233 | 234 | memmove(Synth_Accum, Synth_Accum + STEP_SIZE, FFT_SIZE * sizeof(float)); 235 | 236 | transmit(synthBlock); 237 | release(synthBlock); 238 | release(blocklist[0]); 239 | blocklist[0] = blocklist[1]; 240 | blocklist[1] = blocklist[2]; 241 | blocklist[2] = blocklist[3]; 242 | blocklist[3] = blocklist[4]; 243 | blocklist[4] = blocklist[5]; 244 | blocklist[5] = blocklist[6]; 245 | blocklist[6] = blocklist[7]; 246 | state = 7; 247 | break; 248 | } 249 | #else 250 | release(block); 251 | #endif 252 | } 253 | -------------------------------------------------------------------------------- /effect_phaseVocoder.h: -------------------------------------------------------------------------------- 1 | /* Phase Vocoder for Teensy 3.5+/4 2 | * Copyright (c) 2019, Colin Duffy 3 | * 4 | * Based off Stephan M. Bernsee smbPitchShift. 5 | * http://blogs.zynaptiq.com/bernsee/repo/smbPitchShift.cpp 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice, development funding notice, and this permission 15 | * notice shall be included in all copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | * THE SOFTWARE. 24 | */ 25 | #ifndef phase_vocoder_h_ 26 | #define phase_vocoder_h_ 27 | 28 | #include "Arduino.h" 29 | #include "AudioStream.h" 30 | #include 31 | #include "arm_const_structs.h" 32 | 33 | extern "C" { 34 | extern float atan2_fast(float y, float x); 35 | extern void split_rfft_f32 (float * pSrc, uint32_t fftLen, const float * pATable, const float * pBTable, float * pDst); 36 | extern void split_rifft_f32 (float * pSrc, uint32_t fftLen, const float * pATable, const float * pBTable, float * pDst); 37 | extern const float win1024_f32[]; 38 | extern const float coefA_512_f32[]; 39 | extern const float coefB_512_f32[]; 40 | } 41 | 42 | #define FFT_SIZE 1024 43 | #define OVER_SAMPLE 8 44 | #define HALF_FFT_SIZE FFT_SIZE / 2 45 | 46 | class AudioEffectPhaseVocoder : public AudioStream { 47 | public: 48 | AudioEffectPhaseVocoder() : AudioStream(1, inputQueueArray), 49 | pshift(0), 50 | state(0) 51 | { 52 | memset(Last_Phase, 0, FFT_SIZE * sizeof(float)); 53 | memset(Phase_Sum, 0, FFT_SIZE * sizeof(float)); 54 | memset(Synth_Accum, 0, (FFT_SIZE+AUDIO_BLOCK_SAMPLES) * sizeof(float)); 55 | instance2 = &arm_cfft_sR_f32_len1024; 56 | instance = &arm_cfft_sR_f32_len512; 57 | window = win1024_f32; 58 | coefA = coefA_512_f32; 59 | coefB = coefB_512_f32; 60 | } 61 | 62 | float setPitchShift(float semitones) { 63 | pshift = powf(2.0f, semitones / 12.0f); 64 | return pshift; 65 | } 66 | 67 | virtual void update(void); 68 | private: 69 | const float *window; 70 | const float *coefA; 71 | const float *coefB; 72 | audio_block_t outblock; 73 | const arm_cfft_instance_f32 *instance; 74 | const arm_cfft_instance_f32 *instance2; 75 | float pshift; 76 | uint8_t state; 77 | const long STEP_SIZE = FFT_SIZE / OVER_SAMPLE; 78 | const float FREQ_PER_BIN = AUDIO_SAMPLE_RATE_EXACT / (float)FFT_SIZE; 79 | const float EXPECT = 2.0f * M_PI * (float)STEP_SIZE / (float)FFT_SIZE; 80 | float Max_Magns [10]; 81 | float Phase_Sum [FFT_SIZE]; 82 | float FFT_Frame [FFT_SIZE]; 83 | float Last_Phase [FFT_SIZE]; 84 | float Synth_Freq [FFT_SIZE]; 85 | float Synth_Magn [FFT_SIZE]; 86 | float Synth_Accum [FFT_SIZE+AUDIO_BLOCK_SAMPLES]; 87 | float FFT_Split_Frame [FFT_SIZE * 2]; 88 | float IFFT_Synth_Split_Frame[FFT_SIZE * 2]; 89 | audio_block_t *blocklist[8]; 90 | audio_block_t *inputQueueArray[1]; 91 | }; 92 | 93 | #endif 94 | -------------------------------------------------------------------------------- /examples/PhaseVocoderFemaleVoiceDryMix/AudioSampleBurning_in_my_soul.h: -------------------------------------------------------------------------------- 1 | // Audio data converted from WAV file by wav2sketch 2 | 3 | extern const unsigned int AudioSampleBurning_in_my_soul[35841]; 4 | -------------------------------------------------------------------------------- /examples/PhaseVocoderFemaleVoiceDryMix/AudioSampleDo_what_you_want_to_do.h: -------------------------------------------------------------------------------- 1 | // Audio data converted from WAV file by wav2sketch 2 | 3 | extern const unsigned int AudioSampleDo_what_you_want_to_do[16001]; 4 | -------------------------------------------------------------------------------- /examples/PhaseVocoderFemaleVoiceDryMix/PhaseVocoderFemaleVoiceDryMix.ino: -------------------------------------------------------------------------------- 1 | /* 2 | * Phase Vocoder example Female Voice Dry Mix. 3 | */ 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include "effect_vocoder.h" 11 | 12 | // WAV files converted to code by wav2sketch 13 | #include "AudioSampleBurning_in_my_soul.h" 14 | #include "AudioSampleDo_what_you_want_to_do.h" 15 | 16 | AudioPlayMemory voice; 17 | AudioEffectVocoder vocoder; 18 | AudioMixer4 mix; 19 | AudioOutputUSB usb; 20 | AudioOutputAnalog dac; 21 | 22 | AudioConnection patch1 (voice, vocoder); 23 | AudioConnection patch2 (vocoder, 0, mix, 1); 24 | AudioConnection patch3 (mix, 0, usb, 0); 25 | AudioConnection patch_usbl(mix, 0, usb, 0); 26 | AudioConnection patch_usbr(mix, 0, usb, 1); 27 | AudioConnection patch_dac (mix, 0, dac, 0); 28 | 29 | Bounce button0 = Bounce(3, 5); 30 | Bounce button1 = Bounce(4, 5); 31 | Bounce button2 = Bounce(5, 5); 32 | Bounce button3 = Bounce(6, 5); 33 | Bounce button4 = Bounce(7, 5); 34 | 35 | //const unsigned int *sample = AudioSampleBurning_in_my_soul; 36 | const unsigned int *sample = AudioSampleDo_what_you_want_to_do; 37 | 38 | void setup() { 39 | pinMode(3, INPUT_PULLUP); 40 | pinMode(4, INPUT_PULLUP); 41 | pinMode(5, INPUT_PULLUP); 42 | pinMode(6, INPUT_PULLUP); 43 | pinMode(7, INPUT_PULLUP); 44 | AudioMemory(15); 45 | //dac.analogReference(INTERNAL); 46 | mix.gain(0, 0.4); 47 | } 48 | 49 | void loop() { 50 | button0.update(); 51 | button1.update(); 52 | button2.update(); 53 | button3.update(); 54 | button4.update(); 55 | 56 | if (button0.fallingEdge()) { 57 | vocoder.setPitchShift(-5); 58 | Serial.print("Pitch Shift -5 Semitones | "); 59 | Serial.print("Max CPU Usage = "); 60 | Serial.print(AudioProcessorUsageMax(), 1); 61 | Serial.println("%"); 62 | voice.play(sample); 63 | } 64 | if (button1.fallingEdge()) { 65 | vocoder.setPitchShift(-3); 66 | Serial.print("Pitch Shift -3 Semitones | "); 67 | Serial.print("Max CPU Usage = "); 68 | Serial.print(AudioProcessorUsageMax(), 1); 69 | Serial.println("%"); 70 | voice.play(sample); 71 | } 72 | if (button2.fallingEdge()) { 73 | vocoder.setPitchShift(0); 74 | Serial.print("Pitch Shift 0 Semitones | "); 75 | Serial.print("Max CPU Usage = "); 76 | Serial.print(AudioProcessorUsageMax(), 1); 77 | Serial.println("%"); 78 | voice.play(sample); 79 | } 80 | if (button3.fallingEdge()) { 81 | vocoder.setPitchShift(3); 82 | Serial.print("Pitch Shift 3 Semitones | "); 83 | Serial.print("Max CPU Usage = "); 84 | Serial.print(AudioProcessorUsageMax(), 1); 85 | Serial.println("%"); 86 | voice.play(sample); 87 | } 88 | if (button4.fallingEdge()) { 89 | vocoder.setPitchShift(5); 90 | Serial.print("Pitch Shift 5 Semitones | "); 91 | Serial.print("Max CPU Usage = "); 92 | Serial.print(AudioProcessorUsageMax(), 1); 93 | Serial.println("%"); 94 | voice.play(sample); 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /examples/PhaseVocoderFemaleVoiceWetMix/AudioSampleBurning_in_my_soul.h: -------------------------------------------------------------------------------- 1 | // Audio data converted from WAV file by wav2sketch 2 | 3 | extern const unsigned int AudioSampleBurning_in_my_soul[35841]; 4 | -------------------------------------------------------------------------------- /examples/PhaseVocoderFemaleVoiceWetMix/AudioSampleDo_what_you_want_to_do.h: -------------------------------------------------------------------------------- 1 | // Audio data converted from WAV file by wav2sketch 2 | 3 | extern const unsigned int AudioSampleDo_what_you_want_to_do[16001]; 4 | -------------------------------------------------------------------------------- /examples/PhaseVocoderFemaleVoiceWetMix/PhaseVocoderFemaleVoiceWetMix.ino: -------------------------------------------------------------------------------- 1 | /* 2 | * Phase Vocoder example Female Voice Wet Mix. 3 | */ 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include "effect_vocoder.h" 11 | 12 | // WAV files converted to code by wav2sketch 13 | #include "AudioSampleBurning_in_my_soul.h" 14 | #include "AudioSampleDo_what_you_want_to_do.h" 15 | 16 | AudioPlayMemory voice; 17 | AudioEffectVocoder vocoder; 18 | AudioMixer4 mix; 19 | AudioOutputUSB usb; 20 | AudioOutputAnalog dac; 21 | 22 | AudioConnection patch1 (voice, vocoder); 23 | AudioConnection patch2 (vocoder, 0, mix, 0); 24 | AudioConnection patch3 (voice, 0, mix, 1); 25 | AudioConnection patch_usbl(mix, 0, usb, 0); 26 | AudioConnection patch_usbr(mix, 0, usb, 1); 27 | AudioConnection patch_dac (mix, dac); 28 | 29 | Bounce button0 = Bounce(3, 5); 30 | Bounce button1 = Bounce(4, 5); 31 | Bounce button2 = Bounce(5, 5); 32 | Bounce button3 = Bounce(6, 5); 33 | Bounce button4 = Bounce(7, 5); 34 | 35 | //const unsigned int *sample = AudioSampleBurning_in_my_soul; 36 | const unsigned int *sample = AudioSampleDo_what_you_want_to_do; 37 | 38 | void setup() { 39 | pinMode(3, INPUT_PULLUP); 40 | pinMode(4, INPUT_PULLUP); 41 | pinMode(5, INPUT_PULLUP); 42 | pinMode(6, INPUT_PULLUP); 43 | pinMode(7, INPUT_PULLUP); 44 | AudioMemory(15); 45 | //dac.analogReference(INTERNAL); 46 | mix.gain(0, 0.4); 47 | mix.gain(1, 0.4); 48 | } 49 | 50 | void loop() { 51 | button0.update(); 52 | button1.update(); 53 | button2.update(); 54 | button3.update(); 55 | button4.update(); 56 | 57 | if (button0.fallingEdge()) { 58 | vocoder.setPitchShift(-5); 59 | Serial.print("Pitch Shift -5 Semitones | "); 60 | Serial.print("Max CPU Usage = "); 61 | Serial.print(AudioProcessorUsageMax(), 1); 62 | Serial.println("%"); 63 | voice.play(sample); 64 | } 65 | if (button1.fallingEdge()) { 66 | vocoder.setPitchShift(-3); 67 | Serial.print("Pitch Shift -3 Semitones | "); 68 | Serial.print("Max CPU Usage = "); 69 | Serial.print(AudioProcessorUsageMax(), 1); 70 | Serial.println("%"); 71 | voice.play(sample); 72 | } 73 | if (button2.fallingEdge()) { 74 | vocoder.setPitchShift(0); 75 | Serial.print("Pitch Shift 0 Semitones | "); 76 | Serial.print("Max CPU Usage = "); 77 | Serial.print(AudioProcessorUsageMax(), 1); 78 | Serial.println("%"); 79 | voice.play(sample); 80 | } 81 | if (button3.fallingEdge()) { 82 | vocoder.setPitchShift(3); 83 | Serial.print("Pitch Shift 3 Semitones | "); 84 | Serial.print("Max CPU Usage = "); 85 | Serial.print(AudioProcessorUsageMax(), 1); 86 | Serial.println("%"); 87 | voice.play(sample); 88 | } 89 | if (button4.fallingEdge()) { 90 | vocoder.setPitchShift(5); 91 | Serial.print("Pitch Shift 5 Semitones | "); 92 | Serial.print("Max CPU Usage = "); 93 | Serial.print(AudioProcessorUsageMax(), 1); 94 | Serial.println("%"); 95 | voice.play(sample); 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /keywords.txt: -------------------------------------------------------------------------------- 1 | ####################################### 2 | # Syntax Coloring Map Snooze.h 3 | ####################################### 4 | 5 | ####################################### 6 | # Datatypes (KEYWORD1) 7 | ####################################### 8 | AudioEffectVocoder KEYWORD1 9 | ####################################### 10 | # Methods and Functions (KEYWORD2) 11 | ####################################### 12 | setPitchShift KEYWORD2 13 | ####################################### 14 | # Instances (KEYWORD2) 15 | ####################################### 16 | 17 | ####################################### 18 | # Constants (LITERAL1) 19 | ####################################### 20 | 21 | -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | name=AudioEffectVocoder 2 | version=0.0.1 3 | author=Colin Duffy 4 | maintainer=Colin Duffy 5 | sentence=Audio Object 6 | paragraph=Phase Vocoder for Teensy 3.6/4 7 | category=Other 8 | url=https://github.com/duff2013/AudioEffectVocoder 9 | architectures=* 10 | 11 | -------------------------------------------------------------------------------- /revision.md: -------------------------------------------------------------------------------- 1 |

Update (1/11/20 v0.0.2)

2 | 1. Changed Class Name to AudioEffectPhaseVocoder. 3 | 4 |

Initial Release (9/29/19 v0.0.1)

5 | 1. Initial implementation of the Phase Vocoder. 6 | -------------------------------------------------------------------------------- /twiddle_coef.c: -------------------------------------------------------------------------------- 1 | const float coefA_512_f32[1024] = { 2 | 1.0000000000000000000000000, -1.0000000000000000000000000, 3 | 0.9938641190528869628906250, -0.9999811649322509765625000, 4 | 0.9877284765243530273437500, -0.9999247193336486816406250, 5 | 0.9815932512283325195312500, -0.9998306035995483398437500, 6 | 0.9754587411880493164062500, -0.9996988177299499511718750, 7 | 0.9693251848220825195312500, -0.9995294213294982910156250, 8 | 0.9631927609443664550781250, -0.9993223547935485839843750, 9 | 0.9570617675781250000000000, -0.9990777373313903808593750, 10 | 0.9509323239326477050781250, -0.9987954497337341308593750, 11 | 0.9448047280311584472656250, -0.9984755516052246093750000, 12 | 0.9386792778968811035156250, -0.9981181025505065917968750, 13 | 0.9325560927391052246093750, -0.9977230429649353027343750, 14 | 0.9264354109764099121093750, -0.9972904324531555175781250, 15 | 0.9203175306320190429687500, -0.9968202710151672363281250, 16 | 0.9142026901245117187500000, -0.9963126182556152343750000, 17 | 0.9080910682678222656250000, -0.9957674145698547363281250, 18 | 0.9019828438758850097656250, -0.9951847195625305175781250, 19 | 0.8958783745765686035156250, -0.9945645928382873535156250, 20 | 0.8897777795791625976562500, -0.9939069747924804687500000, 21 | 0.8836813569068908691406250, -0.9932119250297546386718750, 22 | 0.8775893449783325195312500, -0.9924795627593994140625000, 23 | 0.8715018630027770996093750, -0.9917097687721252441406250, 24 | 0.8654192686080932617187500, -0.9909026622772216796875000, 25 | 0.8593417406082153320312500, -0.9900581836700439453125000, 26 | 0.8532695174217224121093750, -0.9891765117645263671875000, 27 | 0.8472028374671936035156250, -0.9882575869560241699218750, 28 | 0.8411418795585632324218750, -0.9873014092445373535156250, 29 | 0.8350868821144104003906250, -0.9863080978393554687500000, 30 | 0.8290380835533142089843750, -0.9852776527404785156250000, 31 | 0.8229957818984985351562500, -0.9842100739479064941406250, 32 | 0.8169600963592529296875000, -0.9831054806709289550781250, 33 | 0.8109313249588012695312500, -0.9819638729095458984375000, 34 | 0.8049096465110778808593750, -0.9807852506637573242187500, 35 | 0.7988953590393066406250000, -0.9795697927474975585937500, 36 | 0.7928886413574218750000000, -0.9783173799514770507812500, 37 | 0.7868896722793579101562500, -0.9770281314849853515625000, 38 | 0.7808987498283386230468750, -0.9757021069526672363281250, 39 | 0.7749160528182983398437500, -0.9743393659591674804687500, 40 | 0.7689418792724609375000000, -0.9729399681091308593750000, 41 | 0.7629764080047607421875000, -0.9715039134025573730468750, 42 | 0.7570198178291320800781250, -0.9700312614440917968750000, 43 | 0.7510724067687988281250000, -0.9685220718383789062500000, 44 | 0.7451343536376953125000000, -0.9669764637947082519531250, 45 | 0.7392058968544006347656250, -0.9653944373130798339843750, 46 | 0.7332872152328491210937500, -0.9637760519981384277343750, 47 | 0.7273786664009094238281250, -0.9621214270591735839843750, 48 | 0.7214803099632263183593750, -0.9604305028915405273437500, 49 | 0.7155924439430236816406250, -0.9587034583091735839843750, 50 | 0.7097153067588806152343750, -0.9569403529167175292968750, 51 | 0.7038490772247314453125000, -0.9551411867141723632812500, 52 | 0.6979940533638000488281250, -0.9533060193061828613281250, 53 | 0.6921503543853759765625000, -0.9514350295066833496093750, 54 | 0.6863182783126831054687500, -0.9495281577110290527343750, 55 | 0.6804979443550109863281250, -0.9475855827331542968750000, 56 | 0.6746897101402282714843750, -0.9456073045730590820312500, 57 | 0.6688936948776245117187500, -0.9435934424400329589843750, 58 | 0.6631101369857788085937500, -0.9415440559387207031250000, 59 | 0.6573392748832702636718750, -0.9394592046737670898437500, 60 | 0.6515812873840332031250000, -0.9373390078544616699218750, 61 | 0.6458364725112915039062500, -0.9351835250854492187500000, 62 | 0.6401049494743347167968750, -0.9329928159713745117187500, 63 | 0.6343870162963867187500000, -0.9307669401168823242187500, 64 | 0.6286827921867370605468750, -0.9285060763359069824218750, 65 | 0.6229925751686096191406250, -0.9262102246284484863281250, 66 | 0.6173165440559387207031250, -0.9238795042037963867187500, 67 | 0.6116549372673034667968750, -0.9215140342712402343750000, 68 | 0.6060079336166381835937500, -0.9191138744354248046875000, 69 | 0.6003757715225219726562500, -0.9166790843009948730468750, 70 | 0.5947586894035339355468750, -0.9142097234725952148437500, 71 | 0.5891568064689636230468750, -0.9117060303688049316406250, 72 | 0.5835704207420349121093750, -0.9091680049896240234375000, 73 | 0.5779997110366821289062500, -0.9065957069396972656250000, 74 | 0.5724449157714843750000000, -0.9039893150329589843750000, 75 | 0.5669061541557312011718750, -0.9013488292694091796875000, 76 | 0.5613837242126464843750000, -0.8986744880676269531250000, 77 | 0.5558778643608093261718750, -0.8959662318229675292968750, 78 | 0.5503886342048645019531250, -0.8932242989540100097656250, 79 | 0.5449163913726806640625000, -0.8904486894607543945312500, 80 | 0.5394612550735473632812500, -0.8876396417617797851562500, 81 | 0.5340234637260437011718750, -0.8847970962524414062500000, 82 | 0.5286032557487487792968750, -0.8819212317466735839843750, 83 | 0.5232007503509521484375000, -0.8790122270584106445312500, 84 | 0.5178161859512329101562500, -0.8760700821876525878906250, 85 | 0.5124498009681701660156250, -0.8730949759483337402343750, 86 | 0.5071017742156982421875000, -0.8700869679450988769531250, 87 | 0.5017723441123962402343750, -0.8670462369918823242187500, 88 | 0.4964616000652313232421875, -0.8639728426933288574218750, 89 | 0.4911698400974273681640625, -0.8608669042587280273437500, 90 | 0.4858972430229187011718750, -0.8577286005020141601562500, 91 | 0.4806439876556396484375000, -0.8545579910278320312500000, 92 | 0.4754103124141693115234375, -0.8513551950454711914062500, 93 | 0.4701963663101196289062500, -0.8481203317642211914062500, 94 | 0.4650023579597473144531250, -0.8448535799980163574218750, 95 | 0.4598285257816314697265625, -0.8415549397468566894531250, 96 | 0.4546749889850616455078125, -0.8382247090339660644531250, 97 | 0.4495420157909393310546875, -0.8348628878593444824218750, 98 | 0.4444297552108764648437500, -0.8314695954322814941406250, 99 | 0.4393384158611297607421875, -0.8280450105667114257812500, 100 | 0.4342681765556335449218750, -0.8245893120765686035156250, 101 | 0.4292192459106445312500000, -0.8211024999618530273437500, 102 | 0.4241918027400970458984375, -0.8175848126411437988281250, 103 | 0.4191860258579254150390625, -0.8140363097190856933593750, 104 | 0.4142021238803863525390625, -0.8104571700096130371093750, 105 | 0.4092402756214141845703125, -0.8068475723266601562500000, 106 | 0.4043006896972656250000000, -0.8032075166702270507812500, 107 | 0.3993835151195526123046875, -0.7995372414588928222656250, 108 | 0.3944889307022094726562500, -0.7958368659019470214843750, 109 | 0.3896171748638153076171875, -0.7921065688133239746093750, 110 | 0.3847683966159820556640625, -0.7883464097976684570312500, 111 | 0.3799427747726440429687500, -0.7845565676689147949218750, 112 | 0.3751404881477355957031250, -0.7807372212409973144531250, 113 | 0.3703617453575134277343750, -0.7768884301185607910156250, 114 | 0.3656066954135894775390625, -0.7730104327201843261718750, 115 | 0.3608755469322204589843750, -0.7691033482551574707031250, 116 | 0.3561684489250183105468750, -0.7651672363281250000000000, 117 | 0.3514855802059173583984375, -0.7612023949623107910156250, 118 | 0.3468271493911743164062500, -0.7572088241577148437500000, 119 | 0.3421933054924011230468750, -0.7531867623329162597656250, 120 | 0.3375841975212097167968750, -0.7491363883018493652343750, 121 | 0.3330000638961791992187500, -0.7450577616691589355468750, 122 | 0.3284410238265991210937500, -0.7409511208534240722656250, 123 | 0.3239072859287261962890625, -0.7368165254592895507812500, 124 | 0.3193989992141723632812500, -0.7326542735099792480468750, 125 | 0.3149163126945495605468750, -0.7284643650054931640625000, 126 | 0.3104594349861145019531250, -0.7242470979690551757812500, 127 | 0.3060285151004791259765625, -0.7200024724006652832031250, 128 | 0.3016237318515777587890625, -0.7157307863235473632812500, 129 | 0.2972452342510223388671875, -0.7114321589469909667968750, 130 | 0.2928932011127471923828125, -0.7071067690849304199218750, 131 | 0.2885677814483642578125000, -0.7027547359466552734375000, 132 | 0.2842691540718078613281250, -0.6983762383460998535156250, 133 | 0.2799974679946899414062500, -0.6939714550971984863281250, 134 | 0.2757529020309448242187500, -0.6895405054092407226562500, 135 | 0.2715356051921844482421875, -0.6850836277008056640625000, 136 | 0.2673457264900207519531250, -0.6806010007858276367187500, 137 | 0.2631834149360656738281250, -0.6760926842689514160156250, 138 | 0.2590488493442535400390625, -0.6715589165687561035156250, 139 | 0.2549422085285186767578125, -0.6669998764991760253906250, 140 | 0.2508635818958282470703125, -0.6624157428741455078125000, 141 | 0.2468131780624389648437500, -0.6578066945075988769531250, 142 | 0.2427911311388015747070312, -0.6531728506088256835937500, 143 | 0.2387976050376892089843750, -0.6485143899917602539062500, 144 | 0.2348327189683914184570312, -0.6438315510749816894531250, 145 | 0.2308966517448425292968750, -0.6391244530677795410156250, 146 | 0.2269895374774932861328125, -0.6343932747840881347656250, 147 | 0.2231115251779556274414062, -0.6296381950378417968750000, 148 | 0.2192627489566802978515625, -0.6248594522476196289062500, 149 | 0.2154433876276016235351562, -0.6200571656227111816406250, 150 | 0.2116535604000091552734375, -0.6152315735816955566406250, 151 | 0.2078934013843536376953125, -0.6103827953338623046875000, 152 | 0.2041630744934082031250000, -0.6055110096931457519531250, 153 | 0.2004627138376235961914062, -0.6006164550781250000000000, 154 | 0.1967924535274505615234375, -0.5956993103027343750000000, 155 | 0.1931524276733398437500000, -0.5907596945762634277343750, 156 | 0.1895427852869033813476562, -0.5857978463172912597656250, 157 | 0.1859636604785919189453125, -0.5808139443397521972656250, 158 | 0.1824151724576950073242188, -0.5758081674575805664062500, 159 | 0.1788974702358245849609375, -0.5707806944847106933593750, 160 | 0.1754106879234313964843750, -0.5657317638397216796875000, 161 | 0.1719549447298049926757812, -0.5606615543365478515625000, 162 | 0.1685303747653961181640625, -0.5555701851844787597656250, 163 | 0.1651371121406555175781250, -0.5504579544067382812500000, 164 | 0.1617752760648727416992188, -0.5453249812126159667968750, 165 | 0.1584450006484985351562500, -0.5401714444160461425781250, 166 | 0.1551464200019836425781250, -0.5349975824356079101562500, 167 | 0.1518796384334564208984375, -0.5298035740852355957031250, 168 | 0.1486447900533676147460938, -0.5245896577835083007812500, 169 | 0.1454419940710067749023438, -0.5193559527397155761718750, 170 | 0.1422713696956634521484375, -0.5141026973724365234375000, 171 | 0.1391330510377883911132812, -0.5088301301002502441406250, 172 | 0.1360271275043487548828125, -0.5035383701324462890625000, 173 | 0.1329537332057952880859375, -0.4982276558876037597656250, 174 | 0.1299129873514175415039062, -0.4928981661796569824218750, 175 | 0.1269050091505050659179688, -0.4875501394271850585937500, 176 | 0.1239298880100250244140625, -0.4821837544441223144531250, 177 | 0.1209877580404281616210938, -0.4767991900444030761718750, 178 | 0.1180787235498428344726562, -0.4713967144489288330078125, 179 | 0.1152028888463973999023438, -0.4659764766693115234375000, 180 | 0.1123603656888008117675781, -0.4605386853218078613281250, 181 | 0.1095512658357620239257812, -0.4550835490226745605468750, 182 | 0.1067756861448287963867188, -0.4496113061904907226562500, 183 | 0.1040337383747100830078125, -0.4441221058368682861328125, 184 | 0.1013255193829536437988281, -0.4386162161827087402343750, 185 | 0.0986511409282684326171875, -0.4330937862396240234375000, 186 | 0.0960106924176216125488281, -0.4275550544261932373046875, 187 | 0.0934042856097221374511719, -0.4220002293586730957031250, 188 | 0.0908320024609565734863281, -0.4164295196533203125000000, 189 | 0.0882939547300338745117188, -0.4108431339263916015625000, 190 | 0.0857902318239212036132812, -0.4052412807941436767578125, 191 | 0.0833209306001663208007812, -0.3996241688728332519531250, 192 | 0.0808861330151557922363281, -0.3939920067787170410156250, 193 | 0.0784859508275985717773438, -0.3883450031280517578125000, 194 | 0.0761204585433006286621094, -0.3826833963394165039062500, 195 | 0.0737897455692291259765625, -0.3770073652267456054687500, 196 | 0.0714939087629318237304688, -0.3713171780109405517578125, 197 | 0.0692330300807952880859375, -0.3656129539012908935546875, 198 | 0.0670071914792060852050781, -0.3598949909210205078125000, 199 | 0.0648164749145507812500000, -0.3541634976863861083984375, 200 | 0.0626609772443771362304688, -0.3484186530113220214843750, 201 | 0.0605407655239105224609375, -0.3426606953144073486328125, 202 | 0.0584559217095375061035156, -0.3368898332118988037109375, 203 | 0.0564065314829349517822266, -0.3311062753200531005859375, 204 | 0.0543926618993282318115234, -0.3253102600574493408203125, 205 | 0.0524143986403942108154297, -0.3195019960403442382812500, 206 | 0.0504718087613582611083984, -0.3136817216873168945312500, 207 | 0.0485649667680263519287109, -0.3078496158123016357421875, 208 | 0.0466939471662044525146484, -0.3020059168338775634765625, 209 | 0.0448588207364082336425781, -0.2961508631706237792968750, 210 | 0.0430596545338630676269531, -0.2902846336364746093750000, 211 | 0.0412965156137943267822266, -0.2844074964523315429687500, 212 | 0.0395694710314273834228516, -0.2785196602344512939453125, 213 | 0.0378785841166973114013672, -0.2726213335990905761718750, 214 | 0.0362239256501197814941406, -0.2667127251625061035156250, 215 | 0.0346055477857589721679688, -0.2607940733432769775390625, 216 | 0.0330235213041305541992188, -0.2548656165599822998046875, 217 | 0.0314778983592987060546875, -0.2489275634288787841796875, 218 | 0.0299687385559082031250000, -0.2429801374673843383789062, 219 | 0.0284960996359586715698242, -0.2370235770940780639648438, 220 | 0.0270600393414497375488281, -0.2310580760240554809570312, 221 | 0.0256606079638004302978516, -0.2250838726758956909179688, 222 | 0.0242978613823652267456055, -0.2191012054681777954101562, 223 | 0.0229718498885631561279297, -0.2131102830171585083007812, 224 | 0.0216826219111680984497070, -0.2071113437414169311523438, 225 | 0.0204302258789539337158203, -0.2011045962572097778320312, 226 | 0.0192147120833396911621094, -0.1950902789831161499023438, 227 | 0.0180361233651638031005859, -0.1890686303377151489257812, 228 | 0.0168945062905550003051758, -0.1830398440361022949218750, 229 | 0.0157898999750614166259766, -0.1770041882991790771484375, 230 | 0.0147223509848117828369141, -0.1709618568420410156250000, 231 | 0.0136918965727090835571289, -0.1649130880832672119140625, 232 | 0.0126985758543014526367188, -0.1588581055402755737304688, 233 | 0.0117424260824918746948242, -0.1527971476316452026367188, 234 | 0.0108234845101833343505859, -0.1467304378747940063476562, 235 | 0.0099417837336659431457520, -0.1406581997871398925781250, 236 | 0.0090973591431975364685059, -0.1345806717872619628906250, 237 | 0.0082902414724230766296387, -0.1284980773925781250000000, 238 | 0.0075204605236649513244629, -0.1224106326699256896972656, 239 | 0.0067880460992455482482910, -0.1163185909390449523925781, 240 | 0.0060930256731808185577393, -0.1102221682667732238769531, 241 | 0.0054354248568415641784668, -0.1041215956211090087890625, 242 | 0.0048152692615985870361328, -0.0980170965194702148437500, 243 | 0.0042325817048549652099609, -0.0919089168310165405273438, 244 | 0.0036873843055218458175659, -0.0857972726225852966308594, 245 | 0.0031796973198652267456055, -0.0796823948621749877929688, 246 | 0.0027095403056591749191284, -0.0735645219683647155761719, 247 | 0.0022769304923713207244873, -0.0674438774585723876953125, 248 | 0.0018818845273926854133606, -0.0613206960260868072509766, 249 | 0.0015244170790538191795349, -0.0551952011883258819580078, 250 | 0.0012045417679473757743835, -0.0490676313638687133789062, 251 | 0.0009222704102285206317902, -0.0429382137954235076904297, 252 | 0.0006776138325221836566925, -0.0368071794509887695312500, 253 | 0.0004705811734311282634735, -0.0306747611612081527709961, 254 | 0.0003011802618857473134995, -0.0245411861687898635864258, 255 | 0.0001694174134172499179840, -0.0184066873043775558471680, 256 | 0.0000752976266085170209408, -0.0122714946046471595764160, 257 | 0.0000188244503078749403358, -0.0061358409002423286437988, 258 | 0.0000000000000009992007222, 0.0000000437113882867379289, 259 | 0.0000188249869097489863634, 0.0061359284445643424987793, 260 | 0.0000752987034502439200878, 0.0122715821489691734313965, 261 | 0.0001694190141279250383377, 0.0184067748486995697021484, 262 | 0.0003011823864653706550598, 0.0245412737131118774414062, 263 | 0.0004705838800873607397079, 0.0306748468428850173950195, 264 | 0.0006776170339435338973999, 0.0368072688579559326171875, 265 | 0.0009222741937264800071716, 0.0429383032023906707763672, 266 | 0.0012045459588989615440369, 0.0490677207708358764648438, 267 | 0.0015244219684973359107971, 0.0551952905952930450439453, 268 | 0.0018818898824974894523621, 0.0613207817077636718750000, 269 | 0.0022769365459680557250977, 0.0674439668655395507812500, 270 | 0.0027095465920865535736084, 0.0735646113753318786621094, 271 | 0.0031797043047845363616943, 0.0796824842691421508789062, 272 | 0.0036873917561024427413940, 0.0857973545789718627929688, 273 | 0.0042325896210968494415283, 0.0919090062379837036132812, 274 | 0.0048152781091630458831787, 0.0980171859264373779296875, 275 | 0.0054354341700673103332520, 0.1041216775774955749511719, 276 | 0.0060930349864065647125244, 0.1102222502231597900390625, 277 | 0.0067880563437938690185547, 0.1163186803460121154785156, 278 | 0.0075204712338745594024658, 0.1224107220768928527832031, 279 | 0.0082902526482939720153809, 0.1284981518983840942382812, 280 | 0.0090973712503910064697266, 0.1345807611942291259765625, 281 | 0.0099417967721819877624512, 0.1406582891941070556640625, 282 | 0.0108234966173768043518066, 0.1467305272817611694335938, 283 | 0.0117424400523304939270020, 0.1527972370386123657226562, 284 | 0.0126985898241400718688965, 0.1588581949472427368164062, 285 | 0.0136919105425477027893066, 0.1649131625890731811523438, 286 | 0.0147223658859729766845703, 0.1709619313478469848632812, 287 | 0.0157899167388677597045898, 0.1770042628049850463867188, 288 | 0.0168945211917161941528320, 0.1830399334430694580078125, 289 | 0.0180361401289701461791992, 0.1890687048435211181640625, 290 | 0.0192147288471460342407227, 0.1950903683900833129882812, 291 | 0.0204302445054054260253906, 0.2011046856641769409179688, 292 | 0.0216826386749744415283203, 0.2071114182472229003906250, 293 | 0.0229718685150146484375000, 0.2131103724241256713867188, 294 | 0.0242978800088167190551758, 0.2191012948751449584960938, 295 | 0.0256606284528970718383789, 0.2250839620828628540039062, 296 | 0.0270600598305463790893555, 0.2310581505298614501953125, 297 | 0.0284961201250553131103516, 0.2370236515998840332031250, 298 | 0.0299687590450048446655273, 0.2429802268743515014648438, 299 | 0.0314779169857501983642578, 0.2489276528358459472656250, 300 | 0.0330235436558723449707031, 0.2548657059669494628906250, 301 | 0.0346055701375007629394531, 0.2607941627502441406250000, 302 | 0.0362239480018615722656250, 0.2667128145694732666015625, 303 | 0.0378786101937294006347656, 0.2726213932037353515625000, 304 | 0.0395694933831691741943359, 0.2785197496414184570312500, 305 | 0.0412965379655361175537109, 0.2844075858592987060546875, 306 | 0.0430596806108951568603516, 0.2902847230434417724609375, 307 | 0.0448588468134403228759766, 0.2961509525775909423828125, 308 | 0.0466939769685268402099609, 0.3020060062408447265625000, 309 | 0.0485649965703487396240234, 0.3078496754169464111328125, 310 | 0.0504718348383903503417969, 0.3136817812919616699218750, 311 | 0.0524144247174263000488281, 0.3195020854473114013671875, 312 | 0.0543926917016506195068359, 0.3253103494644165039062500, 313 | 0.0564065575599670410156250, 0.3311063647270202636718750, 314 | 0.0584559515118598937988281, 0.3368898928165435791015625, 315 | 0.0605407953262329101562500, 0.3426607549190521240234375, 316 | 0.0626610070466995239257812, 0.3484187424182891845703125, 317 | 0.0648165121674537658691406, 0.3541635870933532714843750, 318 | 0.0670072212815284729003906, 0.3598950803279876708984375, 319 | 0.0692330598831176757812500, 0.3656130433082580566406250, 320 | 0.0714939385652542114257812, 0.3713172376155853271484375, 321 | 0.0737897753715515136718750, 0.3770074546337127685546875, 322 | 0.0761204883456230163574219, 0.3826834857463836669921875, 323 | 0.0784859806299209594726562, 0.3883450925350189208984375, 324 | 0.0808861702680587768554688, 0.3939920961856842041015625, 325 | 0.0833209604024887084960938, 0.3996242582798004150390625, 326 | 0.0857902690768241882324219, 0.4052413702011108398437500, 327 | 0.0882939919829368591308594, 0.4108432233333587646484375, 328 | 0.0908320397138595581054688, 0.4164296090602874755859375, 329 | 0.0934043154120445251464844, 0.4220003187656402587890625, 330 | 0.0960107296705245971679688, 0.4275551438331604003906250, 331 | 0.0986511781811714172363281, 0.4330938756465911865234375, 332 | 0.1013255566358566284179688, 0.4386162757873535156250000, 333 | 0.1040337756276130676269531, 0.4441221952438354492187500, 334 | 0.1067757233977317810058594, 0.4496113657951354980468750, 335 | 0.1095513030886650085449219, 0.4550836384296417236328125, 336 | 0.1123604029417037963867188, 0.4605387747287750244140625, 337 | 0.1152029260993003845214844, 0.4659765362739562988281250, 338 | 0.1180787608027458190917969, 0.4713967740535736083984375, 339 | 0.1209878027439117431640625, 0.4767992794513702392578125, 340 | 0.1239299327135086059570312, 0.4821838140487670898437500, 341 | 0.1269050538539886474609375, 0.4875501990318298339843750, 342 | 0.1299130320549011230468750, 0.4928982555866241455078125, 343 | 0.1329537779092788696289062, 0.4982277154922485351562500, 344 | 0.1360271722078323364257812, 0.5035384297370910644531250, 345 | 0.1391330957412719726562500, 0.5088301897048950195312500, 346 | 0.1422714143991470336914062, 0.5141028165817260742187500, 347 | 0.1454420387744903564453125, 0.5193560123443603515625000, 348 | 0.1486448347568511962890625, 0.5245897173881530761718750, 349 | 0.1518796831369400024414062, 0.5298036932945251464843750, 350 | 0.1551464647054672241210938, 0.5349976420402526855468750, 351 | 0.1584450602531433105468750, 0.5401715040206909179687500, 352 | 0.1617753207683563232421875, 0.5453250408172607421875000, 353 | 0.1651371568441390991210938, 0.5504580140113830566406250, 354 | 0.1685304194688796997070312, 0.5555703043937683105468750, 355 | 0.1719549894332885742187500, 0.5606616139411926269531250, 356 | 0.1754107326269149780273438, 0.5657318830490112304687500, 357 | 0.1788975149393081665039062, 0.5707808136940002441406250, 358 | 0.1824152171611785888671875, 0.5758082270622253417968750, 359 | 0.1859637051820755004882812, 0.5808140039443969726562500, 360 | 0.1895428448915481567382812, 0.5857979059219360351562500, 361 | 0.1931524872779846191406250, 0.5907597541809082031250000, 362 | 0.1967924982309341430664062, 0.5956993699073791503906250, 363 | 0.2004627734422683715820312, 0.6006165146827697753906250, 364 | 0.2041631340980529785156250, 0.6055110692977905273437500, 365 | 0.2078934609889984130859375, 0.6103828549385070800781250, 366 | 0.2116536051034927368164062, 0.6152316331863403320312500, 367 | 0.2154434472322463989257812, 0.6200572848320007324218750, 368 | 0.2192628085613250732421875, 0.6248595118522644042968750, 369 | 0.2231115698814392089843750, 0.6296383142471313476562500, 370 | 0.2269895821809768676757812, 0.6343933343887329101562500, 371 | 0.2308966964483261108398438, 0.6391245126724243164062500, 372 | 0.2348327785730361938476562, 0.6438316106796264648437500, 373 | 0.2387976497411727905273438, 0.6485144495964050292968750, 374 | 0.2427911907434463500976562, 0.6531729102134704589843750, 375 | 0.2468132376670837402343750, 0.6578067541122436523437500, 376 | 0.2508636415004730224609375, 0.6624158024787902832031250, 377 | 0.2549422681331634521484375, 0.6669999957084655761718750, 378 | 0.2590489089488983154296875, 0.6715589761734008789062500, 379 | 0.2631834745407104492187500, 0.6760927438735961914062500, 380 | 0.2673457860946655273437500, 0.6806010603904724121093750, 381 | 0.2715356647968292236328125, 0.6850836873054504394531250, 382 | 0.2757529616355895996093750, 0.6895405650138854980468750, 383 | 0.2799975275993347167968750, 0.6939715147018432617187500, 384 | 0.2842692136764526367187500, 0.6983762979507446289062500, 385 | 0.2885678410530090332031250, 0.7027547955513000488281250, 386 | 0.2928932607173919677734375, 0.7071068286895751953125000, 387 | 0.2972452938556671142578125, 0.7114322185516357421875000, 388 | 0.3016237914562225341796875, 0.7157308459281921386718750, 389 | 0.3060285747051239013671875, 0.7200025320053100585937500, 390 | 0.3104594945907592773437500, 0.7242471575736999511718750, 391 | 0.3149163722991943359375000, 0.7284644246101379394531250, 392 | 0.3193990588188171386718750, 0.7326543331146240234375000, 393 | 0.3239073455333709716796875, 0.7368165850639343261718750, 394 | 0.3284410834312438964843750, 0.7409511804580688476562500, 395 | 0.3330001235008239746093750, 0.7450578212738037109375000, 396 | 0.3375842869281768798828125, 0.7491364479064941406250000, 397 | 0.3421933650970458984375000, 0.7531868219375610351562500, 398 | 0.3468272089958190917968750, 0.7572088837623596191406250, 399 | 0.3514856398105621337890625, 0.7612024545669555664062500, 400 | 0.3561685085296630859375000, 0.7651672959327697753906250, 401 | 0.3608756065368652343750000, 0.7691034078598022460937500, 402 | 0.3656067550182342529296875, 0.7730104923248291015625000, 403 | 0.3703618049621582031250000, 0.7768884897232055664062500, 404 | 0.3751405775547027587890625, 0.7807372808456420898437500, 405 | 0.3799428343772888183593750, 0.7845566272735595703125000, 406 | 0.3847684562206268310546875, 0.7883464694023132324218750, 407 | 0.3896172344684600830078125, 0.7921066284179687500000000, 408 | 0.3944890201091766357421875, 0.7958369255065917968750000, 409 | 0.3993835747241973876953125, 0.7995373010635375976562500, 410 | 0.4043007493019104003906250, 0.8032075762748718261718750, 411 | 0.4092403650283813476562500, 0.8068475723266601562500000, 412 | 0.4142022132873535156250000, 0.8104572296142578125000000, 413 | 0.4191860854625701904296875, 0.8140363693237304687500000, 414 | 0.4241918623447418212890625, 0.8175848722457885742187500, 415 | 0.4292193055152893066406250, 0.8211025595664978027343750, 416 | 0.4342682361602783203125000, 0.8245893716812133789062500, 417 | 0.4393384754657745361328125, 0.8280450701713562011718750, 418 | 0.4444298148155212402343750, 0.8314696550369262695312500, 419 | 0.4495420753955841064453125, 0.8348628878593444824218750, 420 | 0.4546750783920288085937500, 0.8382247686386108398437500, 421 | 0.4598285853862762451171875, 0.8415549993515014648437500, 422 | 0.4650024473667144775390625, 0.8448535799980163574218750, 423 | 0.4701964259147644042968750, 0.8481203913688659667968750, 424 | 0.4754103720188140869140625, 0.8513552546501159667968750, 425 | 0.4806440770626068115234375, 0.8545580506324768066406250, 426 | 0.4858973324298858642578125, 0.8577286601066589355468750, 427 | 0.4911699295043945312500000, 0.8608669638633728027343750, 428 | 0.4964616894721984863281250, 0.8639729022979736328125000, 429 | 0.5017724037170410156250000, 0.8670462965965270996093750, 430 | 0.5071018934249877929687500, 0.8700870275497436523437500, 431 | 0.5124499201774597167968750, 0.8730950355529785156250000, 432 | 0.5178163051605224609375000, 0.8760701417922973632812500, 433 | 0.5232008099555969238281250, 0.8790122866630554199218750, 434 | 0.5286033153533935546875000, 0.8819212913513183593750000, 435 | 0.5340235829353332519531250, 0.8847971558570861816406250, 436 | 0.5394613742828369140625000, 0.8876396417617797851562500, 437 | 0.5449164509773254394531250, 0.8904487490653991699218750, 438 | 0.5503887534141540527343750, 0.8932243585586547851562500, 439 | 0.5558779239654541015625000, 0.8959662914276123046875000, 440 | 0.5613838434219360351562500, 0.8986744880676269531250000, 441 | 0.5669062733650207519531250, 0.9013488888740539550781250, 442 | 0.5724449753761291503906250, 0.9039893150329589843750000, 443 | 0.5779997706413269042968750, 0.9065957069396972656250000, 444 | 0.5835704803466796875000000, 0.9091680049896240234375000, 445 | 0.5891569256782531738281250, 0.9117060899734497070312500, 446 | 0.5947587490081787109375000, 0.9142097830772399902343750, 447 | 0.6003758907318115234375000, 0.9166790843009948730468750, 448 | 0.6060080528259277343750000, 0.9191138744354248046875000, 449 | 0.6116549968719482421875000, 0.9215140938758850097656250, 450 | 0.6173166632652282714843750, 0.9238795638084411621093750, 451 | 0.6229926347732543945312500, 0.9262102842330932617187500, 452 | 0.6286828517913818359375000, 0.9285061359405517578125000, 453 | 0.6343870759010314941406250, 0.9307669997215270996093750, 454 | 0.6401050090789794921875000, 0.9329928159713745117187500, 455 | 0.6458365321159362792968750, 0.9351835250854492187500000, 456 | 0.6515814065933227539062500, 0.9373390674591064453125000, 457 | 0.6573393344879150390625000, 0.9394592642784118652343750, 458 | 0.6631101965904235839843750, 0.9415441155433654785156250, 459 | 0.6688937544822692871093750, 0.9435935020446777343750000, 460 | 0.6746897697448730468750000, 0.9456073641777038574218750, 461 | 0.6804980635643005371093750, 0.9475856423377990722656250, 462 | 0.6863183379173278808593750, 0.9495282173156738281250000, 463 | 0.6921504139900207519531250, 0.9514350295066833496093750, 464 | 0.6979941129684448242187500, 0.9533060789108276367187500, 465 | 0.7038491964340209960937500, 0.9551411867141723632812500, 466 | 0.7097154259681701660156250, 0.9569403529167175292968750, 467 | 0.7155925631523132324218750, 0.9587035179138183593750000, 468 | 0.7214803695678710937500000, 0.9604305624961853027343750, 469 | 0.7273787260055541992187500, 0.9621214270591735839843750, 470 | 0.7332873344421386718750000, 0.9637761116027832031250000, 471 | 0.7392059564590454101562500, 0.9653944373130798339843750, 472 | 0.7451344132423400878906250, 0.9669764637947082519531250, 473 | 0.7510724663734436035156250, 0.9685221314430236816406250, 474 | 0.7570198774337768554687500, 0.9700312614440917968750000, 475 | 0.7629764676094055175781250, 0.9715039134025573730468750, 476 | 0.7689419984817504882812500, 0.9729399681091308593750000, 477 | 0.7749161720275878906250000, 0.9743394255638122558593750, 478 | 0.7808988094329833984375000, 0.9757021665573120117187500, 479 | 0.7868897318840026855468750, 0.9770281314849853515625000, 480 | 0.7928887009620666503906250, 0.9783173799514770507812500, 481 | 0.7988954186439514160156250, 0.9795697927474975585937500, 482 | 0.8049097657203674316406250, 0.9807853102684020996093750, 483 | 0.8109314441680908203125000, 0.9819638729095458984375000, 484 | 0.8169602155685424804687500, 0.9831054806709289550781250, 485 | 0.8229958415031433105468750, 0.9842101335525512695312500, 486 | 0.8290382027626037597656250, 0.9852776527404785156250000, 487 | 0.8350869417190551757812500, 0.9863080978393554687500000, 488 | 0.8411419391632080078125000, 0.9873014092445373535156250, 489 | 0.8472028970718383789062500, 0.9882575869560241699218750, 490 | 0.8532696366310119628906250, 0.9891765117645263671875000, 491 | 0.8593418598175048828125000, 0.9900582432746887207031250, 492 | 0.8654193878173828125000000, 0.9909026622772216796875000, 493 | 0.8715019822120666503906250, 0.9917097687721252441406250, 494 | 0.8775894045829772949218750, 0.9924795627593994140625000, 495 | 0.8836814761161804199218750, 0.9932119846343994140625000, 496 | 0.8897778987884521484375000, 0.9939069747924804687500000, 497 | 0.8958784341812133789062500, 0.9945645928382873535156250, 498 | 0.9019829630851745605468750, 0.9951847195625305175781250, 499 | 0.9080911278724670410156250, 0.9957674145698547363281250, 500 | 0.9142027497291564941406250, 0.9963126182556152343750000, 501 | 0.9203176498413085937500000, 0.9968203306198120117187500, 502 | 0.9264355301856994628906250, 0.9972904920578002929687500, 503 | 0.9325561523437500000000000, 0.9977230429649353027343750, 504 | 0.9386793375015258789062500, 0.9981181025505065917968750, 505 | 0.9448048472404479980468750, 0.9984756112098693847656250, 506 | 0.9509323835372924804687500, 0.9987954497337341308593750, 507 | 0.9570618271827697753906250, 0.9990777373313903808593750, 508 | 0.9631928801536560058593750, 0.9993224143981933593750000, 509 | 0.9693253040313720703125000, 0.9995294213294982910156250, 510 | 0.9754588603973388671875000, 0.9996988177299499511718750, 511 | 0.9815933704376220703125000, 0.9998306035995483398437500, 512 | 0.9877285361289978027343750, 0.9999247193336486816406250, 513 | 0.9938641786575317382812500, 0.9999811649322509765625000, 514 | 515 | }; 516 | const float coefB_512_f32[1024] = { 517 | 1.0000000000000000000000000, 1.0000000000000000000000000, 518 | 1.0061359405517578125000000, 0.9999811649322509765625000, 519 | 1.0122715234756469726562500, 0.9999247193336486816406250, 520 | 1.0184067487716674804687500, 0.9998306035995483398437500, 521 | 1.0245412588119506835937500, 0.9996988177299499511718750, 522 | 1.0306748151779174804687500, 0.9995294213294982910156250, 523 | 1.0368071794509887695312500, 0.9993223547935485839843750, 524 | 1.0429382324218750000000000, 0.9990777373313903808593750, 525 | 1.0490676164627075195312500, 0.9987954497337341308593750, 526 | 1.0551952123641967773437500, 0.9984755516052246093750000, 527 | 1.0613207817077636718750000, 0.9981181025505065917968750, 528 | 1.0674439668655395507812500, 0.9977230429649353027343750, 529 | 1.0735645294189453125000000, 0.9972904324531555175781250, 530 | 1.0796824693679809570312500, 0.9968202710151672363281250, 531 | 1.0857973098754882812500000, 0.9963126182556152343750000, 532 | 1.0919089317321777343750000, 0.9957674145698547363281250, 533 | 1.0980170965194702148437500, 0.9951847195625305175781250, 534 | 1.1041216850280761718750000, 0.9945645928382873535156250, 535 | 1.1102222204208374023437500, 0.9939069747924804687500000, 536 | 1.1163185834884643554687500, 0.9932119250297546386718750, 537 | 1.1224106550216674804687500, 0.9924795627593994140625000, 538 | 1.1284980773925781250000000, 0.9917097687721252441406250, 539 | 1.1345807313919067382812500, 0.9909026622772216796875000, 540 | 1.1406582593917846679687500, 0.9900581836700439453125000, 541 | 1.1467304229736328125000000, 0.9891765117645263671875000, 542 | 1.1527972221374511718750000, 0.9882575869560241699218750, 543 | 1.1588581800460815429687500, 0.9873014092445373535156250, 544 | 1.1649131774902343750000000, 0.9863080978393554687500000, 545 | 1.1709618568420410156250000, 0.9852776527404785156250000, 546 | 1.1770042181015014648437500, 0.9842100739479064941406250, 547 | 1.1830399036407470703125000, 0.9831054806709289550781250, 548 | 1.1890686750411987304687500, 0.9819638729095458984375000, 549 | 1.1950902938842773437500000, 0.9807852506637573242187500, 550 | 1.2011046409606933593750000, 0.9795697927474975585937500, 551 | 1.2071113586425781250000000, 0.9783173799514770507812500, 552 | 1.2131103277206420898437500, 0.9770281314849853515625000, 553 | 1.2191011905670166015625000, 0.9757021069526672363281250, 554 | 1.2250839471817016601562500, 0.9743393659591674804687500, 555 | 1.2310581207275390625000000, 0.9729399681091308593750000, 556 | 1.2370235919952392578125000, 0.9715039134025573730468750, 557 | 1.2429802417755126953125000, 0.9700312614440917968750000, 558 | 1.2489275932312011718750000, 0.9685220718383789062500000, 559 | 1.2548656463623046875000000, 0.9669764637947082519531250, 560 | 1.2607941627502441406250000, 0.9653944373130798339843750, 561 | 1.2667127847671508789062500, 0.9637760519981384277343750, 562 | 1.2726213932037353515625000, 0.9621214270591735839843750, 563 | 1.2785197496414184570312500, 0.9604305028915405273437500, 564 | 1.2844074964523315429687500, 0.9587034583091735839843750, 565 | 1.2902846336364746093750000, 0.9569403529167175292968750, 566 | 1.2961509227752685546875000, 0.9551411867141723632812500, 567 | 1.3020060062408447265625000, 0.9533060193061828613281250, 568 | 1.3078496456146240234375000, 0.9514350295066833496093750, 569 | 1.3136817216873168945312500, 0.9495281577110290527343750, 570 | 1.3195019960403442382812500, 0.9475855827331542968750000, 571 | 1.3253103494644165039062500, 0.9456073045730590820312500, 572 | 1.3311063051223754882812500, 0.9435934424400329589843750, 573 | 1.3368898630142211914062500, 0.9415440559387207031250000, 574 | 1.3426607847213745117187500, 0.9394592046737670898437500, 575 | 1.3484187126159667968750000, 0.9373390078544616699218750, 576 | 1.3541635274887084960937500, 0.9351835250854492187500000, 577 | 1.3598949909210205078125000, 0.9329928159713745117187500, 578 | 1.3656129837036132812500000, 0.9307669401168823242187500, 579 | 1.3713171482086181640625000, 0.9285060763359069824218750, 580 | 1.3770073652267456054687500, 0.9262102246284484863281250, 581 | 1.3826833963394165039062500, 0.9238795042037963867187500, 582 | 1.3883450031280517578125000, 0.9215140342712402343750000, 583 | 1.3939920663833618164062500, 0.9191138744354248046875000, 584 | 1.3996242284774780273437500, 0.9166790843009948730468750, 585 | 1.4052413702011108398437500, 0.9142097234725952148437500, 586 | 1.4108431339263916015625000, 0.9117060303688049316406250, 587 | 1.4164295196533203125000000, 0.9091680049896240234375000, 588 | 1.4220002889633178710937500, 0.9065957069396972656250000, 589 | 1.4275550842285156250000000, 0.9039893150329589843750000, 590 | 1.4330937862396240234375000, 0.9013488292694091796875000, 591 | 1.4386162757873535156250000, 0.8986744880676269531250000, 592 | 1.4441221952438354492187500, 0.8959662318229675292968750, 593 | 1.4496113061904907226562500, 0.8932242989540100097656250, 594 | 1.4550836086273193359375000, 0.8904486894607543945312500, 595 | 1.4605387449264526367187500, 0.8876396417617797851562500, 596 | 1.4659764766693115234375000, 0.8847970962524414062500000, 597 | 1.4713968038558959960937500, 0.8819212317466735839843750, 598 | 1.4767992496490478515625000, 0.8790122270584106445312500, 599 | 1.4821838140487670898437500, 0.8760700821876525878906250, 600 | 1.4875501394271850585937500, 0.8730949759483337402343750, 601 | 1.4928982257843017578125000, 0.8700869679450988769531250, 602 | 1.4982277154922485351562500, 0.8670462369918823242187500, 603 | 1.5035383701324462890625000, 0.8639728426933288574218750, 604 | 1.5088301897048950195312500, 0.8608669042587280273437500, 605 | 1.5141028165817260742187500, 0.8577286005020141601562500, 606 | 1.5193560123443603515625000, 0.8545579910278320312500000, 607 | 1.5245896577835083007812500, 0.8513551950454711914062500, 608 | 1.5298036336898803710937500, 0.8481203317642211914062500, 609 | 1.5349975824356079101562500, 0.8448535799980163574218750, 610 | 1.5401715040206909179687500, 0.8415549397468566894531250, 611 | 1.5453250408172607421875000, 0.8382247090339660644531250, 612 | 1.5504579544067382812500000, 0.8348628878593444824218750, 613 | 1.5555702447891235351562500, 0.8314695954322814941406250, 614 | 1.5606615543365478515625000, 0.8280450105667114257812500, 615 | 1.5657318830490112304687500, 0.8245893120765686035156250, 616 | 1.5707807540893554687500000, 0.8211024999618530273437500, 617 | 1.5758081674575805664062500, 0.8175848126411437988281250, 618 | 1.5808140039443969726562500, 0.8140363097190856933593750, 619 | 1.5857979059219360351562500, 0.8104571700096130371093750, 620 | 1.5907597541809082031250000, 0.8068475723266601562500000, 621 | 1.5956993103027343750000000, 0.8032075166702270507812500, 622 | 1.6006164550781250000000000, 0.7995372414588928222656250, 623 | 1.6055110692977905273437500, 0.7958368659019470214843750, 624 | 1.6103827953338623046875000, 0.7921065688133239746093750, 625 | 1.6152316331863403320312500, 0.7883464097976684570312500, 626 | 1.6200572252273559570312500, 0.7845565676689147949218750, 627 | 1.6248594522476196289062500, 0.7807372212409973144531250, 628 | 1.6296381950378417968750000, 0.7768884301185607910156250, 629 | 1.6343933343887329101562500, 0.7730104327201843261718750, 630 | 1.6391245126724243164062500, 0.7691033482551574707031250, 631 | 1.6438316106796264648437500, 0.7651672363281250000000000, 632 | 1.6485143899917602539062500, 0.7612023949623107910156250, 633 | 1.6531728506088256835937500, 0.7572088241577148437500000, 634 | 1.6578067541122436523437500, 0.7531867623329162597656250, 635 | 1.6624157428741455078125000, 0.7491363883018493652343750, 636 | 1.6669999361038208007812500, 0.7450577616691589355468750, 637 | 1.6715589761734008789062500, 0.7409511208534240722656250, 638 | 1.6760927438735961914062500, 0.7368165254592895507812500, 639 | 1.6806010007858276367187500, 0.7326542735099792480468750, 640 | 1.6850836277008056640625000, 0.7284643650054931640625000, 641 | 1.6895405054092407226562500, 0.7242470979690551757812500, 642 | 1.6939715147018432617187500, 0.7200024724006652832031250, 643 | 1.6983762979507446289062500, 0.7157307863235473632812500, 644 | 1.7027547359466552734375000, 0.7114321589469909667968750, 645 | 1.7071068286895751953125000, 0.7071067690849304199218750, 646 | 1.7114322185516357421875000, 0.7027547359466552734375000, 647 | 1.7157307863235473632812500, 0.6983762383460998535156250, 648 | 1.7200025320053100585937500, 0.6939714550971984863281250, 649 | 1.7242470979690551757812500, 0.6895405054092407226562500, 650 | 1.7284643650054931640625000, 0.6850836277008056640625000, 651 | 1.7326543331146240234375000, 0.6806010007858276367187500, 652 | 1.7368165254592895507812500, 0.6760926842689514160156250, 653 | 1.7409511804580688476562500, 0.6715589165687561035156250, 654 | 1.7450578212738037109375000, 0.6669998764991760253906250, 655 | 1.7491364479064941406250000, 0.6624157428741455078125000, 656 | 1.7531868219375610351562500, 0.6578066945075988769531250, 657 | 1.7572088241577148437500000, 0.6531728506088256835937500, 658 | 1.7612024545669555664062500, 0.6485143899917602539062500, 659 | 1.7651672363281250000000000, 0.6438315510749816894531250, 660 | 1.7691034078598022460937500, 0.6391244530677795410156250, 661 | 1.7730104923248291015625000, 0.6343932747840881347656250, 662 | 1.7768884897232055664062500, 0.6296381950378417968750000, 663 | 1.7807372808456420898437500, 0.6248594522476196289062500, 664 | 1.7845566272735595703125000, 0.6200571656227111816406250, 665 | 1.7883464097976684570312500, 0.6152315735816955566406250, 666 | 1.7921066284179687500000000, 0.6103827953338623046875000, 667 | 1.7958369255065917968750000, 0.6055110096931457519531250, 668 | 1.7995373010635375976562500, 0.6006164550781250000000000, 669 | 1.8032075166702270507812500, 0.5956993103027343750000000, 670 | 1.8068475723266601562500000, 0.5907596945762634277343750, 671 | 1.8104572296142578125000000, 0.5857978463172912597656250, 672 | 1.8140363693237304687500000, 0.5808139443397521972656250, 673 | 1.8175848722457885742187500, 0.5758081674575805664062500, 674 | 1.8211024999618530273437500, 0.5707806944847106933593750, 675 | 1.8245893716812133789062500, 0.5657317638397216796875000, 676 | 1.8280450105667114257812500, 0.5606615543365478515625000, 677 | 1.8314696550369262695312500, 0.5555701851844787597656250, 678 | 1.8348629474639892578125000, 0.5504579544067382812500000, 679 | 1.8382247686386108398437500, 0.5453249812126159667968750, 680 | 1.8415549993515014648437500, 0.5401714444160461425781250, 681 | 1.8448536396026611328125000, 0.5349975824356079101562500, 682 | 1.8481203317642211914062500, 0.5298035740852355957031250, 683 | 1.8513551950454711914062500, 0.5245896577835083007812500, 684 | 1.8545579910278320312500000, 0.5193559527397155761718750, 685 | 1.8577286005020141601562500, 0.5141026973724365234375000, 686 | 1.8608669042587280273437500, 0.5088301301002502441406250, 687 | 1.8639729022979736328125000, 0.5035383701324462890625000, 688 | 1.8670462369918823242187500, 0.4982276558876037597656250, 689 | 1.8700870275497436523437500, 0.4928981661796569824218750, 690 | 1.8730950355529785156250000, 0.4875501394271850585937500, 691 | 1.8760701417922973632812500, 0.4821837544441223144531250, 692 | 1.8790122270584106445312500, 0.4767991900444030761718750, 693 | 1.8819212913513183593750000, 0.4713967144489288330078125, 694 | 1.8847970962524414062500000, 0.4659764766693115234375000, 695 | 1.8876396417617797851562500, 0.4605386853218078613281250, 696 | 1.8904486894607543945312500, 0.4550835490226745605468750, 697 | 1.8932243585586547851562500, 0.4496113061904907226562500, 698 | 1.8959662914276123046875000, 0.4441221058368682861328125, 699 | 1.8986744880676269531250000, 0.4386162161827087402343750, 700 | 1.9013488292694091796875000, 0.4330937862396240234375000, 701 | 1.9039893150329589843750000, 0.4275550544261932373046875, 702 | 1.9065957069396972656250000, 0.4220002293586730957031250, 703 | 1.9091680049896240234375000, 0.4164295196533203125000000, 704 | 1.9117060899734497070312500, 0.4108431339263916015625000, 705 | 1.9142097234725952148437500, 0.4052412807941436767578125, 706 | 1.9166790246963500976562500, 0.3996241688728332519531250, 707 | 1.9191138744354248046875000, 0.3939920067787170410156250, 708 | 1.9215140342712402343750000, 0.3883450031280517578125000, 709 | 1.9238795042037963867187500, 0.3826833963394165039062500, 710 | 1.9262102842330932617187500, 0.3770073652267456054687500, 711 | 1.9285061359405517578125000, 0.3713171780109405517578125, 712 | 1.9307669401168823242187500, 0.3656129539012908935546875, 713 | 1.9329928159713745117187500, 0.3598949909210205078125000, 714 | 1.9351835250854492187500000, 0.3541634976863861083984375, 715 | 1.9373390674591064453125000, 0.3484186530113220214843750, 716 | 1.9394592046737670898437500, 0.3426606953144073486328125, 717 | 1.9415440559387207031250000, 0.3368898332118988037109375, 718 | 1.9435935020446777343750000, 0.3311062753200531005859375, 719 | 1.9456073045730590820312500, 0.3253102600574493408203125, 720 | 1.9475855827331542968750000, 0.3195019960403442382812500, 721 | 1.9495282173156738281250000, 0.3136817216873168945312500, 722 | 1.9514350891113281250000000, 0.3078496158123016357421875, 723 | 1.9533060789108276367187500, 0.3020059168338775634765625, 724 | 1.9551411867141723632812500, 0.2961508631706237792968750, 725 | 1.9569402933120727539062500, 0.2902846336364746093750000, 726 | 1.9587035179138183593750000, 0.2844074964523315429687500, 727 | 1.9604305028915405273437500, 0.2785196602344512939453125, 728 | 1.9621213674545288085937500, 0.2726213335990905761718750, 729 | 1.9637761116027832031250000, 0.2667127251625061035156250, 730 | 1.9653944969177246093750000, 0.2607940733432769775390625, 731 | 1.9669765233993530273437500, 0.2548656165599822998046875, 732 | 1.9685220718383789062500000, 0.2489275634288787841796875, 733 | 1.9700312614440917968750000, 0.2429801374673843383789062, 734 | 1.9715038537979125976562500, 0.2370235770940780639648438, 735 | 1.9729399681091308593750000, 0.2310580760240554809570312, 736 | 1.9743393659591674804687500, 0.2250838726758956909179688, 737 | 1.9757021665573120117187500, 0.2191012054681777954101562, 738 | 1.9770281314849853515625000, 0.2131102830171585083007812, 739 | 1.9783173799514770507812500, 0.2071113437414169311523438, 740 | 1.9795697927474975585937500, 0.2011045962572097778320312, 741 | 1.9807852506637573242187500, 0.1950902789831161499023438, 742 | 1.9819638729095458984375000, 0.1890686303377151489257812, 743 | 1.9831055402755737304687500, 0.1830398440361022949218750, 744 | 1.9842101335525512695312500, 0.1770041882991790771484375, 745 | 1.9852776527404785156250000, 0.1709618568420410156250000, 746 | 1.9863080978393554687500000, 0.1649130880832672119140625, 747 | 1.9873014688491821289062500, 0.1588581055402755737304688, 748 | 1.9882575273513793945312500, 0.1527971476316452026367188, 749 | 1.9891765117645263671875000, 0.1467304378747940063476562, 750 | 1.9900581836700439453125000, 0.1406581997871398925781250, 751 | 1.9909026622772216796875000, 0.1345806717872619628906250, 752 | 1.9917097091674804687500000, 0.1284980773925781250000000, 753 | 1.9924795627593994140625000, 0.1224106326699256896972656, 754 | 1.9932119846343994140625000, 0.1163185909390449523925781, 755 | 1.9939069747924804687500000, 0.1102221682667732238769531, 756 | 1.9945645332336425781250000, 0.1041215956211090087890625, 757 | 1.9951847791671752929687500, 0.0980170965194702148437500, 758 | 1.9957674741744995117187500, 0.0919089168310165405273438, 759 | 1.9963126182556152343750000, 0.0857972726225852966308594, 760 | 1.9968203306198120117187500, 0.0796823948621749877929688, 761 | 1.9972904920578002929687500, 0.0735645219683647155761719, 762 | 1.9977231025695800781250000, 0.0674438774585723876953125, 763 | 1.9981181621551513671875000, 0.0613206960260868072509766, 764 | 1.9984755516052246093750000, 0.0551952011883258819580078, 765 | 1.9987955093383789062500000, 0.0490676313638687133789062, 766 | 1.9990776777267456054687500, 0.0429382137954235076904297, 767 | 1.9993224143981933593750000, 0.0368071794509887695312500, 768 | 1.9995293617248535156250000, 0.0306747611612081527709961, 769 | 1.9996988773345947265625000, 0.0245411861687898635864258, 770 | 1.9998306035995483398437500, 0.0184066873043775558471680, 771 | 1.9999246597290039062500000, 0.0122714946046471595764160, 772 | 1.9999811649322509765625000, 0.0061358409002423286437988, 773 | 2.0000000000000000000000000, -0.0000000437113882867379289, 774 | 1.9999811649322509765625000, -0.0061359284445643424987793, 775 | 1.9999246597290039062500000, -0.0122715821489691734313965, 776 | 1.9998306035995483398437500, -0.0184067748486995697021484, 777 | 1.9996987581253051757812500, -0.0245412737131118774414062, 778 | 1.9995293617248535156250000, -0.0306748468428850173950195, 779 | 1.9993224143981933593750000, -0.0368072688579559326171875, 780 | 1.9990776777267456054687500, -0.0429383032023906707763672, 781 | 1.9987955093383789062500000, -0.0490677207708358764648438, 782 | 1.9984755516052246093750000, -0.0551952905952930450439453, 783 | 1.9981181621551513671875000, -0.0613207817077636718750000, 784 | 1.9977231025695800781250000, -0.0674439668655395507812500, 785 | 1.9972904920578002929687500, -0.0735646113753318786621094, 786 | 1.9968203306198120117187500, -0.0796824842691421508789062, 787 | 1.9963126182556152343750000, -0.0857973545789718627929688, 788 | 1.9957673549652099609375000, -0.0919090062379837036132812, 789 | 1.9951847791671752929687500, -0.0980171859264373779296875, 790 | 1.9945645332336425781250000, -0.1041216775774955749511719, 791 | 1.9939069747924804687500000, -0.1102222502231597900390625, 792 | 1.9932119846343994140625000, -0.1163186803460121154785156, 793 | 1.9924795627593994140625000, -0.1224107220768928527832031, 794 | 1.9917097091674804687500000, -0.1284981518983840942382812, 795 | 1.9909026622772216796875000, -0.1345807611942291259765625, 796 | 1.9900581836700439453125000, -0.1406582891941070556640625, 797 | 1.9891765117645263671875000, -0.1467305272817611694335938, 798 | 1.9882575273513793945312500, -0.1527972370386123657226562, 799 | 1.9873014688491821289062500, -0.1588581949472427368164062, 800 | 1.9863080978393554687500000, -0.1649131625890731811523438, 801 | 1.9852776527404785156250000, -0.1709619313478469848632812, 802 | 1.9842101335525512695312500, -0.1770042628049850463867188, 803 | 1.9831054210662841796875000, -0.1830399334430694580078125, 804 | 1.9819638729095458984375000, -0.1890687048435211181640625, 805 | 1.9807852506637573242187500, -0.1950903683900833129882812, 806 | 1.9795697927474975585937500, -0.2011046856641769409179688, 807 | 1.9783173799514770507812500, -0.2071114182472229003906250, 808 | 1.9770281314849853515625000, -0.2131103724241256713867188, 809 | 1.9757021665573120117187500, -0.2191012948751449584960938, 810 | 1.9743393659591674804687500, -0.2250839620828628540039062, 811 | 1.9729399681091308593750000, -0.2310581505298614501953125, 812 | 1.9715038537979125976562500, -0.2370236515998840332031250, 813 | 1.9700312614440917968750000, -0.2429802268743515014648438, 814 | 1.9685220718383789062500000, -0.2489276528358459472656250, 815 | 1.9669764041900634765625000, -0.2548657059669494628906250, 816 | 1.9653943777084350585937500, -0.2607941627502441406250000, 817 | 1.9637761116027832031250000, -0.2667128145694732666015625, 818 | 1.9621213674545288085937500, -0.2726213932037353515625000, 819 | 1.9604305028915405273437500, -0.2785197496414184570312500, 820 | 1.9587035179138183593750000, -0.2844075858592987060546875, 821 | 1.9569402933120727539062500, -0.2902847230434417724609375, 822 | 1.9551411867141723632812500, -0.2961509525775909423828125, 823 | 1.9533060789108276367187500, -0.3020060062408447265625000, 824 | 1.9514349699020385742187500, -0.3078496754169464111328125, 825 | 1.9495282173156738281250000, -0.3136817812919616699218750, 826 | 1.9475855827331542968750000, -0.3195020854473114013671875, 827 | 1.9456073045730590820312500, -0.3253103494644165039062500, 828 | 1.9435933828353881835937500, -0.3311063647270202636718750, 829 | 1.9415440559387207031250000, -0.3368898928165435791015625, 830 | 1.9394592046737670898437500, -0.3426607549190521240234375, 831 | 1.9373389482498168945312500, -0.3484187424182891845703125, 832 | 1.9351835250854492187500000, -0.3541635870933532714843750, 833 | 1.9329928159713745117187500, -0.3598950803279876708984375, 834 | 1.9307669401168823242187500, -0.3656130433082580566406250, 835 | 1.9285060167312622070312500, -0.3713172376155853271484375, 836 | 1.9262101650238037109375000, -0.3770074546337127685546875, 837 | 1.9238795042037963867187500, -0.3826834857463836669921875, 838 | 1.9215140342712402343750000, -0.3883450925350189208984375, 839 | 1.9191138744354248046875000, -0.3939920961856842041015625, 840 | 1.9166790246963500976562500, -0.3996242582798004150390625, 841 | 1.9142097234725952148437500, -0.4052413702011108398437500, 842 | 1.9117059707641601562500000, -0.4108432233333587646484375, 843 | 1.9091680049896240234375000, -0.4164296090602874755859375, 844 | 1.9065957069396972656250000, -0.4220003187656402587890625, 845 | 1.9039893150329589843750000, -0.4275551438331604003906250, 846 | 1.9013488292694091796875000, -0.4330938756465911865234375, 847 | 1.8986744880676269531250000, -0.4386162757873535156250000, 848 | 1.8959661722183227539062500, -0.4441221952438354492187500, 849 | 1.8932242393493652343750000, -0.4496113657951354980468750, 850 | 1.8904486894607543945312500, -0.4550836384296417236328125, 851 | 1.8876396417617797851562500, -0.4605387747287750244140625, 852 | 1.8847970962524414062500000, -0.4659765362739562988281250, 853 | 1.8819212913513183593750000, -0.4713967740535736083984375, 854 | 1.8790122270584106445312500, -0.4767992794513702392578125, 855 | 1.8760700225830078125000000, -0.4821838140487670898437500, 856 | 1.8730949163436889648437500, -0.4875501990318298339843750, 857 | 1.8700869083404541015625000, -0.4928982555866241455078125, 858 | 1.8670462369918823242187500, -0.4982277154922485351562500, 859 | 1.8639727830886840820312500, -0.5035384297370910644531250, 860 | 1.8608669042587280273437500, -0.5088301897048950195312500, 861 | 1.8577286005020141601562500, -0.5141028165817260742187500, 862 | 1.8545579910278320312500000, -0.5193560123443603515625000, 863 | 1.8513551950454711914062500, -0.5245897173881530761718750, 864 | 1.8481203317642211914062500, -0.5298036932945251464843750, 865 | 1.8448535203933715820312500, -0.5349976420402526855468750, 866 | 1.8415549993515014648437500, -0.5401715040206909179687500, 867 | 1.8382246494293212890625000, -0.5453250408172607421875000, 868 | 1.8348628282546997070312500, -0.5504580140113830566406250, 869 | 1.8314695358276367187500000, -0.5555703043937683105468750, 870 | 1.8280450105667114257812500, -0.5606616139411926269531250, 871 | 1.8245892524719238281250000, -0.5657318830490112304687500, 872 | 1.8211024999618530273437500, -0.5707808136940002441406250, 873 | 1.8175847530364990234375000, -0.5758082270622253417968750, 874 | 1.8140362501144409179687500, -0.5808140039443969726562500, 875 | 1.8104571104049682617187500, -0.5857979059219360351562500, 876 | 1.8068475723266601562500000, -0.5907597541809082031250000, 877 | 1.8032075166702270507812500, -0.5956993699073791503906250, 878 | 1.7995371818542480468750000, -0.6006165146827697753906250, 879 | 1.7958369255065917968750000, -0.6055110692977905273437500, 880 | 1.7921065092086791992187500, -0.6103828549385070800781250, 881 | 1.7883464097976684570312500, -0.6152316331863403320312500, 882 | 1.7845565080642700195312500, -0.6200572848320007324218750, 883 | 1.7807371616363525390625000, -0.6248595118522644042968750, 884 | 1.7768883705139160156250000, -0.6296383142471313476562500, 885 | 1.7730103731155395507812500, -0.6343933343887329101562500, 886 | 1.7691032886505126953125000, -0.6391245126724243164062500, 887 | 1.7651672363281250000000000, -0.6438316106796264648437500, 888 | 1.7612023353576660156250000, -0.6485144495964050292968750, 889 | 1.7572088241577148437500000, -0.6531729102134704589843750, 890 | 1.7531867027282714843750000, -0.6578067541122436523437500, 891 | 1.7491363286972045898437500, -0.6624158024787902832031250, 892 | 1.7450577020645141601562500, -0.6669999957084655761718750, 893 | 1.7409510612487792968750000, -0.6715589761734008789062500, 894 | 1.7368165254592895507812500, -0.6760927438735961914062500, 895 | 1.7326542139053344726562500, -0.6806010603904724121093750, 896 | 1.7284643650054931640625000, -0.6850836873054504394531250, 897 | 1.7242469787597656250000000, -0.6895405650138854980468750, 898 | 1.7200024127960205078125000, -0.6939715147018432617187500, 899 | 1.7157307863235473632812500, -0.6983762979507446289062500, 900 | 1.7114320993423461914062500, -0.7027547955513000488281250, 901 | 1.7071067094802856445312500, -0.7071068286895751953125000, 902 | 1.7027547359466552734375000, -0.7114322185516357421875000, 903 | 1.6983761787414550781250000, -0.7157308459281921386718750, 904 | 1.6939713954925537109375000, -0.7200025320053100585937500, 905 | 1.6895405054092407226562500, -0.7242471575736999511718750, 906 | 1.6850836277008056640625000, -0.7284644246101379394531250, 907 | 1.6806010007858276367187500, -0.7326543331146240234375000, 908 | 1.6760926246643066406250000, -0.7368165850639343261718750, 909 | 1.6715588569641113281250000, -0.7409511804580688476562500, 910 | 1.6669998168945312500000000, -0.7450578212738037109375000, 911 | 1.6624157428741455078125000, -0.7491364479064941406250000, 912 | 1.6578066349029541015625000, -0.7531868219375610351562500, 913 | 1.6531728506088256835937500, -0.7572088837623596191406250, 914 | 1.6485143899917602539062500, -0.7612024545669555664062500, 915 | 1.6438314914703369140625000, -0.7651672959327697753906250, 916 | 1.6391243934631347656250000, -0.7691034078598022460937500, 917 | 1.6343932151794433593750000, -0.7730104923248291015625000, 918 | 1.6296381950378417968750000, -0.7768884897232055664062500, 919 | 1.6248594522476196289062500, -0.7807372808456420898437500, 920 | 1.6200571060180664062500000, -0.7845566272735595703125000, 921 | 1.6152315139770507812500000, -0.7883464694023132324218750, 922 | 1.6103827953338623046875000, -0.7921066284179687500000000, 923 | 1.6055109500885009765625000, -0.7958369255065917968750000, 924 | 1.6006164550781250000000000, -0.7995373010635375976562500, 925 | 1.5956991910934448242187500, -0.8032075762748718261718750, 926 | 1.5907596349716186523437500, -0.8068475723266601562500000, 927 | 1.5857977867126464843750000, -0.8104572296142578125000000, 928 | 1.5808138847351074218750000, -0.8140363693237304687500000, 929 | 1.5758081674575805664062500, -0.8175848722457885742187500, 930 | 1.5707806348800659179687500, -0.8211025595664978027343750, 931 | 1.5657317638397216796875000, -0.8245893716812133789062500, 932 | 1.5606615543365478515625000, -0.8280450701713562011718750, 933 | 1.5555701255798339843750000, -0.8314696550369262695312500, 934 | 1.5504579544067382812500000, -0.8348628878593444824218750, 935 | 1.5453249216079711914062500, -0.8382247686386108398437500, 936 | 1.5401713848114013671875000, -0.8415549993515014648437500, 937 | 1.5349975824356079101562500, -0.8448535799980163574218750, 938 | 1.5298035144805908203125000, -0.8481203913688659667968750, 939 | 1.5245896577835083007812500, -0.8513552546501159667968750, 940 | 1.5193558931350708007812500, -0.8545580506324768066406250, 941 | 1.5141026973724365234375000, -0.8577286601066589355468750, 942 | 1.5088300704956054687500000, -0.8608669638633728027343750, 943 | 1.5035383701324462890625000, -0.8639729022979736328125000, 944 | 1.4982275962829589843750000, -0.8670462965965270996093750, 945 | 1.4928981065750122070312500, -0.8700870275497436523437500, 946 | 1.4875501394271850585937500, -0.8730950355529785156250000, 947 | 1.4821836948394775390625000, -0.8760701417922973632812500, 948 | 1.4767991304397583007812500, -0.8790122866630554199218750, 949 | 1.4713966846466064453125000, -0.8819212913513183593750000, 950 | 1.4659764766693115234375000, -0.8847971558570861816406250, 951 | 1.4605386257171630859375000, -0.8876396417617797851562500, 952 | 1.4550834894180297851562500, -0.8904487490653991699218750, 953 | 1.4496113061904907226562500, -0.8932243585586547851562500, 954 | 1.4441220760345458984375000, -0.8959662914276123046875000, 955 | 1.4386161565780639648437500, -0.8986744880676269531250000, 956 | 1.4330937862396240234375000, -0.9013488888740539550781250, 957 | 1.4275550842285156250000000, -0.9039893150329589843750000, 958 | 1.4220001697540283203125000, -0.9065957069396972656250000, 959 | 1.4164295196533203125000000, -0.9091680049896240234375000, 960 | 1.4108431339263916015625000, -0.9117060899734497070312500, 961 | 1.4052412509918212890625000, -0.9142097830772399902343750, 962 | 1.3996241092681884765625000, -0.9166790843009948730468750, 963 | 1.3939919471740722656250000, -0.9191138744354248046875000, 964 | 1.3883450031280517578125000, -0.9215140938758850097656250, 965 | 1.3826833963394165039062500, -0.9238795638084411621093750, 966 | 1.3770073652267456054687500, -0.9262102842330932617187500, 967 | 1.3713171482086181640625000, -0.9285061359405517578125000, 968 | 1.3656129837036132812500000, -0.9307669997215270996093750, 969 | 1.3598949909210205078125000, -0.9329928159713745117187500, 970 | 1.3541634082794189453125000, -0.9351835250854492187500000, 971 | 1.3484185934066772460937500, -0.9373390674591064453125000, 972 | 1.3426606655120849609375000, -0.9394592642784118652343750, 973 | 1.3368897438049316406250000, -0.9415441155433654785156250, 974 | 1.3311061859130859375000000, -0.9435935020446777343750000, 975 | 1.3253102302551269531250000, -0.9456073641777038574218750, 976 | 1.3195019960403442382812500, -0.9475856423377990722656250, 977 | 1.3136817216873168945312500, -0.9495282173156738281250000, 978 | 1.3078495264053344726562500, -0.9514350295066833496093750, 979 | 1.3020058870315551757812500, -0.9533060789108276367187500, 980 | 1.2961508035659790039062500, -0.9551411867141723632812500, 981 | 1.2902846336364746093750000, -0.9569403529167175292968750, 982 | 1.2844074964523315429687500, -0.9587035179138183593750000, 983 | 1.2785196304321289062500000, -0.9604305624961853027343750, 984 | 1.2726212739944458007812500, -0.9621214270591735839843750, 985 | 1.2667126655578613281250000, -0.9637761116027832031250000, 986 | 1.2607940435409545898437500, -0.9653944373130798339843750, 987 | 1.2548655271530151367187500, -0.9669764637947082519531250, 988 | 1.2489274740219116210937500, -0.9685221314430236816406250, 989 | 1.2429801225662231445312500, -0.9700312614440917968750000, 990 | 1.2370234727859497070312500, -0.9715039134025573730468750, 991 | 1.2310580015182495117187500, -0.9729399681091308593750000, 992 | 1.2250838279724121093750000, -0.9743394255638122558593750, 993 | 1.2191011905670166015625000, -0.9757021665573120117187500, 994 | 1.2131102085113525390625000, -0.9770281314849853515625000, 995 | 1.2071112394332885742187500, -0.9783173799514770507812500, 996 | 1.2011045217514038085937500, -0.9795697927474975585937500, 997 | 1.1950902938842773437500000, -0.9807853102684020996093750, 998 | 1.1890685558319091796875000, -0.9819638729095458984375000, 999 | 1.1830397844314575195312500, -0.9831054806709289550781250, 1000 | 1.1770040988922119140625000, -0.9842101335525512695312500, 1001 | 1.1709618568420410156250000, -0.9852776527404785156250000, 1002 | 1.1649130582809448242187500, -0.9863080978393554687500000, 1003 | 1.1588580608367919921875000, -0.9873014092445373535156250, 1004 | 1.1527971029281616210937500, -0.9882575869560241699218750, 1005 | 1.1467304229736328125000000, -0.9891765117645263671875000, 1006 | 1.1406581401824951171875000, -0.9900582432746887207031250, 1007 | 1.1345806121826171875000000, -0.9909026622772216796875000, 1008 | 1.1284980773925781250000000, -0.9917097687721252441406250, 1009 | 1.1224105358123779296875000, -0.9924795627593994140625000, 1010 | 1.1163185834884643554687500, -0.9932119846343994140625000, 1011 | 1.1102221012115478515625000, -0.9939069747924804687500000, 1012 | 1.1041215658187866210937500, -0.9945645928382873535156250, 1013 | 1.0980170965194702148437500, -0.9951847195625305175781250, 1014 | 1.0919088125228881835937500, -0.9957674145698547363281250, 1015 | 1.0857971906661987304687500, -0.9963126182556152343750000, 1016 | 1.0796823501586914062500000, -0.9968203306198120117187500, 1017 | 1.0735645294189453125000000, -0.9972904920578002929687500, 1018 | 1.0674438476562500000000000, -0.9977230429649353027343750, 1019 | 1.0613206624984741210937500, -0.9981181025505065917968750, 1020 | 1.0551952123641967773437500, -0.9984756112098693847656250, 1021 | 1.0490676164627075195312500, -0.9987954497337341308593750, 1022 | 1.0429381132125854492187500, -0.9990777373313903808593750, 1023 | 1.0368071794509887695312500, -0.9993224143981933593750000, 1024 | 1.0306746959686279296875000, -0.9995294213294982910156250, 1025 | 1.0245411396026611328125000, -0.9996988177299499511718750, 1026 | 1.0184066295623779296875000, -0.9998306035995483398437500, 1027 | 1.0122714042663574218750000, -0.9999247193336486816406250, 1028 | 1.0061358213424682617187500, -0.9999811649322509765625000, 1029 | 1030 | }; 1031 | -------------------------------------------------------------------------------- /windows.c: -------------------------------------------------------------------------------- 1 | const float win1024_f32[1024] = { 2 | 0.000000000000000000000000, 0.000009417533874511718750, 0.000037640333175659179688, 0.000084698200225830078125, 3 | 0.000150591135025024414062, 0.000235289335250854492188, 0.000338792800903320312500, 0.000461131334304809570312, 4 | 0.000602275133132934570312, 0.000762224197387695312500, 0.000940948724746704101562, 0.001138478517532348632812, 5 | 0.001354783773422241210938, 0.001589864492416381835938, 0.001843690872192382812500, 0.002116292715072631835938, 6 | 0.002407640218734741210938, 0.002717703580856323242188, 0.003046512603759765625000, 0.003394037485122680664062, 7 | 0.003760218620300292968750, 0.004145115613937377929688, 0.004548668861389160156250, 0.004970908164978027343750, 8 | 0.005411744117736816406250, 0.005871206521987915039062, 0.006349295377731323242188, 0.006845951080322265625000, 9 | 0.007361173629760742187500, 0.007894963026046752929688, 0.008447259664535522460938, 0.009018063545227050781250, 10 | 0.009607374668121337890625, 0.010215103626251220703125, 0.010841310024261474609375, 0.011485934257507324218750, 11 | 0.012148946523666381835938, 0.012830317020416259765625, 0.013530015945434570312500, 0.014248043298721313476562, 12 | 0.014984369277954101562500, 0.015738964080810546875000, 0.016511768102645874023438, 0.017302781343460083007812, 13 | 0.018111974000930786132812, 0.018939286470413208007812, 0.019784748554229736328125, 0.020648270845413208007812, 14 | 0.021529823541641235351562, 0.022429406642913818359375, 0.023346960544586181640625, 0.024282485246658325195312, 15 | 0.025235891342163085937500, 0.026207208633422851562500, 0.027196347713470458984375, 0.028203278779983520507812, 16 | 0.029227972030639648437500, 0.030270397663116455078125, 0.031330496072769165039062, 0.032408267259597778320312, 17 | 0.033503621816635131835938, 0.034616529941558837890625, 0.035746991634368896484375, 0.036894887685775756835938, 18 | 0.038060218095779418945312, 0.039242982864379882812500, 0.040443062782287597656250, 0.041660457849502563476562, 19 | 0.042895108461380004882812, 0.044146984815597534179688, 0.045416027307510375976562, 0.046702146530151367187500, 20 | 0.048005372285842895507812, 0.049325585365295410156250, 0.050662785768508911132812, 0.052016884088516235351562, 21 | 0.053387820720672607421875, 0.054775625467300415039062, 0.056180179119110107421875, 0.057601451873779296875000, 22 | 0.059039354324340820312500, 0.060493886470794677734375, 0.061964958906173706054688, 0.063452512025833129882812, 23 | 0.064956516027450561523438, 0.066476881504058837890625, 0.068013578653335571289062, 0.069566547870635986328125, 24 | 0.071135699748992919921875, 0.072721004486083984375000, 0.074322432279586791992188, 0.075939863920211791992188, 25 | 0.077573210000991821289062, 0.079222500324249267578125, 0.080887645483016967773438, 0.082568556070327758789062, 26 | 0.084265202283859252929688, 0.085977494716644287109375, 0.087705373764038085937500, 0.089448750019073486328125, 27 | 0.091207593679428100585938, 0.092981845140457153320312, 0.094771414995193481445312, 0.096576213836669921875000, 28 | 0.098396241664886474609375, 0.100231349468231201171875, 0.102081537246704101562500, 0.103946715593338012695312, 29 | 0.105826795101165771484375, 0.107721686363220214843750, 0.109631389379501342773438, 0.111555784940719604492188, 30 | 0.113494783639907836914062, 0.115448325872421264648438, 0.117416381835937500000000, 0.119398832321166992187500, 31 | 0.121395587921142578125000, 0.123406618833541870117188, 0.125431835651397705078125, 0.127471148967742919921875, 32 | 0.129524409770965576171875, 0.131591707468032836914062, 0.133672863245010375976562, 0.135767817497253417968750, 33 | 0.137876451015472412109375, 0.139998763799667358398438, 0.142134606838226318359375, 0.144283890724182128906250, 34 | 0.146446615457534790039062, 0.148622632026672363281250, 0.150811880826950073242188, 0.153014272451400756835938, 35 | 0.155229747295379638671875, 0.157458186149597167968750, 0.159699499607086181640625, 0.161953657865524291992188, 36 | 0.164220541715621948242188, 0.166500031948089599609375, 0.168792128562927246093750, 0.171096682548522949218750, 37 | 0.173413604497909545898438, 0.175742805004119873046875, 0.178084224462509155273438, 0.180437803268432617187500, 38 | 0.182803362607955932617188, 0.185180902481079101562500, 0.187570273876190185546875, 0.189971417188644409179688, 39 | 0.192384213209152221679688, 0.194808602333068847656250, 0.197244495153427124023438, 0.199691772460937500000000, 40 | 0.202150344848632812500000, 0.204620152711868286132812, 0.207101076841354370117188, 0.209593027830123901367188, 41 | 0.212095916271209716796875, 0.214609652757644653320312, 0.217134088277816772460938, 0.219669222831726074218750, 42 | 0.222214907407760620117188, 0.224771022796630859375000, 0.227337509393692016601562, 0.229914247989654541015625, 43 | 0.232501178979873657226562, 0.235098183155059814453125, 0.237705171108245849609375, 0.240322023630142211914062, 44 | 0.242948651313781738281250, 0.245584964752197265625000, 0.248230785131454467773438, 0.250886172056198120117188, 45 | 0.253550916910171508789062, 0.256224930286407470703125, 0.258908152580261230468750, 0.261600434780120849609375, 46 | 0.264301657676696777343750, 0.267011761665344238281250, 0.269730627536773681640625, 0.272458195686340332031250, 47 | 0.275194346904754638671875, 0.277938961982727050781250, 0.280691921710968017578125, 0.283453106880187988281250, 48 | 0.286222457885742187500000, 0.288999855518341064453125, 0.291785240173339843750000, 0.294578433036804199218750, 49 | 0.297379374504089355468750, 0.300187945365905761718750, 0.303004026412963867187500, 0.305827468633651733398438, 50 | 0.308658301830291748046875, 0.311496317386627197265625, 0.314341425895690917968750, 0.317193508148193359375000, 51 | 0.320052504539489746093750, 0.322918295860290527343750, 0.325790643692016601562500, 0.328669637441635131835938, 52 | 0.331555068492889404296875, 0.334446847438812255859375, 0.337344884872436523437500, 0.340249001979827880859375, 53 | 0.343159168958663940429688, 0.346075177192687988281250, 0.348997026681900024414062, 0.351924568414688110351562, 54 | 0.354857683181762695312500, 0.357796251773834228515625, 0.360740184783935546875000, 0.363689363002777099609375, 55 | 0.366643607616424560546875, 0.369602948427200317382812, 0.372567176818847656250000, 0.375536203384399414062500, 56 | 0.378509938716888427734375, 0.381488233804702758789062, 0.384470939636230468750000, 0.387458026409149169921875, 57 | 0.390449404716491699218750, 0.393444865942001342773438, 0.396444320678710937500000, 0.399447709321975708007812, 58 | 0.402454882860183715820312, 0.405465662479400634765625, 0.408480048179626464843750, 0.411497890949249267578125, 59 | 0.414519071578979492187500, 0.417543470859527587890625, 0.420570969581604003906250, 0.423601448535919189453125, 60 | 0.426634758710861206054688, 0.429670870304107666015625, 0.432709664106369018554688, 0.435750961303710937500000, 61 | 0.438794672489166259765625, 0.441840708255767822265625, 0.444888949394226074218750, 0.447939187288284301757812, 62 | 0.450991421937942504882812, 0.454045534133911132812500, 0.457101374864578247070312, 0.460158824920654296875000, 63 | 0.463217765092849731445312, 0.466278076171875000000000, 0.469339638948440551757812, 0.472402393817901611328125, 64 | 0.475466161966323852539062, 0.478530883789062500000000, 0.481596410274505615234375, 0.484662622213363647460938, 65 | 0.487729430198669433593750, 0.490796625614166259765625, 0.493864238262176513671875, 0.496932059526443481445312, 66 | 0.500000000000000000000000, 0.503067970275878906250000, 0.506135821342468261718750, 0.509203433990478515625000, 67 | 0.512270629405975341796875, 0.515337407588958740234375, 0.518403649330139160156250, 0.521469175815582275390625, 68 | 0.524533867835998535156250, 0.527597665786743164062500, 0.530660390853881835937500, 0.533721983432769775390625, 69 | 0.536782264709472656250000, 0.539841234683990478515625, 0.542898654937744140625000, 0.545954525470733642578125, 70 | 0.549008607864379882812500, 0.552060842514038085937500, 0.555111110210418701171875, 0.558159351348876953125000, 71 | 0.561205327510833740234375, 0.564249098300933837890625, 0.567290365695953369140625, 0.570329189300537109375000, 72 | 0.573365271091461181640625, 0.576398611068725585937500, 0.579429090023040771484375, 0.582456588745117187500000, 73 | 0.585480988025665283203125, 0.588502168655395507812500, 0.591520011425018310546875, 0.594534397125244140625000, 74 | 0.597545146942138671875000, 0.600552320480346679687500, 0.603555679321289062500000, 0.606555163860321044921875, 75 | 0.609550654888153076171875, 0.612542033195495605468750, 0.615529119968414306640625, 0.618511795997619628906250, 76 | 0.621490120887756347656250, 0.624463796615600585937500, 0.627432823181152343750000, 0.630397081375122070312500, 77 | 0.633356451988220214843750, 0.636310696601867675781250, 0.639259815216064453125000, 0.642203807830810546875000, 78 | 0.645142376422882080078125, 0.648075461387634277343750, 0.651003003120422363281250, 0.653924882411956787109375, 79 | 0.656840860843658447265625, 0.659751057624816894531250, 0.662655174732208251953125, 0.665553212165832519531250, 80 | 0.668444991111755371093750, 0.671330392360687255859375, 0.674209356307983398437500, 0.677081763744354248046875, 81 | 0.679947495460510253906250, 0.682806491851806640625000, 0.685658633708953857421875, 0.688503742218017578125000, 82 | 0.691341757774353027343750, 0.694172561168670654296875, 0.696996033191680908203125, 0.699812114238739013671875, 83 | 0.702620685100555419921875, 0.705421626567840576171875, 0.708214759826660156250000, 0.711000084877014160156250, 84 | 0.713777542114257812500000, 0.716546893119812011718750, 0.719308137893676757812500, 0.722061097621917724609375, 85 | 0.724805712699890136718750, 0.727541804313659667968750, 0.730269432067871093750000, 0.732988297939300537109375, 86 | 0.735698401927947998046875, 0.738399684429168701171875, 0.741091966629028320312500, 0.743775129318237304687500, 87 | 0.746449112892150878906250, 0.749113798141479492187500, 0.751769185066223144531250, 0.754415035247802734375000, 88 | 0.757051348686218261718750, 0.759678006172180175781250, 0.762294888496398925781250, 0.764901876449584960937500, 89 | 0.767498850822448730468750, 0.770085811614990234375000, 0.772662520408630371093750, 0.775229036808013916015625, 90 | 0.777785181999206542968750, 0.780330777168273925781250, 0.782865881919860839843750, 0.785390377044677734375000, 91 | 0.787904083728790283203125, 0.790406942367553710937500, 0.792898952960968017578125, 0.795379877090454101562500, 92 | 0.797849655151367187500000, 0.800308287143707275390625, 0.802755594253540039062500, 0.805191457271575927734375, 93 | 0.807615876197814941406250, 0.810028672218322753906250, 0.812429785728454589843750, 0.814819097518920898437500, 94 | 0.817196607589721679687500, 0.819562196731567382812500, 0.821915745735168457031250, 0.824257194995880126953125, 95 | 0.826586425304412841796875, 0.828903377056121826171875, 0.831207871437072753906250, 0.833500027656555175781250, 96 | 0.835779547691345214843750, 0.838046431541442871093750, 0.840300559997558593750000, 0.842541933059692382812500, 97 | 0.844770312309265136718750, 0.846985697746276855468750, 0.849188089370727539062500, 0.851377367973327636718750, 98 | 0.853553414344787597656250, 0.855716109275817871093750, 0.857865452766418457031250, 0.860001266002655029296875, 99 | 0.862123548984527587890625, 0.864232182502746582031250, 0.866327166557312011718750, 0.868408322334289550781250, 100 | 0.870475590229034423828125, 0.872528910636901855468750, 0.874568223953247070312500, 0.876593351364135742187500, 101 | 0.878604412078857421875000, 0.880601167678833007812500, 0.882583618164062500000000, 0.884551644325256347656250, 102 | 0.886505246162414550781250, 0.888444244861602783203125, 0.890368640422821044921875, 0.892278313636779785156250, 103 | 0.894173264503479003906250, 0.896053314208984375000000, 0.897918462753295898437500, 0.899768710136413574218750, 104 | 0.901603817939758300781250, 0.903423786163330078125000, 0.905228614807128906250000, 0.907018184661865234375000, 105 | 0.908792376518249511718750, 0.910551249980926513671875, 0.912294626235961914062500, 0.914022564888000488281250, 106 | 0.915734827518463134765625, 0.917431473731994628906250, 0.919112384319305419921875, 0.920777559280395507812500, 107 | 0.922426819801330566406250, 0.924060225486755371093750, 0.925677657127380371093750, 0.927278995513916015625000, 108 | 0.928864300251007080078125, 0.930433452129364013671875, 0.931986451148986816406250, 0.933523118495941162109375, 109 | 0.935043513774871826171875, 0.936547517776489257812500, 0.938035070896148681640625, 0.939506113529205322265625, 110 | 0.940960645675659179687500, 0.942398548126220703125000, 0.943819820880889892578125, 0.945224404335021972656250, 111 | 0.946612119674682617187500, 0.947983145713806152343750, 0.949337244033813476562500, 0.950674414634704589843750, 112 | 0.951994657516479492187500, 0.953297853469848632812500, 0.954584002494812011718750, 0.955852985382080078125000, 113 | 0.957104921340942382812500, 0.958339571952819824218750, 0.959556937217712402343750, 0.960757017135620117187500, 114 | 0.961939811706542968750000, 0.963105142116546630859375, 0.964253008365631103515625, 0.965383470058441162109375, 115 | 0.966496348381042480468750, 0.967591762542724609375000, 0.968669533729553222656250, 0.969729602336883544921875, 116 | 0.970772027969360351562500, 0.971796751022338867187500, 0.972803711891174316406250, 0.973792791366577148437500, 117 | 0.974764108657836914062500, 0.975717544555664062500000, 0.976653039455413818359375, 0.977570593357086181640625, 118 | 0.978470146656036376953125, 0.979351758956909179687500, 0.980215251445770263671875, 0.981060743331909179687500, 119 | 0.981888055801391601562500, 0.982697248458862304687500, 0.983488202095031738281250, 0.984261035919189453125000, 120 | 0.985015630722045898437500, 0.985751986503601074218750, 0.986469984054565429687500, 0.987169742584228515625000, 121 | 0.987851083278656005859375, 0.988514065742492675781250, 0.989158689975738525390625, 0.989784896373748779296875, 122 | 0.990392684936523437500000, 0.990981936454772949218750, 0.991552710533142089843750, 0.992105007171630859375000, 123 | 0.992638826370239257812500, 0.993154048919677734375000, 0.993650674819946289062500, 0.994128823280334472656250, 124 | 0.994588255882263183593750, 0.995029091835021972656250, 0.995451331138610839843750, 0.995854854583740234375000, 125 | 0.996239781379699707031250, 0.996605992317199707031250, 0.996953487396240234375000, 0.997282266616821289062500, 126 | 0.997592329978942871093750, 0.997883677482604980468750, 0.998156309127807617187500, 0.998410165309906005859375, 127 | 0.998645246028900146484375, 0.998861551284790039062500, 0.999059081077575683593750, 0.999237775802612304687500, 128 | 0.999397754669189453125000, 0.999538898468017578125000, 0.999661207199096679687500, 0.999764680862426757812500, 129 | 0.999849438667297363281250, 0.999915301799774169921875, 0.999962329864501953125000, 0.999990582466125488281250, 130 | 1.000000000000000000000000, 0.999990582466125488281250, 0.999962329864501953125000, 0.999915301799774169921875, 131 | 0.999849438667297363281250, 0.999764680862426757812500, 0.999661207199096679687500, 0.999538898468017578125000, 132 | 0.999397754669189453125000, 0.999237775802612304687500, 0.999059081077575683593750, 0.998861551284790039062500, 133 | 0.998645186424255371093750, 0.998410105705261230468750, 0.998156309127807617187500, 0.997883677482604980468750, 134 | 0.997592329978942871093750, 0.997282266616821289062500, 0.996953487396240234375000, 0.996605992317199707031250, 135 | 0.996239781379699707031250, 0.995854854583740234375000, 0.995451331138610839843750, 0.995029091835021972656250, 136 | 0.994588255882263183593750, 0.994128823280334472656250, 0.993650674819946289062500, 0.993154048919677734375000, 137 | 0.992638826370239257812500, 0.992105007171630859375000, 0.991552710533142089843750, 0.990981936454772949218750, 138 | 0.990392625331878662109375, 0.989784836769104003906250, 0.989158630371093750000000, 0.988514065742492675781250, 139 | 0.987851023674011230468750, 0.987169682979583740234375, 0.986469984054565429687500, 0.985751926898956298828125, 140 | 0.985015630722045898437500, 0.984261035919189453125000, 0.983488202095031738281250, 0.982697188854217529296875, 141 | 0.981888055801391601562500, 0.981060683727264404296875, 0.980215191841125488281250, 0.979351699352264404296875, 142 | 0.978470146656036376953125, 0.977570593357086181640625, 0.976653039455413818359375, 0.975717544555664062500000, 143 | 0.974764108657836914062500, 0.973792791366577148437500, 0.972803652286529541015625, 0.971796751022338867187500, 144 | 0.970772027969360351562500, 0.969729602336883544921875, 0.968669533729553222656250, 0.967591762542724609375000, 145 | 0.966496348381042480468750, 0.965383470058441162109375, 0.964253008365631103515625, 0.963105142116546630859375, 146 | 0.961939811706542968750000, 0.960757017135620117187500, 0.959556937217712402343750, 0.958339571952819824218750, 147 | 0.957104861736297607421875, 0.955852985382080078125000, 0.954584002494812011718750, 0.953297853469848632812500, 148 | 0.951994657516479492187500, 0.950674414634704589843750, 0.949337244033813476562500, 0.947983086109161376953125, 149 | 0.946612119674682617187500, 0.945224404335021972656250, 0.943819820880889892578125, 0.942398548126220703125000, 150 | 0.940960645675659179687500, 0.939506113529205322265625, 0.938035011291503906250000, 0.936547458171844482421875, 151 | 0.935043454170227050781250, 0.933523058891296386718750, 0.931986391544342041015625, 0.930433392524719238281250, 152 | 0.928864240646362304687500, 0.927278935909271240234375, 0.925677597522735595703125, 0.924060165882110595703125, 153 | 0.922426819801330566406250, 0.920777499675750732421875, 0.919112324714660644531250, 0.917431414127349853515625, 154 | 0.915734767913818359375000, 0.914022505283355712890625, 0.912294626235961914062500, 0.910551190376281738281250, 155 | 0.908792376518249511718750, 0.907018125057220458984375, 0.905228555202484130859375, 0.903423726558685302734375, 156 | 0.901603817939758300781250, 0.899768650531768798828125, 0.897918462753295898437500, 0.896053314208984375000000, 157 | 0.894173204898834228515625, 0.892278313636779785156250, 0.890368580818176269531250, 0.888444185256958007812500, 158 | 0.886505186557769775390625, 0.884551644325256347656250, 0.882583618164062500000000, 0.880601167678833007812500, 159 | 0.878604412078857421875000, 0.876593351364135742187500, 0.874568223953247070312500, 0.872528910636901855468750, 160 | 0.870475530624389648437500, 0.868408262729644775390625, 0.866327106952667236328125, 0.864232182502746582031250, 161 | 0.862123489379882812500000, 0.860001206398010253906250, 0.857865393161773681640625, 0.855716049671173095703125, 162 | 0.853553295135498046875000, 0.851377308368682861328125, 0.849188089370727539062500, 0.846985638141632080078125, 163 | 0.844770312309265136718750, 0.842541813850402832031250, 0.840300440788269042968750, 0.838046312332153320312500, 164 | 0.835779428482055664062500, 0.833499908447265625000000, 0.831207871437072753906250, 0.828903317451477050781250, 165 | 0.826586484909057617187500, 0.824257254600524902343750, 0.821915805339813232421875, 0.819562196731567382812500, 166 | 0.817196667194366455078125, 0.814819097518920898437500, 0.812429726123809814453125, 0.810028612613677978515625, 167 | 0.807615756988525390625000, 0.805191397666931152343750, 0.802755475044250488281250, 0.800308227539062500000000, 168 | 0.797849595546722412109375, 0.795379757881164550781250, 0.792898893356323242187500, 0.790406942367553710937500, 169 | 0.787904024124145507812500, 0.785390257835388183593750, 0.782865822315216064453125, 0.780330657958984375000000, 170 | 0.777785003185272216796875, 0.775228857994079589843750, 0.772662401199340820312500, 0.770085573196411132812500, 171 | 0.767498672008514404296875, 0.764901638031005859375000, 0.762294650077819824218750, 0.759678006172180175781250, 172 | 0.757051408290863037109375, 0.754415094852447509765625, 0.751769185066223144531250, 0.749113857746124267578125, 173 | 0.746449112892150878906250, 0.743775069713592529296875, 0.741091847419738769531250, 0.738399624824523925781250, 174 | 0.735698342323303222656250, 0.732988238334655761718750, 0.730269312858581542968750, 0.727541744709014892578125, 175 | 0.724805593490600585937500, 0.722061038017272949218750, 0.719308018684387207031250, 0.716546833515167236328125, 176 | 0.713777482509613037109375, 0.711000025272369384765625, 0.708214640617370605468750, 0.705421447753906250000000, 177 | 0.702620506286621093750000, 0.699811935424804687500000, 0.696995854377746582031250, 0.694172382354736328125000, 178 | 0.691341578960418701171875, 0.688503563404083251953125, 0.685658633708953857421875, 0.682806551456451416015625, 179 | 0.679947555065155029296875, 0.677081823348999023437500, 0.674209356307983398437500, 0.671330392360687255859375, 180 | 0.668444931507110595703125, 0.665553152561187744140625, 0.662655115127563476562500, 0.659750998020172119140625, 181 | 0.656840860843658447265625, 0.653924763202667236328125, 0.651002943515777587890625, 0.648075401782989501953125, 182 | 0.645142257213592529296875, 0.642203688621520996093750, 0.639259755611419677734375, 0.636310577392578125000000, 183 | 0.633356273174285888671875, 0.630396962165832519531250, 0.627432703971862792968750, 0.624463677406311035156250, 184 | 0.621489942073822021484375, 0.618511676788330078125000, 0.615528881549835205078125, 0.612541794776916503906250, 185 | 0.609550476074218750000000, 0.606554985046386718750000, 0.603555738925933837890625, 0.600552380084991455078125, 186 | 0.597545206546783447265625, 0.594534337520599365234375, 0.591519951820373535156250, 0.588502109050750732421875, 187 | 0.585480928421020507812500, 0.582456529140472412109375, 0.579429030418395996093750, 0.576398551464080810546875, 188 | 0.573365211486816406250000, 0.570329070091247558593750, 0.567290306091308593750000, 0.564248979091644287109375, 189 | 0.561205267906188964843750, 0.558159232139587402343750, 0.555110991001129150390625, 0.552060723304748535156250, 190 | 0.549008488655090332031250, 0.545954346656799316406250, 0.542898535728454589843750, 0.539841115474700927734375, 191 | 0.536782145500183105468750, 0.533721804618835449218750, 0.530660212039947509765625, 0.527597427368164062500000, 192 | 0.524533689022064208984375, 0.521468937397003173828125, 0.518403649330139160156250, 0.515337467193603515625000, 193 | 0.512270629405975341796875, 0.509203374385833740234375, 0.506135761737823486328125, 0.503067970275878906250000, 194 | 0.500000000000000000000000, 0.496932029724121093750000, 0.493864208459854125976562, 0.490796595811843872070312, 195 | 0.487729340791702270507812, 0.484662562608718872070312, 0.481596320867538452148438, 0.478530794382095336914062, 196 | 0.475466072559356689453125, 0.472402304410934448242188, 0.469339549541473388671875, 0.466277927160263061523438, 197 | 0.463217616081237792968750, 0.460158646106719970703125, 0.457101225852966308593750, 0.454045385122299194335938, 198 | 0.450991272926330566406250, 0.447939038276672363281250, 0.444888740777969360351562, 0.441840529441833496093750, 199 | 0.438794493675231933593750, 0.435750991106033325195312, 0.432709693908691406250000, 0.429670929908752441406250, 200 | 0.426634788513183593750000, 0.423601418733596801757812, 0.420570939779281616210938, 0.417543441057205200195312, 201 | 0.414519041776657104492188, 0.411497861146926879882812, 0.408480018377304077148438, 0.405465632677078247070312, 202 | 0.402454793453216552734375, 0.399447619915008544921875, 0.396444261074066162109375, 0.393444776535034179687500, 203 | 0.390449285507202148437500, 0.387457966804504394531250, 0.384470850229263305664062, 0.381488084793090820312500, 204 | 0.378509789705276489257812, 0.375536084175109863281250, 0.372567057609558105468750, 0.369602799415588378906250, 205 | 0.366643488407135009765625, 0.363689184188842773437500, 0.360740005970001220703125, 0.357796072959899902343750, 206 | 0.354857504367828369140625, 0.351924598217010498046875, 0.348997056484222412109375, 0.346075206995010375976562, 207 | 0.343159139156341552734375, 0.340249001979827880859375, 0.337344855070114135742188, 0.334446847438812255859375, 208 | 0.331555068492889404296875, 0.328669607639312744140625, 0.325790643692016601562500, 0.322918176651000976562500, 209 | 0.320052444934844970703125, 0.317193448543548583984375, 0.314341336488723754882812, 0.311496227979660034179688, 210 | 0.308658182621002197265625, 0.305827379226684570312500, 0.303003907203674316406250, 0.300187796354293823242188, 211 | 0.297379225492477416992188, 0.294578313827514648437500, 0.291785091161727905273438, 0.288999736309051513671875, 212 | 0.286222308874130249023438, 0.283452928066253662109375, 0.280691742897033691406250, 0.277938783168792724609375, 213 | 0.275194168090820312500000, 0.272458255290985107421875, 0.269730687141418457031250, 0.267011761665344238281250, 214 | 0.264301657676696777343750, 0.261600375175476074218750, 0.258908092975616455078125, 0.256224930286407470703125, 215 | 0.253550887107849121093750, 0.250886142253875732421875, 0.248230785131454467773438, 0.245584875345230102539062, 216 | 0.242948591709136962890625, 0.240321964025497436523438, 0.237705081701278686523438, 0.235098123550415039062500, 217 | 0.232501119375228881835938, 0.229914188385009765625000, 0.227337419986724853515625, 0.224770903587341308593750, 218 | 0.222214788198471069335938, 0.219669103622436523437500, 0.217133969068527221679688, 0.214609503746032714843750, 219 | 0.212095767259597778320312, 0.209592878818511962890625, 0.207100927829742431640625, 0.204620003700256347656250, 220 | 0.202150374650955200195312, 0.199691802263259887695312, 0.197244495153427124023438, 0.194808602333068847656250, 221 | 0.192384213209152221679688, 0.189971387386322021484375, 0.187570244073867797851562, 0.185180872678756713867188, 222 | 0.182803332805633544921875, 0.180437743663787841796875, 0.178084194660186767578125, 0.175742775201797485351562, 223 | 0.173413544893264770507812, 0.171096593141555786132812, 0.168792039155960083007812, 0.166499972343444824218750, 224 | 0.164220452308654785156250, 0.161953568458557128906250, 0.159699410200119018554688, 0.157458066940307617187500, 225 | 0.155229628086090087890625, 0.153014183044433593750000, 0.150811761617660522460938, 0.148622512817382812500000, 226 | 0.146446496248245239257812, 0.144283771514892578125000, 0.142134457826614379882812, 0.139998614788055419921875, 227 | 0.137876480817794799804688, 0.135767817497253417968750, 0.133672863245010375976562, 0.131591737270355224609375, 228 | 0.129524409770965576171875, 0.127471089363098144531250, 0.125431776046752929687500, 0.123406589031219482421875, 229 | 0.121395558118820190429688, 0.119398772716522216796875, 0.117416322231292724609375, 0.115448296070098876953125, 230 | 0.113494724035263061523438, 0.111555725336074829101562, 0.109631329774856567382812, 0.107721626758575439453125, 231 | 0.105826705694198608398438, 0.103946626186370849609375, 0.102081477642059326171875, 0.100231289863586425781250, 232 | 0.098396152257919311523438, 0.096576124429702758789062, 0.094771295785903930664062, 0.092981725931167602539062, 233 | 0.091207474470138549804688, 0.089448630809783935546875, 0.087705224752426147460938, 0.085977375507354736328125, 234 | 0.084265202283859252929688, 0.082568556070327758789062, 0.080887645483016967773438, 0.079222500324249267578125, 235 | 0.077573210000991821289062, 0.075939804315567016601562, 0.074322372674942016601562, 0.072720974683761596679688, 236 | 0.071135669946670532226562, 0.069566488265991210937500, 0.068013548851013183593750, 0.066476851701736450195312, 237 | 0.064956456422805786132812, 0.063452482223510742187500, 0.061964899301528930664062, 0.060493826866149902343750, 238 | 0.059039324522018432617188, 0.057601392269134521484375, 0.056180119514465332031250, 0.054775565862655639648438, 239 | 0.053387790918350219726562, 0.052016794681549072265625, 0.050662696361541748046875, 0.049325495958328247070312, 240 | 0.048005282878875732421875, 0.046702057123184204101562, 0.045415908098220825195312, 0.044146984815597534179688, 241 | 0.042895138263702392578125, 0.041660457849502563476562, 0.040443062782287597656250, 0.039242982864379882812500, 242 | 0.038060218095779418945312, 0.036894857883453369140625, 0.035746932029724121093750, 0.034616500139236450195312, 243 | 0.033503592014312744140625, 0.032408207654953002929688, 0.031330466270446777343750, 0.030270367860794067382812, 244 | 0.029227942228317260742188, 0.028203248977661132812500, 0.027196288108825683593750, 0.026207178831100463867188, 245 | 0.025235861539840698242188, 0.024282455444335937500000, 0.023346930742263793945312, 0.022429376840591430664062, 246 | 0.021529793739318847656250, 0.020648211240768432617188, 0.019784688949584960937500, 0.018939256668090820312500, 247 | 0.018111914396286010742188, 0.017302721738815307617188, 0.016511708498001098632812, 0.015738964080810546875000, 248 | 0.014984369277954101562500, 0.014248043298721313476562, 0.013530015945434570312500, 0.012830317020416259765625, 249 | 0.012148946523666381835938, 0.011485934257507324218750, 0.010841310024261474609375, 0.010215103626251220703125, 250 | 0.009607344865798950195312, 0.009018063545227050781250, 0.008447229862213134765625, 0.007894933223724365234375, 251 | 0.007361173629760742187500, 0.006845951080322265625000, 0.006349265575408935546875, 0.005871206521987915039062, 252 | 0.005411714315414428710938, 0.004970878362655639648438, 0.004548668861389160156250, 0.004145115613937377929688, 253 | 0.003760218620300292968750, 0.003394007682800292968750, 0.003046482801437377929688, 0.002717703580856323242188, 254 | 0.002407610416412353515625, 0.002116262912750244140625, 0.001843690872192382812500, 0.001589864492416381835938, 255 | 0.001354783773422241210938, 0.001138478517532348632812, 0.000940948724746704101562, 0.000762194395065307617188, 256 | 0.000602275133132934570312, 0.000461131334304809570312, 0.000338792800903320312500, 0.000235289335250854492188, 257 | 0.000150591135025024414062, 0.000084698200225830078125, 0.000037640333175659179688, 0.000009417533874511718750, 258 | }; 259 | 260 | --------------------------------------------------------------------------------