diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/README.md b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/README.md new file mode 100644 index 000000000000..44ff804838e2 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/README.md @@ -0,0 +1,175 @@ + + +# sinqi + +> Initialize a single-precision floating-point workspace array for performing a quarter-wave sine transform. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var sinqi = require( '@stdlib/fft/base/fftpack/float32/sinqi' ); +``` + +#### sinqi( N, workspace, strideW, offsetW ) + +Initializes a single-precision floating-point workspace array for performing a quarter-wave sine transform. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var N = 8; +var workspace = new Float32Array( ( 3*N ) + 34 ); + +var out = sinqi( N, workspace, 1, 0 ); +// returns + +var bool = ( out === workspace ); +// returns true + +var cosineTable = workspace.slice( 0, N ); +// returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] + +var twiddleFactors = workspace.slice( 2*N, 3*N ); +// returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] + +var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); +// returns [ 8, 2, 2, 4 ] +``` + +The function accepts the following arguments: + +- **N**: length of the sequence to transform. +- **workspace**: workspace [`Float32Array`][@stdlib/array/float32]. +- **strideW**: stride length for `workspace`. +- **offsetW**: starting index for `workspace`. + +
+ + + + + +
+ +## Notes + +- The workspace array is divided into four sections: + + ```text + size = N N N 2+ceil(log2(N)/2) + ↓ ↓ ↓ ↓ + | cosine table | scratch / workspace | twiddle factors | radix factor table | + ↑ ↑ ↑ ↑ + i = 0 ... N ... 2N ... 3N ... + ``` + + - **cosine table**: a table of precomputed cosine coefficients used by quarter-wave sine transforms. + - **scratch/workspace**: used as a scratch space when performing transforms. This section is not updated during initialization. + - **twiddle factors**: a table of reusable complex-exponential constants stored as cosine/sine pairs. + - **radix factor table**: a table containing the sequence length `N`, the number of factors into which `N` was decomposed, and the individual integer radix factors. + +- In general, a workspace array should have `3N + 34` indexed elements (as `log2(N)/2 ≤ 32` for all `2^64`). During initialization, only the sections for storing the cosine coefficients, twiddle factors, and the factorization of `N` are updated. + +- The radix factor table is comprised as follows: + + ```text + | sequence_length | number_of_factors | integer_factors | + ``` + +
+ + + +
+ +## Examples + + + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); +var zeroTo = require( '@stdlib/array/zero-to' ); +var logEach = require( '@stdlib/console/log-each' ); +var sinqi = require( '@stdlib/fft/base/fftpack/float32/sinqi' ); + +var N = 8; +var workspace = new Float32Array( ( 3*N ) + 34 ); + +sinqi( N, workspace, 1, 0 ); +console.log( 'Sequence length: %d', N ); + +console.log( 'Cosine table:' ); +var idx = zeroTo( N, 'float32' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( 0, N ) ); + +console.log( 'Twiddle factors:' ); +idx = zeroTo( N, 'float32' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( 2*N, 3*N ) ); + +console.log( 'Factorization:' ); +var nf = workspace[ (3*N)+1 ]; + +console.log( ' number of factors: %d', nf ); +idx = zeroTo( nf, 'float32' ); +logEach( ' factor[ %d ]: %d', idx, workspace.slice( (3*N)+2, (3*N)+2+nf ) ); +``` + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/benchmark/benchmark.js b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/benchmark/benchmark.js new file mode 100644 index 000000000000..7fcc5392b977 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/benchmark/benchmark.js @@ -0,0 +1,101 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var format = require( '@stdlib/string/format' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Float32Array = require( '@stdlib/array/float32' ); +var pkg = require( './../package.json' ).name; +var sinqi = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} N - sequence length +* @returns {Function} benchmark function +*/ +function createBenchmark( N ) { + var workspace = new Float32Array( ( 3*N ) + 34 ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + sinqi( N, workspace, 1, 0 ); + if ( isnan( workspace[ 2*N ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( workspace[ 2*N ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var lengths; + var N; + var f; + var i; + + lengths = [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ]; + + for ( i = 0; i < lengths.length; i++ ) { + N = lengths[ i ]; + f = createBenchmark( N ); + bench( format( '%s:N=%d', pkg, N ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/docs/repl.txt b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/docs/repl.txt new file mode 100644 index 000000000000..bbb4486c91fa --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/docs/repl.txt @@ -0,0 +1,61 @@ + +{{alias}}( N, workspace, strideW, offsetW ) + Initializes a single-precision floating-point workspace array for performing + a quarter-wave sine transform. + + The workspace array is divided into four sections: + + 1. cosine table: the section ranges from indices 0 to N-1 and is used to + store a table of precomputed cosine coefficients used by quarter-wave sine + transforms. + + 2. scratch/workspace: the section ranges from indices N to 2N-1 and is used + while performing transforms. This section is not updated during + initialization. + + 3. twiddle factors: the section ranges from indices 2N to 3N-1 and stores a + table of reusable complex exponential constants as cosine/sine pairs. + + 4. radix factor table: the section starts at index 3N and stores the + sequence length N, the number of factors into which N was decomposed, and + the individual integer radix factors. + + Any remaining array space remains as unused storage. + + Parameters + ---------- + N: integer + Length of the sequence. + + workspace: Float32Array + Workspace array. + + strideW: integer + Stride length for `workspace`. + + offsetW: integer + Starting index for `workspace`. + + Returns + ------- + out: Float32Array + Workspace array. + + Examples + -------- + > var N = 8; + > var workspace = new {{alias:@stdlib/array/float32}}( ( 3*N ) + 34 ); + > var out = {{alias}}( N, workspace, 1, 0 ) + + > var bool = ( out === workspace ) + true + > var cosineTable = workspace.slice( 0, N ) + [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] + > var twiddleFactors = workspace.slice( 2*N, 3*N ) + [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] + > var factors = workspace.slice( 3*N, ( 3*N ) + 4 ) + [ 8, 2, 2, 4 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/docs/types/index.d.ts b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/docs/types/index.d.ts new file mode 100644 index 000000000000..37b5ccddf1b1 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/docs/types/index.d.ts @@ -0,0 +1,60 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Initializes a single-precision floating-point workspace array for performing a quarter-wave sine transform. +* +* ## Notes +* +* - The workspace array should have a length of at least `( 3*N ) + 34` elements. +* +* @param N - length of the sequence +* @param workspace - workspace array +* @param strideW - stride length for `workspace` +* @param offsetW - starting index for `workspace` +* @returns workspace array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var N = 8; +* var workspace = new Float32Array( ( 3*N ) + 34 ); +* +* var out = sinqi( N, workspace, 1, 0 ); +* // returns +* +* var bool = ( out === workspace ); +* // returns true +* +* var cosineTable = workspace.slice( 0, N ); +* // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] +* +* var twiddleFactors = workspace.slice( 2*N, 3*N ); +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] +* +* var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); +* // returns [ 8, 2, 2, 4 ] +*/ +declare function sinqi( N: number, workspace: Float32Array, strideW: number, offsetW: number ): Float32Array; + + +// EXPORTS // + +export = sinqi; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/docs/types/test.ts b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/docs/types/test.ts new file mode 100644 index 000000000000..ec73588f1db4 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/docs/types/test.ts @@ -0,0 +1,95 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import sinqi = require( './index' ); + + +// TESTS // + +// The function returns a Float32Array... +{ + const workspace = new Float32Array( ( 3*8 ) + 34 ); + + sinqi( 8, workspace, 1, 0 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const workspace = new Float32Array( ( 3*8 ) + 34 ); + + sinqi( '8', workspace, 1, 0 ); // $ExpectError + sinqi( true, workspace, 1, 0 ); // $ExpectError + sinqi( false, workspace, 1, 0 ); // $ExpectError + sinqi( null, workspace, 1, 0 ); // $ExpectError + sinqi( void 0, workspace, 1, 0 ); // $ExpectError + sinqi( [], workspace, 1, 0 ); // $ExpectError + sinqi( {}, workspace, 1, 0 ); // $ExpectError + sinqi( ( x: number ): number => x, workspace, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a Float32Array... +{ + sinqi( 8, '50', 1, 0 ); // $ExpectError + sinqi( 8, 50, 1, 0 ); // $ExpectError + sinqi( 8, true, 1, 0 ); // $ExpectError + sinqi( 8, false, 1, 0 ); // $ExpectError + sinqi( 8, null, 1, 0 ); // $ExpectError + sinqi( 8, void 0, 1, 0 ); // $ExpectError + sinqi( 8, [], 1, 0 ); // $ExpectError + sinqi( 8, {}, 1, 0 ); // $ExpectError + sinqi( 8, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const workspace = new Float32Array( ( 3*8 ) + 34 ); + + sinqi( 8, workspace, '1', 0 ); // $ExpectError + sinqi( 8, workspace, true, 0 ); // $ExpectError + sinqi( 8, workspace, false, 0 ); // $ExpectError + sinqi( 8, workspace, null, 0 ); // $ExpectError + sinqi( 8, workspace, void 0, 0 ); // $ExpectError + sinqi( 8, workspace, [], 0 ); // $ExpectError + sinqi( 8, workspace, {}, 0 ); // $ExpectError + sinqi( 8, workspace, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const workspace = new Float32Array( ( 3*8 ) + 34 ); + + sinqi( 8, workspace, 1, '0' ); // $ExpectError + sinqi( 8, workspace, 1, true ); // $ExpectError + sinqi( 8, workspace, 1, false ); // $ExpectError + sinqi( 8, workspace, 1, null ); // $ExpectError + sinqi( 8, workspace, 1, void 0 ); // $ExpectError + sinqi( 8, workspace, 1, [] ); // $ExpectError + sinqi( 8, workspace, 1, {} ); // $ExpectError + sinqi( 8, workspace, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const workspace = new Float32Array( ( 3*8 ) + 34 ); + + sinqi(); // $ExpectError + sinqi( 8 ); // $ExpectError + sinqi( 8, workspace ); // $ExpectError + sinqi( 8, workspace, 1 ); // $ExpectError + sinqi( 8, workspace, 1, 0, 123 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/examples/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/examples/index.js new file mode 100644 index 000000000000..d72001c80ca7 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/examples/index.js @@ -0,0 +1,45 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var Float32Array = require( '@stdlib/array/float32' ); +var zeroTo = require( '@stdlib/array/zero-to' ); +var logEach = require( '@stdlib/console/log-each' ); +var sinqi = require( './../lib' ); + +var N = 8; +var workspace = new Float32Array( ( 3*N ) + 34 ); + +sinqi( N, workspace, 1, 0 ); +console.log( 'Sequence length: %d', N ); + +console.log( 'Cosine table:' ); +var idx = zeroTo( N, 'float32' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( 0, N ) ); + +console.log( 'Twiddle factors:' ); +idx = zeroTo( N, 'float32' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( 2*N, 3*N ) ); + +console.log( 'Factorization:' ); +var nf = workspace[ (3*N)+1 ]; + +console.log( ' number of factors: %d', nf ); +idx = zeroTo( nf, 'float32' ); +logEach( ' factor[ %d ]: %d', idx, workspace.slice( (3*N)+2, (3*N)+2+nf ) ); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/lib/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/lib/index.js new file mode 100644 index 000000000000..88158559d510 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/lib/index.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Initialize a single-precision floating-point workspace array for performing a quarter-wave sine transform. +* +* @module @stdlib/fft/base/fftpack/float32/sinqi +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* var sinqi = require( '@stdlib/fft/base/fftpack/float32/sinqi' ); +* +* var N = 8; +* var workspace = new Float32Array( ( 3*N ) + 34 ); +* +* var out = sinqi( N, workspace, 1, 0 ); +* // returns +* +* var bool = ( out === workspace ); +* // returns true +* +* var cosineTable = workspace.slice( 0, N ); +* // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] +* +* var twiddleFactors = workspace.slice( 2*N, 3*N ); +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] +* +* var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); +* // returns [ 8, 2, 2, 4 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/lib/main.js b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/lib/main.js new file mode 100644 index 000000000000..b2108d4e530c --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/lib/main.js @@ -0,0 +1,166 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +* +* ## Notice +* +* The original C code and copyright notice are from the [PFFFT library]{@link https://github.com/marton78/pffft/blob/0b4ee12c4ba45a4a8e567550c16d96d1679f50ce/src/fftpack.c}. The implementation follows the original, but has been modified for JavaScript. +* +* ```text +* Copyright (c) 2004 the University Corporation for Atmospheric +* Research ("UCAR"). All rights reserved. Developed by NCAR's +* Computational and Information Systems Laboratory, UCAR, +* www.cisl.ucar.edu. +* +* Redistribution and use of the Software in source and binary forms, +* with or without modification, is permitted provided that the +* following conditions are met: +* +* - Neither the names of NCAR's Computational and Information Systems +* Laboratory, the University Corporation for Atmospheric Research, +* nor the names of its sponsors or contributors may be used to +* endorse or promote products derived from this Software without +* specific prior written permission. +* +* - Redistributions of source code must retain the above copyright +* notices, this list of conditions, and the disclaimer below. +* +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions, and the disclaimer below in the +* documentation and/or other materials provided with the +* distribution. +* +* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT +* HOLDERS BE LIABLE FOR ANY CLAIM, INDIRECT, INCIDENTAL, SPECIAL, +* EXEMPLARY, OR CONSEQUENTIAL DAMAGES OR OTHER LIABILITY, WHETHER IN AN +* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +* SOFTWARE. +* ``` +*/ + +'use strict'; + +// MODULES // + +var cosqi = require( '@stdlib/fft/base/fftpack/float32/cosqi' ); + + +// MAIN // + +/** +* Initializes a single-precision floating-point workspace array for performing a quarter-wave sine transform. +* +* ## Notes +* +* The workspace array is divided into four sections: +* +* ```text +* size = N N N 2+ceil(log2(N)/2) +* ↓ ↓ ↓ ↓ +* | cosine table | scratch/workspace | twiddle factors | radix factor table | +* ↑ ↑ ↑ ↑ +* i = 0 ... N ... 2N ... 3N ... +* ``` +* +* where +* +* - **cosine table**: a table of precomputed cosine coefficients used by quarter-wave sine transforms. +* - **scratch/workspace**: used as a scratch space when performing transforms. This section is not updated during initialization. +* - **twiddle factors**: a table of reusable complex-exponential constants stored as cosine/sine pairs. +* - **radix factor table**: a table containing the radix factorization of `N`. +* +* In general, a workspace array should have `3N + 34` indexed elements (as `log2(N)/2 ≤ 32` for all `2^64`). During initialization, only the sections for storing the cosine coefficients, twiddle factors, and the factorization of `N` are updated. +* +* > Note: FFTPACK only requires `3N+15`, but we increase that number here to accommodate larger workspace arrays, where `N` may exceed `2^30` indexed elements. +* +* The factorization section is comprised as follows: +* +* ```text +* | sequence_length | number_of_factors | integer_factors | +* ``` +* +* The sequence length and number of factors (`nf`) comprise a single element each. Only the first `nf` elements in the integer factors section are written to, with the rest being unused. +* +* As for twiddle factors, these are small, reusable complex-exponential constants that appear inside each "butterfly" stage of a Cooley–Tukey–style FFT. Every arithmetic step in an FFT multiplies one intermediate value by some +* +* ```tex +* W_N^k +* ``` +* +* where `W_N^k` is an N-th root of unity. Formally, in a forward FFT, +* +* ```tex +* W_N^k = e^{-2\pi ik/N} +* ``` +* +* In a backward FFT, +* +* ```tex +* W_N^k = e^{+2\pi ik/N} +* ``` +* +* As may be observed, `W_N^k` for forward and backward FFTs is the same, except the sign of the exponent is flipped. As a consequence, both forward and backward FFT callers can reuse the same set of twiddle factors, with those performing a forward transform (e.g., `sinqf`) multiplying with `(cos,-sin)` and those performing a backward transform (e.g., `sinqb`) multiplying with `(cos,+sin)`. +* +* Because these constants only depend on the transform length `N` (and **not** on the input data), we can pre-compute and store them once, then "twiddle" them (i.e., reuse them with different indices) as we proceed through the factorization. +* +* > As a quick aside regarding the name "twiddle", early FFT papers (notably Gentleman & Sande, 1966) described how you "twiddle" one branch of each butterfly by a complex rotation before adding/subtracting. The coefficients themselves inherited the nickname "twiddle factors," and the term stuck. +* +* By reusing the workspace array when computing multiple transforms of the same length `N`, every subsequent `*f` (forward) or `*b` (backward) call can simply look up the pre-stored twiddle factors instead of recomputing sine and cosine on-the-fly. +* +* In short, twiddle factors are cached roots of unity that allow each stage of the algorithm to rotate data quickly and predictably. +* +* During initialization, `sinqi` first writes the cosine table, and then initializes the remaining three sections using `rffti`. +* +* @param {PositiveInteger} N - length of the sequence to transform +* @param {Float32Array} workspace - workspace array +* @param {integer} strideW - stride length for `workspace` +* @param {NonNegativeInteger} offsetW - starting index for `workspace` +* @returns {Float32Array} workspace array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var N = 8; +* var workspace = new Float32Array( ( 3*N ) + 34 ); +* +* var out = sinqi( N, workspace, 1, 0 ); +* // returns +* +* var bool = ( out === workspace ); +* // returns true +* +* var cosineTable = workspace.slice( 0, N ); +* // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] +* +* var twiddleFactors = workspace.slice( 2*N, 3*N ); +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] +* +* var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); +* // returns [ 8, 2, 2, 4 ] +*/ +function sinqi( N, workspace, strideW, offsetW ) { + return cosqi( N, workspace, strideW, offsetW ); +} + + +// EXPORTS // + +module.exports = sinqi; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/package.json b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/package.json new file mode 100644 index 000000000000..bcfe24daab9d --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/package.json @@ -0,0 +1,66 @@ +{ + "name": "@stdlib/fft/base/fftpack/float32/sinqi", + "version": "0.0.0", + "description": "Initialize a single-precision floating-point workspace array for performing a quarter-wave sine transform.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "fft", + "fftpack", + "sinqi", + "fourier", + "transform", + "twiddle", + "workspace", + "initialization", + "sine", + "single", + "float32" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/Makefile b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/Makefile new file mode 100644 index 000000000000..77b6a5f13549 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/Makefile @@ -0,0 +1,137 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +endif + +# Specify the path to FFTPACK: +FFTPACK ?= + +# Specify a list of FFTPACK source files: +FFTPACK_SRC ?= + +# Determine the OS: +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate [position independent code][1]: +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of C targets: +c_targets := runner.out + + +# RULES # + +#/ +# Compiles C source files. +# +# @param {string} [C_COMPILER] - C compiler +# @param {string} [CFLAGS] - C compiler flags +# @param {(string|void)} [fPIC] - flag indicating whether to generate position independent code +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler +# @param {string} CFLAGS - C compiler flags +# @param {(string|void)} fPIC - flag indicating whether to generate position independent code +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) -o $@ $(FFTPACK_SRC) $< -lm + +#/ +# Generates test fixtures. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean + +#/ +# Removes generated test fixtures. +# +# @example +# make clean-fixtures +#/ +clean-fixtures: + $(QUIET) -rm -f *.json + +.PHONY: clean-fixtures diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/large.json b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/large.json new file mode 100644 index 000000000000..41474425ee1b --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/large.json @@ -0,0 +1 @@ +{"lengths":[260,305,943,560,220,128,263,1007,764,660],"offsets":[0,260,565,1508,2068,2288,2416,2679,3686,4450],"cosines":[0.999981761,0.999926984,0.99983573,0.999707997,0.999543786,0.999343097,0.999105871,0.998832226,0.998522103,0.998175561,0.997792542,0.997373164,0.996917307,0.996425152,0.995896578,0.995331645,0.994730353,0.994092822,0.993418992,0.992708862,0.991962552,0.991180003,0.990361273,0.989506423,0.988615394,0.987688363,0.986725211,0.985726058,0.984690964,0.983619928,0.982512951,0.981370151,0.980191469,0.978977084,0.977726936,0.976441085,0.975119591,0.973762512,0.972369909,0.970941842,0.96947825,0.967979372,0.966445088,0.964875519,0.963270783,0.961630881,0.959955871,0.958245814,0.956500828,0.954720855,0.952906072,0.95105654,0.949172258,0.947253287,0.945299804,0.94331181,0.941289365,0.939232588,0.937141538,0.935016215,0.932856858,0.930663407,0.928435981,0.926174641,0.923879504,0.921550691,0.919188201,0.916792214,0.914362729,0.911899865,0.909403682,0.906874359,0.904311895,0.901716471,0.899088085,0.896426916,0.893733025,0.891006529,0.88824749,0.885456026,0.882632256,0.879776239,0.876888156,0.873968005,0.871016026,0.868032217,0.865016699,0.86196965,0.858891129,0.855781257,0.852640152,0.849467933,0.84626472,0.843030572,0.839765668,0.836470127,0.833144069,0.829787552,0.826400816,0.822983861,0.819536865,0.816060007,0.812553346,0.809017003,0.805451095,0.801855862,0.798231304,0.794577658,0.790894985,0.787183464,0.783443213,0.779674351,0.775876999,0.772051394,0.768197536,0.764315724,0.760405958,0.756468475,0.752503335,0.748510778,0.744490862,0.740443766,0.736369669,0.732268691,0.72814095,0.723986685,0.719805956,0.715598941,0.711365819,0.707106769,0.70282191,0.698511362,0.694175303,0.689813972,0.685427427,0.681015849,0.676579416,0.672118306,0.667632639,0.663122654,0.658588469,0.654030204,0.649448037,0.644842207,0.640212834,0.635560095,0.630884171,0.626185179,0.621463358,0.616718888,0.611951828,0.607162476,0.60235101,0.59751749,0.592662156,0.587785244,0.582886815,0.577967167,0.573026419,0.56806469,0.563082278,0.558079302,0.553056002,0.548012495,0.542948961,0.537865579,0.532762647,0.527640224,0.522498488,0.517337739,0.512158096,0.506959796,0.501742959,0.496507823,0.491254538,0.485983342,0.480694413,0.475387931,0.470064074,0.4647232,0.459365249,0.453990519,0.448599219,0.443191558,0.437767714,0.432327896,0.426872313,0.421401113,0.415914565,0.410412818,0.40489608,0.399364591,0.393818498,0.38825807,0.382683426,0.377094835,0.371492475,0.365876555,0.360247284,0.35460487,0.348949522,0.343281418,0.337600768,0.331907839,0.32620275,0.320485801,0.314757109,0.309016973,0.303265512,0.297503024,0.291729659,0.285945624,0.280151188,0.274346501,0.268531829,0.262707323,0.25687325,0.251029789,0.245177165,0.239315599,0.233445302,0.227566481,0.221679345,0.215784118,0.209881023,0.203970268,0.198052064,0.192126632,0.186194196,0.180254951,0.174309254,0.168357059,0.162398741,0.156434491,0.15046452,0.144489065,0.138508335,0.132522553,0.126531929,0.120536685,0.114537045,0.108533226,0.102525443,0.0965139195,0.0904988721,0.0844805166,0.078459084,0.072434783,0.0664078444,0.060378477,0.0543469079,0.0483133569,0.0422780402,0.0362411775,0.030202996,0.0241637118,0.0181235448,0.0120827155,0.00604144624,-4.37113883e-08,0.999986768,0.999946952,0.999880672,0.999787807,0.999668479,0.999522626,0.99935025,0.999151349,0.998925984,0.998674095,0.998395741,0.998090863,0.997759581,0.997401774,0.997017503,0.996606827,0.996169746,0.995706201,0.99521625,0.994699895,0.994157135,0.99358803,0.99299258,0.992370784,0.991722703,0.991048276,0.990347564,0.989620566,0.988867342,0.988087893,0.987282217,0.986450374,0.985592365,0.98470825,0.983797967,0.982861578,0.981899142,0.980910659,0.979896188,0.978855669,0.977789223,0.976696849,0.975578547,0.974434376,0.973264396,0.972068548,0.970846951,0.969599545,0.968326509,0.967027724,0.965703309,0.964353263,0.962977707,0.961576521,0.960149884,0.958697736,0.957220197,0.955717266,0.954189003,0.952635407,0.95105654,0.9494524,0.947823167,0.946168721,0.944489241,0.942784667,0.941055119,0.939300597,0.9375211,0.935716808,0.933887661,0.932033777,0.930155158,0.928251863,0.92632395,0.924371481,0.922394514,0.92039299,0.918367147,0.916316926,0.914242387,0.912143588,0.91002059,0.907873452,0.905702233,0.903507054,0.901287854,0.899044752,0.896777809,0.894487083,0.892172635,0.889834523,0.887472808,0.88508755,0.882678807,0.880246639,0.877791166,0.875312388,0.872810364,0.870285273,0.867736995,0.86516577,0.862571597,0.859954476,0.857314646,0.854652047,0.851966679,0.84925884,0.846528411,0.84377557,0.841000319,0.838202775,0.835382998,0.832541049,0.829677045,0.826790988,0.823882997,0.82095319,0.818001628,0.815028369,0.812033415,0.809017003,0.805979073,0.802919805,0.799839258,0.796737432,0.793614507,0.790470541,0.787305653,0.784119844,0.780913174,0.777685821,0.774437904,0.771169424,0.76788044,0.76457113,0.761241496,0.757891715,0.754521847,0.751131892,0.747722089,0.744292438,0.740843058,0.737374008,0.733885348,0.730377257,0.726849854,0.723303139,0.719737232,0.716152191,0.712548196,0.708925307,0.705283582,0.701623201,0.697944164,0.69424659,0.690530658,0.686796427,0.683043897,0.679273307,0.675484717,0.671678185,0.667853892,0.664011776,0.660152137,0.656274915,0.652380347,0.648468494,0.644539356,0.640593171,0.636629999,0.632649958,0.628653109,0.624639571,0.620609462,0.616562963,0.612500072,0.608420849,0.604325593,0.600214303,0.596087039,0.591944039,0.587785244,0.583610892,0.579421103,0.575215936,0.57099551,0.566759884,0.562509239,0.558243752,0.553963363,0.549668372,0.545358717,0.541034639,0.536696196,0.532343507,0.527976751,0.523595929,0.519201279,0.5147928,0.510370672,0.505935073,0.501485944,0.497023553,0.492548078,0.488059431,0.48355794,0.479043514,0.474516362,0.469976753,0.465424567,0.460860133,0.456283391,0.451694548,0.447093815,0.442481101,0.437856793,0.433220744,0.428573191,0.423914403,0.41924426,0.41456309,0.409870833,0.405167699,0.400453925,0.395729423,0.390994519,0.386249155,0.381493539,0.376727909,0.371952206,0.367166698,0.362371385,0.357566446,0.352752119,0.347928345,0.343095422,0.338253319,0.333402216,0.328542411,0.323673785,0.318796545,0.313910961,0.309016973,0.304114878,0.299204588,0.2942864,0.289360493,0.284426808,0.279485673,0.274537027,0.269581109,0.264618129,0.259648025,0.254671156,0.249687418,0.244697064,0.239700317,0.234697104,0.229687795,0.224672258,0.219650775,0.21462357,0.209590569,0.204552114,0.199508131,0.194458842,0.189404517,0.184345052,0.179280818,0.174211696,0.16913797,0.164059862,0.1589773,0.15389052,0.148799762,0.143704951,0.138606444,0.133504137,0.128398299,0.123289168,0.118176647,0.113061108,0.107942455,0.10282094,0.0976968184,0.0925699845,0.0874408111,0.0823092014,0.0771754086,0.0720396861,0.0669019371,0.0617625341,0.056621369,0.0514787063,0.0463347919,0.0411895327,0.0360433012,0.0308959931,0.0257478673,0.0205991752,0.0154498192,0.0103001716,0.00515013235,-4.37113883e-08,0.999998629,0.999994457,0.999987543,0.999977827,0.99996531,0.999950051,0.999931991,0.999911189,0.999887645,0.99986124,0.999832153,0.999800205,0.999765575,0.999728084,0.99968785,0.999644876,0.999599099,0.999550521,0.999499202,0.99944514,0.999388218,0.999328613,0.999266207,0.999201,0.99913305,0.9990623,0.998988807,0.998912513,0.998833477,0.99875164,0.998667061,0.998579681,0.998489559,0.998396635,0.99830097,0.998202503,0.998101294,0.997997344,0.997890592,0.997781038,0.997668743,0.997553706,0.997435868,0.997315288,0.997191906,0.997065783,0.996936917,0.996805251,0.996670842,0.996533632,0.996393681,0.996250927,0.996105433,0.995957196,0.995806217,0.995652437,0.995495856,0.995336592,0.995174527,0.99500972,0.994842112,0.994671762,0.99449867,0.994322777,0.994144142,0.993962765,0.993778646,0.993591726,0.993402064,0.99320966,0.993014514,0.992816567,0.992615938,0.992412508,0.992206275,0.991997361,0.991785645,0.991571248,0.991354048,0.991134107,0.990911365,0.99068594,0.990457773,0.990226805,0.989993095,0.989756703,0.98951751,0.989275575,0.989030898,0.988783479,0.988533318,0.988280416,0.988024771,0.987766385,0.987505257,0.987241387,0.986974776,0.986705422,0.986433387,0.98615855,0.985880971,0.98560071,0.985317647,0.985031903,0.984743416,0.984452188,0.984158218,0.983861506,0.983562112,0.983259976,0.982955098,0.982647479,0.982337177,0.982024074,0.981708348,0.981389821,0.981068611,0.98074466,0.980417967,0.980088592,0.979756474,0.979421616,0.979084074,0.978743851,0.978400826,0.97805512,0.97770673,0.977355599,0.977001786,0.976645231,0.976285994,0.975924015,0.975559354,0.975191951,0.974821925,0.974449098,0.974073589,0.973695397,0.973314524,0.972930908,0.972544611,0.972155631,0.971763968,0.971369565,0.970972478,0.97057271,0.9701702,0.969765067,0.969357193,0.968946636,0.968533456,0.968117535,0.967698932,0.967277586,0.966853619,0.966426969,0.965997636,0.965565622,0.965130925,0.964693546,0.964253485,0.963810742,0.963365376,0.962917268,0.962466538,0.962013125,0.961557031,0.961098254,0.960636854,0.960172772,0.959706008,0.959236622,0.958764493,0.958289802,0.957812369,0.957332313,0.956849635,0.956364274,0.955876231,0.955385566,0.954892218,0.954396248,0.953897655,0.95339638,0.952892482,0.952385902,0.9518767,0.951364875,0.950850427,0.950333297,0.949813545,0.94929117,0.948766112,0.948238432,0.947708189,0.947175264,0.946639717,0.946101546,0.945560753,0.945017338,0.9444713,0.943922639,0.943371356,0.94281745,0.942260921,0.94170177,0.941140056,0.940575659,0.9400087,0.939439178,0.938866973,0.938292205,0.937714815,0.937134802,0.936552227,0.935967028,0.935379267,0.934788883,0.934195876,0.933600307,0.933002174,0.932401419,0.9317981,0.93119216,0.930583656,0.929972589,0.9293589,0.928742647,0.928123832,0.927502453,0.926878452,0.926251948,0.925622821,0.924991131,0.924356878,0.923720062,0.923080742,0.9224388,0.921794295,0.921147227,0.920497596,0.919845462,0.919190764,0.918533444,0.917873681,0.917211294,0.916546404,0.915878952,0.915208936,0.914536417,0.913861334,0.913183749,0.9125036,0.911820948,0.911135733,0.910448015,0.909757793,0.909065008,0.90836966,0.907671869,0.906971514,0.906268656,0.905563295,0.90485543,0.904145002,0.903432131,0.902716696,0.901998818,0.901278377,0.900555491,0.899830043,0.899102151,0.898371756,0.897638798,0.896903455,0.89616555,0.8954252,0.894682348,0.893936992,0.893189192,0.892438889,0.891686141,0.890930891,0.890173197,0.889412999,0.888650298,0.887885213,0.887117624,0.886347592,0.885575056,0.884800136,0.884022713,0.883242846,0.882460535,0.88167578,0.880888522,0.880098879,0.879306793,0.878512263,0.87771529,0.876915872,0.876114011,0.875309706,0.874503016,0.873693883,0.872882366,0.872068346,0.871251941,0.870433152,0.869611919,0.868788242,0.867962241,0.867133737,0.866302907,0.865469635,0.864633918,0.863795877,0.862955391,0.862112522,0.861267269,0.860419631,0.859569609,0.858717203,0.857862353,0.857005239,0.85614562,0.855283678,0.85441941,0.853552699,0.852683663,0.851812243,0.850938499,0.850062311,0.849183857,0.84830302,0.847419798,0.846534252,0.845646322,0.844756067,0.843863487,0.842968524,0.842071235,0.841171682,0.840269685,0.839365423,0.838458776,0.837549865,0.836638629,0.835725069,0.834809124,0.833890915,0.832970381,0.832047522,0.831122398,0.83019495,0.829265177,0.828333139,0.827398777,0.82646209,0.825523198,0.824581921,0.82363838,0.822692573,0.821744502,0.820794106,0.819841444,0.818886578,0.817929327,0.816969872,0.816008151,0.815044165,0.814077914,0.813109338,0.812138617,0.811165571,0.81019032,0.809212744,0.808233023,0.807250977,0.806266725,0.805280209,0.804291487,0.80330056,0.802307367,0.80131191,0.800314307,0.799314439,0.798312366,0.797308087,0.796301544,0.795292854,0.79428196,0.793268859,0.792253494,0.791235983,0.790216267,0.789194345,0.788170218,0.787143946,0.786115468,0.785084844,0.784052014,0.78301698,0.781979859,0.780940473,0.779898942,0.778855264,0.777809441,0.776761413,0.775711238,0.774658978,0.773604512,0.772547901,0.771489143,0.7704283,0.769365251,0.768300116,0.767232776,0.766163349,0.765091836,0.764018178,0.762942374,0.761864483,0.760784447,0.759702325,0.758618116,0.757531762,0.756443322,0.755352736,0.754260123,0.753165364,0.75206852,0.750969648,0.749868631,0.748765588,0.747660398,0.746553242,0.745443881,0.744332552,0.743219137,0.742103636,0.740986049,0.739866436,0.738744795,0.737621069,0.736495316,0.735367537,0.734237671,0.733105779,0.73197192,0.730835974,0.729698002,0.728558004,0.727415919,0.726271927,0.725125849,0.723977804,0.722827733,0.721675694,0.720521569,0.719365537,0.718207419,0.717047393,0.715885282,0.714721262,0.713555217,0.712387204,0.711217225,0.710045278,0.708871365,0.707695425,0.706517577,0.705337763,0.704155982,0.702972233,0.701786578,0.700598955,0.699409366,0.698217869,0.697024405,0.695829034,0.694631696,0.69343251,0.692231297,0.691028237,0.68982321,0.688616335,0.687407494,0.686196744,0.684984088,0.683769524,0.682553113,0.681334794,0.680114567,0.678892434,0.677668512,0.676442564,0.675214887,0.673985243,0.672753751,0.671520352,0.670285106,0.669048071,0.667809129,0.666568339,0.665325701,0.664081216,0.662834883,0.661586702,0.660336673,0.659084857,0.657831192,0.65657568,0.655318379,0.654059231,0.652798295,0.651535511,0.650270998,0.649004579,0.64773643,0.646466434,0.645194709,0.643921137,0.642645776,0.641368687,0.64008975,0.638809085,0.637526631,0.636242449,0.634956419,0.633668721,0.632379174,0.631087959,0.629794896,0.628500164,0.627203643,0.625905395,0.624605417,0.623303711,0.622000277,0.620695114,0.619388223,0.618079603,0.616769314,0.615457237,0.61414355,0.612828076,0.611510873,0.61019206,0.60887152,0.60754931,0.606225371,0.604899824,0.603572488,0.602243602,0.600912929,0.599580705,0.598246694,0.596911073,0.595573843,0.594234884,0.592894375,0.591552138,0.590208292,0.588862777,0.587515712,0.586166918,0.584816575,0.583464503,0.582110941,0.580755651,0.579398811,0.578040361,0.576680303,0.575318635,0.573955357,0.57259053,0.571224093,0.569856107,0.568486452,0.567115307,0.565742493,0.564368188,0.562992275,0.561614811,0.560235858,0.558855236,0.557473183,0.556089461,0.554704309,0.553317547,0.551929235,0.550539434,0.549148083,0.547755241,0.546360791,0.544964969,0.543567538,0.542168617,0.540768147,0.539366245,0.537962854,0.536557913,0.535151482,0.53374362,0.532334208,0.530923367,0.529511094,0.528097332,0.526682019,0.525265336,0.523847163,0.522427559,0.521006405,0.519583941,0.518159986,0.516734481,0.515307724,0.513879478,0.512449801,0.511018634,0.509586096,0.508152187,0.506716847,0.505280018,0.503841877,0.502402365,0.500961423,0.49951902,0.498075306,0.496630222,0.495183647,0.49373582,0.492286623,0.490836054,0.489383996,0.487930715,0.486476064,0.485020071,0.483562618,0.482103944,0.480643928,0.479182452,0.477719784,0.476255774,0.474790424,0.473323673,0.47185573,0.470386446,0.46891588,0.467443883,0.465970725,0.464496255,0.463020384,0.461543351,0.460065007,0.458585411,0.457104445,0.455622315,0.454138905,0.452654243,0.451168209,0.449681044,0.448192626,0.446702868,0.445211947,0.443719804,0.44222644,0.440731734,0.439235926,0.437738895,0.436240643,0.43474108,0.433240414,0.431738526,0.430235356,0.428731084,0.427225649,0.425719023,0.424211085,0.422702074,0.421191931,0.419680595,0.418167979,0.416654319,0.415139496,0.413623422,0.412106305,0.410588056,0.409068644,0.40754801,0.406026334,0.404503554,0.402979642,0.401454479,0.399928331,0.398401082,0.396872729,0.395343155,0.393812597,0.392280936,0.390748084,0.389214277,0.387679368,0.386143386,0.384606212,0.383068085,0.381528914,0.37998867,0.378447264,0.376904935,0.375361532,0.373816997,0.372271538,0.370725036,0.36917749,0.367628813,0.366079241,0.364528656,0.362977058,0.361424327,0.359870732,0.358316123,0.356760383,0.355203807,0.353646219,0.352087647,0.350528002,0.348967493,0.34740603,0.345843583,0.344280064,0.34271571,0.341150403,0.339584023,0.338016838,0.336448699,0.334879607,0.333309501,0.331738591,0.330166727,0.328593969,0.327020198,0.325445622,0.323870122,0.322293639,0.320716381,0.319138199,0.317559153,0.315979093,0.314398289,0.31281662,0.311234057,0.30965054,0.308066279,0.306481153,0.304895043,0.303308249,0.30172056,0.300132066,0.298542619,0.296952456,0.295361489,0.293769658,0.292176932,0.290583491,0.288989276,0.287394226,0.285798281,0.284201652,0.282604218,0.281005919,0.279406935,0.277807176,0.276206642,0.274605244,0.273003161,0.271400362,0.269796789,0.268192351,0.266587287,0.264981508,0.263374865,0.261767596,0.260159582,0.258550882,0.256941348,0.255331188,0.253720343,0.252108783,0.250496417,0.248883456,0.247269809,0.245655373,0.24404037,0.242424682,0.240808323,0.239191175,0.23757349,0.235955134,0.234336123,0.232716352,0.231096059,0.229475111,0.227853417,0.226231202,0.224608377,0.22298491,0.221360713,0.21973601,0.21811071,0.2164848,0.214858174,0.213231072,0.211603373,0.209974974,0.208346099,0.206716657,0.205086634,0.203455925,0.201824784,0.200193062,0.198560789,0.19692786,0.195294499,0.193660587,0.192026019,0.190391049,0.188755542,0.187119514,0.185482845,0.183845773,0.18220821,0.180570126,0.17893143,0.177292347,0.175652787,0.174012616,0.172372073,0.170731053,0.169089556,0.167447492,0.165805057,0.164162174,0.162518829,0.160874933,0.159230694,0.157586008,0.15594089,0.154295221,0.152649254,0.151002854,0.149355903,0.147708669,0.146061033,0.144412979,0.142764419,0.141115561,0.13946633,0.137816697,0.136166573,0.134516194,0.132865429,0.131214187,0.129562706,0.127910852,0.126258641,0.124605969,0.122953065,0.121299826,0.119646244,0.117992215,0.116337977,0.114683419,0.113028422,0.111373223,0.109717727,0.108061917,0.10640569,0.104749292,0.103092596,0.101435617,0.0997782424,0.0981207043,0.096462898,0.0948047042,0.0931463614,0.0914877653,0.0898289084,0.0881696939,0.0865103453,0.0848507583,0.0831909403,0.0815307647,0.0798704922,0.0782099888,0.07654915,0.0748882219,0.0732270852,0.0715657473,0.069904089,0.0682423562,0.0665804371,0.0649183244,0.063255921,0.0615934581,0.0599308237,0.0582679063,0.0566049442,0.0549418256,0.0532785542,0.0516150184,0.0499514565,0.0482877567,0.0466239192,0.0449598394,0.0432957485,0.0416315421,0.0399672166,0.0383026637,0.0366381221,0.0349734761,0.0333086178,0.0316437855,0.0299788658,0.0283138622,0.0266486611,0.0249835048,0.0233182795,0.0216529891,0.0199875198,0.0183221139,0.0166566577,0.0149910357,0.0133254919,0.01165991,0.00999429636,0.00832853653,0.00666287169,0.00499718869,0.00333149219,0.00166566693,-4.37113883e-08,0.999996066,0.999984264,0.999964595,0.999937057,0.999901652,0.999858379,0.999807239,0.99974823,0.999681354,0.999606609,0.999523997,0.999433577,0.999335229,0.999229014,0.99911499,0.998993039,0.99886328,0.998725653,0.998580158,0.998426795,0.998265624,0.998096526,0.997919619,0.997734904,0.997542262,0.997341812,0.997133493,0.996917307,0.996693313,0.996461511,0.99622184,0.995974302,0.995718956,0.995455742,0.99518472,0.994905889,0.994619191,0.994324684,0.994022369,0.993712187,0.993394256,0.993068457,0.992734849,0.992393434,0.99204421,0.991687238,0.991322398,0.99094975,0.990569353,0.990181148,0.989785135,0.989381313,0.988969743,0.988550365,0.988123238,0.987688363,0.987245679,0.986795187,0.986337006,0.985871017,0.985397279,0.984915793,0.984426558,0.983929574,0.983424842,0.982912421,0.982392192,0.981864274,0.981328666,0.980785251,0.980234206,0.979675412,0.97910887,0.978534698,0.977952778,0.977363169,0.976765871,0.976160884,0.975548267,0.974927902,0.974299908,0.973664224,0.973020911,0.972369909,0.971711278,0.971045017,0.970371068,0.969689548,0.96900034,0.968303502,0.967599094,0.966887057,0.96616739,0.965440154,0.964705288,0.963962853,0.963212848,0.962455213,0.961690068,0.960917294,0.96013701,0.959349155,0.958553791,0.957750797,0.956940353,0.956122339,0.955296814,0.95446372,0.953623176,0.952775121,0.951919556,0.95105654,0.950185955,0.949307978,0.948422492,0.947529554,0.946629167,0.945721328,0.944806039,0.943883359,0.942953169,0.942015648,0.941070676,0.940118253,0.939158499,0.938191354,0.937216818,0.936234891,0.935245574,0.934248924,0.933244944,0.932233632,0.931214929,0.930188954,0.929155588,0.92811501,0.927067041,0.926011801,0.924949288,0.923879504,0.922802508,0.92171818,0.920626581,0.919527769,0.918421745,0.91730845,0.916187942,0.915060282,0.91392535,0.912783265,0.911633968,0.910477519,0.909313917,0.908143163,0.906965256,0.905780196,0.904588044,0.903388739,0.902182341,0.90096885,0.899748266,0.898520589,0.897285879,0.896044075,0.894795239,0.893539369,0.892276466,0.891006529,0.889729559,0.888445616,0.887154698,0.885856807,0.884551883,0.883240044,0.881921291,0.880595565,0.879262865,0.87792331,0.876576781,0.875223458,0.873863161,0.872496009,0.871122003,0.869741142,0.868353426,0.866958916,0.865557551,0.864149392,0.862734377,0.861312628,0.859884083,0.858448803,0.857006729,0.855557978,0.854102433,0.852640152,0.851171196,0.849695563,0.848213196,0.846724212,0.845228553,0.843726218,0.842217267,0.84070164,0.839179456,0.837650657,0.836115241,0.834573269,0.833024681,0.831469595,0.829907954,0.828339815,0.82676512,0.825183928,0.823596239,0.822002053,0.82040143,0.81879437,0.817180812,0.815560877,0.813934505,0.812301695,0.810662508,0.809017003,0.80736506,0.805706799,0.80404222,0.802371264,0.800693989,0.799010456,0.797320664,0.795624554,0.793922186,0.792213619,0.790498734,0.788777709,0.787050426,0.785316944,0.783577323,0.781831503,0.780079544,0.778321445,0.776557207,0.77478689,0.773010492,0.771227956,0.769439399,0.767644763,0.765844107,0.764037371,0.762224674,0.760405958,0.758581281,0.756750643,0.754914045,0.753071487,0.751222968,0.749368608,0.747508347,0.745642185,0.743770123,0.741892278,0.740008533,0.738119006,0.736223638,0.734322488,0.732415557,0.730502903,0.728584468,0.726660311,0.724730432,0.722794831,0.720853567,0.718906641,0.716954052,0.714995801,0.713031948,0.711062491,0.709087431,0.707106769,0.705120564,0.703128815,0.701131523,0.699128747,0.697120428,0.695106626,0.693087399,0.691062689,0.689032495,0.686996937,0.684955955,0.682909608,0.680857837,0.678800762,0.676738322,0.674670577,0.672597468,0.670519114,0.668435514,0.66634661,0.66425246,0.662153065,0.660048485,0.657938719,0.655823767,0.65370369,0.651578426,0.649448037,0.647312582,0.645172,0.643026352,0.640875638,0.638719857,0.636559069,0.634393275,0.632222474,0.630046725,0.62786603,0.625680387,0.623489797,0.62129432,0.619093955,0.616888702,0.614678621,0.612463653,0.610243917,0.608019352,0.605790019,0.603555918,0.601317048,0.59907347,0.596825182,0.594572246,0.592314601,0.590052247,0.587785304,0.585513651,0.583237469,0.580956697,0.578671336,0.576381385,0.574086964,0.571787953,0.569484532,0.56717658,0.564864159,0.562547266,0.560226023,0.55790031,0.555570245,0.553235769,0.550897002,0.548553884,0.546206415,0.543854654,0.541498601,0.539138258,0.536773741,0.534405112,0.532032132,0.52965498,0.527273655,0.524888217,0.522498608,0.520104885,0.517707109,0.515305221,0.512899339,0.510489345,0.508075416,0.505657434,0.503235459,0.50080955,0.498379707,0.49594593,0.49350825,0.491066694,0.488621265,0.48617202,0.483718932,0.481262028,0.47880134,0.476336896,0.473868698,0.471396774,0.468921125,0.46644181,0.4639588,0.461472154,0.458981901,0.456488013,0.453990519,0.451489478,0.448984861,0.446476728,0.443965077,0.44144994,0.438931316,0.436409265,0.433883756,0.431354851,0.428822517,0.426286846,0.423747808,0.421205431,0.418659747,0.416110754,0.413558513,0.411002994,0.408444256,0.405882299,0.403317153,0.400748849,0.398177356,0.395602763,0.393025041,0.390444219,0.387860328,0.385273397,0.382683426,0.380090445,0.377494484,0.374895543,0.372293651,0.369688839,0.367081106,0.364470482,0.361856997,0.359240681,0.356621534,0.353999555,0.351374805,0.348747283,0.346117049,0.343484074,0.340848386,0.338210016,0.335568994,0.33292532,0.330279052,0.327630162,0.324978679,0.322324663,0.319668114,0.317009062,0.314347476,0.311683446,0.309016973,0.306348056,0.303676724,0.301002979,0.29832691,0.295648456,0.292967707,0.290284634,0.287599295,0.284911662,0.282221824,0.27952975,0.276835471,0.274139136,0.271440506,0.26873976,0.266036898,0.26333195,0.260624945,0.257915854,0.255204737,0.252491623,0.249776542,0.247059464,0.244340464,0.241619527,0.238896698,0.236171991,0.233445421,0.230717003,0.227986783,0.225254774,0.222520977,0.219785437,0.217048168,0.214309201,0.211568534,0.208826214,0.20608224,0.203336641,0.200589448,0.197840691,0.195090353,0.192338496,0.189585119,0.186830252,0.184073925,0.181316137,0.178556919,0.175796315,0.17303431,0.17027095,0.167506248,0.164740235,0.16197291,0.159204334,0.156434491,0.153663412,0.150891125,0.148117661,0.145343035,0.142567247,0.139790356,0.137012348,0.134233281,0.131453142,0.128671974,0.125889793,0.123106629,0.120322488,0.117537402,0.114751391,0.111964479,0.10917668,0.106388032,0.103598543,0.100808233,0.0980171338,0.0952252671,0.0924326479,0.0896392986,0.0868452489,0.0840505138,0.081255123,0.078459084,0.0756624341,0.0728651807,0.070067361,0.06726899,0.06447009,0.0616706796,0.0588707849,0.0560704246,0.0532696284,0.0504684113,0.0476667956,0.0448648036,0.0420624614,0.0392597876,0.0364568047,0.0336535349,0.0308500007,0.0280462243,0.0252422262,0.0224380288,0.0196336564,0.0168291293,0.0140244691,0.0112196989,0.00841484033,0.00560991606,0.00280494709,-4.37113883e-08,0.999974489,0.999898016,0.999770582,0.999592185,0.999362826,0.999082506,0.998751283,0.998369098,0.99793607,0.99745214,0.996917307,0.996331751,0.995695353,0.995008171,0.994270325,0.993481755,0.992642522,0.991752684,0.990812302,0.989821434,0.988780081,0.987688363,0.986546218,0.985353827,0.98411119,0.982818425,0.981475472,0.980082572,0.978639662,0.977146864,0.975604236,0.974011898,0.972369909,0.970678329,0.968937278,0.967146873,0.965307117,0.963418126,0.961480081,0.959492981,0.957456946,0.955372155,0.953238606,0.95105654,0.948825896,0.946546972,0.944219708,0.941844344,0.939420998,0.93694973,0.934430659,0.931864023,0.929249823,0.926588297,0.923879504,0.921123624,0.918320835,0.915471137,0.912574828,0.909631968,0.906642795,0.903607309,0.900525808,0.897398412,0.89422524,0.891006529,0.887742341,0.884432912,0.881078422,0.87767899,0.874234796,0.870746076,0.867212951,0.8636356,0.8600142,0.856348991,0.852640152,0.848887801,0.845092177,0.841253519,0.837371945,0.833447695,0.829480946,0.825471878,0.821420789,0.817327738,0.813193083,0.809017003,0.804799616,0.800541222,0.796242058,0.791902244,0.787522078,0.783101797,0.778641522,0.77414161,0.76960218,0.76502353,0.760405958,0.755749524,0.751054645,0.74632144,0.741550148,0.736741126,0.731894493,0.727010548,0.722089589,0.717131793,0.712137401,0.707106769,0.702040076,0.696937561,0.691799521,0.686626256,0.681417942,0.676174879,0.670897365,0.665585637,0.660239995,0.654860675,0.649448037,0.644002199,0.638523579,0.633012414,0.627469003,0.621893525,0.616286397,0.610647857,0.604978144,0.599277616,0.593546569,0.587785244,0.581993937,0.576172948,0.570322633,0.564443231,0.558535039,0.552598357,0.546633482,0.540640771,0.534620523,0.528573036,0.522498488,0.516397476,0.51027,0.504116595,0.497937411,0.491732925,0.485503286,0.479248911,0.472970188,0.466667235,0.460340619,0.45399043,0.447617173,0.441221029,0.434802473,0.428361654,0.42189911,0.415414959,0.408909708,0.402383536,0.39583692,0.389270037,0.382683426,0.376077205,0.36945191,0.362807661,0.356145024,0.349464148,0.342765421,0.336049348,0.32931605,0.322566032,0.315799505,0.309016973,0.302218556,0.295404881,0.288576007,0.281732529,0.274874598,0.268002748,0.261117131,0.25421831,0.247306436,0.240382046,0.233445302,0.226496756,0.219536558,0.212565288,0.205583066,0.198590472,0.191587642,0.184575036,0.177553147,0.170522094,0.163482457,0.156434372,0.149378419,0.142314747,0.135243937,0.128166109,0.121081859,0.113991328,0.106895097,0.0997933075,0.0926865414,0.0855749324,0.078459084,0.0713391155,0.0642156303,0.0570887476,0.0499590747,0.0428267382,0.0356922187,0.0285559967,0.0214182008,0.0142794326,0.00713981688,-4.37113883e-08,0.999924719,0.999698818,0.999322355,0.99879545,0.998118103,0.997290432,0.996312618,0.99518472,0.993906975,0.992479563,0.990902662,0.989176512,0.987301409,0.985277653,0.983105481,0.980785251,0.97831738,0.975702107,0.972939968,0.970031261,0.966976464,0.963776052,0.960430503,0.956940353,0.953306019,0.949528158,0.945607305,0.941544056,0.937339008,0.932992816,0.928506076,0.923879504,0.919113874,0.914209723,0.909167945,0.903989315,0.898674488,0.893224299,0.887639642,0.881921232,0.876070082,0.870086968,0.863972843,0.857728601,0.851355195,0.84485358,0.838224709,0.831469595,0.824589312,0.817584813,0.81045717,0.803207517,0.795836926,0.78834641,0.780737221,0.773010433,0.765167236,0.757208824,0.749136388,0.740951121,0.732654274,0.724247098,0.715730786,0.707106769,0.698376238,0.689540505,0.680601001,0.671558917,0.662415743,0.653172791,0.643831551,0.634393275,0.624859452,0.615231574,0.60551101,0.59569931,0.585797846,0.575808167,0.565731823,0.555570185,0.545324981,0.534997642,0.524589658,0.514102697,0.50353843,0.492898166,0.482183725,0.471396655,0.460538715,0.449611306,0.438616186,0.427555114,0.416429549,0.405241281,0.393991947,0.382683426,0.371317148,0.359894961,0.348418683,0.336889833,0.32531023,0.313681662,0.302005947,0.290284634,0.27851963,0.266712755,0.254865646,0.242980123,0.231058136,0.219101235,0.207111329,0.195090234,0.183039889,0.170961857,0.158858076,0.146730497,0.134580687,0.122410625,0.110222124,0.0980171338,0.0857972726,0.0735644922,0.0613207482,0.04906765,0.0368071645,0.0245411359,0.0122715291,-4.37113883e-08,0.999982178,0.999928653,0.999839485,0.999714613,0.999554157,0.999357998,0.999126136,0.99885869,0.998555601,0.998216927,0.99784261,0.997432709,0.996987224,0.996506155,0.995989561,0.995437443,0.994849801,0.994226694,0.993568122,0.992874086,0.992144644,0.991379797,0.990579545,0.989744008,0.988873184,0.987967074,0.987025678,0.986049116,0.985037386,0.98399049,0.982908487,0.981791437,0.980639338,0.979452312,0.978230298,0.976973414,0.975681663,0.974355161,0.972993851,0.97159785,0.97016716,0.968701899,0.967202067,0.965667725,0.96409893,0.962495744,0.960858226,0.959186435,0.95748049,0.955740333,0.953966081,0.952157795,0.950315535,0.948439419,0.946529448,0.944585681,0.942608237,0.940597177,0.938552558,0.936474502,0.934363008,0.932218134,0.930040061,0.927828848,0.925584435,0.923307121,0.920996785,0.918653607,0.916277707,0.913869083,0.911427855,0.908954144,0.906447947,0.903909445,0.901338756,0.898735881,0.896100879,0.893433988,0.890735209,0.888004661,0.885242403,0.882448614,0.879623294,0.876766622,0.873878717,0.87095958,0.868009388,0.865028262,0.862016261,0.858973503,0.855900049,0.852796137,0.849661827,0.846497118,0.84330225,0.840077341,0.83682245,0.833537698,0.830223203,0.826879084,0.823505461,0.820102513,0.816670239,0.813208878,0.809718549,0.806199253,0.802651227,0.79907459,0.795469463,0.791835904,0.788174152,0.784484208,0.780766368,0.777020633,0.773247182,0.769446135,0.765617669,0.761761904,0.757878959,0.753968954,0.750032008,0.746068418,0.742078125,0.738061428,0.734018326,0.729949117,0.72585386,0.721732616,0.717585742,0.713413179,0.709215224,0.704991996,0.700743556,0.696470141,0.692171931,0.687848926,0.683501482,0.679129601,0.67473352,0.670313358,0.665869236,0.661401451,0.656910062,0.652395189,0.64785707,0.643295825,0.638711631,0.634104669,0.629475057,0.624823034,0.620148659,0.61545229,0.610733867,0.605993629,0.601231813,0.5964486,0.591644049,0.586818397,0.581971824,0.577104509,0.57221663,0.567308247,0.562379658,0.557431042,0.552462578,0.547474325,0.542466581,0.537439525,0.532393217,0.527327955,0.522243857,0.517141163,0.512019992,0.506880581,0.50172317,0.496547759,0.491354644,0.486143976,0.480915993,0.475670844,0.470408738,0.465129852,0.459834367,0.45452258,0.449194491,0.443850368,0.438490391,0.433114797,0.427723765,0.422317445,0.416896075,0.411459833,0.406009018,0.4005436,0.395063907,0.389570117,0.384062439,0.378541052,0.373006165,0.367457986,0.361896783,0.356322587,0.350735664,0.345136225,0.339524478,0.33390063,0.328264862,0.322617382,0.316958398,0.311288208,0.305606812,0.299914539,0.294211537,0.288498044,0.28277427,0.277040392,0.27129665,0.265543312,0.259780407,0.254008263,0.248227015,0.242436931,0.236638203,0.230831027,0.225015625,0.219192177,0.21336104,0.207522184,0.201675907,0.195822448,0.189962,0.184094772,0.178220987,0.17234084,0.166454658,0.160562426,0.154664457,0.148760974,0.142852202,0.136938319,0.131019548,0.125096112,0.119168207,0.113236167,0.107299976,0.101359956,0.0954163224,0.0894692764,0.083519049,0.0775658414,0.0716098621,0.0656514466,0.0596905723,0.0537275709,0.0477626473,0.0417960249,0.0358279124,0.0298585184,0.023888059,0.0179167502,0.0119449198,0.00597254466,-4.37113883e-08,0.999998808,0.999995112,0.999989033,0.999980509,0.999969602,0.999956191,0.999940395,0.999922156,0.999901474,0.999878347,0.999852777,0.999824822,0.999794424,0.999761581,0.999726295,0.999688566,0.999648392,0.999605834,0.999560833,0.999513388,0.999463499,0.999411225,0.999356508,0.999299288,0.999239743,0.999177694,0.999113202,0.999046326,0.998977005,0.998905241,0.998831093,0.998754442,0.998675406,0.998593926,0.998510003,0.998423696,0.998334944,0.998243749,0.99815011,0.998054087,0.997955561,0.99785465,0.997751355,0.997645557,0.997537374,0.997426748,0.997313738,0.997198224,0.997080326,0.996960044,0.996837258,0.996712089,0.996584475,0.996454477,0.996322036,0.99618715,0.996049821,0.995910108,0.995767951,0.99562341,0.995476425,0.995326996,0.995175183,0.995020926,0.994864225,0.994705141,0.994543612,0.994379699,0.994213343,0.994044542,0.993873358,0.993699729,0.993523717,0.993345261,0.993164361,0.992981076,0.992795408,0.992607296,0.992416739,0.992223799,0.992028475,0.991830647,0.991630495,0.991427898,0.991222858,0.991015434,0.990805626,0.990593374,0.990378737,0.990161657,0.989942193,0.989720285,0.989495993,0.989269316,0.989040196,0.988808692,0.988574743,0.988338411,0.988099694,0.987858593,0.987615049,0.987369061,0.987120748,0.986869991,0.98661685,0.986361325,0.986103356,0.985843003,0.985580266,0.985315144,0.985047579,0.984777629,0.984505296,0.984230578,0.983953476,0.98367393,0.983392,0.983107746,0.982821047,0.982531905,0.982240438,0.981946588,0.981650352,0.981351674,0.98105067,0.980747223,0.980441391,0.980133235,0.979822636,0.979509652,0.979194343,0.978876591,0.978556514,0.978233993,0.977909148,0.977581859,0.977252245,0.976920247,0.976585865,0.976249099,0.975909948,0.975568473,0.975224555,0.974878311,0.974529684,0.974178672,0.973825276,0.973469555,0.973111451,0.972750962,0.972388148,0.972022891,0.971655309,0.971285403,0.970913112,0.970538437,0.970161378,0.969781995,0.969400287,0.969016135,0.968629718,0.968240857,0.967849672,0.967456162,0.967060268,0.966662049,0.966261446,0.965858519,0.965453207,0.965045571,0.964635551,0.964223266,0.963808537,0.963391542,0.962972164,0.962550461,0.962126374,0.961699963,0.961271226,0.960840166,0.96040678,0.959971011,0.959532917,0.959092498,0.958649755,0.958204627,0.957757235,0.957307458,0.956855416,0.95640099,0.95594424,0.955485165,0.955023825,0.954560101,0.954094052,0.953625679,0.953155041,0.952682018,0.952206731,0.951729059,0.951249123,0.950766861,0.950282335,0.949795425,0.94930625,0.94881475,0.948320925,0.947824776,0.947326362,0.946825624,0.94632256,0.945817232,0.945309579,0.944799662,0.944287419,0.943772852,0.943256021,0.942736924,0.942215502,0.941691756,0.941165745,0.940637469,0.940106869,0.939574003,0.939038873,0.938501418,0.937961698,0.937419653,0.936875343,0.936328828,0.935779929,0.935228825,0.934675395,0.934119761,0.933561802,0.933001578,0.932439089,0.931874335,0.931307256,0.930737972,0.930166423,0.929592609,0.929016531,0.928438187,0.927857578,0.927274704,0.926689625,0.926102221,0.925512612,0.924920738,0.924326599,0.923730254,0.923131585,0.922530711,0.921927631,0.921322286,0.920714676,0.920104802,0.919492722,0.918878436,0.918261886,0.91764307,0.917022049,0.916398823,0.915773332,0.915145636,0.914515674,0.913883507,0.913249135,0.912612557,0.911973715,0.911332667,0.910689414,0.910043895,0.909396231,0.908746302,0.908094168,0.907439888,0.906783342,0.906124592,0.905463636,0.904800475,0.904135108,0.903467596,0.902797818,0.902125895,0.901451707,0.900775433,0.900096893,0.899416149,0.898733258,0.898048162,0.897360861,0.896671414,0.895979762,0.895285964,0.894589961,0.893891752,0.893191397,0.892488897,0.891784191,0.89107734,0.890368283,0.88965708,0.888943732,0.888228178,0.887510478,0.886790633,0.886068642,0.885344446,0.884618163,0.883889675,0.883159041,0.882426262,0.881691396,0.880954325,0.880215108,0.879473746,0.878730237,0.877984643,0.877236903,0.876486957,0.875734925,0.874980807,0.874224484,0.873466074,0.872705519,0.871942878,0.871178091,0.870411158,0.869642138,0.868870974,0.868097723,0.867322385,0.866544902,0.865765333,0.864983618,0.864199817,0.86341393,0.862625897,0.861835837,0.861043572,0.860249341,0.859452963,0.858654439,0.857853889,0.857051194,0.856246471,0.855439663,0.854630768,0.853819788,0.853006721,0.852191567,0.851374388,0.850555062,0.84973377,0.848910332,0.848084807,0.847257316,0.846427679,0.845596015,0.844762266,0.843926489,0.843088686,0.842248738,0.841406822,0.84056282,0.839716792,0.838868737,0.838018596,0.837166488,0.836312294,0.835456073,0.834597826,0.833737493,0.832875192,0.832010865,0.831144512,0.830276132,0.829405665,0.828533232,0.827658832,0.826782346,0.825903893,0.825023413,0.824140906,0.823256433,0.822369933,0.821481407,0.820590913,0.819698453,0.818803966,0.817907453,0.817009032,0.816108525,0.81520611,0.81430167,0.813395262,0.812486887,0.811576486,0.810664177,0.809749901,0.808833599,0.80791533,0.806995094,0.80607295,0.80514878,0.804222703,0.803294659,0.802364588,0.801432669,0.800498784,0.799562871,0.798625112,0.797685325,0.796743631,0.79580003,0.794854403,0.793906927,0.792957485,0.792006135,0.791052878,0.790097654,0.789140522,0.788181424,0.787220478,0.786257625,0.785292804,0.784326077,0.783357441,0.782386899,0.781414509,0.780440152,0.779463947,0.778485835,0.777505755,0.776523888,0.775540054,0.774554372,0.773566782,0.772577345,0.771586001,0.770592749,0.769597709,0.768600762,0.767601907,0.766601205,0.765598595,0.764594197,0.763587952,0.762579739,0.761569738,0.76055789,0.759544194,0.75852865,0.757511258,0.756492019,0.755470872,0.754447997,0.753423274,0.752396643,0.751368225,0.750337958,0.749305904,0.748272002,0.747236252,0.746198714,0.745159388,0.744118214,0.743075252,0.742030442,0.740983844,0.739935458,0.738885283,0.737833321,0.736779451,0.735723913,0.734666526,0.733607352,0.732546449,0.731483698,0.730419219,0.729352891,0.728284836,0.727215052,0.72614342,0.725070059,0.72399497,0.722918034,0.721839428,0.720758975,0.719676852,0.718592942,0.717507243,0.716419876,0.71533066,0.714239836,0.713147223,0.712052822,0.710956752,0.709858894,0.708759367,0.707658112,0.706555068,0.705450356,0.704343915,0.703235745,0.702125907,0.70101434,0.699901044,0.69878608,0.697669387,0.696551025,0.695430934,0.694309235,0.693185747,0.69206059,0.690933824,0.689805269,0.688675106,0.687543213,0.686409712,0.685274541,0.684137642,0.682999134,0.681858897,0.680717051,0.679573596,0.678428352,0.677281559,0.676133096,0.674983025,0.673831284,0.672677875,0.671522856,0.670366168,0.669207871,0.668047965,0.666886389,0.665723264,0.66455847,0.663392067,0.662224054,0.661054373,0.659883201,0.658710361,0.657535851,0.656359851,0.655182183,0.654002964,0.652822137,0.6516397,0.650455713,0.649270117,0.648082972,0.646894217,0.645703852,0.644511998,0.643318534,0.64212352,0.640926957,0.639728785,0.638529122,0.63732779,0.636125028,0.634920716,0.633714795,0.632507324,0.631298363,0.630087852,0.628875792,0.627662182,0.626447141,0.625230491,0.624012351,0.622792661,0.621571481,0.620348811,0.619124532,0.617898881,0.616671681,0.615442932,0.614212692,0.612980962,0.611747801,0.610513151,0.60927695,0.60803926,0.606800139,0.605559528,0.604317486,0.603073895,0.601828873,0.600582361,0.599334419,0.598085046,0.596834123,0.59558183,0.594328105,0.593072832,0.591816247,0.590558112,0.589298606,0.58803761,0.586775243,0.585511386,0.584246159,0.5829795,0.581711411,0.580441892,0.579171002,0.577898622,0.57662493,0.575349808,0.574073255,0.572795331,0.571515977,0.570235252,0.568953216,0.56766969,0.566384792,0.565098524,0.563810945,0.562521994,0.561231554,0.559939861,0.558646739,0.557352304,0.556056499,0.554759324,0.553460836,0.552160978,0.550859809,0.549557269,0.548253357,0.546948135,0.545641601,0.544333756,0.54302454,0.541714013,0.540402234,0.539089084,0.537774622,0.53645879,0.535141766,0.533823371,0.532503724,0.531182766,0.529860437,0.528536916,0.527212083,0.525885999,0.524558604,0.523229837,0.521899939,0.520568728,0.519236267,0.517902493,0.516567409,0.515231192,0.513893664,0.512554944,0.511214912,0.509873569,0.508531094,0.507187366,0.505842447,0.504496217,0.503148735,0.50180006,0.500450253,0.499099165,0.497746855,0.496393263,0.495038539,0.493682653,0.492325515,0.490967214,0.489607602,0.488246918,0.486885011,0.485521942,0.484157681,0.482792169,0.481425554,0.480057776,0.478688836,0.477318734,0.47594735,0.474574924,0.473201334,0.471826613,0.470450729,0.469073594,0.467695415,0.466316104,0.46493566,0.463554084,0.462171286,0.460787475,0.459402531,0.458016455,0.456629276,0.455240875,0.453851491,0.452460974,0.451069385,0.449676663,0.448282778,0.446887881,0.44549191,0.444094867,0.44269672,0.441297412,0.43989712,0.438495755,0.437093347,0.435689837,0.434285194,0.432879597,0.431472927,0.430065215,0.428656459,0.427246541,0.425835729,0.424423844,0.423010945,0.421597004,0.42018193,0.418765962,0.417348951,0.415930927,0.414511889,0.413091749,0.411670715,0.410248667,0.408825606,0.407401592,0.405976444,0.404550433,0.403123409,0.40169543,0.400266469,0.398836553,0.397405535,0.395973653,0.394540817,0.393107027,0.391672283,0.390236467,0.388799816,0.387362212,0.385923654,0.384484172,0.383043647,0.381602317,0.380160034,0.378716826,0.377272695,0.375827551,0.374381602,0.372934729,0.371486932,0.370038271,0.368588567,0.367138088,0.365686744,0.364234477,0.362781316,0.361327201,0.359872282,0.358416498,0.35695985,0.355502307,0.354043812,0.352584571,0.351124465,0.349663496,0.348201692,0.346738905,0.345275402,0.343811065,0.342345893,0.340879858,0.339412928,0.337945253,0.336476743,0.335007459,0.33353731,0.332066268,0.33059454,0.329121977,0.32764864,0.326174468,0.324699432,0.32322368,0.321747184,0.320269883,0.318791807,0.317312837,0.315833211,0.31435281,0.312871635,0.311389714,0.30990693,0.308423489,0.306939304,0.305454373,0.303968698,0.302482188,0.300995022,0.299507141,0.298018545,0.296529204,0.295039028,0.293548256,0.292056769,0.290564567,0.289071649,0.287577927,0.286083639,0.284588605,0.283092916,0.281596541,0.280099332,0.278601587,0.277103156,0.275604039,0.274104267,0.27260372,0.271102607,0.269600838,0.268098414,0.266595334,0.265091509,0.263587147,0.26208213,0.260576487,0.259070188,0.257563174,0.256055623,0.254547477,0.253038675,0.251529276,0.250019163,0.248508543,0.246997327,0.2454855,0.243973076,0.242459953,0.240946352,0.239432156,0.237917379,0.236402035,0.23488611,0.233369485,0.231852427,0.230334789,0.228816599,0.227297857,0.225778431,0.224258587,0.222738191,0.22121726,0.219695777,0.218173653,0.216651112,0.215128034,0.21360445,0.212080345,0.210555598,0.209030449,0.207504809,0.205978647,0.204451993,0.202924728,0.201397076,0.199868947,0.198340327,0.196811214,0.19528152,0.193751454,0.192220926,0.190689936,0.189158469,0.187626421,0.186094046,0.184561223,0.183027938,0.181494206,0.179959923,0.178425312,0.176890284,0.175354809,0.173818916,0.172282472,0.17074573,0.169208586,0.16767101,0.166133046,0.164594546,0.163055763,0.161516592,0.159977019,0.158437058,0.156896606,0.155355886,0.153814778,0.152273297,0.150731444,0.149189115,0.147646546,0.146103606,0.144560307,0.143016666,0.141472563,0.139928222,0.138383538,0.136838526,0.135293186,0.133747384,0.132201388,0.130655065,0.129108429,0.127561465,0.126014084,0.124466516,0.122918643,0.121370465,0.119821995,0.118273117,0.116724074,0.115174741,0.113625124,0.112075239,0.11052496,0.108974524,0.107423827,0.105872877,0.104321659,0.102770068,0.10121835,0.0996663868,0.0981141776,0.0965617374,0.0950089321,0.0934560224,0.0919028819,0.0903495178,0.0887959376,0.0872420147,0.0856880024,0.0841337889,0.0825793594,0.0810247362,0.0794697925,0.0779147744,0.07635957,0.0748041794,0.0732486024,0.071692735,0.0701368079,0.0685807094,0.067024447,0.0654680207,0.0639113188,0.0623545758,0.0607976802,0.0592406392,0.057683453,0.0561261289,0.0545685478,0.0530109517,0.051453229,0.0498953797,0.0483374074,0.0467792004,0.0452209972,0.0436626859,0.0421042666,0.0405457467,0.038987007,0.0374282934,0.0358694866,0.0343105942,0.0327516198,0.0311924443,0.0296333116,0.0280741081,0.0265148357,0.0249554981,0.0233959816,0.0218365286,0.0202770196,0.0187174641,0.017157862,0.0155980978,0.0140384156,0.012478699,0.0109189525,0.00935917906,0.00779926404,0.00623944914,0.00467961887,0.00311977766,0.00155992841,-4.37113883e-08,0.999997914,0.999991536,0.999980986,0.999966204,0.999947131,0.999923885,0.999896407,0.999864757,0.999828815,0.999788642,0.999744236,0.999695659,0.999642849,0.999585748,0.999524474,0.999458969,0.999389231,0.999315262,0.999237061,0.999154687,0.999068022,0.998977184,0.998882115,0.998782814,0.99867928,0.998571575,0.998459578,0.998343408,0.998223007,0.998098373,0.997969508,0.997836471,0.997699142,0.9975577,0.997411966,0.997262001,0.997107863,0.996949494,0.996786952,0.996620119,0.996449113,0.996273935,0.996094525,0.995910883,0.995723009,0.995530963,0.995334685,0.995134234,0.994929552,0.994720638,0.994507551,0.994290292,0.994068742,0.993843079,0.993613183,0.993379056,0.993140757,0.992898285,0.992651582,0.992400706,0.992145598,0.991886318,0.991622865,0.991355181,0.991083324,0.990807295,0.990527034,0.9902426,0.989953995,0.989661217,0.989364266,0.989063084,0.98875773,0.988448203,0.988134503,0.987816632,0.987494588,0.987168372,0.986837983,0.986503422,0.986164689,0.985821784,0.985474706,0.985123456,0.984768033,0.984408498,0.98404479,0.983676851,0.983304799,0.982928634,0.982548296,0.982163727,0.981775105,0.981382251,0.980985343,0.980584204,0.980178952,0.979769528,0.979355991,0.978938341,0.978516519,0.978090584,0.977660477,0.977226257,0.976787925,0.97634542,0.975898802,0.975448072,0.974993229,0.974534273,0.974071145,0.973603964,0.97313261,0.972657144,0.972177625,0.971693933,0.971206188,0.970714271,0.970218301,0.969718218,0.969214022,0.968705773,0.968193352,0.967676938,0.967156351,0.966631711,0.966102958,0.965570152,0.965033293,0.964492261,0.963947237,0.963398099,0.962844908,0.962287605,0.961726308,0.961160898,0.960591435,0.96001786,0.959440291,0.958858669,0.958272934,0.957683206,0.957089424,0.95649159,0.955889702,0.955283761,0.954673827,0.95405978,0.953441739,0.952819705,0.952193618,0.951563478,0.950929344,0.950291216,0.949649036,0.949002862,0.948352635,0.947698414,0.9470402,0.946377993,0.945711792,0.945041597,0.944367349,0.943689167,0.943006933,0.942320764,0.941630602,0.940936446,0.940238357,0.939536273,0.938830197,0.938120127,0.937406182,0.936688185,0.935966253,0.935240388,0.934510529,0.933776796,0.933039069,0.932297349,0.931551754,0.930802226,0.930048704,0.929291308,0.928529918,0.927764654,0.926995456,0.926222384,0.925445318,0.924664378,0.923879504,0.923090756,0.922298133,0.921501577,0.920701146,0.919896781,0.919088542,0.918276429,0.917460442,0.91664052,0.915816784,0.914989173,0.914157689,0.91332233,0.912483096,0.911640048,0.910793126,0.909942329,0.909087718,0.908229232,0.907366931,0.906500757,0.905630827,0.904757023,0.903879404,0.902997911,0.902112663,0.9012236,0.900330722,0.89943403,0.898533523,0.897629201,0.896721125,0.895809233,0.894893587,0.893974125,0.893050909,0.892123938,0.891193151,0.89025861,0.889320254,0.888378203,0.887432396,0.886482835,0.885529518,0.884572446,0.883611679,0.882647097,0.881678879,0.880706847,0.879731119,0.878751695,0.877768576,0.876781702,0.875791132,0.874796867,0.873798907,0.872797251,0.871791899,0.870782852,0.86977011,0.868753731,0.867733657,0.866709888,0.865682542,0.864651501,0.863616765,0.862578392,0.861536384,0.860490739,0.859441459,0.858388543,0.857331991,0.856271803,0.855208039,0.854140639,0.853069603,0.851994932,0.850916743,0.849834919,0.848749518,0.847660482,0.846567869,0.84547174,0.844371974,0.843268692,0.842161775,0.8410514,0.839937389,0.838819861,0.837698758,0.836574137,0.835446,0.834314287,0.833179057,0.83204031,0.830898046,0.829752266,0.828603029,0.827450216,0.826293945,0.825134158,0.823970914,0.822804153,0.821633935,0.8204602,0.819283068,0.818102419,0.816918314,0.81573081,0.81453985,0.813345373,0.812147498,0.810946226,0.809741497,0.808533311,0.807321727,0.806106746,0.804888368,0.803666592,0.802441418,0.801212788,0.799980819,0.798745513,0.79750675,0.796264648,0.795019209,0.793770373,0.792518198,0.791262686,0.790003777,0.788741529,0.787476003,0.786207139,0.784934938,0.783659399,0.782380581,0.781098425,0.779812992,0.77852422,0.77723223,0.775936902,0.774638295,0.773336411,0.772031307,0.770722926,0.769411266,0.768096328,0.766778171,0.765456736,0.764132142,0.76280427,0.761473119,0.760138869,0.758801341,0.757460594,0.756116629,0.754769504,0.75341922,0.752065718,0.750708997,0.749349177,0.747986138,0.74661994,0.745250642,0.743878126,0.742502451,0.741123676,0.739741802,0.738356709,0.736968577,0.735577345,0.734182954,0.732785463,0.731384873,0.729981184,0.728574455,0.727164626,0.725751638,0.72433567,0.722916663,0.721494555,0.720069349,0.718641162,0.717209935,0.715775728,0.714338422,0.712898076,0.711454749,0.710008442,0.708559155,0.707106769,0.705651462,0.704193175,0.702731907,0.70126766,0.699800432,0.698330283,0.696857154,0.695381105,0.693902075,0.692420125,0.690935254,0.689447463,0.68795681,0.686463177,0.684966624,0.683467269,0.681964993,0.680459738,0.678951681,0.677440822,0.675927043,0.674410343,0.672890842,0.671368539,0.669843316,0.668315351,0.666784465,0.665250838,0.663714349,0.662175119,0.660632968,0.659088135,0.6575405,0.655990064,0.654436886,0.652880907,0.651322186,0.649760664,0.648196459,0.646629453,0.645059764,0.643487334,0.641912222,0.640334308,0.638753772,0.637170494,0.635584533,0.633995891,0.632404506,0.630810559,0.62921387,0.627614558,0.626012564,0.624407887,0.622800648,0.621190786,0.619578242,0.617963076,0.616345286,0.614724934,0.613102019,0.611476421,0.609848261,0.608217597,0.606584311,0.604948401,0.603309989,0.601669073,0.600025594,0.598379552,0.596730947,0.595079839,0.593426228,0.591770172,0.590111494,0.588450372,0.586786807,0.585120738,0.583452165,0.581781149,0.580107629,0.578431726,0.576753378,0.575072527,0.573389292,0.571703613,0.57001555,0.568325043,0.566632152,0.564936817,0.563239157,0.561539114,0.559836626,0.558131874,0.556424677,0.554715216,0.553003311,0.551289141,0.549572587,0.547853768,0.546132624,0.544409096,0.542683303,0.540955245,0.539224923,0.537492275,0.535757422,0.534020126,0.532280743,0.530539036,0.528795123,0.527049005,0.525300622,0.523550034,0.52179718,0.520042181,0.518284857,0.516525447,0.514763892,0.513000131,0.511234164,0.509466112,0.507695854,0.50592345,0.504148901,0.502372146,0.500593364,0.498812467,0.497029454,0.495244354,0.493457139,0.491667837,0.489876479,0.488083035,0.486287445,0.484489888,0.482690275,0.480888605,0.479084939,0.477279246,0.475471497,0.47366178,0.471850038,0.470036209,0.468220502,0.466402799,0.464583129,0.462761492,0.460937917,0.459112376,0.457284898,0.455455482,0.45362404,0.45179078,0.449955612,0.448118567,0.446279615,0.444438756,0.442596018,0.440751433,0.438904881,0.437056571,0.435206383,0.433354408,0.431500554,0.429644912,0.427787423,0.425928146,0.42406708,0.422204077,0.420339435,0.418473005,0.416604787,0.414734811,0.412863106,0.410989642,0.40911445,0.4072375,0.405358732,0.403478384,0.401596308,0.399712533,0.397827089,0.395939946,0.394051135,0.392160654,0.390268505,0.388374597,0.386479169,0.384582132,0.382683426,0.380783111,0.378881216,0.376977682,0.375072569,0.373165876,0.371257484,0.369347662,0.36743626,0.365523279,0.363608778,0.361692756,0.359775186,0.357856095,0.355935484,0.354013264,0.352089673,0.350164562,0.348237991,0.34630996,0.344380438,0.342449486,0.340517074,0.338583112,0.336647838,0.334711134,0.332773,0.330833465,0.328892559,0.326950252,0.325006545,0.323061466,0.321114928,0.319167137,0.317217976,0.315267503,0.31331569,0.311362535,0.309408069,0.307452321,0.305495262,0.303536773,0.301577151,0.299616218,0.297654033,0.295690596,0.293725908,0.291759968,0.289792806,0.287824422,0.285854697,0.283883899,0.28191188,0.279938668,0.277964294,0.275988728,0.274011999,0.272034109,0.270055056,0.268074751,0.266093433,0.264111012,0.262127459,0.260142803,0.258157015,0.256170183,0.25418222,0.252193213,0.250203043,0.24821189,0.24621971,0.244226485,0.242232218,0.240236938,0.238240644,0.236243337,0.234244928,0.232245624,0.230245352,0.228244111,0.226241887,0.224238724,0.222234607,0.220229551,0.218223557,0.216216534,0.214208707,0.212199986,0.210190356,0.208179832,0.206168443,0.204156175,0.202143043,0.200129062,0.198114112,0.196098447,0.194081947,0.192064628,0.190046504,0.188027576,0.186007842,0.183987334,0.181966037,0.17994386,0.177921042,0.175897464,0.173873141,0.171848103,0.16982232,0.167795822,0.165768623,0.163740709,0.161711991,0.159682706,0.157652751,0.15562214,0.153590858,0.151558921,0.149526358,0.147493154,0.145459205,0.143424764,0.141389713,0.139354065,0.137317836,0.135281011,0.133243635,0.131205678,0.129167184,0.127128005,0.125088423,0.123048306,0.121007666,0.11896652,0.116924867,0.114882722,0.112840086,0.110796981,0.108753286,0.106709249,0.104664758,0.102619834,0.100574471,0.0985286757,0.0964824706,0.0944358632,0.092388846,0.0903413296,0.0882935449,0.0862453803,0.0841968581,0.0821479857,0.0800987557,0.0780491903,0.0759992972,0.0739490837,0.071898438,0.0698476061,0.0677964762,0.0657450631,0.0636933669,0.06164141,0.0595891885,0.0575367138,0.0554839969,0.0534309261,0.0513777472,0.049324356,0.0472707525,0.0452169478,0.0431629568,0.0411087796,0.0390544273,0.0369997956,0.0349451229,0.0328903049,0.0308353454,0.0287802573,0.0267250463,0.0246697236,0.0226142947,0.0205587726,0.0185030438,0.0164473541,0.0143915974,0.0123357782,0.0102799078,0.0082239937,0.00616804417,0.00411206903,0.00205607666,-4.37113883e-08,0.999997139,0.999988675,0.999974489,0.9999547,0.99992919,0.999898016,0.99986124,0.999818742,0.999770582,0.999716818,0.999657333,0.999592185,0.999521375,0.999444962,0.999362826,0.999275029,0.999181628,0.999082506,0.99897778,0.998867333,0.998751283,0.99862951,0.998502135,0.998369098,0.998230398,0.998086035,0.99793607,0.997780383,0.997619092,0.99745214,0.997279525,0.997101247,0.996917307,0.996727765,0.996532559,0.996331751,0.996125221,0.995913088,0.995695353,0.995471895,0.995242894,0.995008171,0.994767845,0.994521916,0.994270325,0.994013071,0.993750215,0.993481755,0.993207633,0.992927909,0.992642522,0.992351532,0.992054939,0.991752684,0.991444886,0.991131425,0.990812302,0.990487635,0.990157366,0.989821434,0.989479899,0.989132822,0.988780081,0.988421798,0.988057852,0.987688363,0.987313211,0.986932516,0.986546218,0.986154377,0.985756874,0.985353827,0.984945178,0.984530985,0.98411119,0.983685851,0.98325491,0.982818425,0.982376337,0.981928706,0.981475472,0.981016755,0.980552435,0.980082572,0.979607165,0.979126155,0.978639662,0.978147626,0.977649987,0.977146864,0.976638198,0.976123989,0.975604236,0.975079,0.974548221,0.974011898,0.973470092,0.972922742,0.972369909,0.971811593,0.971247733,0.970678329,0.970103502,0.969523132,0.968937278,0.96834594,0.967749178,0.967146873,0.966539085,0.965925813,0.965307117,0.964682937,0.964053273,0.963418126,0.962777555,0.96213156,0.961480081,0.960823119,0.960160792,0.959492981,0.958819747,0.958141029,0.957456946,0.95676744,0.956072509,0.955372155,0.954666376,0.953955233,0.953238606,0.952516615,0.95178926,0.95105654,0.950318336,0.949574828,0.948825896,0.948071599,0.947311938,0.946546912,0.945776582,0.945000827,0.944219708,0.943433285,0.942641497,0.941844344,0.941041887,0.940234125,0.939420998,0.938602567,0.937778771,0.93694973,0.936115324,0.935275674,0.934430659,0.933580399,0.932724833,0.931864023,0.930997908,0.930126488,0.929249823,0.928367913,0.927480757,0.926588297,0.925690591,0.9247877,0.923879504,0.922966123,0.922047496,0.921123624,0.920194566,0.919260323,0.918320775,0.917376101,0.916426241,0.915471137,0.914510906,0.91354543,0.912574828,0.91159904,0.910618067,0.909631968,0.908640742,0.907644331,0.906642795,0.905636072,0.904624283,0.903607309,0.902585268,0.901558101,0.900525808,0.899488449,0.898445964,0.897398412,0.896345794,0.89528805,0.89422524,0.893157423,0.892084479,0.891006529,0.889923513,0.88883543,0.887742341,0.886644244,0.885541081,0.884432912,0.883319736,0.882201552,0.881078422,0.879950225,0.878817081,0.87767899,0.876535892,0.875387788,0.874234796,0.873076856,0.87191391,0.870746076,0.869573295,0.868395567,0.867212892,0.866025388,0.864832938,0.8636356,0.862433374,0.861226201,0.8600142,0.858797371,0.857575595,0.856348991,0.855117559,0.853881299,0.852640152,0.851394176,0.850143433,0.848887801,0.847627401,0.846362233,0.845092177,0.843817413,0.84253788,0.841253519,0.83996439,0.838670552,0.837371945,0.836068571,0.834760487,0.833447695,0.832130134,0.830807865,0.829480946,0.828149259,0.826812863,0.825471878,0.824126184,0.822775781,0.821420789,0.820061088,0.818696737,0.817327738,0.815954149,0.814575911,0.813193083,0.811805665,0.810413599,0.809017003,0.807615757,0.806209981,0.804799616,0.803384721,0.801965237,0.800541222,0.799112678,0.797679603,0.796241999,0.794799924,0.793353319,0.791902184,0.790446639,0.788986564,0.787522018,0.786053061,0.784579635,0.783101737,0.78161943,0.780132651,0.778641522,0.777145922,0.775645971,0.77414155,0.772632778,0.771119714,0.76960218,0.768080294,0.766554117,0.76502353,0.76348865,0.76194948,0.760405958,0.758858085,0.75730598,0.755749524,0.754188836,0.752623856,0.751054645,0.749481142,0.747903407,0.74632144,0.744735181,0.743144751,0.741550148,0.739951313,0.738348305,0.736741126,0.735129714,0.73351419,0.731894493,0.730270624,0.728642642,0.727010548,0.725374341,0.723733962,0.722089589,0.720441043,0.718788445,0.717131793,0.715471029,0.713806212,0.712137401,0.710464537,0.70878762,0.707106709,0.705421865,0.703732908,0.702040017,0.700343192,0.698642313,0.696937501,0.695228815,0.693516135,0.691799462,0.690078974,0.688354552,0.686626196,0.684894025,0.683157861,0.681417882,0.679674029,0.677926362,0.676174879,0.674419463,0.672660351,0.670897365,0.669130564,0.667360008,0.665585637,0.663807511,0.66202563,0.660239995,0.658450603,0.656657517,0.654860675,0.653060138,0.651255965,0.649448037,0.647636414,0.645821095,0.644002199,0.642179608,0.640353382,0.638523579,0.63669014,0.634853065,0.633012414,0.631168187,0.629320323,0.627469003,0.625614047,0.623755515,0.621893525,0.620028019,0.618158937,0.616286397,0.614410341,0.612530828,0.610647857,0.60876137,0.606871486,0.604978144,0.603081405,0.601181209,0.599277616,0.597370625,0.595460296,0.59354651,0.591629446,0.589708984,0.587785184,0.585858107,0.583927631,0.581993878,0.580056846,0.578116536,0.576172888,0.574226081,0.572275937,0.570322573,0.568365991,0.56640619,0.564443171,0.562476933,0.560507536,0.55853498,0.556559205,0.554580331,0.552598298,0.550613105,0.548624873,0.546633482,0.544638932,0.542641401,0.540640771,0.538637102,0.536630332,0.534620523,0.532607675,0.530591786,0.528572917,0.526551187,0.524526298,0.522498488,0.520467758,0.518434048,0.516397357,0.514357865,0.512315392,0.51027,0.508221686,0.506170511,0.504116476,0.502059579,0.49999997,0.497937411,0.495872021,0.493803829,0.491732836,0.489659041,0.487582594,0.485503286,0.483421236,0.481336415,0.479248911,0.477158666,0.475065827,0.472970188,0.470871866,0.468770862,0.466667235,0.464560956,0.462452054,0.460340619,0.458226472,0.456109732,0.45399043,0.451868534,0.449744076,0.447617173,0.445487648,0.44335559,0.441221029,0.439083964,0.436944395,0.434802473,0.432657987,0.430511028,0.428361654,0.426209837,0.424055636,0.421898991,0.419740081,0.417578697,0.415414959,0.413248837,0.41108039,0.408909589,0.406736612,0.404561222,0.402383536,0.400203556,0.398021311,0.39583683,0.393650204,0.391461223,0.389270037,0.387076646,0.384881079,0.382683307,0.380483389,0.378281415,0.376077205,0.37387085,0.371662378,0.369451791,0.367239118,0.365024477,0.362807661,0.360588789,0.35836786,0.356144905,0.353919953,0.351693094,0.349464148,0.347233206,0.345000297,0.342765421,0.340528607,0.338289887,0.336049348,0.333806813,0.33156237,0.32931605,0.327067852,0.324817806,0.322566032,0.320312351,0.318056822,0.315799505,0.313540399,0.311279505,0.309016973,0.306752563,0.304486424,0.302218556,0.29994899,0.297677726,0.295404762,0.293130219,0.290853947,0.288576007,0.286296427,0.284015238,0.28173241,0.279448122,0.277162135,0.274874598,0.272585481,0.270294815,0.268002629,0.265709043,0.263413846,0.261117131,0.258818954,0.256519318,0.254218191,0.251915663,0.24961181,0.247306436,0.244999647,0.242691487,0.240381941,0.238071024,0.235758886,0.233445302,0.231130391,0.22881417,0.226496652,0.224177852,0.22185789,0.219536558,0.217213988,0.214890197,0.212565169,0.210238948,0.207911536,0.205583066,0.203253314,0.2009224,0.198590353,0.196257189,0.193922907,0.191587642,0.18925117,0.186913639,0.184575036,0.182235405,0.17989473,0.177553147,0.175210446,0.172866762,0.170522094,0.168176457,0.165829867,0.163482338,0.161134005,0.158784628,0.156434372,0.154083222,0.151731193,0.1493783,0.147024691,0.144670129,0.142314747,0.13995856,0.137601569,0.135243818,0.132885396,0.130526125,0.128166109,0.125805363,0.123443902,0.12108174,0.118719019,0.116355501,0.113991328,0.111626506,0.109261051,0.106894985,0.104528308,0.102161154,0.0997933075,0.0974248946,0.0950559303,0.0926864222,0.0903163925,0.0879459754,0.0855749324,0.0832034126,0.080831416,0.0784589648,0.0760860667,0.073712863,0.0713391155,0.0689649656,0.0665904284,0.0642155111,0.0618402287,0.0594645962,0.0570887476,0.0547124557,0.0523358546,0.0499589555,0.047581777,0.0452043265,0.0428267382,0.0404487886,0.0380706117,0.0356922187,0.0333136208,0.0309348386,0.0285559967,0.0261768755,0.0237976052,0.0214182008,0.0190386754,0.0166590419,0.0142793134,0.011899624,0.00951974746,0.00713981688,0.00475984626,0.00237984839,-1.62920685e-07],"twiddles":[0.999707997,0.0241637453,0.998832226,0.0483133793,0.997373164,0.0724347979,0.995331645,0.0965139195,0.992708862,0.120536685,0.989506423,0.14448905,0.985726058,0.168357044,0.981370151,0.192126721,0.976441085,0.215784192,0.970941842,0.239315674,0.964875519,0.262707382,0.958245814,0.285945684,0.95105654,0.309017003,0.94331181,0.331907868,0.935016215,0.3546049,0.926174641,0.377094835,0.916792214,0.399364591,0.906874359,0.421401113,0.896426916,0.443191558,0.885456026,0.4647232,0.873968005,0.485983431,0.86196965,0.506959915,0.849467933,0.527640224,0.836470127,0.548012495,0.822983861,0.568064749,0.809017003,0.587785244,0.794577658,0.607162535,0.779674351,0.626185238,0.764315724,0.644842207,0.748510778,0.663122654,0.732268691,0.681015849,0.715598941,0.698511362,0,0.998832226,0.0483133793,0.995331645,0.0965139195,0.989506423,0.14448905,0.981370151,0.192126721,0.970941842,0.239315674,0.958245814,0.285945684,0.94331181,0.331907868,0.926174641,0.377094835,0.906874359,0.421401113,0.885456026,0.4647232,0.86196965,0.506959915,0.836470127,0.548012495,0.809017003,0.587785244,0.779674351,0.626185238,0.748510778,0.663122654,0.715598941,0.698511362,0.681015849,0.732268691,0.644842207,0.764315724,0.607162476,0.794577718,0.56806469,0.822983861,0.527640224,0.849467993,0.485983342,0.873968065,0.443191558,0.896426916,0.399364591,0.916792214,0.35460487,0.935016274,0.309016973,0.95105654,0.262707323,0.964875579,0.215784118,0.976441085,0.168357059,0.985726058,0.120536685,0.992708862,0.072434783,0.997373164,0.0241637118,0.999707997,0,0.997373164,0.0724347979,0.989506423,0.14448905,0.976441085,0.215784192,0.958245814,0.285945684,0.935016215,0.3546049,0.906874359,0.421401113,0.873968065,0.485983372,0.836470127,0.548012495,0.794577658,0.607162535,0.748510778,0.663122654,0.698511362,0.715598941,0.644842207,0.764315724,0.587785244,0.809017003,0.527640283,0.849467874,0.4647232,0.885456026,0.399364591,0.916792214,0.331907839,0.94331181,0.262707323,0.964875579,0.192126751,0.981370091,0.120536685,0.992708862,0.0483133569,0.998832226,-0.0241636802,0.999707997,-0.0965138823,0.995331645,-0.16835703,0.985726058,-0.239315689,0.970941842,-0.309017032,0.95105648,-0.377094805,0.926174641,-0.443191439,0.896426976,-0.506959796,0.861969709,-0.56806469,0.822983921,-0.626185179,0.779674351,-0.681015849,0.732268691,0,0.995331645,0.0965139195,0.981370151,0.192126721,0.958245814,0.285945684,0.926174641,0.377094835,0.885456026,0.4647232,0.836470127,0.548012495,0,0.981370151,0.192126721,0.926174641,0.377094835,0.836470127,0.548012495,0.715598941,0.698511362,0.56806469,0.822983861,0.399364591,0.916792214,0,0.958245814,0.285945684,0.836470127,0.548012495,0.644842207,0.764315724,0.399364591,0.916792214,0.120536685,0.992708862,-0.16835703,0.985726058,0,0.926174641,0.377094835,0.715598941,0.698511362,0.399364591,0.916792214,0.0241637118,0.999707997,-0.354604959,0.935016215,-0.681015849,0.732268691,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999787807,0.020599151,0.999151349,0.0411895588,0.998090863,0.0617624857,0.996606827,0.0823092088,0.994699895,0.102821,0.992370784,0.123289146,0.989620566,0.143704996,0.986450374,0.164059833,0.982861578,0.184345067,0.978855669,0.204552069,0.974434376,0.224672258,0.969599545,0.244697094,0.964353263,0.264618129,0.958697736,0.284426838,0.952635407,0.304114819,0.946168721,0.323673785,0.939300597,0.343095392,0.932033777,0.362371355,0.924371481,0.381493598,0.916316926,0.400453925,0.907873452,0.41924426,0.899044752,0.437856734,0.889834523,0.45628342,0.880246639,0.474516422,0.870285273,0.492548078,0.859954476,0.510370672,0.84925884,0.527976751,0.838202775,0.545358717,0.826790988,0.562509239,0.815028369,0.579421103,0,0.999151349,0.0411895588,0.996606827,0.0823092088,0.992370784,0.123289146,0.986450374,0.164059833,0.978855669,0.204552069,0.969599545,0.244697094,0.958697736,0.284426838,0.946168721,0.323673785,0.932033777,0.362371355,0.916316926,0.400453925,0.899044752,0.437856734,0.880246639,0.474516422,0.859954476,0.510370672,0.838202775,0.545358717,0.815028369,0.579421103,0.790470541,0.612500012,0.76457113,0.644539356,0.737374008,0.675484717,0.708925307,0.705283582,0.679273307,0.733885407,0.648468494,0.761241496,0.616562963,0.787305653,0.583610892,0.812033415,0.549668372,0.835382938,0.5147928,0.857314646,0.479043514,0.877791166,0.442481101,0.896777809,0.405167699,0.914242387,0.367166698,0.930155158,0.328542411,0.944489241,0,0.998090863,0.0617624857,0.992370784,0.123289146,0.982861578,0.184345067,0.969599545,0.244697094,0.952635407,0.304114819,0.932033777,0.362371355,0.907873452,0.41924426,0.880246639,0.474516422,0.84925884,0.527976692,0.815028369,0.579421103,0.777685821,0.628653109,0.737374008,0.675484717,0.69424665,0.719737172,0.648468494,0.761241496,0.600214303,0.799839258,0.549668372,0.835382938,0.497023672,0.867736995,0.44248122,0.896777749,0.386249155,0.922394514,0.328542411,0.944489241,0.269581199,0.962977648,0.209590569,0.977789223,0.148799762,0.988867342,0.0874408111,0.996169746,0.0257479865,0.999668479,-0.0360431522,0.99935025,-0.0976967812,0.99521625,-0.15897727,0.987282217,-0.219650745,0.975578547,-0.279485643,0.960149884,0,0.996606827,0.0823092088,0.986450374,0.164059833,0.969599545,0.244697094,0.946168721,0.323673785,0.916316926,0.400453925,0.880246639,0.474516422,0.838202775,0.545358717,0.790470541,0.612500012,0.737374008,0.675484717,0.679273307,0.733885407,0.616562963,0.787305653,0.549668372,0.835382938,0.479043514,0.877791166,0.405167699,0.914242387,0.328542411,0.944489241,0.249687418,0.968326509,0.16913797,0.985592365,0.0874408111,0.996169746,0.00515013235,0.999986708,-0.077175498,0.997017503,-0.15897727,0.987282217,-0.239700288,0.970846951,-0.318796635,0.947823167,-0.395729393,0.918367147,-0.469976723,0.882678807,-0.541034639,0.841000319,-0.608420908,0.793614507,-0.671678245,0.740842998,-0.730377197,0.683044016,-0.784119785,0.620609522,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999977827,0.00666292571,0.999911189,0.0133255562,0.999800205,0.0199875925,0.999644876,0.0266487449,0.99944514,0.0333087146,0.999201,0.0399672017,0.998912513,0.0466239154,0.998579681,0.0532785617,0.998202503,0.0599308424,0.997781038,0.0665804595,0.997315288,0.0732271224,0.996805251,0.0798705295,0.996250927,0.0865104049,0.995652437,0.0931464285,0.99500972,0.0997783244,0.994322777,0.10640578,0.993591726,0.113028511,0.992816567,0.119646236,0.991997361,0.126258641,0.991134107,0.132865444,0,0.999911189,0.0133255562,0.999644876,0.0266487449,0.999201,0.0399672017,0.998579681,0.0532785617,0.997781038,0.0665804595,0.996805251,0.0798705295,0.995652437,0.0931464285,0.994322777,0.10640578,0.992816567,0.119646236,0.991134107,0.132865444,0.989275575,0.146061063,0.987241387,0.159230739,0.985031903,0.172372147,0.982647479,0.185482934,0.980088592,0.198560789,0.977355599,0.211603388,0.974449098,0.224608392,0.971369565,0.237573534,0.968117535,0.250496477,0.964693546,0.263374954,0,0.999800205,0.0199875925,0.999201,0.0399672017,0.998202503,0.0599308386,0.996805251,0.0798705295,0.99500972,0.0997783169,0.992816567,0.119646229,0.990226805,0.139466345,0.987241387,0.159230739,0.983861506,0.178931504,0.980088592,0.198560774,0.975924015,0.218110725,0.971369565,0.237573519,0.966426969,0.256941408,0.961098254,0.276206613,0.955385566,0.295361489,0.94929117,0.314398348,0.94281745,0.333309591,0.935967028,0.352087647,0.928742647,0.370725036,0.921147227,0.389214307,0,0.999644876,0.0266487449,0.998579681,0.0532785617,0.996805251,0.0798705295,0.994322777,0.10640578,0.991134107,0.132865444,0.987241387,0.159230739,0.982647479,0.185482934,0.977355599,0.211603388,0.971369565,0.237573534,0.964693546,0.263374954,0.957332313,0.288989276,0.94929117,0.314398348,0.940575659,0.339584112,0.93119216,0.364528656,0.921147227,0.389214337,0.910448015,0.413623512,0.899102151,0.437738895,0.887117624,0.461543411,0.874503016,0.485020041,0.861267269,0.508152246,0,0.99944514,0.0333087146,0.997781038,0.0665804595,0.99500972,0.0997783244,0.991134107,0.132865444,0.98615855,0.165805131,0.980088592,0.198560789,0.972930908,0.231096104,0.964693546,0.263374954,0.955385566,0.295361519,0.945017338,0.327020288,0.933600307,0.358316123,0.921147227,0.389214337,0.907671869,0.419680595,0.893189192,0.449681073,0.87771529,0.479182541,0.861267269,0.508152246,0.843863487,0.536557972,0.825523138,0.564368248,0.806266665,0.591552198,0.786115468,0.618079662,0,0.999201,0.0399672017,0.996805251,0.0798705295,0.992816567,0.119646229,0.987241387,0.159230739,0.980088592,0.198560774,0.971369565,0.237573519,0.961098254,0.276206613,0.94929117,0.314398348,0.935967028,0.352087647,0.921147227,0.389214307,0.90485543,0.425718993,0.887117624,0.461543381,0.867962241,0.496630222,0.847419798,0.530923426,0.825523198,0.564368188,0.802307367,0.596911132,0.777809441,0.628500164,0.752068579,0.659084857,0.725125909,0.688616335,0.697024465,0.717047334,0,0.998912513,0.0466239154,0.995652437,0.0931464285,0.990226805,0.139466345,0.982647479,0.185482934,0.972930908,0.231096104,0.961098254,0.276206613,0.947175264,0.320716441,0.93119216,0.364528656,0.913183749,0.40754807,0.893189192,0.449681073,0.871251941,0.490836024,0.847419798,0.530923426,0.821744502,0.569856048,0.79428196,0.607549369,0.765091836,0.643921196,0.734237671,0.678892493,0.701786578,0.712387204,0.667809129,0.744332552,0.632379174,0.774658978,0.595573843,0.80330056,0,0.998579681,0.0532785617,0.994322777,0.10640578,0.987241387,0.159230739,0.977355599,0.211603388,0.964693546,0.263374954,0.94929117,0.314398348,0.93119216,0.364528656,0.910448015,0.413623512,0.887117624,0.461543411,0.861267269,0.508152246,0.832970381,0.553317547,0.802307367,0.596911132,0.769365251,0.638809144,0.734237671,0.678892493,0.697024405,0.717047393,0.657831192,0.753165424,0.616769314,0.787143946,0.573955357,0.818886578,0.529511094,0.84830302,0.483562618,0.875309765,0,0.998202503,0.0599308424,0.992816567,0.119646236,0.983861506,0.178931519,0.971369565,0.237573534,0.955385566,0.295361519,0.935967028,0.352087677,0.913183749,0.4075481,0.887117624,0.461543411,0.857862353,0.513879478,0.825523138,0.564368248,0.790216267,0.612828076,0.75206852,0.659084916,0.711217225,0.702972293,0.667809129,0.744332612,0.622000277,0.783017039,0.573955357,0.818886578,0.523847163,0.851812243,0.47185573,0.88167578,0.418167979,0.90836972,0.362976938,0.9317981,0,0.997781038,0.0665804595,0.991134107,0.132865444,0.980088592,0.198560789,0.964693546,0.263374954,0.945017338,0.327020288,0.921147227,0.389214337,0.893189192,0.449681073,0.861267269,0.508152246,0.825523138,0.564368248,0.786115468,0.618079662,0.743219137,0.669048071,0.697024405,0.717047393,0.647736371,0.761864543,0.595573843,0.80330056,0.540768147,0.841171682,0.483562618,0.875309765,0.424211085,0.905563354,0.362976938,0.9317981,0.300131947,0.953897715,0.235955015,0.971763968,0,0.997315288,0.0732271224,0.989275575,0.146061063,0.975924015,0.218110725,0.957332313,0.288989276,0.933600307,0.358316123,0.90485543,0.425718993,0.871251941,0.490836024,0.832970381,0.553317547,0.790216267,0.612828076,0.743219137,0.669048071,0.692231297,0.721675694,0.637526691,0.7704283,0.57939887,0.815044165,0.518159986,0.855283737,0.454138905,0.890930891,0.387679368,0.921794295,0.319138199,0.947708189,0.248883456,0.968533456,0.177292347,0.984158218,0.104749292,0.99449867,0,0.996805251,0.0798705295,0.987241387,0.159230739,0.971369565,0.237573519,0.94929117,0.314398348,0.921147227,0.389214307,0.887117624,0.461543381,0.847419798,0.530923426,0.802307367,0.596911132,0.752068579,0.659084857,0.697024465,0.717047334,0.637526691,0.7704283,0.573955417,0.818886578,0.506716847,0.862112522,0.436240643,0.899830043,0.362977058,0.9317981,0.287394226,0.957812369,0.209975079,0.97770673,0.131214306,0.991354048,0.0516151376,0.998667061,-0.0283138305,0.999599099,0,0.996250927,0.0865104049,0.985031903,0.172372147,0.966426969,0.256941438,0.940575659,0.339584112,0.907671869,0.419680566,0.867962182,0.496630251,0.821744502,0.569856107,0.769365251,0.638809144,0.711217225,0.702972293,0.64773643,0.761864483,0.579398811,0.815044165,0.506716788,0.862112582,0.430235356,0.902716756,0.350528002,0.936552227,0.268192351,0.963365376,0.183845773,0.982955098,0.0981207043,0.995174527,0.01165991,0.999931991,-0.0748883113,0.997191906,-0.160875008,0.986974776,0,0.995652437,0.0931464285,0.982647479,0.185482934,0.961098254,0.276206613,0.93119216,0.364528656,0.893189192,0.449681073,0.847419798,0.530923426,0.79428196,0.607549369,0.734237671,0.678892493,0.667809129,0.744332552,0.595573843,0.80330056,0.518159986,0.855283737,0.436240643,0.899830043,0.350528121,0.936552227,0.261767596,0.965130925,0.170731053,0.985317647,0.0782099888,0.996936917,-0.0149911232,0.999887645,-0.108061887,0.994144142,-0.200193152,0.979756474,-0.290583581,0.956849635,0,0.99500972,0.0997783244,0.980088592,0.198560789,0.955385566,0.295361519,0.921147227,0.389214337,0.87771529,0.479182541,0.825523138,0.564368248,0.765091836,0.643921196,0.697024405,0.717047393,0.622000217,0.783017039,0.540768147,0.841171682,0.454138905,0.890930891,0.362976938,0.9317981,0.268192351,0.963365376,0.170731053,0.985317647,0.0715656281,0.997435868,-0.0283139497,0.999599099,-0.127910942,0.991785645,-0.226231411,0.974073589,-0.322293848,0.946639657,-0.415139586,0.909757733,0,0.994322777,0.10640578,0.977355599,0.211603388,0.94929117,0.314398348,0.910448015,0.413623512,0.861267269,0.508152246,0.802307367,0.596911132,0.734237671,0.678892493,0.657831192,0.753165424,0.573955357,0.818886578,0.483562618,0.875309765,0.387679368,0.921794295,0.287394226,0.957812369,0.183845773,0.982955098,0.0782099888,0.996936917,-0.0283139497,0.999599099,-0.134516284,0.990911365,-0.239191264,0.970972478,-0.341150463,0.9400087,-0.439236015,0.898371696,-0.532334387,0.846534193,0,0.993591726,0.113028511,0.974449098,0.224608392,0.94281745,0.333309591,0.899102151,0.437738895,0.843863487,0.536557913,0.777809441,0.628500164,0.701786578,0.712387204,0.616769314,0.787143946,0.523847163,0.851812243,0.424211204,0.905563295,0.319138199,0.947708189,0.209975079,0.97770673,0.0981207043,0.995174527,-0.0149911232,0.999887645,-0.127910942,0.991785645,-0.239191264,0.970972478,-0.347406,0.937714815,-0.451168299,0.892438889,-0.549148083,0.835725069,-0.64008975,0.768300176,0,0.992816567,0.119646236,0.971369565,0.237573534,0.935967028,0.352087677,0.887117624,0.461543411,0.825523138,0.564368248,0.75206852,0.659084916,0.667809129,0.744332612,0.573955357,0.818886578,0.47185573,0.88167578,0.362976938,0.9317981,0.248883456,0.968533456,0.131214187,0.991354048,0.01165991,0.999931991,-0.108062007,0.994144142,-0.226231292,0.974073589,-0.341150463,0.9400087,-0.451168299,0.892438889,-0.554704368,0.832047522,-0.650271118,0.759702265,-0.736495495,0.676442444,0,0.991997361,0.126258641,0.968117535,0.250496477,0.928742647,0.370725065,0.874503016,0.485020041,0.806266725,0.591552138,0.725125849,0.688616335,0.632379174,0.774658978,0.529511094,0.84830302,0.418167979,0.90836972,0.300132066,0.953897655,0.177292347,0.984158218,0.0516150184,0.998667061,-0.0748883113,0.997191906,-0.200193152,0.979756474,-0.322293729,0.946639717,-0.439236015,0.898371696,-0.549148083,0.835725069,-0.650271118,0.759702265,-0.740986109,0.671520352,-0.819841504,0.57259053,0,0.991134107,0.132865444,0.964693546,0.263374954,0.921147227,0.389214337,0.861267269,0.508152246,0.786115468,0.618079662,0.697024405,0.717047393,0.595573843,0.80330056,0.483562618,0.875309765,0.362976938,0.9317981,0.235955015,0.971763968,0.104749292,0.99449867,-0.0283139497,0.999599099,-0.160875127,0.986974776,-0.290583581,0.956849635,-0.415139586,0.909757733,-0.532334387,0.846534193,-0.640089929,0.768299997,-0.736495495,0.676442444,-0.819841623,0.572590351,-0.888650477,0.458585173,0,0.990226805,0.139466345,0.961098254,0.276206613,0.913183749,0.40754807,0.847419798,0.530923426,0.765091836,0.643921196,0.667809129,0.744332552,0.557473183,0.83019495,0.436240643,0.899830043,0.306481153,0.9518767,0.170731053,0.985317647,0.0316439047,0.999499202,-0.108061887,0.994144142,-0.245655462,0.969357193,-0.378447235,0.92562288,-0.503841996,0.863795877,-0.619388223,0.785084844,-0.722827673,0.691028357,-0.812138617,0.583464563,-0.885575056,0.464496315,-0.941701829,0.33644864,0,0.989275575,0.146061063,0.957332313,0.288989276,0.90485543,0.425718993,0.832970381,0.553317547,0.743219137,0.669048071,0.637526691,0.7704283,0.518159986,0.855283737,0.387679368,0.921794295,0.248883456,0.968533456,0.104749292,0.99449867,-0.0416316278,0.99913305,-0.187119484,0.982337177,-0.32859394,0.9444713,-0.463020474,0.886347592,-0.587515712,0.809212744,-0.699409425,0.714721262,-0.796301603,0.604899764,-0.87611407,0.482103914,-0.937134862,0.348967463,-0.978055179,0.208346054,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999937057,0.0112197381,0.99974823,0.0224380642,0.999433577,0.0336535648,0.998993039,0.0448648296,0.998426795,0.056070447,0.997734904,0.0672690049,0.996917307,0.0784590989,0.995974302,0.0896393061,0.994905889,0.100808233,0.993712187,0.111964479,0.992393434,0.123106621,0.99094975,0.134233266,0.989381313,0.145343021,0.987688363,0.156434476,0.985871017,0.167506218,0.983929574,0.178556889,0.981864274,0.18958509,0.979675412,0.200589404,0.977363169,0.21156849,0.974927902,0.222520933,0.972369909,0.233445361,0.969689548,0.244340405,0.966887057,0.255204678,0.963962853,0.266036838,0.960917294,0.276835501,0.957750797,0.287599325,0.95446372,0.298326939,0.95105654,0.309017003,0.947529554,0.319668144,0.943883359,0.330279052,0.940118253,0.340848386,0.936234891,0.351374835,0.932233632,0.361857027,0.92811501,0.372293651,0.923879504,0.382683456,0.919527769,0.393025011,0.915060282,0.403317153,0.910477519,0.413558513,0.905780196,0.423747808,0.90096885,0.433883756,0.896044075,0.443965077,0.891006529,0.453990489,0.885856807,0.46395877,0.880595565,0.473868668,0.875223458,0.483718872,0.869741142,0.49350819,0.864149392,0.5032354,0.858448803,0.51289928,0.852640152,0.522498548,0.846724212,0.532032073,0.84070164,0.541498601,0.834573269,0.550897002,0.828339815,0.560226023,0.822002053,0.569484472,0.815560877,0.578671336,0.809017003,0.587785244,0.802371264,0.596825242,0.795624554,0.605790019,0.788777709,0.614678562,0.781831503,0.623489797,0.77478689,0.632222474,0.767644763,0.640875578,0.760405958,0.649448037,0.753071487,0.657938719,0.745642185,0.66634655,0.738119006,0.674670577,0.730502903,0.682909608,0.722794831,0.691062629,0.714995801,0.699128747,0,0,0.99974823,0.0224380642,0.998993039,0.0448648296,0.997734904,0.0672690049,0.995974302,0.0896393061,0.993712187,0.111964479,0.99094975,0.134233266,0.987688363,0.156434476,0.983929574,0.178556889,0.979675412,0.200589404,0.974927902,0.222520933,0.969689548,0.244340405,0.963962853,0.266036838,0.957750797,0.287599325,0.95105654,0.309017003,0.943883359,0.330279052,0.936234891,0.351374835,0.92811501,0.372293651,0.919527769,0.393025011,0.910477519,0.413558513,0.90096885,0.433883756,0.891006529,0.453990489,0.880595565,0.473868668,0.869741142,0.49350819,0.858448803,0.51289928,0.846724212,0.532032073,0.834573269,0.550897002,0.822002053,0.569484472,0.809017003,0.587785244,0.795624554,0.605790019,0.781831503,0.623489797,0.767644763,0.640875578,0.753071487,0.657938719,0.738119006,0.674670577,0.722794831,0.691062629,0.707106769,0.707106769,0.691062689,0.722794831,0.674670577,0.738119006,0.657938719,0.753071487,0.640875638,0.767644763,0.623489797,0.781831503,0.605790019,0.795624554,0.587785304,0.809017003,0.569484532,0.822002053,0.550897002,0.834573269,0.532032132,0.846724153,0.512899339,0.858448744,0.49350825,0.869741082,0.473868698,0.880595505,0.453990519,0.891006529,0.433883756,0.90096885,0.413558513,0.910477519,0.393025041,0.919527769,0.372293651,0.92811501,0.351374805,0.936234891,0.330279052,0.943883359,0.309016973,0.95105654,0.287599295,0.957750857,0.266036898,0.963962853,0.244340464,0.969689488,0.222520977,0.974927902,0.200589448,0.979675412,0.178556919,0.983929574,0.156434491,0.987688363,0.134233281,0.99094975,0.111964479,0.993712187,0.0896392986,0.995974302,0.06726899,0.997734904,0.0448648036,0.998993039,0.0224380288,0.99974823,0,0,0.999433577,0.0336535648,0.997734904,0.0672690049,0.994905889,0.100808233,0.99094975,0.134233266,0.985871017,0.167506218,0.979675412,0.200589404,0.972369909,0.233445361,0.963962853,0.266036838,0.95446372,0.298326939,0.943883359,0.330279052,0.932233632,0.361856997,0.919527769,0.393025011,0.905780196,0.423747808,0.891006529,0.453990489,0.875223458,0.483718872,0.858448803,0.51289928,0.84070164,0.541498601,0.822002053,0.569484472,0.802371323,0.596825182,0.781831503,0.623489797,0.760405958,0.649448037,0.738119006,0.674670517,0.714995861,0.699128687,0.691062689,0.722794831,0.66634661,0.745642126,0.640875638,0.767644763,0.614678621,0.788777649,0.587785304,0.809017003,0.560226023,0.828339815,0.532032132,0.846724153,0.503235459,0.864149332,0.473868698,0.880595505,0.443965077,0.896044075,0.413558513,0.910477519,0.382683426,0.923879504,0.351374805,0.936234891,0.319668233,0.947529554,0.287599385,0.957750797,0.255204737,0.966887057,0.222520977,0.974927902,0.189585119,0.981864274,0.156434491,0.987688363,0.123106629,0.992393434,0.0896394178,0.995974302,0.0560705438,0.998426795,0.022438148,0.99974823,-0.0112196673,0.999937057,-0.0448647738,0.998993099,-0.0784590542,0.996917307,-0.111964449,0.993712187,-0.145342991,0.989381313,-0.178556889,0.983929574,-0.211568385,0.977363169,-0.244340315,0.969689548,-0.276835442,0.960917354,-0.309016943,0.95105654,-0.340848356,0.940118313,-0.372293621,0.92811501,-0.403317124,0.915060282,-0.433883607,0.900968909,-0.463958681,0.885856867,-0.49350813,0.869741201,-0.522498488,0.852640212,-0.550896943,0.834573269,-0.578671217,0.815560877,-0.605790019,0.795624554,-0.632222474,0.77478689,-0.657938719,0.753071487,-0.682909548,0.730502903,0,0,0.998993039,0.0448648296,0.995974302,0.0896393061,0.99094975,0.134233266,0.983929574,0.178556889,0.974927902,0.222520933,0.963962853,0.266036838,0.95105654,0.309017003,0.936234891,0.351374835,0.919527769,0.393025011,0.90096885,0.433883756,0.880595565,0.473868668,0.858448803,0.51289928,0.834573269,0.550897002,0.809017003,0.587785244,0.781831503,0.623489797,0.753071487,0.657938719,0.722794831,0.691062629,0,0.995974302,0.0896393061,0.983929574,0.178556889,0.963962853,0.266036838,0.936234891,0.351374835,0.90096885,0.433883756,0.858448803,0.51289928,0.809017003,0.587785244,0.753071487,0.657938719,0.691062689,0.722794831,0.623489797,0.781831503,0.550897002,0.834573269,0.473868698,0.880595505,0.393025041,0.919527769,0.309016973,0.95105654,0.222520977,0.974927902,0.134233281,0.99094975,0.0448648036,0.998993039,0,0.99094975,0.134233266,0.963962853,0.266036838,0.919527769,0.393025011,0.858448803,0.51289928,0.781831503,0.623489797,0.691062689,0.722794831,0.587785304,0.809017003,0.473868698,0.880595505,0.351374805,0.936234891,0.222520977,0.974927902,0.0896394178,0.995974302,-0.0448647738,0.998993099,-0.178556889,0.983929574,-0.309016943,0.95105654,-0.433883607,0.900968909,-0.550896943,0.834573269,-0.657938719,0.753071487,0,0.983929574,0.178556889,0.936234891,0.351374835,0.858448803,0.51289928,0,0.936234891,0.351374835,0.753071487,0.657938719,0.473868698,0.880595505,0,0.858448803,0.51289928,0.473868698,0.880595505,-0.0448647738,0.998993099,0,0.753071487,0.657938719,0.134233281,0.99094975,-0.550896943,0.834573269,0,0,0,0,0,0,0,0,0.999592185,0.0285560526,0.998369098,0.0570888147,0.996331751,0.0855750069,0.993481755,0.113991417,0.989821434,0.142314851,0.985353827,0.170522198,0.980082572,0.198590472,0.974011898,0.226496771,0.967146873,0.25421834,0.959492981,0.281732589,0.95105654,0.309017003,0.941844344,0.336049378,0.931864023,0.362807721,0.921123624,0.389270127,0.909631968,0.415415049,0.897398412,0.441221118,0.884432912,0.466667324,0.870746076,0.491732925,0.856348991,0.516397476,0.841253519,0.540640831,0.825471878,0.564443231,0.809017003,0.587785244,0.791902244,0.610647857,0.77414161,0.633012474,0.755749524,0.654860795,0.736741126,0.676174939,0.717131793,0.696937561,0,0.998369098,0.0570888147,0.993481755,0.113991417,0.985353827,0.170522198,0.974011898,0.226496771,0.959492981,0.281732589,0.941844344,0.336049378,0.921123624,0.389270127,0.897398412,0.441221118,0.870746076,0.491732925,0.841253519,0.540640831,0.809017003,0.587785244,0.77414161,0.633012474,0.736741126,0.676174939,0.696937561,0.717131793,0.654860675,0.755749583,0.610647857,0.791902244,0.564443231,0.825471878,0.516397476,0.856349051,0.466667235,0.884432971,0.415414959,0.909632027,0.362807661,0.931864023,0.309016973,0.95105654,0.25421831,0.967146873,0.198590472,0.980082572,0.142314747,0.989821434,0.0855749324,0.996331751,0.0285559967,0.999592185,0,0.996331751,0.0855750069,0.985353827,0.170522198,0.967146873,0.25421834,0.941844344,0.336049378,0.909631968,0.415415019,0.870746076,0.491732925,0.825471878,0.564443231,0.77414161,0.633012474,0.717131853,0.696937561,0.654860735,0.755749583,0.587785244,0.809017003,0.516397476,0.856349051,0.441221118,0.897398412,0.362807661,0.931864023,0.281732529,0.959492981,0.198590472,0.980082572,0.113991447,0.993481755,0.0285561159,0.999592185,-0.0570888333,0.998369098,-0.142314836,0.989821434,-0.226496726,0.974011898,-0.309017032,0.95105648,-0.389270127,0.921123624,-0.466667324,0.884432912,-0.540640771,0.841253579,-0.610647798,0.791902304,-0.676174819,0.736741185,0,0.993481755,0.113991417,0.974011898,0.226496771,0.941844344,0.336049378,0.897398412,0.441221118,0.841253519,0.540640831,0,0.974011898,0.226496771,0.897398412,0.441221118,0.77414161,0.633012474,0.610647857,0.791902244,0.415414959,0.909632027,0,0.941844344,0.336049378,0.77414161,0.633012474,0.516397476,0.856349051,0.198590472,0.980082572,-0.142314836,0.989821434,0,0.897398412,0.441221118,0.610647857,0.791902244,0.198590472,0.980082572,-0.2542184,0.967146814,-0.654860854,0.755749464,0,0,0,0,0,0,0,0,0,0,0,0,0.99879545,0.0490676761,0.99518472,0.0980171412,0.989176512,0.146730468,0.980785251,0.195090324,0.970031261,0.242980197,0.956940353,0.290284663,0.941544056,0.336889863,0.923879504,0.382683456,0.903989315,0.427555084,0.881921232,0.471396744,0.857728601,0.514102757,0.831469595,0.555570245,0.803207517,0.59569931,0.773010433,0.634393334,0.740951121,0.671558976,0.707106769,0.707106769,0.671558917,0.74095118,0.634393275,0.773010433,0.59569931,0.803207517,0.555570185,0.831469655,0.514102697,0.85772866,0.471396655,0.881921291,0.427555114,0.903989315,0.382683426,0.923879504,0.336889833,0.941544056,0.290284634,0.956940353,0.242980123,0.970031261,0.195090234,0.98078531,0.146730497,0.989176512,0.0980171338,0.99518472,0.04906765,0.99879545,0,0,0.99518472,0.0980171412,0.980785251,0.195090324,0.956940353,0.290284663,0.923879504,0.382683456,0.881921232,0.471396744,0.831469595,0.555570245,0.773010433,0.634393334,0,0,0.980785251,0.195090324,0.923879504,0.382683456,0.831469595,0.555570245,0.707106769,0.707106769,0.555570185,0.831469655,0.382683426,0.923879504,0.195090234,0.98078531,0,0,0.956940353,0.290284663,0.831469595,0.555570245,0.634393275,0.773010433,0.382683426,0.923879504,0.0980171338,0.99518472,-0.195090324,0.980785251,-0.471396834,0.881921232,0,0,0.923879504,0.382683456,0,0,0.707106769,0.707106769,0,0,0.382683426,0.923879504,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999980509,0.00623946823,0.999922156,0.0124786934,0.999824822,0.0187174324,0.999688566,0.024955444,0.999513388,0.0311924834,0.999299288,0.0374283083,0.999046326,0.0436626785,0.998754442,0.0498953424,0.998423696,0.0561260693,0.998054087,0.0623546094,0.997645557,0.0685807243,0.997198224,0.0748041645,0.996712089,0.0810246989,0.99618715,0.0872420743,0.99562341,0.0934560522,0.995020926,0.0996663943,0.994379699,0.105872855,0.993699729,0.112075195,0.992981076,0.118273169,0.992223799,0.124466546,0.991427898,0.130655065,0.990593374,0.136838511,0.989720285,0.143016621,0.988808692,0.149189159,0.987858593,0.155355901,0.986869991,0.161516592,0,0.999922156,0.0124786934,0.999688566,0.024955444,0.999299288,0.0374283083,0.998754442,0.0498953424,0.998054087,0.0623546094,0.997198224,0.0748041645,0.99618715,0.0872420743,0.995020926,0.0996663943,0.993699729,0.112075195,0.992223799,0.124466546,0.990593374,0.136838511,0.988808692,0.149189159,0.986869991,0.161516592,0.984777629,0.173818871,0.982531905,0.186094061,0.980133235,0.198340297,0.977581859,0.210555628,0.974878311,0.222738177,0.972022891,0.23488605,0.969016135,0.246997342,0.965858519,0.259070158,0.962550461,0.271102637,0.959092498,0.283092916,0.955485165,0.295039088,0.951729059,0.306939334,0.947824776,0.318791747,0,0.999824822,0.0187174324,0.999299288,0.0374283083,0.998423696,0.0561260693,0.997198224,0.0748041645,0.99562341,0.0934560522,0.993699729,0.112075195,0.991427898,0.130655065,0.988808692,0.149189159,0.985843003,0.16767098,0.982531905,0.186094061,0.978876591,0.204451934,0.974878311,0.222738177,0.970538437,0.240946367,0.965858519,0.259070158,0.960840166,0.277103156,0.955485165,0.295039088,0.949795425,0.312871635,0.943772852,0.33059454,0.937419653,0.348201603,0.930737972,0.365686715,0.923730254,0.383043706,0.916398823,0.400266439,0.908746302,0.417348921,0.900775433,0.434285223,0.892488897,0.451069355,0.883889675,0.467695445,0,0.999688566,0.024955444,0.998754442,0.0498953424,0.997198224,0.0748041645,0.995020926,0.0996663943,0.992223799,0.124466546,0.988808692,0.149189159,0.984777629,0.173818871,0.980133235,0.198340297,0.974878311,0.222738177,0.969016135,0.246997342,0.962550461,0.271102637,0.955485165,0.295039088,0.947824776,0.318791747,0.939574003,0.342345864,0.930737972,0.365686715,0.921322286,0.388799816,0.911332667,0.411670744,0.900775433,0.434285223,0.88965708,0.456629246,0.877984643,0.478688806,0.865765333,0.500450194,0.853006721,0.521899939,0.839716792,0.54302454,0.825903893,0.563810945,0.811576486,0.584246159,0.796743631,0.604317427,0,0.999513388,0.0311924834,0.998054087,0.0623546094,0.99562341,0.0934560522,0.992223799,0.124466546,0.987858593,0.155355901,0.982531905,0.186094061,0.976249099,0.216651127,0.969016135,0.246997342,0.960840166,0.277103186,0.951729059,0.306939334,0.941691756,0.336476773,0.930737972,0.365686715,0.918878436,0.394540817,0.906124592,0.423010916,0.892488897,0.451069355,0.877984643,0.478688806,0.862625897,0.505842388,0.846427679,0.532503724,0.829405665,0.558646798,0.811576486,0.584246159,0.792957485,0.60927695,0.773566782,0.633714795,0.753423214,0.657535911,0.732546449,0.680717051,0.710956752,0.703235745,0.688675106,0.725070059,0,0.999299288,0.0374283083,0.997198224,0.0748041645,0.993699729,0.112075195,0.988808692,0.149189159,0.982531905,0.186094061,0.974878311,0.222738177,0.965858519,0.259070158,0.955485165,0.295039088,0.943772852,0.33059454,0.930737972,0.365686715,0.916398823,0.400266439,0.900775433,0.434285223,0.883889675,0.467695445,0.865765333,0.500450194,0.846427679,0.532503664,0.825903893,0.563810945,0.804222703,0.594328105,0.781414509,0.624012291,0.757511258,0.652822077,0.732546449,0.680717051,0.706555068,0.707658052,0.679573536,0.733607352,0.65163976,0.75852859,0.622792661,0.782386899,0.593072832,0.80514878,0.562521994,0.826782346,0,0.999046326,0.0436626785,0.99618715,0.0872420743,0.991427898,0.13065508,0.984777629,0.173818871,0.976249099,0.216651127,0.965858519,0.259070188,0.953625679,0.300995082,0.939574003,0.342345864,0.923730254,0.383043706,0.906124592,0.423010916,0.886790633,0.462171346,0.865765274,0.500450253,0.843088627,0.537774622,0.818803906,0.574073255,0.792957485,0.60927695,0.765598595,0.643318534,0.736779451,0.676133096,0.706555068,0.707658052,0.674983025,0.737833261,0.64212352,0.766601205,0.60803926,0.793906987,0.572795272,0.819698453,0.53645879,0.843926489,0.499099046,0.866544962,0.460787475,0.887510538,0.421596885,0.906783342,0,0.998754442,0.0498953424,0.995020926,0.0996663943,0.988808692,0.149189159,0.980133235,0.198340297,0.969016135,0.246997342,0.955485165,0.295039088,0.939574003,0.342345864,0.921322286,0.388799816,0.900775433,0.434285223,0.877984643,0.478688806,0.853006721,0.521899939,0.825903893,0.563810945,0.796743631,0.604317427,0.765598595,0.643318534,0.732546449,0.680717051,0.697669387,0.716419876,0.661054373,0.750337958,0.622792661,0.782386899,0.5829795,0.812486887,0.541714013,0.84056288,0.499099165,0.866544902,0.455240875,0.890368342,0.410248667,0.911973715,0.364234477,0.931307256,0.317312837,0.948320925,0.269600838,0.962972164,0,0.998423696,0.0561260693,0.993699729,0.112075195,0.985843003,0.16767098,0.974878311,0.222738177,0.960840166,0.277103156,0.943772852,0.33059454,0.923730254,0.383043706,0.900775433,0.434285223,0.874980807,0.484157622,0.846427679,0.532503664,0.81520611,0.579170942,0.781414509,0.624012291,0.745159388,0.666886389,0.706555068,0.707658052,0.665723264,0.746198714,0.622792661,0.782386899,0.577898681,0.816108525,0.531182766,0.847257257,0.482792258,0.875734925,0.432879686,0.901451707,0.381602317,0.924326599,0.329121977,0.944287419,0.275604039,0.961271226,0.22121726,0.975224555,0.166133046,0.986103356,0.110525079,0.993873358,0,0.998054087,0.0623546094,0.992223799,0.124466546,0.982531905,0.186094061,0.969016135,0.246997342,0.951729059,0.306939334,0.930737972,0.365686715,0.906124592,0.423010916,0.877984643,0.478688806,0.846427679,0.532503724,0.811576486,0.584246159,0.773566782,0.633714795,0.732546449,0.680717051,0.688675106,0.725070059,0.64212352,0.766601205,0.593072832,0.80514878,0.541714013,0.84056288,0.488246918,0.872705519,0.432879597,0.901451766,0.375827551,0.926689625,0.317312837,0.948320925,0.257563174,0.966261446,0.196811095,0.980441451,0.135293067,0.990805626,0.0732486024,0.997313738,0.0109189525,0.999940395,-0.0514531955,0.998675406,0,0.997645557,0.0685807243,0.990593374,0.136838511,0.978876591,0.204451948,0.962550461,0.271102637,0.941691756,0.336476773,0.916398823,0.400266469,0.886790633,0.462171346,0.853006721,0.521899939,0.815206051,0.579171002,0.773566782,0.633714795,0.728284836,0.685274541,0.679573536,0.733607411,0.627662182,0.778485835,0.572795272,0.819698453,0.515231192,0.857051253,0.455240875,0.890368342,0.393106908,0.919492781,0.329121858,0.944287479,0.263587147,0.964635611,0.196811095,0.980441451,0.12910831,0.991630495,0.0607976802,0.99815011,-0.00779935159,0.999969602,-0.0763596594,0.997080326,-0.144560397,0.989495993,-0.212080419,0.977252245,0,0.997198224,0.0748041645,0.988808692,0.149189159,0.974878311,0.222738177,0.955485165,0.295039088,0.930737972,0.365686715,0.900775433,0.434285223,0.865765333,0.500450194,0.825903893,0.563810945,0.781414509,0.624012291,0.732546449,0.680717051,0.679573536,0.733607352,0.622792661,0.782386899,0.562521994,0.826782346,0.499099165,0.866544902,0.432879686,0.901451707,0.364234477,0.931307256,0.293548256,0.95594424,0.22121726,0.975224555,0.147646666,0.989040196,0.0732486024,0.997313738,-0.00155989663,0.999998808,-0.0763595402,0.997080326,-0.150731295,0.988574743,-0.224258557,0.974529684,-0.296529174,0.955023825,-0.367138058,0.930166483,0,0.996712089,0.0810246989,0.986869991,0.161516592,0.970538437,0.240946382,0.947824776,0.318791747,0.918878436,0.394540817,0.883889675,0.467695445,0.843088686,0.537774563,0.796743631,0.604317427,0.745159388,0.666886449,0.688675106,0.725070059,0.627662182,0.778485835,0.562521935,0.826782346,0.493682653,0.869642138,0.421597004,0.906783283,0.346738905,0.937961698,0.269600838,0.962972164,0.190689921,0.981650293,0.11052496,0.993873358,0.0296333116,0.999560833,-0.0514531955,0.998675406,-0.132201478,0.991222858,-0.2120803,0.977252245,-0.290564537,0.956855416,-0.367138177,0.930166423,-0.441297472,0.897360861,-0.512554884,0.858654439,0,0.99618715,0.0872420743,0.984777629,0.173818871,0.965858519,0.259070188,0.939574003,0.342345864,0.906124592,0.423010916,0.865765274,0.500450253,0.818803906,0.574073255,0.765598595,0.643318534,0.706555068,0.707658052,0.64212352,0.766601205,0.572795272,0.819698453,0.499099046,0.866544962,0.421596885,0.906783342,0.340879768,0.940106928,0.257563174,0.966261446,0.172282472,0.985047579,0.0856880024,0.996322036,-0.00155989663,0.999998808,-0.0887959003,0.996049821,-0.175354779,0.984505296,-0.260576576,0.965453207,-0.343811154,0.939038813,-0.424423933,0.905463576,-0.501800299,0.864983499,-0.575349808,0.817907453,-0.644512117,0.764594078,0,0.99562341,0.0934560522,0.982531905,0.186094061,0.960840166,0.277103156,0.930737972,0.365686715,0.892488897,0.451069355,0.846427679,0.532503664,0.792957544,0.609276891,0.732546449,0.680717051,0.665723264,0.746198714,0.593072832,0.80514878,0.515231192,0.857051253,0.432879686,0.901451707,0.346739024,0.937961638,0.257563293,0.966261446,0.166133046,0.986103356,0.0732486024,0.997313738,-0.0202769879,0.999794424,-0.113625094,0.993523717,-0.205978617,0.978556514,-0.296529174,0.955023825,-0.384484053,0.923131645,-0.469073653,0.883159041,-0.549557269,0.835456014,-0.625230372,0.780440271,-0.695430815,0.718593001,-0.759544075,0.650455832,0,0.995020926,0.0996663943,0.980133235,0.198340297,0.955485165,0.295039088,0.921322286,0.388799816,0.877984643,0.478688806,0.825903893,0.563810945,0.765598595,0.643318534,0.697669387,0.716419876,0.622792661,0.782386899,0.541714013,0.84056288,0.455240875,0.890368342,0.364234477,0.931307256,0.269600838,0.962972164,0.172282472,0.985047579,0.0732486024,0.997313738,-0.026514804,0.999648392,-0.126014173,0.992028415,-0.224258557,0.974529684,-0.320269853,0.947326362,-0.413091838,0.910689354,-0.50180006,0.864983618,-0.585511506,0.810664117,-0.663392067,0.748272002,-0.734666526,0.678428411,-0.798625112,0.601828814,-0.854630768,0.519236207,0,0.994379699,0.105872855,0.977581859,0.210555628,0.949795425,0.312871635,0.911332667,0.411670744,0.862625897,0.505842388,0.804222703,0.594328105,0.736779451,0.676133096,0.661054373,0.750337958,0.577898622,0.816108584,0.488246918,0.872705519,0.393107027,0.919492722,0.293548256,0.95594424,0.190689817,0.981650352,0.0856880024,0.996322036,-0.0202769879,0.999794424,-0.126014173,0.992028415,-0.230334878,0.973111451,-0.332066357,0.943256021,-0.430065185,0.902797818,-0.523229897,0.852191567,-0.61051321,0.792006075,-0.690933764,0.722918093,-0.763587892,0.645703912,-0.827658832,0.561231554,-0.882426322,0.47045058,-0.927274764,0.374381423,0,0.993699729,0.112075195,0.974878311,0.222738177,0.943772852,0.33059454,0.900775433,0.434285223,0.846427679,0.532503664,0.781414509,0.624012291,0.706555068,0.707658052,0.622792661,0.782386899,0.531182766,0.847257257,0.432879686,0.901451707,0.329121977,0.944287419,0.22121726,0.975224555,0.110525079,0.993873358,-0.00155989663,0.999998808,-0.113625094,0.993523717,-0.224258557,0.974529684,-0.332066238,0.94325608,-0.435689718,0.900096953,-0.533823252,0.845596075,-0.625230372,0.780440271,-0.708759367,0.705450296,-0.783357441,0.621571481,-0.848084807,0.529860497,-0.902125835,0.431472987,-0.944799602,0.327648699,-0.975568414,0.219695851,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999966204,0.00822397135,0.999864757,0.0164473876,0.999695659,0.0246696901,0.999458969,0.0328903235,0.999154687,0.0411087349,0.998782814,0.0493243635,0.998343408,0.0575366616,0.997836471,0.0657450631,0.997262001,0.0739490166,0.996620119,0.0821479633,0.995910883,0.0903413668,0.995134234,0.0985286534,0.994290292,0.106709279,0.993379056,0.114882693,0.992400706,0.12304832,0.991355181,0.131205633,0.9902426,0.13935408,0.989063084,0.147493094,0.987816632,0.155622125,0.986503422,0.163740635,0.985123456,0.171848074,0.983676851,0.179943904,0.982163727,0.188027546,0.980584204,0.196098477,0.978938341,0.204156145,0.977226257,0.212199986,0.975448072,0.220229506,0.973603964,0.228244111,0.971693933,0.236243278,0.969718218,0.244226485,0.967676938,0.252193153,0.965570152,0.260142773,0.963398099,0.268074811,0.961160898,0.275988698,0.958858669,0.283883899,0.95649159,0.291759938,0.95405978,0.299616247,0.951563478,0.307452261,0.949002862,0.315267503,0.946377993,0.323061407,0.943689167,0.330833465,0.940936446,0.338583142,0.938120127,0.34630993,0.935240388,0.354013324,0.932297349,0.361692727,0.929291308,0.369347662,0.926222384,0.376977652,0.923090756,0.384582132,0.919896781,0.392160594,0.91664052,0.399712563,0.91332233,0.40723744,0.909942329,0.414734811,0.906500757,0.422204137,0.902997911,0.429644883,0.89943403,0.437056601,0.895809233,0.444438756,0.892123938,0.45179081,0.888378203,0.459112316,0.884572446,0.466402799,0.880706847,0.473661751,0.876781702,0.480888605,0.872797251,0.488082975,0.868753731,0.495244324,0.864651501,0.502372205,0.860490739,0.509466112,0.856271803,0.516525507,0.851994932,0.523549974,0.847660482,0.530539095,0.843268692,0.537492275,0.838819861,0.544409096,0.834314287,0.551289082,0.829752266,0.558131814,0.825134158,0.564936817,0.8204602,0.571703613,0.81573081,0.578431726,0.810946226,0.585120738,0.806106746,0.591770113,0.801212788,0.598379552,0.796264648,0.604948461,0.791262686,0.611476421,0.786207139,0.617963076,0.781098425,0.624407887,0.775936902,0.630810499,0.770722926,0.637170494,0.765456736,0.643487334,0.760138869,0.649760664,0.754769504,0.655990064,0.749349177,0.662175059,0.743878126,0.668315351,0.738356709,0.674410343,0.732785463,0.680459738,0.727164626,0.686463118,0.721494555,0.692420125,0.715775728,0.698330224,0.710008442,0.704193175,0,0.999864757,0.0164473876,0.999458969,0.0328903235,0.998782814,0.0493243635,0.997836471,0.0657450631,0.996620119,0.0821479633,0.995134234,0.0985286534,0.993379056,0.114882693,0.991355181,0.131205633,0.989063084,0.147493094,0.986503422,0.163740635,0.983676851,0.179943904,0.980584204,0.196098477,0.977226257,0.212199986,0.973603964,0.228244111,0.969718218,0.244226485,0.965570152,0.260142773,0.961160898,0.275988698,0.95649159,0.291759938,0.951563478,0.307452261,0.946377993,0.323061407,0.940936446,0.338583142,0.935240388,0.354013324,0.929291308,0.369347662,0.923090756,0.384582132,0.91664052,0.399712563,0.909942329,0.414734811,0.902997911,0.429644883,0.895809233,0.444438756,0.888378203,0.459112316,0.880706847,0.473661751,0.872797251,0.488082975,0.864651501,0.502372205,0.856271803,0.516525507,0.847660482,0.530539095,0.838819861,0.544409096,0.829752266,0.558131814,0.8204602,0.571703613,0.810946226,0.585120738,0.801212788,0.598379552,0.791262686,0.611476421,0.781098425,0.624407887,0.770722926,0.637170494,0.760138869,0.649760664,0.749349177,0.662175059,0.738356709,0.674410343,0.727164626,0.686463118,0.715775728,0.698330224,0.704193175,0.710008442,0.692420125,0.721494555,0.680459738,0.732785463,0.668315351,0.743878067,0.655990064,0.754769504,0.643487334,0.765456736,0.630810559,0.775936902,0.617963076,0.786207139,0.604948401,0.796264648,0.591770172,0.806106746,0.578431726,0.81573081,0.564936817,0.825134158,0.551289141,0.834314287,0.537492275,0.843268633,0.523550034,0.851994932,0.509466112,0.860490739,0.495244354,0.868753731,0.480888605,0.876781702,0.466402799,0.884572446,0.45179078,0.892123938,0.437056571,0.89943403,0.422204077,0.906500816,0.4072375,0.91332227,0.392160654,0.919896722,0.376977682,0.926222324,0.361692756,0.932297349,0.34630996,0.938120127,0.330833465,0.943689167,0.315267503,0.949002862,0.299616218,0.95405978,0.283883899,0.958858669,0.268074751,0.963398099,0.252193213,0.967676878,0.236243337,0.971693933,0.220229551,0.975448072,0.204156175,0.978938341,0.188027576,0.982163727,0.171848103,0.985123456,0.15562214,0.987816632,0.139354065,0.9902426,0.123048306,0.992400706,0.106709249,0.994290292,0.0903413296,0.995910883,0.0739490837,0.997262001,0.0575367138,0.998343408,0.0411087796,0.999154687,0.0246697236,0.999695659,0.0082239937,0.999966204,0,0.999695659,0.0246696901,0.998782814,0.0493243635,0.997262001,0.0739490166,0.995134234,0.0985286534,0.992400706,0.12304832,0.989063084,0.147493094,0.985123456,0.171848074,0.980584204,0.196098477,0.975448072,0.220229506,0.969718218,0.244226485,0.963398099,0.268074811,0.95649159,0.291759938,0.949002862,0.315267503,0.940936446,0.338583142,0.932297349,0.361692727,0.923090756,0.384582132,0.91332233,0.40723744,0.902997911,0.429644883,0.892123938,0.45179081,0.880706847,0.473661751,0.868753731,0.495244324,0.856271803,0.516525507,0.843268692,0.537492275,0.829752266,0.558131814,0.81573081,0.578431726,0.801212788,0.598379552,0.786207139,0.617963076,0.770722926,0.637170494,0.754769504,0.655990064,0.738356709,0.674410343,0.721494555,0.692420125,0.704193175,0.710008442,0.686463177,0.727164567,0.668315351,0.743878067,0.649760664,0.76013881,0.630810559,0.775936902,0.611476421,0.791262686,0.591770172,0.806106746,0.571703613,0.8204602,0.551289141,0.834314287,0.530539036,0.847660482,0.509466112,0.860490739,0.488083035,0.872797191,0.466402799,0.884572446,0.444438756,0.895809233,0.422204077,0.906500816,0.399712533,0.91664052,0.376977682,0.926222324,0.354013264,0.935240388,0.330833465,0.943689167,0.307452321,0.951563478,0.283883899,0.958858669,0.260142773,0.965570152,0.236243337,0.971693933,0.212199971,0.977226257,0.188027576,0.982163727,0.163740709,0.986503422,0.139354065,0.9902426,0.114882722,0.993379056,0.0903413296,0.995910883,0.0657450631,0.997836471,0.0411087796,0.999154687,0.0164473541,0.999864757,-0.00822396111,0.999966204,-0.0328902714,0.999458969,-0.0575366803,0.998343408,-0.0821479484,0.996620119,-0.10670922,0.994290292,-0.131205648,0.991355181,-0.155622095,0.987816691,-0.179943949,0.983676851,-0.204156145,0.978938341,-0.228244066,0.973603964,-0.252193183,0.967676878,-0.275988698,0.961160898,-0.299616188,0.954059839,-0.323061436,0.946377993,-0.34630993,0.938120186,-0.369347632,0.929291308,-0.392160624,0.919896781,-0.414734781,0.909942329,-0.437056631,0.89943397,-0.459112227,0.888378263,-0.480888605,0.876781702,-0.502372265,0.864651442,-0.523549914,0.851994991,-0.544409096,0.838819861,-0.564936876,0.825134158,-0.585120618,0.810946286,-0.604948401,0.796264708,-0.624407947,0.781098425,-0.643487394,0.765456676,-0.662175059,0.749349177,-0.680459797,0.732785463,-0.698330343,0.715775609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.9999547,0.009519835,0.999818742,0.0190388057,0.999592185,0.0285560526,0.999275029,0.0380707122,0.998867333,0.0475819185,0.998369098,0.0570888147,0.997780383,0.0665905327,0.997101247,0.0760862231,0.996331751,0.0855750144,0.995471895,0.0950560495,0.994521916,0.104528472,0.993481755,0.113991417,0.992351532,0.123444028,0.991131425,0.132885456,0.989821434,0.142314851,0.988421798,0.151731342,0.986932516,0.161134079,0.985353827,0.170522213,0.983685851,0.179894879,0.981928706,0.189251259,0.980082572,0.198590487,0.978147626,0.207911715,0.976123989,0.217214093,0.974011898,0.226496771,0.971811593,0.235758945,0.969523132,0.244999751,0.967146873,0.25421837,0.964682937,0.263413906,0.96213156,0.272585601,0.959492981,0.281732589,0.95676744,0.290854037,0.953955233,0.29994911,0.95105654,0.309017003,0.948071599,0.318056911,0.945000827,0.327067971,0.941844344,0.336049408,0.938602567,0.345000386,0.935275674,0.353920102,0.931864023,0.362807721,0.928367913,0.371662498,0.9247877,0.380483538,0.921123624,0.389270127,0.917376101,0.39802143,0.91354543,0.406736672,0.909631968,0.415415049,0.905636072,0.424055785,0.901558101,0.432658046,0.897398412,0.441221118,0.893157423,0.449744225,0.88883543,0.458226532,0.884432912,0.466667354,0.879950225,0.475065857,0.875387788,0.483421326,0.870746076,0.491732985,0.866025388,0.5,0.861226201,0.508221805,0.856348991,0.516397476,0.851394176,0.524526417,0.846362233,0.532607734,0.841253519,0.540640831,0.836068571,0.548624933,0.830807865,0.556559324,0.825471878,0.564443231,0.820061088,0.572276056,0.814575911,0.580056965,0.809017003,0.587785244,0.803384721,0.595460355,0.797679603,0.603081465,0.791902184,0.610647917,0.786053061,0.618158996,0.780132651,0.625614107,0.77414155,0.633012474,0.768080294,0.640353501,0.76194948,0.647636473,0.755749524,0.654860795,0.749481142,0.66202569,0.743144751,0.669130683,0.736741126,0.676174939,0.730270624,0.68315798,0.723733962,0.690079033,0.717131793,0.696937561,0.710464537,0.703732967,0,0.999818742,0.0190388057,0.999275029,0.0380707122,0.998369098,0.0570888147,0.997101247,0.0760862231,0.995471895,0.0950560495,0.993481755,0.113991417,0.991131425,0.132885456,0.988421798,0.151731342,0.985353827,0.170522213,0.981928706,0.189251259,0.978147626,0.207911715,0.974011898,0.226496771,0.969523132,0.244999751,0.964682937,0.263413906,0.959492981,0.281732589,0.953955233,0.29994911,0.948071599,0.318056911,0.941844344,0.336049408,0.935275674,0.353920102,0.928367913,0.371662498,0.921123624,0.389270127,0.91354543,0.406736672,0.905636072,0.424055785,0.897398412,0.441221118,0.88883543,0.458226532,0.879950225,0.475065857,0.870746076,0.491732985,0.861226201,0.508221805,0.851394176,0.524526417,0.841253519,0.540640831,0.830807865,0.556559324,0.820061088,0.572276056,0.809017003,0.587785244,0.797679603,0.603081465,0.786053061,0.618158996,0.77414155,0.633012474,0.76194948,0.647636473,0.749481142,0.66202569,0.736741126,0.676174939,0.723733962,0.690079033,0.710464537,0.703732967,0.696937501,0.717131853,0.683157861,0.730270743,0.669130564,0.74314487,0.654860675,0.755749583,0.640353382,0.768080413,0.625614047,0.780132771,0.610647857,0.791902244,0.595460296,0.803384781,0.580056846,0.81457597,0.564443171,0.825471938,0.548624873,0.83606863,0.532607675,0.846362293,0.516397357,0.856349111,0.49999997,0.866025448,0.483421236,0.875387847,0.466667235,0.884432971,0.449744076,0.893157482,0.432657987,0.901558161,0.415414959,0.909632027,0.398021311,0.917376161,0.380483389,0.92478776,0.362807661,0.931864023,0.345000297,0.938602567,0.327067852,0.945000887,0.309016973,0.95105654,0.290853947,0.95676744,0.272585481,0.96213156,0.254218191,0.967146873,0.235758886,0.971811593,0.217213988,0.976123989,0.198590353,0.980082572,0.17989473,0.983685851,0.161134005,0.986932516,0.142314747,0.989821434,0.123443902,0.992351532,0.1045283,0.994521916,0.0855749324,0.996331751,0.0665904284,0.997780383,0.047581777,0.998867333,0.0285559967,0.999592185,0.00951974746,0.9999547,0,0.999592185,0.0285560526,0.998369098,0.0570888147,0.996331751,0.0855750069,0.993481755,0.113991417,0.989821434,0.142314851,0.985353827,0.170522198,0.980082572,0.198590472,0.974011898,0.226496771,0.967146873,0.25421834,0.959492981,0.281732589,0.95105654,0.309017003,0.941844344,0.336049378,0.931864023,0.362807721,0.921123624,0.389270127,0.909631968,0.415415049,0.897398412,0.441221118,0.884432912,0.466667324,0.870746076,0.491732925,0.856348991,0.516397476,0.841253519,0.540640831,0.825471878,0.564443231,0.809017003,0.587785244,0.791902244,0.610647857,0.77414161,0.633012474,0.755749524,0.654860795,0.736741126,0.676174939,0.717131793,0.696937561,0.696937561,0.717131793,0.676174879,0.736741126,0.654860675,0.755749583,0.633012414,0.774141669,0.610647857,0.791902244,0.587785244,0.809017003,0.564443231,0.825471878,0.540640771,0.841253579,0.516397476,0.856349051,0.491732925,0.870746076,0.466667235,0.884432971,0.441221029,0.897398472,0.415414959,0.909632027,0.389270037,0.921123683,0.362807661,0.931864023,0.336049348,0.941844404,0.309016973,0.95105654,0.281732529,0.959492981,0.25421831,0.967146873,0.226496756,0.974011898,0.198590472,0.980082572,0.170522094,0.985353827,0.142314747,0.989821434,0.113991328,0.993481755,0.0855749324,0.996331751,0.0570887476,0.998369098,0.0285559967,0.999592185,-4.37113883e-08,1,-0.0285560843,0.999592185,-0.0570888333,0.998369098,-0.0855750218,0.996331751,-0.113991529,0.993481696,-0.142314956,0.989821434,-0.170522287,0.985353827,-0.198590562,0.980082572,-0.226496845,0.974011898,-0.2542184,0.967146814,-0.281732619,0.959492981,-0.309017032,0.95105648,-0.336049438,0.941844344,-0.362807721,0.931864023,-0.389270127,0.921123624,-0.415415138,0.909631968,-0.441221118,0.897398412,-0.466667324,0.884432912,-0.491732895,0.870746076,-0.516397417,0.856349051,-0.54064101,0.8412534,-0.56444335,0.825471818,-0.587785423,0.809016883,-0.610648036,0.791902125,-0.633012593,0.77414149,-0.654860854,0.755749464,-0.676174998,0.736741066,-0.69693768,0.717131734,0,0.999275029,0.0380707122,0.997101247,0.0760862231,0.993481755,0.113991417,0.988421798,0.151731342,0.981928706,0.189251259,0.974011898,0.226496771,0.964682937,0.263413906,0.953955233,0.29994911,0.941844344,0.336049408,0.928367913,0.371662498,0.91354543,0.406736672,0.897398412,0.441221118,0.879950225,0.475065857,0.861226201,0.508221805,0.841253519,0.540640831,0.820061088,0.572276056,0.797679603,0.603081465,0.77414155,0.633012474,0.749481142,0.66202569,0.723733962,0.690079033,0.696937501,0.717131853,0.669130564,0.74314487,0.640353382,0.768080413,0.610647857,0.791902244,0.580056846,0.81457597,0.548624873,0.83606863,0.516397357,0.856349111,0,0.997101247,0.0760862231,0.988421798,0.151731342,0.974011898,0.226496771,0.953955233,0.29994911,0.928367913,0.371662498,0.897398412,0.441221118,0.861226201,0.508221805,0.820061088,0.572276056,0.77414155,0.633012474,0.723733962,0.690079033,0.669130564,0.74314487,0.610647857,0.791902244,0.548624873,0.83606863,0.483421236,0.875387847,0.415414959,0.909632027,0.345000297,0.938602567,0.272585481,0.96213156,0.198590353,0.980082572,0.123443902,0.992351532,0.047581777,0.998867333,-0.0285562035,0.999592185,-0.104528628,0.994521856,-0.179895043,0.983685791,-0.2542184,0.967146814,-0.327068031,0.945000768,-0.398021489,0.917376101,-0.466667533,0.884432852,0,0.993481755,0.113991417,0.974011898,0.226496771,0.941844344,0.336049378,0.897398412,0.441221118,0.841253519,0.540640831,0,0.974011898,0.226496771,0.897398412,0.441221118,0.77414161,0.633012474,0.610647857,0.791902244,0.415414959,0.909632027,0,0.941844344,0.336049408,0.77414155,0.633012474,0.516397357,0.856349111,0.198590353,0.980082572,-0.142314956,0.989821434,0,0.897398412,0.441221118,0.610647857,0.791902244,0.198590472,0.980082572,-0.2542184,0.967146814,-0.654860854,0.755749464,0,0,0,0,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/medium.json b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/medium.json new file mode 100644 index 000000000000..4c8e307035fd --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/medium.json @@ -0,0 +1 @@ +{"lengths":[38,117,98,32,84,101,127,85,59,51],"offsets":[0,38,155,253,285,369,470,597,682,741],"cosines":[0.999145746,0.996584475,0.992320597,0.986361325,0.97871685,0.969400287,0.958427489,0.945817232,0.931591094,0.915773332,0.898391008,0.879473746,0.859053969,0.837166488,0.813848734,0.789140522,0.763084054,0.735723913,0.707106829,0.677281559,0.646299243,0.614212692,0.58107686,0.546948135,0.511885047,0.47594735,0.439196616,0.40169543,0.363507956,0.324699551,0.285336256,0.2454855,0.20521532,0.164594546,0.123692676,0.0825793594,0.0413249582,7.54979013e-08,0.999909878,0.999639511,0.999189019,0.998558342,0.997747779,0.996757329,0.99558717,0.994237661,0.992708862,0.991001189,0.989114881,0.987050235,0.98480773,0.982387722,0.979790628,0.977016985,0.974067152,0.970941842,0.967641473,0.964166701,0.960518122,0.956696391,0.952702284,0.948536456,0.944199622,0.939692616,0.935016215,0.930171311,0.925158739,0.919979453,0.914634287,0.909124315,0.903450429,0.897613704,0.891615212,0.885456026,0.879137218,0.872659922,0.866025388,0.85923475,0.8522892,0.845190108,0.837938607,0.830536067,0.822983861,0.815283298,0.807435811,0.799442768,0.791305602,0.783025861,0.774604976,0.766044438,0.757345855,0.748510778,0.739540696,0.730437398,0.721202433,0.711837471,0.702344179,0.692724347,0.682979584,0.673111796,0.663122654,0.653013945,0.642787635,0.632445335,0.621989131,0.61142081,0.600742221,0.589955449,0.579062223,0.56806469,0.556964815,0.545764446,0.534465849,0.523070753,0.511581481,0.49999997,0.488328367,0.476568729,0.46472311,0.452793807,0.440782905,0.428692549,0.416524917,0.404282212,0.391966552,0.379580319,0.36712569,0.35460487,0.342020154,0.329373658,0.316667914,0.3039051,0.291087508,0.278217465,0.265297264,0.252329111,0.239315599,0.226258963,0.213161543,0.200025693,0.186853677,0.173648104,0.160411224,0.147145435,0.133853123,0.120536685,0.107198402,0.0938409194,0.0804665163,0.0670776144,0.0536766201,0.0402659513,0.0268479064,0.0134251416,-4.37113883e-08,0.999871552,0.999486208,0.998844087,0.997945368,0.99679029,0.99537909,0.993712187,0.991789997,0.989612997,0.987181783,0.984496951,0.981559157,0.978369236,0.974927902,0.971236169,0.967294872,0.963105083,0.958667874,0.95398432,0.949055731,0.9438833,0.938468397,0.932812393,0.926916778,0.920782983,0.914412618,0.90780735,0.90096885,0.893898904,0.886599302,0.879071891,0.871318698,0.86334163,0.855142772,0.846724153,0.838088095,0.829236686,0.82017225,0.810897112,0.801413596,0.791724205,0.781831443,0.771737814,0.76144594,0.750958443,0.740277946,0.72940731,0.718349338,0.707106769,0.695682526,0.684079528,0.672300875,0.660349429,0.648228347,0.63594079,0.623489797,0.610878587,0.598110497,0.585188746,0.572116613,0.558897555,0.545534849,0.532032013,0.518392503,0.504619837,0.49071753,0.47668913,0.462538302,0.448268592,0.433883637,0.419387341,0.404783279,0.390075207,0.375266939,0.360362291,0.345365018,0.330279052,0.31510821,0.299856424,0.284527481,0.269125551,0.25365451,0.238118261,0.222520858,0.206866294,0.191158578,0.175401747,0.15959987,0.143756971,0.127877146,0.11196436,0.0960229188,0.0800568089,0.0640701354,0.0480669998,0.0320515111,0.0160277933,-4.37113883e-08,0.99879545,0.99518472,0.989176512,0.980785251,0.970031261,0.956940353,0.941544056,0.923879504,0.903989315,0.881921232,0.857728601,0.831469595,0.803207517,0.773010433,0.740951121,0.707106769,0.671558917,0.634393275,0.59569931,0.555570185,0.514102697,0.471396655,0.427555114,0.382683426,0.336889833,0.290284634,0.242980123,0.195090234,0.146730497,0.0980171338,0.04906765,-4.37113883e-08,0.99982518,0.999300718,0.998426795,0.997203767,0.995632052,0.993712187,0.991444886,0.988830805,0.985871017,0.982566476,0.978918314,0.974927902,0.970596552,0.965925813,0.960917294,0.955572784,0.94989413,0.9438833,0.937542439,0.930873752,0.923879504,0.916562259,0.90892446,0.90096885,0.892698228,0.884115398,0.875223398,0.866025388,0.856524527,0.846724153,0.836627722,0.826238751,0.815560877,0.804597795,0.793353319,0.781831443,0.770036221,0.757971704,0.745642126,0.733051836,0.720205247,0.707106769,0.693761051,0.680172682,0.66634655,0.652287364,0.638000131,0.623489797,0.60876137,0.593820155,0.578671277,0.563320041,0.547771811,0.532032013,0.516106188,0.49999997,0.483718812,0.467268616,0.450654924,0.433883637,0.416960746,0.399891943,0.382683426,0.365340978,0.347870767,0.330279052,0.312571704,0.294755161,0.276835471,0.258818954,0.240712047,0.222520858,0.20425199,0.185911566,0.167506129,0.149042249,0.130526125,0.11196436,0.0933635607,0.0747300014,0.0560704246,0.0373911262,0.0186987501,-4.37113883e-08,0.999879062,0.999516308,0.998911738,0.998065591,0.996978045,0.995649338,0.994079828,0.992269874,0.990219891,0.987930417,0.985401988,0.98263526,0.979630828,0.976389408,0.972911894,0.969199002,0.965251684,0.961070955,0.956657708,0.952013075,0.94713825,0.942034245,0.93670243,0.931144059,0.925360441,0.919353008,0.91312325,0.906672597,0.900002658,0.893114984,0.886011362,0.878693402,0.871162891,0.863421679,0.855471671,0.847314715,0.83895278,0.83038795,0.821622312,0.812657893,0.803496957,0.79414165,0.784594238,0.774857104,0.764932513,0.75482291,0.744530737,0.734058499,0.723408699,0.712583959,0.701586783,0.690420032,0.679086149,0.667588115,0.655928552,0.644110382,0.632136345,0.620009542,0.607732654,0.59530884,0.582741022,0.570032179,0.55718559,0.544204116,0.531091094,0.517849565,0.504482865,0.490994006,0.477386504,0.463663518,0.449828297,0.435884356,0.421835005,0.407683522,0.393433541,0.379088372,0.364651442,0.350126386,0.335516661,0.320825666,0.306057185,0.291214675,0.276301622,0.261321843,0.246278867,0.231176198,0.216017738,0.20080702,0.18554762,0.170243457,0.154898122,0.139515311,0.124098651,0.108652085,0.0931792408,0.0776837394,0.062169563,0.0466403551,0.0310997441,0.015551731,-4.37113883e-08,0.999923527,0.999694049,0.999311686,0.998776436,0.99808836,0.997247636,0.996254325,0.995108664,0.993810713,0.992360771,0.990759015,0.989005685,0.987101078,0.985045493,0.982839167,0.980482459,0.977975845,0.975319564,0.972514093,0.969559848,0.966457307,0.963206887,0.959809124,0.956264555,0.952573717,0.948737085,0.944755375,0.940629125,0.936358988,0.931945562,0.927389622,0.922691822,0.917852819,0.912873447,0.907754421,0.902496517,0.897100568,0.891567349,0.885897756,0.88009268,0.874152899,0.868079484,0.86187315,0.85553509,0.849066079,0.842467189,0.835739434,0.828883827,0.821901441,0.814793289,0.807560563,0.800204217,0.792725444,0.785125494,0.777405322,0.769566357,0.761609554,0.753536284,0.745347738,0.737045169,0.728629887,0.720103085,0.711466134,0.702720344,0.693867087,0.684907675,0.675843477,0.666675925,0.65740633,0.648036182,0.638566911,0.628999889,0.619336784,0.609578788,0.599727631,0.589784682,0.579751551,0.569629729,0.559420705,0.549126208,0.538747668,0.528286636,0.517744839,0.507123888,0.496425241,0.485650748,0.474801958,0.463880569,0.452888072,0.441826433,0.430697173,0.41950193,0.408242613,0.39692086,0.385538399,0.374096811,0.362598121,0.351043969,0.339436024,0.327776223,0.316066295,0.304308027,0.292503089,0.280653507,0.268761009,0.256827265,0.244854361,0.232843995,0.220797896,0.208718136,0.196606442,0.184464678,0.172294572,0.160098225,0.147877395,0.135633811,0.123369612,0.111086532,0.0987864584,0.0864711553,0.0741427392,0.061802987,0.0494536571,0.0370968841,0.0247344337,0.0123682003,-4.37113883e-08,0.999829233,0.99931705,0.998463631,0.997269154,0.995734155,0.993859112,0.991644681,0.989091635,0.98620075,0.982973099,0.979409754,0.975511968,0.971281052,0.966718376,0.961825609,0.956604421,0.95105654,0.945183814,0.938988328,0.932472229,0.925637662,0.918486953,0.911022604,0.903247178,0.895163298,0.886773646,0.878081203,0.869088948,0.859799862,0.850217104,0.840344012,0.830183983,0.819740474,0.809017003,0.798017204,0.786744893,0.775203943,0.76339823,0.751331866,0.739008904,0.726433516,0.713610113,0.700542986,0.687236667,0.673695624,0.659924448,0.645928025,0.631710947,0.617278159,0.602634609,0.587785184,0.572735071,0.557489395,0.542053282,0.526432097,0.510631144,0.494655788,0.478511512,0.46220386,0.445738226,0.429120481,0.412356198,0.395451099,0.378410965,0.361241609,0.343948871,0.326538682,0.309016973,0.291389614,0.273662865,0.255842656,0.237935096,0.21994628,0.201882333,0.183749467,0.165553719,0.147301555,0.128999084,0.110652559,0.0922682509,0.0738524273,0.055411391,0.0369514301,0.018478848,-1.62920685e-07,0.999645591,0.998582721,0.996811986,0.994334817,0.991152823,0.987268329,0.982684135,0.977403402,0.971429884,0.964767873,0.957422018,0.949397624,0.940700233,0.931336164,0.921311975,0.910634756,0.899312139,0.887352049,0.874763072,0.861554027,0.847734392,0.833313882,0.818302751,0.802711606,0.786551535,0.769833922,0.752570748,0.734774113,0.716456711,0.697631478,0.678311825,0.658511341,0.638244152,0.617524564,0.5963673,0.574787378,0.5528,0.53042084,0.507665753,0.484550774,0.461092472,0.437307209,0.41321215,0.388824075,0.364160538,0.339238763,0.314076662,0.288691849,0.263102531,0.237326592,0.211382583,0.185288623,0.159063458,0.132725418,0.10629344,0.0797860026,0.053222131,0.0266204178,-4.37113883e-08,0.999525726,0.998103321,0.995734155,0.992420495,0.988165498,0.982973099,0.976848304,0.969796956,0.961825669,0.952942014,0.943154454,0.932472229,0.92090553,0.908465266,0.895163298,0.881012201,0.866025388,0.850217104,0.833602369,0.816196918,0.798017204,0.77908057,0.759404898,0.739008904,0.717911899,0.696133912,0.673695624,0.650618255,0.6269238,0.602634609,0.577773809,0.552364945,0.526432097,0.49999997,0.47309348,0.445738345,0.417960286,0.389785856,0.361241609,0.332354784,0.303152621,0.273662984,0.243913665,0.21393308,0.183749467,0.153391659,0.122888237,0.0922682509,0.061560858,0.0307949521,-4.37113883e-08],"twiddles":[0.986361325,0.164594591,0.945817232,0.324699461,0.879473746,0.47594738,0.789140522,0.614212692,0.677281559,0.735723913,0.546948195,0.837166488,0.40169543,0.915773332,0.2454855,0.969400287,0.0825793594,0.996584475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.998558342,0.0536766313,0.994237661,0.107198499,0.987050235,0.160411283,0.977016985,0.213161558,0.964166701,0.265297234,0.948536456,0.316668004,0.930171311,0.36712572,0.909124315,0.416524917,0.885456026,0.4647232,0.85923475,0.511581481,0.830536067,0.556964874,0.799442768,0.60074228,0.766044438,0.642787635,0.730437398,0.682979643,0.692724347,0.721202493,0.653013945,0.757345855,0.61142081,0.791305602,0.56806469,0.822983861,0.523070753,0.852289259,0,0.994237661,0.107198499,0.977016985,0.213161558,0.948536456,0.316668004,0.909124315,0.416524917,0.85923475,0.511581481,0.799442768,0.60074228,0.730437398,0.682979643,0.653013945,0.757345855,0.56806469,0.822983861,0.476568729,0.879137218,0.379580319,0.925158799,0.278217465,0.960518122,0.173648104,0.984807789,0.0670776144,0.997747779,-0.0402660407,0.999189019,-0.147145525,0.989114881,-0.252329201,0.967641473,-0.354604959,0.935016215,-0.452793986,0.891615152,0,0.987050235,0.160411283,0.948536456,0.316668004,0.885456026,0.4647232,0.799442768,0.60074228,0.692724347,0.721202433,0.56806469,0.822983861,0,0.948536456,0.316668004,0.799442768,0.60074228,0.56806469,0.822983861,0.278217465,0.960518122,-0.0402659215,0.999189019,-0.354604959,0.935016215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.997945368,0.0640702248,0.991789997,0.127877161,0.981559157,0.191158637,0.967294872,0.253654599,0.949055731,0.31510824,0.926916778,0.375267029,0.90096885,0.433883756,0.871318698,0.49071756,0.838088095,0.545534909,0.801413596,0.598110557,0.76144594,0.648228407,0.718349338,0.695682585,0.672300875,0.740278006,0.623489797,0.781831503,0.572116613,0.82017225,0.518392503,0.855142772,0.462538302,0.886599302,0.404783279,0.914412677,0.345365018,0.938468456,0.284527481,0.958667874,0.222520858,0.974927902,0.15959987,0.987181783,0.0960229188,0.99537915,0.0320515111,0.999486208,0,0.991789997,0.127877161,0.967294872,0.253654599,0.926916778,0.375267029,0,0.967294872,0.253654599,0.871318698,0.49071756,0.718349338,0.695682585,0,0.926916778,0.375267029,0.718349338,0.695682585,0.404783279,0.914412677,0,0.871318698,0.49071756,0.518392503,0.855142772,0.0320515111,0.999486208,0,0.801413596,0.598110557,0.284527481,0.958667874,-0.345365226,0.938468337,0,0.718349338,0.695682585,0.0320515111,0.999486208,-0.672300994,0.740277886,0,0,0,0,0,0,0,0,0.980785251,0.195090324,0.923879504,0.382683456,0.831469595,0.555570245,0.707106769,0.707106769,0.555570185,0.831469655,0.382683426,0.923879504,0.195090234,0.98078531,0,0,0.923879504,0.382683456,0,0,0.707106769,0.707106769,0,0,0.382683426,0.923879504,0,0,0,0,0,0,0.997203767,0.0747300982,0.988830805,0.149042279,0.974927902,0.222520933,0.955572784,0.294755191,0.930873752,0.365341038,0.90096885,0.433883756,0.866025388,0.5,0.826238751,0.5633201,0.781831443,0.623489857,0.733051836,0.680172801,0,0.988830805,0.149042279,0.955572784,0.294755191,0.90096885,0.433883756,0.826238751,0.5633201,0.733051836,0.680172801,0.623489797,0.781831503,0.49999997,0.866025448,0.365340978,0.930873752,0.222520858,0.974927902,0.0747300014,0.997203827,0,0.974927902,0.222520933,0.90096885,0.433883756,0.781831443,0.623489857,0.623489797,0.781831503,0.433883756,0.90096885,0.222520858,0.974927902,-4.37113883e-08,1,-0.222520947,0.974927902,-0.433883846,0.90096885,-0.623489797,0.781831503,0,0.955572784,0.294755191,0.826238751,0.5633201,0.623489797,0.781831503,0,0.826238751,0.5633201,0.365340978,0.930873752,-0.222520947,0.974927902,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.997269154,0.0738525316,0.989091635,0.147301704,0.975511968,0.21994637,0.956604421,0.291389763,0.932472229,0.361241698,0.903247178,0.42912063,0.869088948,0.494655877,0.830183983,0.557489455,0,0.989091635,0.147301704,0.956604421,0.291389763,0.903247178,0.42912063,0.830183983,0.557489455,0.739008904,0.673695683,0.631710947,0.775204003,0.510631144,0.859799862,0.378410965,0.925637722,0,0.975511968,0.21994637,0.903247178,0.42912063,0.786744893,0.617278278,0.631710947,0.775204003,0.445738226,0.895163357,0.237935096,0.971281052,0.018478848,0.999829233,-0.201882541,0.979409754,0,0.956604421,0.291389763,0.830183983,0.557489455,0.631710947,0.775204003,0.378410965,0.925637722,0.0922682509,0.995734215,-0.201882541,0.979409754,-0.478511691,0.878081203,-0.713610291,0.700542927,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.992420495,0.122888297,0.969796956,0.243913725,0.932472229,0.361241698,0.881012201,0.473093569,0.816196918,0.577773809,0.739008904,0.673695683,0.650618255,0.759404957,0.552364945,0.833602428,0,0.969796956,0.243913725,0.881012201,0.473093569,0.739008904,0.673695683,0.552364945,0.833602428,0.332354784,0.943154454,0.0922682509,0.995734215,-0.153391749,0.988165438,-0.389785945,0.920905471,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/runner.c b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/runner.c new file mode 100644 index 000000000000..e49de595b505 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/runner.c @@ -0,0 +1,304 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/** +* Generate FFTPACK test fixtures. +* +* ## Notes +* +* - Run this script from the directory in which fixtures should be written. +* +*/ + +#include +#include +#include + +/** +* Define prototypes for external functions. +*/ +extern void sinqi( int n, float *wsave ); + +/** +* Generates a random number on the interval [0,1]. +* +* @return random number +*/ +float rand_float( void ) { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Generates an array of pseudorandom integers drawn from a uniform distribution. +* +* ## Notes +* +* - WARNING: the method used here is not particularly robust, as some integer values may be sampled more frequently than others. +* +* +* @param out output array +* @param len array length +* @param a lower bound (inclusive) +* @param b upper bound (exclusive) +*/ +void rand_array_i32( int *out, const unsigned int len, const int a, const int b ) { + unsigned int i; + unsigned int r; + float delta; + + delta = (float)b - (float)a; + + for ( i = 0; i < len; i++ ) { + r = (unsigned int)( delta * rand_float() ); // truncation + out[ i ] = (int)( a + r ); + } +} + +/** +* Writes an array of floats to a file as a series of comma-separated values. +* +* @param f file to write to +* @param x array of floats +* @param len array length +*/ +void write_array_f32( FILE *f, const float *x, const unsigned int len ) { + unsigned int i; + + for ( i = 0; i < len; i++ ) { + fprintf( f, "%.9g", x[ i ] ); + if ( i < len-1 ) { + fprintf( f, "," ); + } + } +} + +/** +* Writes an array of integers to a file as a series of comma-separated values. +* +* @param f file to write to +* @param x array of integers +* @param len array length +*/ +void write_array_i32( FILE *f, const int *x, const unsigned int len ) { + unsigned int i; + + for ( i = 0; i < len; i++ ) { + fprintf( f, "%d", x[ i ] ); + if ( i < len-1 ) { + fprintf( f, "," ); + } + } +} + +/** +* Writes a named array of floats to a file as JSON. +* +* @param f file to write to +* @param name array name +* @param x data +* @param len array length +*/ +void write_named_array_f32( FILE *f, const char *name, const float *x, const unsigned int len ) { + fprintf( f, "\"%s\":[", name ); + write_array_f32( f, x, len ); + fprintf( f, "]" ); +} + +/** +* Writes a named array of integers to a file as JSON. +* +* @param f file to write to +* @param name array name +* @param x data +* @param len array length +*/ +void write_named_array_i32( FILE *f, const char *name, const int *x, const unsigned int len ) { + fprintf( f, "\"%s\":[", name ); + write_array_i32( f, x, len ); + fprintf( f, "]" ); +} + +/** +* Writes data to a file as JSON. +* +* ## Notes +* +* - This function SHOULD be tailored to the input data (e.g., input types, output types, number of arguments, etc) and may vary from use case to use case. +* +* +* @param f file to write to +* @param lengths sequence lengths +* @param offsets cosine and twiddle offsets +* @param cosines cosine values +* @param twiddles twiddle factors +* @param num number of sequence lengths +* @param total total number of cosine and twiddle values +*/ +void write_data_as_json( FILE *f, const int *lengths, const int *offsets, const float *cosines, const float *twiddles, const unsigned int num, const unsigned int total ) { + fprintf( f, "{" ); + write_named_array_i32( f, "lengths", lengths, num ); + fprintf( f, "," ); + write_named_array_i32( f, "offsets", offsets, num ); + fprintf( f, "," ); + write_named_array_f32( f, "cosines", cosines, total ); + fprintf( f, "," ); + write_named_array_f32( f, "twiddles", twiddles, total ); + fprintf( f, "}\n" ); +} + +/** +* Generates test fixtures. +* +* @param lengths sequence lengths +* @param offsets cosine and twiddle offsets into flat output array +* @param num number of sequence lengths +* @param total total number of cosine and twiddle values +* @param name output filename +*/ +void generate( const int *lengths, const int *offsets, const unsigned int num, const unsigned int total, const char *name ) { + unsigned int i; + unsigned int j; + float *cosines; + float *twiddles; + float *wsave; + FILE *f; + int off; + int n; + + // Allocate an output array for cosine values: + cosines = (float*) malloc( total * sizeof(float) ); + if ( cosines == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + + // Allocate an output array for twiddle factors: + twiddles = (float*) malloc( total * sizeof(float) ); + if ( twiddles == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + + // Generate fixture data: + for ( i = 0; i < num; i++ ) { + n = lengths[ i ]; + wsave = (float*) calloc( 3*n + 15, sizeof(float) ); + if ( wsave == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + sinqi( n, wsave ); + + // Copy cosine region into flat array (N values starting at wsave[0]): + off = offsets[ i ]; + for ( j = 0; j < (unsigned int)n; j++ ) { + cosines[ off + j ] = wsave[ j ]; + } + + // Copy twiddle region into flat array (N values starting at wsave[2*n]): + off = offsets[ i ]; + for ( j = 0; j < (unsigned int)n; j++ ) { + twiddles[ off + j ] = wsave[ ( 2*n ) + j ]; + } + free( wsave ); + } + // Open a new file: + f = fopen( name, "w" ); + if ( f == NULL ) { + printf( "Error opening file.\n" ); + exit( 1 ); + } + + // Write data as JSON: + write_data_as_json( f, lengths, offsets, cosines, twiddles, num, total ); + + // Close the file: + fclose( f ); + + // Free allocated memory: + free( cosines ); + free( twiddles ); +} + +/** +* Computes offsets into flat cosine and twiddle arrays for each sequence length. +* +* @param offsets output array of offsets +* @param lengths sequence lengths +* @param num number of sequence lengths +* @return total number of cosine and twiddle values +*/ +unsigned int compute_offsets( int *offsets, const int *lengths, const unsigned int num ) { + unsigned int total; + unsigned int i; + + total = 0; + for ( i = 0; i < num; i++ ) { + offsets[ i ] = total; + total += lengths[ i ]; + } + return total; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + unsigned int total; + unsigned int num; + int *lengths; + int *offsets; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + // Define the number of sequence lengths per range: + num = 10; + + // Allocate arrays: + lengths = (int*) malloc( num * sizeof(int) ); + if ( lengths == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + offsets = (int*) malloc( num * sizeof(int) ); + if ( offsets == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + + // Generate fixture data: + rand_array_i32( lengths, num, 2, 16 ); + total = compute_offsets( offsets, lengths, num ); + generate( lengths, offsets, num, total, "small.json" ); + + rand_array_i32( lengths, num, 16, 128 ); + total = compute_offsets( offsets, lengths, num ); + generate( lengths, offsets, num, total, "medium.json" ); + + rand_array_i32( lengths, num, 128, 1024 ); + total = compute_offsets( offsets, lengths, num ); + generate( lengths, offsets, num, total, "large.json" ); + + // Free allocated memory: + free( lengths ); + free( offsets ); + + return 0; +} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/small.json b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/small.json new file mode 100644 index 000000000000..b8b62e4c21b4 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/fixtures/c/fftpack/small.json @@ -0,0 +1 @@ +{"lengths":[4,6,3,12,5,11,5,2,15,5],"offsets":[0,4,10,13,25,30,41,46,48,63],"cosines":[0.923879504,0.707106769,0.382683426,-4.37113883e-08,0.965925813,0.866025388,0.707106769,0.49999997,0.258819073,-4.37113883e-08,0.866025388,0.49999997,-4.37113883e-08,0.991444886,0.965925813,0.923879504,0.866025388,0.793353319,0.707106769,0.60876137,0.49999997,0.382683426,0.258819073,0.130526125,-4.37113883e-08,0.95105654,0.809017003,0.587785244,0.309016973,-4.37113883e-08,0.989821434,0.959492981,0.909631968,0.841253519,0.755749524,0.654860675,0.540640771,0.415414959,0.281732529,0.142314747,-1.62920685e-07,0.95105654,0.809017003,0.587785244,0.309016973,-4.37113883e-08,0.707106769,-4.37113883e-08,0.994521916,0.978147626,0.95105654,0.91354543,0.866025388,0.809017003,0.74314481,0.669130564,0.587785244,0.49999997,0.406736612,0.309016973,0.207911655,0.10452842,-4.37113883e-08,0.95105654,0.809017003,0.587785244,0.309016973,-4.37113883e-08],"twiddles":[0,0,0,0,0.49999997,0.866025448,0,0,0,0,0,0,0,0.866025388,0.5,0,0.49999997,0.866025448,0,-4.37113883e-08,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.91354543,0.406736642,0.669130564,0.74314487,0,0.669130564,0.74314487,-0.104528509,0.994521916,0,0,0,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/test.js b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/test.js new file mode 100644 index 000000000000..7824a1b057ef --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/sinqi/test/test.js @@ -0,0 +1,314 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var isAlmostSameValue = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); +var sinqi = require( './../lib' ); + + +// FIXTURES // + +var small = require( './fixtures/c/fftpack/small.json' ); +var medium = require( './fixtures/c/fftpack/medium.json' ); +var large = require( './fixtures/c/fftpack/large.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sinqi, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', function test( t ) { + t.strictEqual( sinqi.length, 4, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns a reference to the workspace array', function test( t ) { + var workspace; + var out; + var N; + + N = 8; + workspace = new Float32Array( ( 3*N ) + 34 ); + out = sinqi( N, workspace, 1, 0 ); + + t.strictEqual( out, workspace, 'same reference' ); + t.end(); +}); + +tape( 'the function correctly initializes cosine values (small sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = small.lengths; + offsets = small.offsets; + expected = small.cosines; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float32Array( ( 3*N ) + 34 ); + sinqi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes twiddle factors (small sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = small.lengths; + offsets = small.offsets; + expected = small.twiddles; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float32Array( ( 3*N ) + 34 ); + sinqi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ (2*N) - 1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ (2*N) + i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes cosine values (medium sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = medium.lengths; + offsets = medium.offsets; + expected = medium.cosines; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float32Array( ( 3*N ) + 34 ); + sinqi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes twiddle factors (medium sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = medium.lengths; + offsets = medium.offsets; + expected = medium.twiddles; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float32Array( ( 3*N ) + 34 ); + sinqi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ (2*N) - 1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ (2*N) + i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes cosine values (large sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = large.lengths; + offsets = large.offsets; + expected = large.cosines; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float32Array( ( 3*N ) + 34 ); + sinqi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes twiddle factors (large sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = large.lengths; + offsets = large.offsets; + expected = large.twiddles; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float32Array( ( 3*N ) + 34 ); + sinqi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ (2*N) - 1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ (2*N) + i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function does not modify the scratch region of the workspace', function test( t ) { + var workspace; + var N; + var i; + + N = 8; + workspace = new Float32Array( ( 3*N ) + 34 ); + + for ( i = 0; i < workspace.length; i++ ) { + workspace[ i ] = i + 1.0; + } + sinqi( N, workspace, 1, 0 ); + for ( i = N; i < 2*N; i++ ) { + t.strictEqual( workspace[ i ], i + 1.0, 'returns expected value' ); + } + t.end(); +}); + +tape( 'the function correctly handles stride and offset parameters', function test( t ) { + var workspace; + var expected; + var stride; + var offset; + var nf; + var N; + var i; + + N = 8; + stride = 2; + offset = 3; + workspace = new Float32Array( offset + ( ( ( 3*N ) + 34 ) * stride ) ); + + sinqi( N, workspace, stride, offset ); + + t.strictEqual( workspace[ offset + ( 3*N * stride ) ], N, 'returns expected value' ); + + nf = workspace[ offset + ( ( ( 3*N ) + 1 ) * stride ) ]; + t.strictEqual( nf, 2, 'returns expected value' ); + t.strictEqual( workspace[ offset + ( ( ( 3*N ) + 2 ) * stride ) ], 2, 'returns expected value' ); + t.strictEqual( workspace[ offset + ( ( ( 3*N ) + 3 ) * stride ) ], 4, 'returns expected value' ); + + expected = new Float32Array( ( 3*N ) + 34 ); + sinqi( N, expected, 1, 0 ); + + for ( i = 0; i < N; i++ ) { + t.strictEqual( workspace[ offset + ( ( (2*N)+i ) * stride ) ], expected[ (2*N)+i ], 'returns expected value' ); + } + t.end(); +});