From 92011115dff76440c80a295dfdcaca2e1a10e44a Mon Sep 17 00:00:00 2001 From: Gunj Joshi Date: Sat, 29 Aug 2026 22:33:49 +0530 Subject: [PATCH] feat: add fft/base/fftpack/float32/cosqi --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown_pkg_readmes status: passed - task: lint_markdown_docs status: na - task: lint_markdown status: na - task: lint_package_json status: passed - task: lint_repl_help status: passed - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: passed - task: lint_javascript_tests status: passed - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: passed - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: passed - task: lint_license_headers status: passed --- --- .../fft/base/fftpack/float32/cosqi/README.md | 175 ++++++++++ .../float32/cosqi/benchmark/benchmark.js | 101 ++++++ .../base/fftpack/float32/cosqi/docs/repl.txt | 61 ++++ .../float32/cosqi/docs/types/index.d.ts | 60 ++++ .../fftpack/float32/cosqi/docs/types/test.ts | 95 ++++++ .../fftpack/float32/cosqi/examples/index.js | 45 +++ .../base/fftpack/float32/cosqi/lib/index.js | 56 ++++ .../base/fftpack/float32/cosqi/lib/main.js | 192 +++++++++++ .../base/fftpack/float32/cosqi/package.json | 66 ++++ .../cosqi/test/fixtures/c/fftpack/Makefile | 137 ++++++++ .../cosqi/test/fixtures/c/fftpack/large.json | 1 + .../cosqi/test/fixtures/c/fftpack/medium.json | 1 + .../cosqi/test/fixtures/c/fftpack/runner.c | 304 +++++++++++++++++ .../cosqi/test/fixtures/c/fftpack/small.json | 1 + .../base/fftpack/float32/cosqi/test/test.js | 314 ++++++++++++++++++ 15 files changed, 1609 insertions(+) create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/README.md create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/docs/types/index.d.ts create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/docs/types/test.ts create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/examples/index.js create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/lib/index.js create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/lib/main.js create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/package.json create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/Makefile create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/large.json create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/medium.json create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/runner.c create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/small.json create mode 100644 lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/test.js diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/README.md b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/README.md new file mode 100644 index 000000000000..c7c2b3af91fb --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/README.md @@ -0,0 +1,175 @@ + + +# cosqi + +> Initialize a single-precision floating-point workspace array for performing a quarter-wave cosine transform. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var cosqi = require( '@stdlib/fft/base/fftpack/float32/cosqi' ); +``` + +#### cosqi( N, workspace, strideW, offsetW ) + +Initializes a single-precision floating-point workspace array for performing a quarter-wave cosine transform. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var N = 8; +var workspace = new Float32Array( ( 3*N ) + 34 ); + +var out = cosqi( 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 cosine 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 cosqi = require( '@stdlib/fft/base/fftpack/float32/cosqi' ); + +var N = 8; +var workspace = new Float32Array( ( 3*N ) + 34 ); + +cosqi( 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/cosqi/benchmark/benchmark.js b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/benchmark/benchmark.js new file mode 100644 index 000000000000..68638c7cb6ca --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/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 cosqi = 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++ ) { + cosqi( 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/cosqi/docs/repl.txt b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/docs/repl.txt new file mode 100644 index 000000000000..fa0fb3cacf31 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/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 cosine 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 + cosine 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/cosqi/docs/types/index.d.ts b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/docs/types/index.d.ts new file mode 100644 index 000000000000..96c8db03acaf --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/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 cosine 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 = cosqi( 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 cosqi( N: number, workspace: Float32Array, strideW: number, offsetW: number ): Float32Array; + + +// EXPORTS // + +export = cosqi; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/docs/types/test.ts b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/docs/types/test.ts new file mode 100644 index 000000000000..b6a865c9e117 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/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 cosqi = require( './index' ); + + +// TESTS // + +// The function returns a Float32Array... +{ + const workspace = new Float32Array( ( 3*8 ) + 34 ); + + cosqi( 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 ); + + cosqi( '8', workspace, 1, 0 ); // $ExpectError + cosqi( true, workspace, 1, 0 ); // $ExpectError + cosqi( false, workspace, 1, 0 ); // $ExpectError + cosqi( null, workspace, 1, 0 ); // $ExpectError + cosqi( void 0, workspace, 1, 0 ); // $ExpectError + cosqi( [], workspace, 1, 0 ); // $ExpectError + cosqi( {}, workspace, 1, 0 ); // $ExpectError + cosqi( ( 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... +{ + cosqi( 8, '50', 1, 0 ); // $ExpectError + cosqi( 8, 50, 1, 0 ); // $ExpectError + cosqi( 8, true, 1, 0 ); // $ExpectError + cosqi( 8, false, 1, 0 ); // $ExpectError + cosqi( 8, null, 1, 0 ); // $ExpectError + cosqi( 8, void 0, 1, 0 ); // $ExpectError + cosqi( 8, [], 1, 0 ); // $ExpectError + cosqi( 8, {}, 1, 0 ); // $ExpectError + cosqi( 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 ); + + cosqi( 8, workspace, '1', 0 ); // $ExpectError + cosqi( 8, workspace, true, 0 ); // $ExpectError + cosqi( 8, workspace, false, 0 ); // $ExpectError + cosqi( 8, workspace, null, 0 ); // $ExpectError + cosqi( 8, workspace, void 0, 0 ); // $ExpectError + cosqi( 8, workspace, [], 0 ); // $ExpectError + cosqi( 8, workspace, {}, 0 ); // $ExpectError + cosqi( 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 ); + + cosqi( 8, workspace, 1, '0' ); // $ExpectError + cosqi( 8, workspace, 1, true ); // $ExpectError + cosqi( 8, workspace, 1, false ); // $ExpectError + cosqi( 8, workspace, 1, null ); // $ExpectError + cosqi( 8, workspace, 1, void 0 ); // $ExpectError + cosqi( 8, workspace, 1, [] ); // $ExpectError + cosqi( 8, workspace, 1, {} ); // $ExpectError + cosqi( 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 ); + + cosqi(); // $ExpectError + cosqi( 8 ); // $ExpectError + cosqi( 8, workspace ); // $ExpectError + cosqi( 8, workspace, 1 ); // $ExpectError + cosqi( 8, workspace, 1, 0, 123 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/examples/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/examples/index.js new file mode 100644 index 000000000000..76b99bdada35 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/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 cosqi = require( './../lib' ); + +var N = 8; +var workspace = new Float32Array( ( 3*N ) + 34 ); + +cosqi( 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/cosqi/lib/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/lib/index.js new file mode 100644 index 000000000000..525c61a19005 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/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 cosine transform. +* +* @module @stdlib/fft/base/fftpack/float32/cosqi +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* var cosqi = require( '@stdlib/fft/base/fftpack/float32/cosqi' ); +* +* var N = 8; +* var workspace = new Float32Array( ( 3*N ) + 34 ); +* +* var out = cosqi( 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/cosqi/lib/main.js b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/lib/main.js new file mode 100644 index 000000000000..c854199e964a --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/lib/main.js @@ -0,0 +1,192 @@ +/** +* @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 cosf = require( '@stdlib/math/base/special/cosf' ); +var HALF_PI = require( '@stdlib/constants/float32/half-pi' ); +var f32 = require( '@stdlib/number/float64/base/to-float32' ); +var rffti = require( '@stdlib/fft/base/fftpack/float32/rffti' ); + + +// MAIN // + +/** +* Initializes a single-precision floating-point workspace array for performing a quarter-wave cosine 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 cosine 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., `cosqf`) multiplying with `(cos,-sin)` and those performing a backward transform (e.g., `cosqb`) 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, `cosqi` 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 = cosqi( 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 cosqi( N, workspace, strideW, offsetW ) { + var offsetR; + var dt; + var iw; + var fk; + var i; + + // Compute the angular increment: + dt = f32( HALF_PI/N ); + + // Compute and store the cosine table: + fk = 0.0; + iw = offsetW; + for ( i = 0; i < N; i++ ) { + fk = f32( fk+1.0 ); + workspace[ iw ] = cosf( f32( fk*dt ) ); + iw += strideW; + } + // Resolve the starting index for the `rffti` workspace: + offsetR = offsetW + ( N*strideW ); + + // Initialize the real FFT workspace: + rffti( N, workspace, strideW, offsetR ); + + return workspace; +} + + +// EXPORTS // + +module.exports = cosqi; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/package.json b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/package.json new file mode 100644 index 000000000000..51feef72bbec --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/package.json @@ -0,0 +1,66 @@ +{ + "name": "@stdlib/fft/base/fftpack/float32/cosqi", + "version": "0.0.0", + "description": "Initialize a single-precision floating-point workspace array for performing a quarter-wave cosine 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", + "cosqi", + "fourier", + "transform", + "twiddle", + "workspace", + "initialization", + "cosine", + "single", + "float32" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/Makefile b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/Makefile new file mode 100644 index 000000000000..77b6a5f13549 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/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/cosqi/test/fixtures/c/fftpack/large.json b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/large.json new file mode 100644 index 000000000000..97444854b123 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/large.json @@ -0,0 +1 @@ +{"lengths":[826,917,320,620,590,575,781,748,826,460],"offsets":[0,826,1743,2063,2683,3273,3848,4629,5377,6203],"cosines":[0.999998212,0.999992788,0.999983728,0.999971092,0.99995482,0.999934912,0.999911427,0.999884248,0.999853551,0.99981916,0.999781191,0.999739647,0.999694407,0.999645591,0.999593198,0.99953711,0.999477446,0.999414206,0.999347329,0.999276817,0.999202669,0.999124944,0.999043584,0.998958647,0.998870075,0.998777926,0.998682082,0.998582721,0.998479664,0.998373032,0.998262823,0.998148978,0.998031497,0.99791044,0.997785747,0.997657478,0.997525573,0.997390091,0.997250974,0.997108281,0.996961951,0.996811986,0.996658504,0.996501327,0.996340573,0.996176243,0.996008337,0.995836794,0.995661616,0.995482862,0.995300531,0.995114565,0.994925022,0.994731903,0.994535148,0.994334817,0.99413085,0.993923306,0.993712187,0.993497491,0.993279159,0.993057251,0.992831767,0.992602706,0.992370009,0.992133737,0.991893888,0.991650462,0.991403461,0.991152823,0.990898609,0.990640879,0.990379512,0.99011457,0.989846051,0.989573956,0.989298224,0.989018977,0.988736153,0.988449752,0.988159776,0.987866163,0.987569034,0.987268329,0.986964107,0.986656249,0.986344814,0.986029863,0.985711277,0.985389173,0.985063493,0.984734297,0.984401464,0.984065115,0.98372519,0.983381748,0.98303473,0.982684135,0.982329965,0.981972277,0.981611073,0.981246233,0.980877936,0.980506003,0.980130613,0.979751647,0.979369104,0.978983045,0.978593409,0.978200257,0.977803588,0.977403402,0.97699964,0.976592362,0.976181567,0.975767195,0.975349307,0.974927902,0.974502981,0.974074543,0.973642528,0.973207057,0.972768068,0.972325504,0.971879482,0.971429884,0.97097683,0.970520198,0.97006011,0.969596505,0.969129384,0.968658805,0.96818465,0.967707038,0.967225909,0.966741264,0.966253161,0.965761542,0.965266466,0.964767873,0.964265764,0.963760197,0.963251173,0.962738633,0.962222576,0.961703122,0.961180091,0.960653663,0.960123718,0.959590316,0.959053457,0.958513141,0.957969308,0.957422018,0.956871331,0.956317127,0.955759466,0.955198348,0.954633772,0.95406574,0.95349431,0.952919364,0.95234102,0.951759219,0.951173961,0.950585306,0.949993193,0.949397624,0.948798597,0.948196173,0.947590351,0.946981072,0.946368337,0.945752203,0.945132673,0.944509685,0.9438833,0.943253517,0.942620337,0.9419837,0.941343665,0.940700293,0.940053463,0.939403176,0.938749611,0.938092589,0.93743217,0.936768353,0.936101139,0.935430586,0.934756637,0.934079289,0.933398545,0.932714462,0.932027042,0.931336164,0.930641949,0.929944396,0.929243445,0.928539157,0.927831531,0.927120507,0.926406145,0.925688446,0.924967408,0.924242973,0.92351526,0.92278415,0.922049761,0.921311975,0.92057091,0.919826448,0.919078708,0.91832763,0.917573273,0.916815579,0.916054547,0.915290177,0.914522529,0.913751602,0.912977338,0.912199795,0.911418915,0.910634756,0.909847319,0.909056604,0.908262551,0.907465219,0.90666467,0.905860782,0.905053616,0.904243231,0.903429508,0.902612567,0.901792347,0.90096885,0.900142133,0.899312139,0.898478866,0.897642374,0.896802604,0.895959675,0.895113409,0.894263983,0.893411279,0.892555296,0.891696155,0.890833795,0.889968157,0.88909936,0.888227344,0.887352049,0.886473596,0.885591924,0.884707093,0.883818984,0.882927775,0.882033288,0.881135643,0.880234778,0.879330814,0.878423572,0.87751323,0.876599669,0.87568295,0.874763072,0.873840034,0.872913837,0.871984482,0.871051908,0.870116293,0.869177461,0.868235469,0.867290378,0.866342187,0.865390778,0.864436328,0.863478661,0.862517953,0.861554086,0.86058712,0.859616995,0.85864383,0.857667506,0.856688082,0.855705559,0.854719996,0.853731275,0.852739513,0.851744652,0.850746691,0.849745691,0.848741591,0.847734451,0.846724212,0.845710933,0.844694555,0.843675137,0.842652678,0.841627181,0.840598643,0.839567065,0.838532448,0.837494791,0.836454093,0.835410416,0.834363639,0.833313942,0.832261145,0.831205368,0.830146611,0.829084814,0.828020036,0.826952279,0.825881481,0.824807763,0.823731005,0.822651327,0.821568668,0.820482969,0.81939435,0.818302751,0.81720823,0.81611073,0.815010309,0.813906848,0.812800527,0.811691225,0.810579002,0.809463859,0.808345795,0.80722481,0.806100845,0.80497402,0.803844273,0.802711666,0.801576078,0.800437629,0.79929626,0.79815203,0.797004879,0.795854867,0.794701993,0.793546259,0.792387605,0.791226089,0.790061772,0.788894534,0.787724495,0.786551535,0.785375774,0.784197211,0.783015728,0.781831443,0.780644357,0.77945447,0.778261721,0.777066171,0.77586782,0.774666607,0.773462653,0.772255898,0.77104634,0.769833982,0.768618882,0.76740092,0.766180217,0.764956772,0.763730526,0.762501538,0.761269808,0.760035336,0.758798063,0.757558107,0.756315351,0.755069911,0.753821671,0.752570748,0.751317143,0.750060797,0.748801649,0.747539878,0.746275425,0.74500823,0.743738353,0.742465794,0.741190553,0.73991257,0.738631964,0.737348735,0.736062765,0.734774172,0.733482897,0.732189,0.73089236,0.729593158,0.728291333,0.726986825,0.725679755,0.724370003,0.723057628,0.72174269,0.720425069,0.719104886,0.71778214,0.716456771,0.715128779,0.713798225,0.712465048,0.711129308,0.709791064,0.708450198,0.707106769,0.705760777,0.704412282,0.703061163,0.701707602,0.700351417,0.698992729,0.697631538,0.696267784,0.694901526,0.693532705,0.692161441,0.690787673,0.689411402,0.688032627,0.686651349,0.685267627,0.683881402,0.682492733,0.681101561,0.679707944,0.678311825,0.676913321,0.675512254,0.674108863,0.672702968,0.671294689,0.669883966,0.6684708,0.667055249,0.665637255,0.664216876,0.662794113,0.661368906,0.659941375,0.6585114,0.657079041,0.655644298,0.65420717,0.652767718,0.651325941,0.649881721,0.648435235,0.646986365,0.645535171,0.644081593,0.642625749,0.641167521,0.639707029,0.638244212,0.63677907,0.635311544,0.633841813,0.632369816,0.630895495,0.62941891,0.627939999,0.626458883,0.624975443,0.623489797,0.622001886,0.620511711,0.61901927,0.617524624,0.616027713,0.614528596,0.613027215,0.611523688,0.610017896,0.608509898,0.606999755,0.605487406,0.603972793,0.602456093,0.600937128,0.599416077,0.597892821,0.596367359,0.594839811,0.593309999,0.5917781,0.590244114,0.588707924,0.587169647,0.585629225,0.584086716,0.582542121,0.580995321,0.579446495,0.577895582,0.576342523,0.574787438,0.573230207,0.57167089,0.570109546,0.568546176,0.56698072,0.565413237,0.563843668,0.562272072,0.56069845,0.559122801,0.557545125,0.555965483,0.554383755,0.552800059,0.551214337,0.549626648,0.548036933,0.54644531,0.544851661,0.543256044,0.541658461,0.540058911,0.538457394,0.536854029,0.535248578,0.533641338,0.532032013,0.530420899,0.528807759,0.527192831,0.525575876,0.523957133,0.522336364,0.520713866,0.519089341,0.517462909,0.515834749,0.514204621,0.512572765,0.510938883,0.509303272,0.507665753,0.506026506,0.504385293,0.50274235,0.5010975,0.499450952,0.497802496,0.496152341,0.494500279,0.492846429,0.491190881,0.489533484,0.487874418,0.486213475,0.484550864,0.482886434,0.481220335,0.479552388,0.477882832,0.476211429,0.474538416,0.472863555,0.471187025,0.469508857,0.4678289,0.466147363,0.464464039,0.462779135,0.461092472,0.4594042,0.4577142,0.45602265,0.454329312,0.452634454,0.450937867,0.449239761,0.447539896,0.445838422,0.444135457,0.442430764,0.440724581,0.4390167,0.437307328,0.435596287,0.433883756,0.432169557,0.430453897,0.428736597,0.427017838,0.425297409,0.423575461,0.421852082,0.420127094,0.418400675,0.416672617,0.414943188,0.41321215,0.411479712,0.409745693,0.408010274,0.406273276,0.404534936,0.402795017,0.401053637,0.399310917,0.397566646,0.395821065,0.394073904,0.392325461,0.390575469,0.388824195,0.387071371,0.385317296,0.383561701,0.381804824,0.380046457,0.378286839,0.37652573,0.37476325,0.372999549,0.371234357,0.369467974,0.3677001,0.365931034,0.364160538,0.362388819,0.3606157,0.35884136,0.357065618,0.355288714,0.35351041,0.351730824,0.349950075,0.348167926,0.346384674,0.344600022,0.342814237,0.341027111,0.339238882,0.337449282,0.33565861,0.333866566,0.33207348,0.330279052,0.328483522,0.32668671,0.324888736,0.323089659,0.321289331,0.319487959,0.317685306,0.31588161,0.314076662,0.312270701,0.310463488,0.308655262,0.306845814,0.305035383,0.303223729,0.301410973,0.299597234,0.297782302,0.295966417,0.294149339,0.292331308,0.290512085,0.288691968,0.286870658,0.285048455,0.283225089,0.2814008,0.279575408,0.277749121,0.275921702,0.27409327,0.272263974,0.270433575,0.268602312,0.266769975,0.264936775,0.263102531,0.261267424,0.259431243,0.257594258,0.255756229,0.253917396,0.25207752,0.25023672,0.24839516,0.246552557,0.244709194,0.242864832,0.241019696,0.239173576,0.237326711,0.235478878,0.2336303,0.231780753,0.229930505,0.228079289,0.226227254,0.224374533,0.222520858,0.220666513,0.218811244,0.216955304,0.21509847,0.213240966,0.211382583,0.209523544,0.207663625,0.205803081,0.203941673,0.202079654,0.20021677,0.198353171,0.196488976,0.194623947,0.192758337,0.190891907,0.18902491,0.187157094,0.185288742,0.183419585,0.181549892,0.179679424,0.177808419,0.175936654,0.174064264,0.172191352,0.170317695,0.168443546,0.166568682,0.164693311,0.16281724,0.160940692,0.159063458,0.157185748,0.155307367,0.153428525,0.151549026,0.149669096,0.147788495,0.145907372,0.144025832,0.142143652,0.140261069,0.138377875,0.136494294,0.134610102,0.132725537,0.130840376,0.128954872,0.127068773,0.125182331,0.123295315,0.121407859,0.119520083,0.117631756,0.115743116,0.113853946,0.111964479,0.11007449,0.108184218,0.10629344,0.104402393,0.102510855,0.100619063,0.0987267867,0.0968341529,0.0949412882,0.093047969,0.0911544189,0.0892604291,0.0873662308,0.0854716003,0.0835767835,0.0816815421,0.0797861218,0.0778902918,0.0759943053,0.0740979239,0.0722013935,0.0703044757,0.068407312,0.0665100217,0.0646123663,0.0627145991,0.0608164817,0.0589182675,0.057019718,0.0551210828,0.053222131,0.0513231046,0.0494237728,0.0475243814,0.0456246994,0.0437248535,0.0418249667,0.0399248116,0.0380246304,0.0361241922,0.0342237428,0.0323230512,0.0304223597,0.0285214409,0.026620537,0.024719419,0.0228183288,0.0209170375,0.0190157909,0.0171143562,0.015212859,0.0133114262,0.0114098256,0.00950830337,0.00760662789,0.00570504367,0.00380331953,0.00190170098,-4.37113883e-08,0.99999851,0.999994159,0.999986768,0.999976516,0.999963343,0.99994719,0.999928117,0.999906123,0.999881148,0.999853313,0.999822497,0.999788761,0.999752045,0.999712467,0.999669909,0.999624431,0.999576032,0.999524713,0.999470413,0.999413192,0.999353051,0.999289989,0.999224007,0.999155045,0.999083161,0.999008358,0.998930633,0.998849988,0.998766363,0.998679876,0.99859041,0.998498023,0.998402715,0.998304486,0.998203278,0.998099208,0.997992158,0.997882187,0.997769296,0.997653484,0.997534752,0.997413099,0.997288465,0.997160971,0.997030497,0.996897161,0.996760845,0.996621609,0.996479452,0.996334374,0.996186376,0.996035457,0.995881617,0.995724857,0.995565176,0.995402575,0.995237052,0.99506861,0.994897246,0.994722962,0.994545758,0.994365633,0.994182587,0.99399662,0.993807733,0.993615925,0.993421257,0.993223608,0.993023098,0.992819607,0.992613256,0.992403984,0.992191792,0.991976678,0.991758704,0.99153775,0.991313934,0.991087198,0.990857542,0.990625024,0.990389526,0.990151167,0.989909887,0.989665747,0.989418626,0.989168644,0.988915741,0.988659978,0.988401294,0.988139689,0.987875223,0.987607837,0.98733753,0.987064362,0.986788273,0.986509323,0.986227453,0.985942662,0.98565501,0.985364437,0.985071003,0.984774709,0.984475493,0.984173357,0.983868361,0.983560503,0.983249724,0.982936025,0.982619524,0.982300103,0.981977761,0.981652617,0.981324553,0.980993569,0.980659783,0.980323076,0.979983449,0.97964102,0.979295671,0.97894752,0.978596389,0.978242457,0.977885664,0.977525949,0.977163434,0.976797998,0.976429701,0.976058543,0.975684524,0.975307643,0.974927902,0.9745453,0.974159837,0.973771513,0.973380327,0.972986341,0.972589433,0.972189665,0.971787095,0.971381664,0.970973313,0.97056222,0.970148206,0.969731331,0.969311655,0.968889117,0.968463778,0.968035579,0.967604518,0.967170596,0.966733873,0.966294289,0.965851903,0.965406656,0.964958608,0.964507699,0.964053929,0.963597357,0.963137984,0.96267581,0.962210715,0.961742878,0.96127218,0.960798681,0.96032238,0.959843218,0.959361255,0.958876491,0.958388865,0.957898498,0.957405269,0.956909239,0.956410408,0.955908775,0.955404341,0.954897106,0.954387069,0.95387423,0.953358591,0.952840149,0.952318907,0.951794863,0.951268017,0.95073843,0.950205982,0.949670792,0.9491328,0.948592067,0.948048532,0.947502196,0.946953058,0.946401179,0.945846498,0.945289075,0.944728851,0.944165885,0.943600118,0.943031549,0.942460299,0.941886246,0.941309392,0.940729797,0.94014746,0.93956238,0.9389745,0.938383877,0.937790513,0.937194407,0.9365955,0.93599391,0.935389519,0.934782386,0.934172571,0.933559954,0.932944596,0.932326555,0.931705773,0.931082189,0.930455923,0.929826915,0.929195166,0.928560734,0.92792356,0.927283645,0.926640987,0.925995648,0.925347567,0.924696803,0.924043357,0.92338711,0.922728181,0.922066569,0.921402276,0.92073524,0.920065522,0.919393063,0.918717921,0.918040097,0.917359591,0.916676402,0.915990472,0.915301919,0.914610624,0.913916647,0.913220048,0.912520707,0.911818743,0.911114037,0.910406709,0.909696698,0.908984005,0.908268631,0.907550633,0.906829953,0.906106591,0.905380607,0.90465194,0.903920591,0.903186619,0.902450025,0.901710749,0.90096885,0.900224328,0.899477124,0.898727298,0.897974849,0.897219718,0.896461964,0.895701587,0.894938588,0.894172966,0.893404722,0.892633855,0.891860366,0.891084254,0.890305579,0.889524221,0.888740301,0.887953758,0.887164593,0.886372805,0.885578454,0.88478148,0.883981943,0.883179784,0.882375062,0.881567717,0.880757809,0.879945338,0.879130244,0.878312588,0.877492309,0.876669526,0.875844181,0.875016212,0.874185681,0.873352587,0.87251693,0.87167871,0.870837927,0.86999464,0.869148731,0.868300319,0.867449343,0.866595805,0.865739763,0.864881158,0.86402005,0.863156378,0.862290144,0.861421406,0.860550106,0.859676361,0.858799994,0.857921183,0.857039809,0.856155932,0.855269551,0.854380727,0.853489339,0.852595389,0.851698995,0.850800097,0.849898696,0.848994792,0.848088443,0.847179532,0.846268177,0.845354378,0.844438016,0.84351927,0.842597961,0.841674268,0.840748012,0.839819312,0.838888168,0.837954581,0.83701849,0.836079955,0.835138977,0.834195554,0.833249688,0.832301378,0.831350625,0.830397427,0.829441786,0.828483701,0.827523232,0.826560259,0.825594902,0.824627161,0.823656976,0.822684348,0.821709275,0.820731878,0.819752038,0.818769753,0.817785144,0.816798091,0.815808594,0.814816773,0.813822508,0.812825918,0.811826885,0.810825467,0.809821725,0.808815539,0.807807028,0.806796193,0.805782914,0.804767311,0.803749323,0.802728951,0.801706254,0.800681174,0.799653769,0.798624039,0.797591925,0.796557546,0.795520723,0.794481695,0.793440223,0.792396486,0.791350365,0.790301979,0.789251268,0.788198173,0.787142813,0.786085188,0.785025179,0.783962905,0.782898366,0.781831443,0.780762315,0.779690862,0.778617144,0.777541101,0.776462793,0.775382161,0.774299324,0.773214161,0.772126734,0.771037102,0.769945145,0.768850923,0.767754495,0.766655803,0.765554845,0.764451683,0.763346195,0.762238503,0.761128604,0.760016441,0.758902073,0.757785439,0.756666601,0.755545557,0.754422307,0.753296852,0.752169132,0.751039267,0.749907136,0.7487728,0.747636318,0.746497631,0.745356739,0.744213641,0.743068397,0.741920948,0.740771353,0.739619553,0.738465607,0.737309515,0.736151218,0.734990716,0.733828127,0.732663393,0.731496453,0.730327427,0.729156196,0.727982879,0.726807356,0.725629747,0.724450052,0.723268211,0.722084224,0.720898092,0.719709873,0.718519568,0.717327118,0.716132581,0.714935958,0.71373719,0.712536335,0.711333394,0.710128427,0.708921313,0.707712173,0.706500888,0.705287576,0.704072177,0.702854693,0.701635182,0.700413585,0.699189961,0.697964251,0.696736515,0.695506692,0.694274902,0.693041086,0.691805184,0.690567255,0.6893273,0.688085318,0.686841309,0.685595274,0.684347272,0.683097243,0.681845188,0.680591166,0.679335177,0.678077161,0.676817119,0.67555511,0.674291134,0.673025191,0.671757221,0.670487344,0.669215441,0.66794163,0.666665792,0.665388048,0.664108336,0.662826717,0.661543131,0.660257578,0.658970118,0.65768069,0.656389356,0.655096054,0.653800905,0.652503788,0.651204765,0.649903834,0.648600936,0.64729625,0.645989597,0.644681096,0.643370628,0.642058313,0.64074409,0.63942802,0.638110042,0.636790216,0.635468543,0.634144962,0.632819533,0.631492257,0.630163133,0.628832161,0.627499342,0.626164675,0.62482816,0.623489797,0.622149646,0.620807648,0.619463801,0.618118167,0.616770685,0.615421474,0.614070415,0.612717569,0.611362875,0.610006452,0.608648181,0.607288122,0.605926335,0.6045627,0.603197336,0.601830184,0.600461304,0.599090636,0.597718179,0.596344054,0.59496814,0.593590438,0.592211008,0.590829909,0.589446962,0.588062346,0.586676002,0.585287988,0.583898187,0.582506657,0.581113458,0.57971859,0.578321993,0.576923668,0.575523674,0.574122012,0.57271862,0.57131356,0.569906831,0.568498433,0.567088366,0.56567663,0.564263225,0.562848151,0.561431527,0.560013175,0.558593154,0.557171524,0.555748224,0.554323375,0.552896798,0.55146867,0.550038934,0.548607528,0.547174513,0.545739949,0.544303775,0.542865992,0.541426599,0.539985597,0.538543046,0.537098885,0.535653234,0.534205973,0.532757044,0.531306684,0.529854655,0.528401196,0.526946068,0.52548945,0.524031222,0.522571564,0.521110296,0.519647598,0.518183231,0.516717434,0.515250206,0.513781309,0.512310982,0.510839045,0.509365797,0.50789088,0.506414592,0.504936695,0.503457427,0.501976609,0.500494421,0.499010742,0.497525483,0.496038884,0.494550735,0.493061215,0.491570175,0.490077764,0.488583833,0.487088561,0.485591769,0.484093636,0.482594013,0.481093049,0.479590684,0.478086799,0.476581633,0.475074947,0.473566979,0.472057492,0.470546752,0.469034523,0.467521012,0.466006041,0.464489818,0.462972105,0.46145314,0.459932804,0.458411038,0.45688802,0.455363572,0.453837872,0.452310771,0.450782418,0.449252635,0.44772166,0.446189255,0.444655627,0.443120599,0.441584378,0.440046877,0.438507974,0.43696788,0.435426414,0.433883756,0.432339728,0.430794537,0.429247975,0.427700251,0.426151186,0.424600959,0.42304951,0.421496689,0.419942737,0.418387473,0.416831046,0.415273309,0.413714468,0.412154317,0.410593033,0.409030467,0.407466799,0.405901819,0.404335737,0.402768493,0.401199967,0.399630368,0.398059487,0.396487534,0.394914329,0.393340051,0.391764522,0.390187949,0.388610125,0.387031257,0.385451168,0.383870035,0.3822878,0.380704314,0.379119813,0.377534121,0.375947416,0.374359488,0.372770578,0.371180445,0.369589359,0.36799708,0.366403818,0.364809364,0.363213986,0.361617506,0.360019863,0.358421296,0.356821537,0.355220854,0.353619009,0.35201624,0.350412339,0.348807514,0.347201556,0.345594674,0.343986809,0.342377812,0.34076792,0.339156896,0.337545007,0.335932016,0.334318161,0.332703203,0.331087381,0.329470456,0.327852696,0.326233864,0.324614197,0.322993547,0.321371853,0.319749326,0.318125755,0.316501349,0.314875931,0.313249677,0.311622411,0.30999431,0.308365226,0.306735307,0.305104405,0.303472728,0.301840127,0.300206542,0.298572212,0.29693687,0.295300782,0.293663681,0.292025864,0.290387064,0.288747549,0.28710705,0.285465837,0.283823639,0.282180756,0.280537039,0.278892368,0.277247012,0.275600731,0.273953736,0.272305846,0.270657241,0.269007772,0.267357588,0.265706509,0.264054775,0.262402266,0.260748893,0.259094834,0.257439911,0.255784363,0.25412792,0.252470881,0.250812948,0.249154434,0.247495055,0.245835066,0.244174227,0.242512807,0.240850657,0.239187703,0.237524152,0.235859796,0.23419486,0.232529119,0.230862811,0.229195714,0.227528051,0.225859612,0.224190623,0.222520858,0.220850572,0.219179615,0.217507914,0.21583569,0.214162707,0.212489232,0.210814998,0.209140271,0.207464799,0.205788851,0.204112172,0.202435017,0.200757161,0.199078813,0.197399899,0.19572027,0.194040194,0.192359433,0.190678224,0.188996345,0.187314019,0.185631022,0.183947608,0.182263538,0.180579036,0.178894013,0.177208349,0.175522283,0.173835576,0.172148496,0.170460775,0.168772683,0.167083964,0.165394887,0.1637052,0.16201514,0.160324499,0.158633515,0.156942055,0.155250013,0.153557628,0.151864693,0.150171414,0.148477584,0.146783441,0.145088732,0.14339374,0.141698197,0.140002355,0.138305977,0.136609316,0.134912252,0.133214682,0.131516844,0.129818484,0.128119871,0.126420766,0.124721408,0.123021565,0.121321477,0.119620919,0.117920123,0.116218865,0.114517383,0.112815574,0.111113302,0.10941083,0.107707918,0.106004804,0.104301266,0.102597542,0.100893393,0.0991890654,0.0974843353,0.0957794264,0.0940742493,0.0923686698,0.0906629413,0.0889568254,0.087250568,0.085543938,0.0838371739,0.0821300447,0.0804227889,0.0787151828,0.0770074651,0.0752994046,0.0735912398,0.0718828589,0.0701741502,0.0684653521,0.0667562336,0.0650470406,0.0633375347,0.0616279654,0.0599180944,0.0582081638,0.0564979464,0.0547876842,0.053077139,0.0513665564,0.0496558249,0.0479448289,0.0462338142,0.0445225388,0.0428112559,0.0410997272,0.0393881947,0.0376764312,0.0359646752,0.034252692,0.0325407311,0.0308285542,0.0291164052,0.0274041705,0.0256917384,0.0239793472,0.0222667679,0.0205542427,0.0188415386,0.0171288978,0.0154160867,0.0137033509,0.011990455,0.0102776429,0.00856480096,0.00685181422,0.00513892714,0.00342590525,0.0017129929,-4.37113883e-08,0.99998796,0.99995178,0.999891579,0.999807239,0.999698818,0.999566317,0.999409735,0.999229014,0.999024272,0.99879545,0.998542547,0.998265624,0.997964621,0.997639537,0.997290432,0.996917307,0.996520162,0.996099055,0.995653868,0.99518472,0.99469161,0.99417448,0.993633449,0.993068457,0.992479563,0.991866708,0.991229951,0.990569353,0.989884853,0.989176512,0.988444328,0.987688363,0.986908555,0.986104965,0.985277653,0.984426558,0.9835518,0.98265326,0.981731117,0.980785251,0.979815841,0.978822768,0.977806091,0.976765871,0.975702107,0.974614859,0.973504126,0.972369909,0.971212268,0.970031261,0.96882683,0.967599094,0.966347992,0.965073645,0.963776052,0.962455213,0.961111188,0.959744036,0.958353758,0.956940353,0.955503881,0.954044402,0.952561915,0.95105654,0.949528158,0.947976947,0.946402907,0.944806039,0.943186402,0.941544056,0.939879,0.938191354,0.936481059,0.934748173,0.932992816,0.931214929,0.92941463,0.92759192,0.925746858,0.923879504,0.921989918,0.920078099,0.918144047,0.916187942,0.914209723,0.912209511,0.910187304,0.908143163,0.906077147,0.903989315,0.901879668,0.899748266,0.897595227,0.895420551,0.893224299,0.891006529,0.888767242,0.886506617,0.884224594,0.881921232,0.879596651,0.87725091,0.874884009,0.872496009,0.870086968,0.867657006,0.865206122,0.862734377,0.86024183,0.857728601,0.855194688,0.852640152,0.850065112,0.847469568,0.84485358,0.842217267,0.839560628,0.836883783,0.834186733,0.831469595,0.828732431,0.825975358,0.823198318,0.82040143,0.817584813,0.814748466,0.811892509,0.809017003,0.806121945,0.803207517,0.800273716,0.797320664,0.794348359,0.791356921,0.78834641,0.785316885,0.782268465,0.77920121,0.776115179,0.773010433,0.76988703,0.76674515,0.763584733,0.760405958,0.757208824,0.753993511,0.750759959,0.747508347,0.744238675,0.740951121,0.737645686,0.734322488,0.730981588,0.727623105,0.724247098,0.720853567,0.717442751,0.71401459,0.710569263,0.707106769,0.703627229,0.70013082,0.696617484,0.693087339,0.689540505,0.685977101,0.682397127,0.678800702,0.675187945,0.671558917,0.667913735,0.6642524,0.660575092,0.656881869,0.653172791,0.649448037,0.645707607,0.641951621,0.638180137,0.634393275,0.630591154,0.626773834,0.622941375,0.619093955,0.615231574,0.611354411,0.607462466,0.603555918,0.599634826,0.59569931,0.59174937,0.587785244,0.583806932,0.579814494,0.575808167,0.571787953,0.567753911,0.563706219,0.559644938,0.555570185,0.551482022,0.547380626,0.543265998,0.539138258,0.534997642,0.530843973,0.526677668,0.522498488,0.518306911,0.514102697,0.509886205,0.505657315,0.501416326,0.497163206,0.492898166,0.488621175,0.484332502,0.480032057,0.475720137,0.471396655,0.467061937,0.462715834,0.458358705,0.453990519,0.449611306,0.445221335,0.440820575,0.436409265,0.431987345,0.427555114,0.423112482,0.418659747,0.414196819,0.409724027,0.405241281,0.400748849,0.396246642,0.391735017,0.387213826,0.382683426,0.378143698,0.37359497,0.369037122,0.364470482,0.359894961,0.355310887,0.350718141,0.346117049,0.341507494,0.336889833,0.332263947,0.327630162,0.322988361,0.318338901,0.313681662,0.309016973,0.304344833,0.299665242,0.294978559,0.290284634,0.285583854,0.28087604,0.276161611,0.271440417,0.266712755,0.261978596,0.257238209,0.252491534,0.247738868,0.242980123,0.23821564,0.233445302,0.22866945,0.22388798,0.219101235,0.214309081,0.209511891,0.20470953,0.199902356,0.195090234,0.190273553,0.185452148,0.180626407,0.175796196,0.170961857,0.166123286,0.161280826,0.156434372,0.151584253,0.146730497,0.141873077,0.137012348,0.132148221,0.12728101,0.122410625,0.117537402,0.112661228,0.107782461,0.102900982,0.0980171338,0.093130812,0.0882423595,0.0833516717,0.078459084,0.0735644922,0.0686682463,0.0637702197,0.0588707849,0.0539698079,0.04906765,0.0441641919,0.0392597876,0.0343543179,0.0294481423,0.0245411359,0.0196336564,0.0147255864,0.00981727988,0.00490861759,-4.37113883e-08,0.999996781,0.999987185,0.999971092,0.999948621,0.999919772,0.999884486,0.999842763,0.999794602,0.999740064,0.999679089,0.999611676,0.999537885,0.999457657,0.999370992,0.999277949,0.999178529,0.999072611,0.998960316,0.998841643,0.998716533,0.998584986,0.998447061,0.998302698,0.998151958,0.997994781,0.997831225,0.997661233,0.997484863,0.997302115,0.99711293,0.996917307,0.996715367,0.996506989,0.996292233,0.996071041,0.99584347,0.995609522,0.995369196,0.995122433,0.994869351,0.994609833,0.994343936,0.994071662,0.993793011,0.993507981,0.993216574,0.992918789,0.992614627,0.992304087,0.991987169,0.991663933,0.99133426,0.990998268,0.990655899,0.990307212,0.989952147,0.989590704,0.989222944,0.988848805,0.988468349,0.988081515,0.987688363,0.987288833,0.986882985,0.986470819,0.986052334,0.985627472,0.985196292,0.984758854,0.984315038,0.983864903,0.983408451,0.982945681,0.982476652,0.982001245,0.98151958,0.981031656,0.980537355,0.980036795,0.979529917,0.979016781,0.978497386,0.977971673,0.977439702,0.976901412,0.976356924,0.975806117,0.975249052,0.974685729,0.974116147,0.973540306,0.972958267,0.972369909,0.971775353,0.971174538,0.970567524,0.969954252,0.969334781,0.968709052,0.968077123,0.967438996,0.96679461,0.966144025,0.965487301,0.964824319,0.964155197,0.963479817,0.962798297,0.962110639,0.961416721,0.960716665,0.960010469,0.959298074,0.95857954,0.957854867,0.957123995,0.956387043,0.955643892,0.954894662,0.954139233,0.953377724,0.952610135,0.951836348,0.95105654,0.950270534,0.949478507,0.948680341,0.947876096,0.947065771,0.946249366,0.945426881,0.944598317,0.943763733,0.942923069,0.942076325,0.941223562,0.940364778,0.939499915,0.938629031,0.937752128,0.936869204,0.93598026,0.935085356,0.934184372,0.933277428,0.932364523,0.931445599,0.930520713,0.929589808,0.928653002,0.927710235,0.926761448,0.925806761,0.924846113,0.923879504,0.922907054,0.921928585,0.920944273,0.919954002,0.918957829,0.917955756,0.916947782,0.915933967,0.914914191,0.913888633,0.912857175,0.911819816,0.910776675,0.909727633,0.90867281,0.907612085,0.906545579,0.905473232,0.904395103,0.903311133,0.902221382,0.901125848,0.900024533,0.898917437,0.897804558,0.896685898,0.895561516,0.894431353,0.893295467,0.892153859,0.891006529,0.889853477,0.888694704,0.887530208,0.886360049,0.885184169,0.884002626,0.882815421,0.881622493,0.880423963,0.87921977,0.878009915,0.876794457,0.875573337,0.874346614,0.873114288,0.871876359,0.870632827,0.869383693,0.868128955,0.866868675,0.865602851,0.864331424,0.863054514,0.861772001,0.860484004,0.859190464,0.857891381,0.856586814,0.855276763,0.853961229,0.852640152,0.851313651,0.849981666,0.848644257,0.847301424,0.845953047,0.844599307,0.843240142,0.841875553,0.8405056,0.839130223,0.837749481,0.836363316,0.834971845,0.833574951,0.832172751,0.830765188,0.82935226,0.827934086,0.826510549,0.825081706,0.823647559,0.822208107,0.820763469,0.819313467,0.817858279,0.816397786,0.814932048,0.813461125,0.811984956,0.810503602,0.809017003,0.807525218,0.806028247,0.80452615,0.803018808,0.8015064,0.799988806,0.798466086,0.796938241,0.795405209,0.793867171,0.792324007,0.790775716,0.789222419,0.787663996,0.786100507,0.78453207,0.782958508,0.781379938,0.779796362,0.778207839,0.776614249,0.775015652,0.773412108,0.771803617,0.770190179,0.768571794,0.766948402,0.765320182,0.763686955,0.76204896,0.760405958,0.758758128,0.75710541,0.755447805,0.753785431,0.75211817,0.750446081,0.748769164,0.747087479,0.745400965,0.743709624,0.742013574,0.740312755,0.738607168,0.736896873,0.735181808,0.733462036,0.731737554,0.730008423,0.728274524,0.726535976,0.724792778,0.723044932,0.721292436,0.719535351,0.717773557,0.716007233,0.714236319,0.712460756,0.710680664,0.708895981,0.707106769,0.705313027,0.703514755,0.701711953,0.699904621,0.698092818,0.696276605,0.694455862,0.692630649,0.690800965,0.68896693,0.687128425,0.685285509,0.683438182,0.681586504,0.679730415,0.677869976,0.676005185,0.674136043,0.672262609,0.670384884,0.668502808,0.66661644,0.66472578,0.66283083,0.660931706,0.659028292,0.657120645,0.655208766,0.653292775,0.651372492,0.649448037,0.647519469,0.645586669,0.643649817,0.641708732,0.639763594,0.637814343,0.63586098,0.633903563,0.631942034,0.629976451,0.628006876,0.626033247,0.624055624,0.622073948,0.620088279,0.618098617,0.61610508,0.61410749,0.612105966,0.610100567,0.608091176,0.606077969,0.604060829,0.602039814,0.600014925,0.597986221,0.595953643,0.593917251,0.591877043,0.589833021,0.587785244,0.585733712,0.583678365,0.581619263,0.579556465,0.577489972,0.575419784,0.57334584,0.571268201,0.569186926,0.567102015,0.565013468,0.562921286,0.560825467,0.558726013,0.556623101,0.554516494,0.552406371,0.55029273,0.548175514,0.54605484,0.54393059,0.541802824,0.539671719,0.537537038,0.535398901,0.533257365,0.531112373,0.528963983,0.526812196,0.524657071,0.522498608,0.520336747,0.518171489,0.516002953,0.513831079,0.511655927,0.509477496,0.507295787,0.5051108,0.502922595,0.50073123,0.498536587,0.496338725,0.494137675,0.491933465,0.489726096,0.487515569,0.485301942,0.483085185,0.480865419,0.478642464,0.476416439,0.474187374,0.47195524,0.469720095,0.467481941,0.465240747,0.462996602,0.460749477,0.458499491,0.456246465,0.453990519,0.451731652,0.449469894,0.447205245,0.444937706,0.442667335,0.440394104,0.43811816,0.435839295,0.433557659,0.431273222,0.428986013,0.426696032,0.42440334,0.422107905,0.419809788,0.41750893,0.415205538,0.412899375,0.410590529,0.408279091,0.405965,0.403648317,0.401329041,0.399007171,0.396682769,0.394355923,0.392026424,0.389694393,0.387359887,0.385022908,0.382683426,0.3803415,0.37799713,0.375650346,0.373301148,0.370949656,0.36859566,0.366239309,0.363880634,0.361519575,0.359156221,0.356790572,0.354422629,0.352052391,0.349680036,0.347305298,0.344928324,0.342549175,0.340167791,0.337784231,0.335398525,0.333010644,0.330620617,0.328228503,0.325834364,0.323438019,0.321039617,0.318639159,0.316236615,0.313832074,0.311425507,0.309016973,0.306606412,0.304194033,0.301779568,0.299363166,0.296944827,0.29452461,0.292102486,0.289678484,0.287252635,0.284824938,0.282395422,0.279964179,0.277531058,0.275096148,0.272659451,0.270221025,0.26778087,0.265338957,0.262895375,0.260450095,0.258003265,0.255554676,0.253104419,0.250652552,0.248199075,0.245744005,0.243287355,0.24082914,0.23836939,0.235908106,0.233445421,0.230981112,0.228515327,0.226048082,0.223579392,0.221109256,0.21863769,0.216164738,0.2136904,0.211214796,0.208737716,0.20625931,0.203779578,0.201298535,0.198816195,0.196332574,0.193847701,0.191361591,0.188874245,0.18638581,0.18389605,0.181405112,0.178913012,0.176419765,0.173925385,0.171429887,0.168933302,0.166435614,0.163936988,0.161437184,0.158936337,0.156434491,0.153931618,0.151427776,0.14892295,0.146417171,0.143910453,0.141402811,0.138894379,0.136384934,0.133874625,0.131363451,0.128851429,0.126338586,0.123824924,0.121310472,0.118795246,0.116279371,0.113762632,0.111245163,0.108726978,0.106208093,0.103688531,0.101168305,0.0986474231,0.0961259156,0.0936037898,0.0910811722,0.0885578617,0.0860339776,0.083509542,0.0809845775,0.078459084,0.0759330913,0.0734066069,0.0708796531,0.068352364,0.0658245236,0.063296251,0.0607675761,0.05823851,0.0557090715,0.0531792752,0.0506491363,0.0481186733,0.0455879048,0.0430569574,0.0405256152,0.037994016,0.0354621708,0.0329300985,0.0303978138,0.0278653353,0.0253326762,0.022799857,0.0202670097,0.0177339111,0.0152007006,0.0126673924,0.0101340031,0.00760054821,0.00506704487,0.0025335087,-4.37113883e-08,0.999996483,0.999985814,0.999968112,0.999943316,0.999911427,0.999872386,0.999826372,0.999773204,0.999712944,0.999645591,0.999571204,0.999489665,0.999401093,0.999305427,0.999202669,0.999092877,0.998975933,0.998851955,0.998720825,0.998582721,0.998437464,0.998285174,0.998125732,0.997959316,0.997785747,0.997605145,0.99741745,0.997222722,0.9970209,0.996811986,0.996596038,0.996373057,0.996142983,0.995905817,0.995661616,0.995410383,0.995152056,0.994886696,0.994614244,0.994334817,0.994048297,0.993754745,0.993454099,0.993146479,0.992831767,0.99251008,0.992181301,0.991845489,0.991502702,0.991152823,0.99079597,0.990432084,0.990061164,0.989683211,0.989298224,0.988906264,0.98850733,0.988101304,0.987688363,0.987268329,0.986841381,0.986407399,0.985966444,0.985518456,0.985063493,0.984601617,0.984132707,0.983656824,0.983173966,0.982684135,0.982187331,0.981683612,0.98117286,0.980655193,0.980130613,0.979599059,0.979060531,0.978515089,0.977962673,0.977403402,0.976837158,0.976264,0.975683868,0.975096881,0.974502981,0.973902166,0.973294437,0.972679794,0.972058296,0.971429884,0.970794618,0.970152438,0.969503403,0.968847454,0.96818465,0.967514992,0.966838479,0.966155112,0.96546495,0.964767873,0.964063942,0.963353217,0.962635696,0.961911321,0.961180091,0.960442126,0.959697306,0.958945692,0.958187222,0.957422018,0.956650019,0.955871284,0.955085695,0.95429337,0.95349431,0.952688456,0.951875865,0.95105654,0.95023042,0.949397624,0.948558033,0.947711766,0.946858764,0.945999086,0.945132673,0.944259584,0.94337976,0.94249326,0.941600084,0.940700293,0.939793766,0.938880563,0.937960744,0.937034249,0.936101139,0.935161412,0.934215009,0.933261991,0.932302415,0.931336164,0.930363357,0.929383934,0.928397894,0.927405298,0.926406145,0.925400436,0.924388111,0.923369288,0.92234391,0.921311975,0.920273542,0.919228554,0.918177068,0.917119026,0.916054547,0.914983511,0.913906038,0.912822068,0.91173166,0.910634756,0.909531415,0.908421636,0.907305419,0.906182706,0.905053616,0.903918147,0.902776241,0.901627898,0.900473237,0.899312139,0.898144662,0.896970868,0.895790637,0.894604146,0.893411219,0.892212033,0.891006529,0.889794648,0.888576508,0.887352049,0.886121333,0.884884298,0.883641005,0.882391453,0.881135643,0.879873574,0.878605306,0.87733078,0.876050055,0.874763072,0.873469949,0.872170568,0.870865047,0.869553328,0.868235469,0.866911471,0.865581334,0.864245057,0.862902641,0.861554086,0.860199451,0.858838677,0.857471824,0.85609895,0.854719996,0.853334963,0.851943851,0.850546718,0.849143624,0.847734451,0.846319258,0.844898045,0.843470871,0.842037737,0.840598643,0.839153588,0.837702572,0.836245596,0.83478272,0.833313942,0.831839204,0.830358565,0.828872085,0.827379763,0.825881481,0.824377418,0.822867513,0.821351767,0.819830179,0.818302751,0.8167696,0.815230548,0.813685834,0.812135279,0.810579002,0.809017003,0.807449222,0.805875719,0.804296553,0.802711666,0.801121056,0.799524724,0.79792279,0.796315253,0.794701993,0.793083131,0.791458666,0.789828539,0.788192868,0.786551535,0.784904718,0.783252239,0.781594276,0.77993077,0.778261721,0.776587129,0.774907112,0.773221552,0.771530509,0.769833982,0.768131971,0.766424596,0.764711738,0.762993455,0.761269808,0.759540737,0.757806301,0.756066501,0.754321277,0.752570748,0.750814855,0.749053717,0.747287214,0.745515406,0.743738353,0.741955996,0.740168393,0.738375545,0.736577451,0.734774172,0.732965589,0.731151879,0.729332983,0.727508962,0.725679755,0.723845363,0.722005904,0.720161259,0.718311548,0.716456771,0.714596808,0.712731898,0.710861862,0.708986819,0.707106769,0.705221713,0.70333159,0.701436579,0.699536502,0.697631538,0.695721567,0.693806708,0.691886902,0.689962208,0.688032627,0.686098158,0.684158862,0.682214677,0.680265665,0.678311825,0.676353157,0.67438972,0.672421515,0.670448542,0.6684708,0.666488349,0.66450119,0.662509263,0.660512686,0.6585114,0.656505406,0.654494822,0.652479529,0.650459707,0.648435235,0.646406174,0.644372523,0.642334282,0.640291512,0.638244152,0.636192322,0.634135962,0.632075131,0.63000983,0.627939999,0.625865757,0.623787105,0.621704042,0.619616508,0.617524564,0.615428329,0.613327682,0.611222684,0.609113395,0.606999755,0.604881823,0.6027596,0.600633085,0.598502338,0.5963673,0.594228089,0.592084646,0.589937031,0.587785244,0.585629225,0.583469152,0.581304848,0.579136491,0.576964021,0.574787378,0.572606742,0.570421994,0.568233252,0.566040456,0.563843668,0.561642885,0.559438109,0.5572294,0.555016696,0.5528,0.550579488,0.548355043,0.546126723,0.543894529,0.541658461,0.539418578,0.537174821,0.534927309,0.532675982,0.530420899,0.528162003,0.52589947,0.523633122,0.52136302,0.519089341,0.516811848,0.514530838,0.512246072,0.50995779,0.507665753,0.505370259,0.50307107,0.500768363,0.498462081,0.496152222,0.493838966,0.491522104,0.489201844,0.486878037,0.484550864,0.482220173,0.479886174,0.477548629,0.475207746,0.472863555,0.470515937,0.46816507,0.465810806,0.463453323,0.461092472,0.458728433,0.456361026,0.453990519,0.451616675,0.449239641,0.446859539,0.444476128,0.442089707,0.439700007,0.437307328,0.43491143,0.432512581,0.430110514,0.427705437,0.425297409,0.422886282,0.420472264,0.418055147,0.415635169,0.41321215,0.410786301,0.408357441,0.405925781,0.403491139,0.401053637,0.398613423,0.396170259,0.393724382,0.391275615,0.388824195,0.386369884,0.383912981,0.381453216,0.378990769,0.37652573,0.374057919,0.371587545,0.369114459,0.366638839,0.364160538,0.361679733,0.359196275,0.356710285,0.354221851,0.351730824,0.349237382,0.346741378,0.34424302,0.341742098,0.339238882,0.336733133,0.334225118,0.33171463,0.329201788,0.32668671,0.324169219,0.321649551,0.31912747,0.316603243,0.314076662,0.311547965,0.309016973,0.306483746,0.303948492,0.301410973,0.298871398,0.296329618,0.29378584,0.291239887,0.288691968,0.286141872,0.2835899,0.281035781,0.278479666,0.275921702,0.273361653,0.270799786,0.268235892,0.26567021,0.263102531,0.260533094,0.25796169,0.255388469,0.252813548,0.25023672,0.247658253,0.245077893,0.242495924,0.239912108,0.237326711,0.234739527,0.232150778,0.229560271,0.226968154,0.224374533,0.221779197,0.219182417,0.216583952,0.213984087,0.211382583,0.208779693,0.206175208,0.203569263,0.200961992,0.198353171,0.195743069,0.193131462,0.190518603,0.187904283,0.185288742,0.18267177,0.180053502,0.177434072,0.174813271,0.172191352,0.169568092,0.166943744,0.1643181,0.161691412,0.159063458,0.156434491,0.153804287,0.15117301,0.14854078,0.145907372,0.143273041,0.140637591,0.138001248,0.135363817,0.132725537,0.130086213,0.127445951,0.124804914,0.122162871,0.119520083,0.116876327,0.114231862,0.111586466,0.1089404,0.10629344,0.103645846,0.100997403,0.098348245,0.0956985056,0.093047969,0.0903968886,0.0877450481,0.0850927085,0.0824396461,0.0797861218,0.0771319121,0.074477151,0.0718219802,0.0691661835,0.0665100217,0.0638532639,0.0611961707,0.0585385263,0.0558805875,0.053222131,0.0505634174,0.0479042269,0.0452446975,0.0425849631,0.0399248116,0.0372644961,0.0346037932,0.0319429673,0.0292817969,0.026620537,0.0239589699,0.0212972313,0.0186354611,0.0159734413,0.0133114262,0.0106491977,0.00798701309,0.00532465242,0.00266237347,-4.37113883e-08,0.999996245,0.999985099,0.999966443,0.999940276,0.999906719,0.999865651,0.999817193,0.999761224,0.999697745,0.999626875,0.999548554,0.999462724,0.999369442,0.999268711,0.999160528,0.999044895,0.998921812,0.998791277,0.998653233,0.998507798,0.998354912,0.998194516,0.998026729,0.997851491,0.997668743,0.997478604,0.997281015,0.997075975,0.996863544,0.996643603,0.996416271,0.996181488,0.995939255,0.995689571,0.995432496,0.995167971,0.994896054,0.994616687,0.99432987,0.994035661,0.993734062,0.993425012,0.993108511,0.992784679,0.992453396,0.992114723,0.991768599,0.991415143,0.991054237,0.99068594,0.990310252,0.989927173,0.989536762,0.989138901,0.988733649,0.988321066,0.987901092,0.987473726,0.98703903,0.986596942,0.986147463,0.985690653,0.985226512,0.98475498,0.984276116,0.983789921,0.983296394,0.982795477,0.982287228,0.981771708,0.981248796,0.980718613,0.980181098,0.979636252,0.979084074,0.978524625,0.977957845,0.977383792,0.976802468,0.976213813,0.975617886,0.975014687,0.974404216,0.973786414,0.973161399,0.972529113,0.971889555,0.971242785,0.970588744,0.96992743,0.969258904,0.968583167,0.967900157,0.967209935,0.966512501,0.965807855,0.965096056,0.964376986,0.963650703,0.962917268,0.962176681,0.961428821,0.960673869,0.959911704,0.959142387,0.958365917,0.957582295,0.95679152,0.955993593,0.955188572,0.9543764,0.953557074,0.952730656,0.951897144,0.95105654,0.950208783,0.949353933,0.94849205,0.947623074,0.946747005,0.945863903,0.944973707,0.944076478,0.943172216,0.942260921,0.941342592,0.94041723,0.939484835,0.938545406,0.937599003,0.936645627,0.935685217,0.934717834,0.933743477,0.932762146,0.931773901,0.930778682,0.92977649,0.928767383,0.927751303,0.926728308,0.925698459,0.924661636,0.923617959,0.922567368,0.921509862,0.920445502,0.919374287,0.918296218,0.917211294,0.916119516,0.915020883,0.913915455,0.912803173,0.911684096,0.910558224,0.909425557,0.908286095,0.907139838,0.905986845,0.904827058,0.903660536,0.902487218,0.901307225,0.900120497,0.898927033,0.897726893,0.896520019,0.895306468,0.894086242,0.89285934,0.891625822,0.890385568,0.889138699,0.887885213,0.886625051,0.885358334,0.884085,0.882805049,0.881518483,0.88022536,0.878925681,0.877619445,0.876306653,0.874987364,0.873661458,0.872329116,0.870990217,0.869644821,0.868292928,0.866934597,0.865569711,0.864198446,0.862820685,0.861436486,0.86004591,0.858648896,0.857245445,0.855835617,0.85441941,0.852996767,0.851567805,0.850132525,0.848690867,0.847242832,0.845788538,0.844327927,0.842860997,0.841387749,0.839908242,0.838422477,0.836930454,0.835432172,0.833927691,0.832416952,0.830900013,0.829376876,0.82784754,0.826312006,0.824770331,0.823222518,0.821668506,0.820108414,0.818542242,0.816969872,0.815391421,0.813806951,0.812216341,0.810619652,0.809017003,0.807408214,0.805793464,0.804172695,0.802545905,0.800913155,0.799274385,0.797629654,0.795979023,0.794322431,0.792659879,0.790991426,0.789317071,0.787636817,0.78595072,0.784258723,0.782560885,0.780857205,0.779147744,0.777432382,0.775711238,0.773984373,0.772251666,0.770513237,0.768769026,0.767019093,0.765263438,0.763502061,0.761734962,0.759962201,0.758183777,0.756399691,0.754610002,0.752814651,0.751013637,0.74920702,0.74739486,0.745577097,0.743753791,0.741924942,0.740090489,0.738250613,0.736405194,0.734554231,0.732697785,0.730835974,0.728968561,0.727095842,0.72521764,0.723333955,0.721444964,0.71955061,0.717650831,0.715745687,0.713835239,0.711919427,0.70999831,0.708071947,0.70614022,0.704203308,0.70226109,0.700313628,0.69836092,0.696403086,0.694439948,0.692471683,0.690498233,0.688519657,0.686535895,0.684547067,0.682553113,0.680554032,0.678549945,0.676540673,0.674526453,0.672507226,0.670482874,0.668453574,0.666419327,0.664380014,0.662335813,0.660286665,0.65823251,0.656173527,0.654109657,0.652040839,0.649967194,0.64788866,0.645805299,0.64371717,0.641624212,0.639526427,0.637423933,0.63531667,0.633204639,0.631087899,0.628966451,0.626840293,0.624709487,0.622573972,0.620433807,0.618289053,0.61613971,0.613985717,0.611827135,0.609664023,0.607496321,0.605324149,0.603147447,0.600966156,0.598780453,0.596590281,0.594395638,0.592196584,0.589993119,0.587785184,0.585572898,0.583356261,0.581135273,0.578909934,0.576680303,0.574446261,0.572208047,0.569965541,0.567718744,0.565467715,0.563212514,0.560953081,0.558689475,0.556421697,0.554149687,0.551873624,0.549593449,0.54730916,0.545020759,0.542728305,0.540431798,0.538131297,0.535826743,0.533518195,0.531205714,0.52888912,0.526568711,0.524244368,0.521916091,0.519583941,0.517247856,0.514907897,0.512564123,0.510216594,0.507865191,0.505510032,0.503151119,0.500788271,0.498421878,0.496051729,0.493677884,0.491300344,0.488919139,0.486534178,0.484145701,0.481753618,0.479357928,0.476958662,0.47455582,0.472149342,0.469739467,0.467326075,0.464909166,0.46248883,0.460065007,0.457637668,0.45520702,0.452772975,0.450335532,0.447894752,0.445450604,0.443003058,0.440552294,0.438098222,0.435640901,0.433180332,0.430716544,0.428249419,0.425779194,0.423305809,0.420829266,0.418349564,0.415866762,0.413380712,0.410891712,0.408399642,0.405904531,0.403406382,0.400905222,0.398400962,0.395893842,0.393383771,0.39087078,0.388354838,0.385836005,0.383314192,0.380789638,0.378262222,0.375731975,0.373198956,0.370663136,0.368124425,0.365583092,0.363039047,0.360492259,0.35794279,0.355390668,0.352835774,0.350278348,0.347718328,0.345155686,0.342590481,0.340022743,0.337452322,0.334879518,0.33230418,0.329726398,0.327146143,0.324563444,0.321978211,0.319390684,0.316800773,0.314208508,0.311613888,0.309016973,0.306417614,0.30381608,0.301212281,0.298606217,0.295997947,0.293387473,0.290774673,0.288159817,0.285542816,0.282923698,0.280302465,0.277679145,0.27505362,0.272426158,0.269796669,0.267165184,0.264531672,0.261896223,0.259258687,0.256619304,0.253978044,0.251334876,0.24868983,0.246042922,0.243394077,0.240743518,0.238091171,0.23543705,0.232781172,0.23012355,0.227464095,0.22480306,0.222140342,0.21947597,0.216809958,0.214142337,0.211472988,0.208802193,0.206129834,0.203455925,0.200780511,0.198103592,0.195425078,0.192745239,0.190063938,0.187381238,0.184697121,0.182011634,0.179324672,0.176636487,0.173946992,0.171256185,0.168564111,0.165870771,0.163176209,0.160480291,0.1577833,0.155085132,0.152385816,0.149685353,0.146983773,0.144280985,0.141577229,0.13887243,0.136166573,0.133459717,0.130751863,0.128042907,0.12533313,0.122622401,0.119910762,0.117198229,0.114484817,0.111770436,0.10905534,0.106339432,0.103622727,0.100905254,0.0981870219,0.09546794,0.092748262,0.0900278986,0.0873068571,0.0845851675,0.0818628445,0.0791397914,0.0764162689,0.0736921728,0.0709675327,0.0682423562,0.065516673,0.0627903789,0.0600637421,0.0573366545,0.0546091385,0.0518812127,0.0491529033,0.0464241058,0.043695081,0.0409657285,0.0382360741,0.035506133,0.0327759236,0.0300453547,0.0273146778,0.0245837998,0.0218527373,0.0191215109,0.016390143,0.0136585319,0.0109269395,0.0081952652,0.00546352938,0.00273175305,-4.37113883e-08,0.999997973,0.999991894,0.999981821,0.999967635,0.999949455,0.999927163,0.999900877,0.999870539,0.999836147,0.999797761,0.999755263,0.999708772,0.999658227,0.99960357,0.999544978,0.999482274,0.999415517,0.999344766,0.999269962,0.999191046,0.999108195,0.999021232,0.998930216,0.998835206,0.998736143,0.998633027,0.998525918,0.998414695,0.998299479,0.998180211,0.998056948,0.997929573,0.997798204,0.997662783,0.997523367,0.997379839,0.997232378,0.997080803,0.996925235,0.996765614,0.996601939,0.996434271,0.99626255,0.996086836,0.995907068,0.995723248,0.995535433,0.995343566,0.995147705,0.994947791,0.994743884,0.994535923,0.994323909,0.994107902,0.993887901,0.993663847,0.9934358,0.9932037,0.992967606,0.992727518,0.992483377,0.992235243,0.991983056,0.991726935,0.991466701,0.991202533,0.990934312,0.990662098,0.99038589,0.990105689,0.989821434,0.989533186,0.989240944,0.988944709,0.988644481,0.988340259,0.988032043,0.987719774,0.987403572,0.987083316,0.986759126,0.986430883,0.986098707,0.985762537,0.985422373,0.985078156,0.984730065,0.984377921,0.984021783,0.983661711,0.983297646,0.982929587,0.982557595,0.982181549,0.981801569,0.981417656,0.981029749,0.980637848,0.980242014,0.979842186,0.979438424,0.979030669,0.978618979,0.978203297,0.97778368,0.977360129,0.976932585,0.976501107,0.976065695,0.975626349,0.97518301,0.974735737,0.97428453,0.973829389,0.973370314,0.972907245,0.972440302,0.971969426,0.971494555,0.971015811,0.970533133,0.97004652,0.969555974,0.969061494,0.968563139,0.968060851,0.967554629,0.967044532,0.966530502,0.966012537,0.965490699,0.964964926,0.96443522,0.963901699,0.963364184,0.962822855,0.962277591,0.961728454,0.961175382,0.960618496,0.960057676,0.959492981,0.958924413,0.95835191,0.957775593,0.957195401,0.956611335,0.956023335,0.955431521,0.954835832,0.954236329,0.953632891,0.953025639,0.952414513,0.951799572,0.951180756,0.950558066,0.949931562,0.949301183,0.94866699,0.948028982,0.947387099,0.946741402,0.94609189,0.945438504,0.944781303,0.944120347,0.943455517,0.942786872,0.942114413,0.941438138,0.940758049,0.940074205,0.939386487,0.938695014,0.937999725,0.937300682,0.936597824,0.935891151,0.935180724,0.934466481,0.933748484,0.933026731,0.932301164,0.931571841,0.930838764,0.930101871,0.929361284,0.928616881,0.927868724,0.927116871,0.926361203,0.92560184,0.924838722,0.924071848,0.92330122,0.922526896,0.921748817,0.920966983,0.920181453,0.919392169,0.918599248,0.917802513,0.917002141,0.916198015,0.915390193,0.914578676,0.913763463,0.912944555,0.912121952,0.911295652,0.910465658,0.909631968,0.908794641,0.90795362,0.907108903,0.90626055,0.905408502,0.904552817,0.903693438,0.902830482,0.90196377,0.901093483,0.9002195,0.899341941,0.898460686,0.897575855,0.896687329,0.895795166,0.894899428,0.894000053,0.893097103,0.892190456,0.891280293,0.890366495,0.88944906,0.888528049,0.887603402,0.886675239,0.885743439,0.884808064,0.883869112,0.882926583,0.881980479,0.881030858,0.8800776,0.879120827,0.878160477,0.87719661,0.876229107,0.875258148,0.874283612,0.873305559,0.87232399,0.871338844,0.870350182,0.869358003,0.868362308,0.867363095,0.866360366,0.86535418,0.864344478,0.863331258,0.862314582,0.861294329,0.860270679,0.859243512,0.858212888,0.857178807,0.85614121,0.855100155,0.854055703,0.853007734,0.851956367,0.850901484,0.849843204,0.848781466,0.847716331,0.846647739,0.84557575,0.844500303,0.843421459,0.842339158,0.841253519,0.840164483,0.839071989,0.837976098,0.83687681,0.835774183,0.834668219,0.833558798,0.832446039,0.831329882,0.830210388,0.829087555,0.827961326,0.826831758,0.825698853,0.824562609,0.823423028,0.822280109,0.821133912,0.819984317,0.818831444,0.817675292,0.816515744,0.815352976,0.814186871,0.813017488,0.811844826,0.810668826,0.809489608,0.808307111,0.807121277,0.805932224,0.804739892,0.803544343,0.802345514,0.801143467,0.799938142,0.798729599,0.797517836,0.796302855,0.795084596,0.793863177,0.79263854,0.791410685,0.79017967,0.788945377,0.787707925,0.786467314,0.785223484,0.783976555,0.782726347,0.781473041,0.780216515,0.77895689,0.777694106,0.776428163,0.775159121,0.773886859,0.772611558,0.771333098,0.770051479,0.768766761,0.767478943,0.766188025,0.764894009,0.763596892,0.762296677,0.760993421,0.759687066,0.758377612,0.757065117,0.755749524,0.75443095,0.753109217,0.751784503,0.75045675,0.749125957,0.747792125,0.746455252,0.745115399,0.743772507,0.742426634,0.741077721,0.739725769,0.738370895,0.737013042,0.735652149,0.734288335,0.732921541,0.731551766,0.730179012,0.728803337,0.727424741,0.726043165,0.724658668,0.723271191,0.721880853,0.720487535,0.719091296,0.717692256,0.716290176,0.714885294,0.713477492,0.71206677,0.710653245,0.709236801,0.707817495,0.706395328,0.704970241,0.703542352,0.702111661,0.700678051,0.699241698,0.697802424,0.69636035,0.694915533,0.693467796,0.692017317,0.690563977,0.689107955,0.687649071,0.686187387,0.68472302,0.683255792,0.681785822,0.68031311,0.678837597,0.677359402,0.675878406,0.674394727,0.672908366,0.671419203,0.669927359,0.668432713,0.666935503,0.665435553,0.66393286,0.662427485,0.660919487,0.659408748,0.657895446,0.656379342,0.654860675,0.653339386,0.651815355,0.650288761,0.648759484,0.647227645,0.645693183,0.644156039,0.642616391,0.641074061,0.639529169,0.637981713,0.636431575,0.634878993,0.633323729,0.631765962,0.630205691,0.628642797,0.627077401,0.625509381,0.623938918,0.622365952,0.620790362,0.619212389,0.617631793,0.616048753,0.61446327,0.612875223,0.611284733,0.609691739,0.608096302,0.60649842,0.604898036,0.603295267,0.601690054,0.600082338,0.598472297,0.596859753,0.595244825,0.593627512,0.592007697,0.590385616,0.588761032,0.587134123,0.585504889,0.583873212,0.582239211,0.580602825,0.578964114,0.577323079,0.57567966,0.574033976,0.572385848,0.570735514,0.569082856,0.567427874,0.565770626,0.564111054,0.562449217,0.560785115,0.559118748,0.557450116,0.555779159,0.554106057,0.552430689,0.550752997,0.549073219,0.547391117,0.545706809,0.544020355,0.542331636,0.540640771,0.538947701,0.537252426,0.535554945,0.533855438,0.532153666,0.530449688,0.528743744,0.527035534,0.525325179,0.523612678,0.52189821,0.520181477,0.518462658,0.516741872,0.51501888,0.513293743,0.511566699,0.509837508,0.508106172,0.506372929,0.504637539,0.502900124,0.501160622,0.499419242,0.497675717,0.495930195,0.494182765,0.49243322,0.490681708,0.488928288,0.487172782,0.485415339,0.4836559,0.481894612,0.480131298,0.478366017,0.476598918,0.474829763,0.47305873,0.47128585,0.469510972,0.467734188,0.465955526,0.464175075,0.462392628,0.460608333,0.45882228,0.45703426,0.455244392,0.453452766,0.451659232,0.449863851,0.448066771,0.446267754,0.444466949,0.442664325,0.440860033,0.439053863,0.437245905,0.435436279,0.433624774,0.431811541,0.429996669,0.42817992,0.426361471,0.424541265,0.422719479,0.420895875,0.419070542,0.417243659,0.415414959,0.41358456,0.411752611,0.409918904,0.408083528,0.406246483,0.404407918,0.402567625,0.400725693,0.39888224,0.397037059,0.395190299,0.393342018,0.391492039,0.38964051,0.387787372,0.385932803,0.384076536,0.382218719,0.380359471,0.378498584,0.376636147,0.37477231,0.372906834,0.371039867,0.3691715,0.367301553,0.365430087,0.36355716,0.361682862,0.359806985,0.357929677,0.356050998,0.354170799,0.35228917,0.3504062,0.348521709,0.346635818,0.344748527,0.342859954,0.340969861,0.339078397,0.337185681,0.335291475,0.333395928,0.331499159,0.3296009,0.32770133,0.325800449,0.323898345,0.321994811,0.320089966,0.318183959,0.31627655,0.314367861,0.312458009,0.310546786,0.308634311,0.306720674,0.304805696,0.302889496,0.300972074,0.29905352,0.297133684,0.295212626,0.293290466,0.291367024,0.28944242,0.287516743,0.285589784,0.283661664,0.28173241,0.279802144,0.277870595,0.275937945,0.27400431,0.272069424,0.270133466,0.268196493,0.266258329,0.264319122,0.262378812,0.260437548,0.258495152,0.256551683,0.25460729,0.252661765,0.250715226,0.248767763,0.246819198,0.24486962,0.242919177,0.240967631,0.239015117,0.237061635,0.235107303,0.233151913,0.231195569,0.229238406,0.227280214,0.225321084,0.223361179,0.221400231,0.219438404,0.217475682,0.215512201,0.213547736,0.211582392,0.209616318,0.207649291,0.205681413,0.203712821,0.201743275,0.199772924,0.197801769,0.195829928,0.193857178,0.191883639,0.189909443,0.187934369,0.185958534,0.183982059,0.18200472,0.18002665,0.178047851,0.17606844,0.17408821,0.172107264,0.170125753,0.168143436,0.166160434,0.164176881,0.162192538,0.16020754,0.15822202,0.15623574,0.154248819,0.152261287,0.150273249,0.14828448,0.146295115,0.144305289,0.142314747,0.140323639,0.138332069,0.136339828,0.134347036,0.132353693,0.130359948,0.128365546,0.126370624,0.124375321,0.122379385,0.120382957,0.118386164,0.116388775,0.11439091,0.112392582,0.110393919,0.10839469,0.106395021,0.104395047,0.102394529,0.100393593,0.0983923748,0.0963906348,0.0943885073,0.0923861191,0.0903832316,0.0883799866,0.0863763839,0.0843725428,0.0823682472,0.0803636163,0.0783587843,0.0763535127,0.0743479282,0.0723421648,0.0703359917,0.0683295354,0.066322796,0.0643159151,0.0623086505,0.0603011325,0.0582934916,0.0562854968,0.0542772748,0.0522689521,0.050260298,0.0482514389,0.0462423861,0.0442332663,0.0422238484,0.0402142592,0.0382046252,0.0361947194,0.0341846645,0.032174591,0.0301642716,0.0281538274,0.0261432696,0.0241327267,0.0221219659,0.0201111156,0.0181003027,0.0160892978,0.0140782278,0.0120672202,0.010056044,0.00804482773,0.0060336981,0.00402242457,0.00201113475,-1.62920685e-07,0.999997795,0.999991179,0.999980152,0.999964714,0.999944866,0.999920607,0.999891937,0.999858856,0.999821424,0.999779522,0.99973321,0.999682486,0.999627352,0.999567866,0.999503911,0.999435604,0.999362826,0.999285698,0.999204099,0.999118149,0.999027729,0.998932958,0.998833776,0.998730183,0.998622179,0.998509824,0.998392999,0.998271763,0.998146176,0.998016179,0.99788177,0.997742951,0.997599721,0.99745214,0.997300088,0.997143686,0.996982872,0.996817708,0.996648073,0.996474087,0.996295691,0.996112943,0.995925725,0.995734155,0.995538235,0.995337844,0.995133102,0.994924009,0.994710505,0.99449259,0.994270325,0.994043648,0.993812561,0.993577123,0.993337333,0.993093133,0.992844522,0.99259156,0.992334247,0.992072523,0.991806448,0.991535962,0.991261125,0.990981936,0.990698397,0.990410447,0.990118146,0.989821434,0.989520371,0.989215016,0.988905251,0.988591075,0.988272607,0.987949729,0.987622559,0.987290978,0.986955106,0.986614823,0.986270189,0.985921204,0.985567927,0.98521024,0.984848261,0.984481871,0.98411119,0.983736157,0.983356833,0.982973099,0.982585073,0.982192695,0.981795967,0.981394947,0.980989575,0.980579913,0.980165899,0.979747534,0.979324877,0.978897929,0.97846663,0.978031039,0.977591097,0.977146864,0.976698339,0.976245463,0.975788355,0.975326896,0.974861085,0.974391043,0.973916709,0.973438084,0.972955108,0.972467899,0.97197634,0.971480548,0.970980465,0.970476091,0.969967425,0.969454527,0.968937278,0.968415797,0.967890084,0.967360079,0.966825783,0.966287255,0.965744436,0.965197325,0.964646041,0.964090466,0.9635306,0.962966561,0.962398231,0.961825669,0.961248815,0.960667789,0.960082471,0.959492981,0.9588992,0.958301246,0.95769906,0.957092583,0.956481934,0.955867112,0.955247998,0.954624712,0.953997195,0.953365505,0.952729583,0.952089429,0.951445103,0.950796604,0.950143933,0.949487031,0.948825896,0.948160648,0.947491169,0.946817577,0.946139753,0.945457816,0.944771647,0.944081306,0.943386853,0.942688227,0.941985428,0.941278458,0.940567374,0.939852118,0.93913275,0.938409209,0.937681556,0.93694973,0.936213791,0.93547374,0.934729517,0.93398124,0.933228791,0.932472229,0.931711555,0.930946827,0.930177927,0.929404974,0.928627849,0.92784667,0.927061439,0.926272094,0.925478637,0.924681127,0.923879564,0.923073888,0.922264099,0.921450317,0.920632422,0.919810534,0.918984532,0.918154478,0.91732043,0.91648227,0.915640056,0.914793849,0.913943648,0.913089335,0.912231028,0.911368728,0.910502374,0.909631968,0.908757627,0.907879233,0.906996846,0.906110466,0.905220091,0.904325724,0.903427362,0.902525008,0.901618659,0.900708377,0.899794102,0.898875892,0.897953629,0.897027493,0.896097362,0.895163298,0.894225299,0.893283308,0.892337382,0.891387582,0.890433788,0.88947612,0.888514459,0.887548923,0.886579514,0.88560611,0.884628892,0.88364768,0.882662594,0.881673694,0.880680799,0.879684091,0.878683507,0.87767899,0.876670659,0.875658393,0.874642313,0.873622417,0.872598588,0.871570945,0.870539486,0.869504154,0.868465006,0.867422044,0.866375208,0.865324557,0.864270091,0.86321187,0.862149775,0.861083925,0.86001426,0.85894078,0.857863545,0.856782496,0.855697691,0.854609132,0.853516757,0.852420688,0.851320803,0.850217104,0.849109769,0.847998619,0.846883774,0.845765173,0.844642878,0.843516827,0.842387021,0.841253519,0.840116322,0.83897543,0.837830842,0.836682558,0.835530579,0.834374845,0.833215535,0.832052529,0.830885828,0.829715431,0.828541458,0.827363789,0.826182425,0.824997485,0.823808908,0.822616637,0.821420789,0.820221305,0.819018185,0.817811489,0.816601157,0.815387249,0.814169705,0.812948585,0.811723888,0.810495675,0.809263825,0.8080284,0.806789398,0.80554688,0.804300785,0.803051174,0.801797986,0.800541222,0.799281001,0.798017204,0.796749949,0.795479119,0.794204831,0.792927027,0.791645706,0.790360928,0.789072633,0.787780881,0.786485612,0.785186946,0.783884764,0.782579124,0.781270027,0.779957473,0.778641522,0.777322114,0.775999308,0.774673104,0.773343384,0.772010326,0.770673871,0.769334018,0.767990708,0.766644061,0.765294015,0.763940632,0.762583792,0.761223674,0.759860158,0.758493304,0.757123113,0.755749583,0.754372716,0.752992511,0.751609027,0.750222206,0.748832047,0.74743861,0.746041894,0.74464184,0.743238509,0.741831899,0.74042207,0.739008904,0.737592518,0.736172915,0.734750032,0.733323872,0.731894553,0.730461955,0.729026139,0.727587104,0.72614491,0.724699497,0.723250806,0.721798956,0.720344007,0.718885779,0.717424452,0.715959966,0.714492261,0.713021457,0.711547494,0.710070372,0.70859015,0.707106829,0.705620348,0.704130769,0.70263803,0.701142192,0.699643314,0.698141336,0.696636319,0.695128202,0.693616986,0.69210279,0.690585494,0.689065158,0.687541723,0.686015368,0.684485912,0.682953417,0.681418002,0.679879487,0.678337991,0.676793516,0.67524606,0.673695683,0.672142267,0.670585871,0.669026554,0.667464316,0.665899098,0.664330959,0.6627599,0.661185861,0.65960896,0.658029079,0.656446338,0.654860735,0.653272212,0.651680827,0.650086582,0.648489416,0.646889448,0.64528662,0.64368093,0.64207238,0.640461028,0.638846815,0.63722986,0.635609984,0.633987367,0.632361948,0.630733728,0.629102767,0.627469003,0.625832498,0.624193192,0.622551203,0.620906413,0.619258881,0.617608607,0.615955651,0.614299953,0.612641513,0.610980451,0.609316647,0.607650161,0.605980992,0.604309142,0.602634668,0.600957513,0.599277675,0.597595215,0.595910132,0.594222426,0.592532098,0.590839148,0.589143574,0.587445438,0.585744679,0.584041357,0.582335472,0.580626965,0.578915954,0.57720238,0.575486243,0.573767602,0.572046399,0.570322692,0.568596423,0.566867709,0.565136433,0.563402653,0.561666489,0.559927762,0.558186591,0.556442976,0.554696918,0.552948356,0.55119741,0.54944402,0.547688186,0.545929968,0.544169307,0.542406321,0.540640831,0.538873017,0.537102818,0.535330236,0.533555329,0.531778038,0.529998422,0.528216481,0.526432157,0.524645567,0.522856653,0.521065414,0.51927191,0.517476082,0.515677989,0.51387763,0.512075007,0.510270059,0.508462965,0.506653547,0.504841924,0.503028095,0.501211941,0.499393642,0.497573167,0.495750487,0.493925631,0.49209857,0.490269363,0.48843801,0.486604482,0.484768808,0.482930988,0.481091052,0.479249001,0.477404833,0.475558549,0.473710179,0.471859723,0.470007151,0.468152553,0.466295868,0.464437127,0.46257633,0.460713506,0.458848655,0.456981778,0.455112875,0.453241974,0.451369047,0.449494153,0.447617173,0.445738345,0.443857521,0.441974729,0.44009003,0.438203365,0.436314762,0.434424251,0.432531804,0.430637449,0.428741217,0.426843077,0.42494306,0.423041195,0.421137422,0.419231802,0.417324364,0.415415049,0.413503915,0.411590964,0.409676194,0.407759607,0.405841231,0.403921068,0.401999116,0.400075406,0.398149908,0.396222681,0.394293576,0.392362863,0.390430391,0.38849622,0.386560321,0.384622723,0.382683426,0.38074246,0.378799796,0.376855463,0.374909461,0.372961819,0.371012539,0.369061589,0.36710906,0.365154862,0.363199085,0.361241698,0.359282732,0.357322156,0.355360031,0.353396326,0.351431072,0.349464238,0.347495884,0.34552601,0.343554586,0.341581672,0.339607239,0.337631196,0.335653782,0.333674878,0.331694514,0.329712659,0.327729374,0.325744659,0.323758483,0.321770877,0.31978187,0.317791432,0.315799624,0.313806385,0.311811775,0.309815794,0.307818472,0.30581975,0.303819716,0.301818311,0.299815595,0.297811538,0.295806199,0.29379952,0.291791558,0.289782315,0.287771791,0.285760015,0.283746958,0.281732529,0.279716998,0.277700216,0.275682211,0.273662984,0.271642566,0.269620925,0.267598122,0.265574127,0.26354897,0.261522621,0.259495139,0.257466525,0.255436778,0.253405869,0.251373887,0.249340758,0.247306541,0.245271251,0.243234858,0.241197407,0.239158884,0.237119302,0.235078678,0.233037025,0.230994344,0.228950635,0.226905927,0.224860206,0.222813383,0.220765695,0.218717024,0.216667399,0.21461682,0.212565288,0.210512817,0.208459422,0.206405118,0.20434989,0.202293769,0.200236753,0.198178843,0.196120068,0.19406043,0.191999942,0.18993859,0.187876418,0.185813412,0.183749571,0.181684941,0.179619506,0.177553266,0.175486252,0.173418462,0.171349913,0.169280604,0.167210549,0.16513963,0.163068116,0.160995871,0.158922926,0.15684928,0.154774934,0.152699903,0.150624216,0.148547843,0.14647083,0.144393161,0.142314866,0.140235931,0.138156384,0.136076227,0.133995473,0.131914124,0.129832208,0.127749696,0.125666633,0.123583019,0.121498853,0.119414151,0.117328927,0.115243182,0.11315693,0.111070178,0.108982943,0.106895097,0.104806907,0.102718249,0.100629143,0.0985395908,0.0964496061,0.0943591967,0.0922683701,0.0901771337,0.0880855024,0.0859934837,0.0839010775,0.0818083137,0.0797151774,0.0776216984,0.0755278692,0.0734337121,0.0713392347,0.0692444369,0.0671493337,0.0650539398,0.0629582554,0.0608622916,0.0587660596,0.0566695705,0.0545728318,0.052475851,0.0503786393,0.0482812077,0.0461834408,0.044085592,0.0419875458,0.039889317,0.0377909094,0.0356923379,0.0335936062,0.0314947292,0.0293957125,0.0272965655,0.0251972992,0.0230979212,0.0209984407,0.0188988671,0.0167992115,0.0146994824,0.0125996871,0.0104998369,0.0083999401,0.00630000653,0.00420004502,0.00210006488,7.54979013e-08,0.999998212,0.999992788,0.999983728,0.999971092,0.99995482,0.999934912,0.999911427,0.999884248,0.999853551,0.99981916,0.999781191,0.999739647,0.999694407,0.999645591,0.999593198,0.99953711,0.999477446,0.999414206,0.999347329,0.999276817,0.999202669,0.999124944,0.999043584,0.998958647,0.998870075,0.998777926,0.998682082,0.998582721,0.998479664,0.998373032,0.998262823,0.998148978,0.998031497,0.99791044,0.997785747,0.997657478,0.997525573,0.997390091,0.997250974,0.997108281,0.996961951,0.996811986,0.996658504,0.996501327,0.996340573,0.996176243,0.996008337,0.995836794,0.995661616,0.995482862,0.995300531,0.995114565,0.994925022,0.994731903,0.994535148,0.994334817,0.99413085,0.993923306,0.993712187,0.993497491,0.993279159,0.993057251,0.992831767,0.992602706,0.992370009,0.992133737,0.991893888,0.991650462,0.991403461,0.991152823,0.990898609,0.990640879,0.990379512,0.99011457,0.989846051,0.989573956,0.989298224,0.989018977,0.988736153,0.988449752,0.988159776,0.987866163,0.987569034,0.987268329,0.986964107,0.986656249,0.986344814,0.986029863,0.985711277,0.985389173,0.985063493,0.984734297,0.984401464,0.984065115,0.98372519,0.983381748,0.98303473,0.982684135,0.982329965,0.981972277,0.981611073,0.981246233,0.980877936,0.980506003,0.980130613,0.979751647,0.979369104,0.978983045,0.978593409,0.978200257,0.977803588,0.977403402,0.97699964,0.976592362,0.976181567,0.975767195,0.975349307,0.974927902,0.974502981,0.974074543,0.973642528,0.973207057,0.972768068,0.972325504,0.971879482,0.971429884,0.97097683,0.970520198,0.97006011,0.969596505,0.969129384,0.968658805,0.96818465,0.967707038,0.967225909,0.966741264,0.966253161,0.965761542,0.965266466,0.964767873,0.964265764,0.963760197,0.963251173,0.962738633,0.962222576,0.961703122,0.961180091,0.960653663,0.960123718,0.959590316,0.959053457,0.958513141,0.957969308,0.957422018,0.956871331,0.956317127,0.955759466,0.955198348,0.954633772,0.95406574,0.95349431,0.952919364,0.95234102,0.951759219,0.951173961,0.950585306,0.949993193,0.949397624,0.948798597,0.948196173,0.947590351,0.946981072,0.946368337,0.945752203,0.945132673,0.944509685,0.9438833,0.943253517,0.942620337,0.9419837,0.941343665,0.940700293,0.940053463,0.939403176,0.938749611,0.938092589,0.93743217,0.936768353,0.936101139,0.935430586,0.934756637,0.934079289,0.933398545,0.932714462,0.932027042,0.931336164,0.930641949,0.929944396,0.929243445,0.928539157,0.927831531,0.927120507,0.926406145,0.925688446,0.924967408,0.924242973,0.92351526,0.92278415,0.922049761,0.921311975,0.92057091,0.919826448,0.919078708,0.91832763,0.917573273,0.916815579,0.916054547,0.915290177,0.914522529,0.913751602,0.912977338,0.912199795,0.911418915,0.910634756,0.909847319,0.909056604,0.908262551,0.907465219,0.90666467,0.905860782,0.905053616,0.904243231,0.903429508,0.902612567,0.901792347,0.90096885,0.900142133,0.899312139,0.898478866,0.897642374,0.896802604,0.895959675,0.895113409,0.894263983,0.893411279,0.892555296,0.891696155,0.890833795,0.889968157,0.88909936,0.888227344,0.887352049,0.886473596,0.885591924,0.884707093,0.883818984,0.882927775,0.882033288,0.881135643,0.880234778,0.879330814,0.878423572,0.87751323,0.876599669,0.87568295,0.874763072,0.873840034,0.872913837,0.871984482,0.871051908,0.870116293,0.869177461,0.868235469,0.867290378,0.866342187,0.865390778,0.864436328,0.863478661,0.862517953,0.861554086,0.86058712,0.859616995,0.85864383,0.857667506,0.856688082,0.855705559,0.854719996,0.853731275,0.852739513,0.851744652,0.850746691,0.849745691,0.848741591,0.847734451,0.846724212,0.845710933,0.844694555,0.843675137,0.842652678,0.841627181,0.840598643,0.839567065,0.838532448,0.837494791,0.836454093,0.835410416,0.834363639,0.833313942,0.832261145,0.831205368,0.830146611,0.829084814,0.828020036,0.826952279,0.825881481,0.824807763,0.823731005,0.822651327,0.821568668,0.820482969,0.81939435,0.818302751,0.81720823,0.81611073,0.815010309,0.813906848,0.812800527,0.811691225,0.810579002,0.809463859,0.808345795,0.80722481,0.806100845,0.80497402,0.803844273,0.802711666,0.801576078,0.800437629,0.79929626,0.79815203,0.797004879,0.795854867,0.794701993,0.793546259,0.792387605,0.791226089,0.790061772,0.788894534,0.787724495,0.786551535,0.785375774,0.784197211,0.783015728,0.781831443,0.780644357,0.77945447,0.778261721,0.777066171,0.77586782,0.774666607,0.773462653,0.772255898,0.77104634,0.769833982,0.768618882,0.76740092,0.766180217,0.764956772,0.763730526,0.762501538,0.761269808,0.760035336,0.758798063,0.757558107,0.756315351,0.755069911,0.753821671,0.752570748,0.751317143,0.750060797,0.748801649,0.747539878,0.746275425,0.74500823,0.743738353,0.742465794,0.741190553,0.73991257,0.738631964,0.737348735,0.736062765,0.734774172,0.733482897,0.732189,0.73089236,0.729593158,0.728291333,0.726986825,0.725679755,0.724370003,0.723057628,0.72174269,0.720425069,0.719104886,0.71778214,0.716456771,0.715128779,0.713798225,0.712465048,0.711129308,0.709791064,0.708450198,0.707106769,0.705760777,0.704412282,0.703061163,0.701707602,0.700351417,0.698992729,0.697631538,0.696267784,0.694901526,0.693532705,0.692161441,0.690787673,0.689411402,0.688032627,0.686651349,0.685267627,0.683881402,0.682492733,0.681101561,0.679707944,0.678311825,0.676913321,0.675512254,0.674108863,0.672702968,0.671294689,0.669883966,0.6684708,0.667055249,0.665637255,0.664216876,0.662794113,0.661368906,0.659941375,0.6585114,0.657079041,0.655644298,0.65420717,0.652767718,0.651325941,0.649881721,0.648435235,0.646986365,0.645535171,0.644081593,0.642625749,0.641167521,0.639707029,0.638244212,0.63677907,0.635311544,0.633841813,0.632369816,0.630895495,0.62941891,0.627939999,0.626458883,0.624975443,0.623489797,0.622001886,0.620511711,0.61901927,0.617524624,0.616027713,0.614528596,0.613027215,0.611523688,0.610017896,0.608509898,0.606999755,0.605487406,0.603972793,0.602456093,0.600937128,0.599416077,0.597892821,0.596367359,0.594839811,0.593309999,0.5917781,0.590244114,0.588707924,0.587169647,0.585629225,0.584086716,0.582542121,0.580995321,0.579446495,0.577895582,0.576342523,0.574787438,0.573230207,0.57167089,0.570109546,0.568546176,0.56698072,0.565413237,0.563843668,0.562272072,0.56069845,0.559122801,0.557545125,0.555965483,0.554383755,0.552800059,0.551214337,0.549626648,0.548036933,0.54644531,0.544851661,0.543256044,0.541658461,0.540058911,0.538457394,0.536854029,0.535248578,0.533641338,0.532032013,0.530420899,0.528807759,0.527192831,0.525575876,0.523957133,0.522336364,0.520713866,0.519089341,0.517462909,0.515834749,0.514204621,0.512572765,0.510938883,0.509303272,0.507665753,0.506026506,0.504385293,0.50274235,0.5010975,0.499450952,0.497802496,0.496152341,0.494500279,0.492846429,0.491190881,0.489533484,0.487874418,0.486213475,0.484550864,0.482886434,0.481220335,0.479552388,0.477882832,0.476211429,0.474538416,0.472863555,0.471187025,0.469508857,0.4678289,0.466147363,0.464464039,0.462779135,0.461092472,0.4594042,0.4577142,0.45602265,0.454329312,0.452634454,0.450937867,0.449239761,0.447539896,0.445838422,0.444135457,0.442430764,0.440724581,0.4390167,0.437307328,0.435596287,0.433883756,0.432169557,0.430453897,0.428736597,0.427017838,0.425297409,0.423575461,0.421852082,0.420127094,0.418400675,0.416672617,0.414943188,0.41321215,0.411479712,0.409745693,0.408010274,0.406273276,0.404534936,0.402795017,0.401053637,0.399310917,0.397566646,0.395821065,0.394073904,0.392325461,0.390575469,0.388824195,0.387071371,0.385317296,0.383561701,0.381804824,0.380046457,0.378286839,0.37652573,0.37476325,0.372999549,0.371234357,0.369467974,0.3677001,0.365931034,0.364160538,0.362388819,0.3606157,0.35884136,0.357065618,0.355288714,0.35351041,0.351730824,0.349950075,0.348167926,0.346384674,0.344600022,0.342814237,0.341027111,0.339238882,0.337449282,0.33565861,0.333866566,0.33207348,0.330279052,0.328483522,0.32668671,0.324888736,0.323089659,0.321289331,0.319487959,0.317685306,0.31588161,0.314076662,0.312270701,0.310463488,0.308655262,0.306845814,0.305035383,0.303223729,0.301410973,0.299597234,0.297782302,0.295966417,0.294149339,0.292331308,0.290512085,0.288691968,0.286870658,0.285048455,0.283225089,0.2814008,0.279575408,0.277749121,0.275921702,0.27409327,0.272263974,0.270433575,0.268602312,0.266769975,0.264936775,0.263102531,0.261267424,0.259431243,0.257594258,0.255756229,0.253917396,0.25207752,0.25023672,0.24839516,0.246552557,0.244709194,0.242864832,0.241019696,0.239173576,0.237326711,0.235478878,0.2336303,0.231780753,0.229930505,0.228079289,0.226227254,0.224374533,0.222520858,0.220666513,0.218811244,0.216955304,0.21509847,0.213240966,0.211382583,0.209523544,0.207663625,0.205803081,0.203941673,0.202079654,0.20021677,0.198353171,0.196488976,0.194623947,0.192758337,0.190891907,0.18902491,0.187157094,0.185288742,0.183419585,0.181549892,0.179679424,0.177808419,0.175936654,0.174064264,0.172191352,0.170317695,0.168443546,0.166568682,0.164693311,0.16281724,0.160940692,0.159063458,0.157185748,0.155307367,0.153428525,0.151549026,0.149669096,0.147788495,0.145907372,0.144025832,0.142143652,0.140261069,0.138377875,0.136494294,0.134610102,0.132725537,0.130840376,0.128954872,0.127068773,0.125182331,0.123295315,0.121407859,0.119520083,0.117631756,0.115743116,0.113853946,0.111964479,0.11007449,0.108184218,0.10629344,0.104402393,0.102510855,0.100619063,0.0987267867,0.0968341529,0.0949412882,0.093047969,0.0911544189,0.0892604291,0.0873662308,0.0854716003,0.0835767835,0.0816815421,0.0797861218,0.0778902918,0.0759943053,0.0740979239,0.0722013935,0.0703044757,0.068407312,0.0665100217,0.0646123663,0.0627145991,0.0608164817,0.0589182675,0.057019718,0.0551210828,0.053222131,0.0513231046,0.0494237728,0.0475243814,0.0456246994,0.0437248535,0.0418249667,0.0399248116,0.0380246304,0.0361241922,0.0342237428,0.0323230512,0.0304223597,0.0285214409,0.026620537,0.024719419,0.0228183288,0.0209170375,0.0190157909,0.0171143562,0.015212859,0.0133114262,0.0114098256,0.00950830337,0.00760662789,0.00570504367,0.00380331953,0.00190170098,-4.37113883e-08,0.999994159,0.999976695,0.999947548,0.999906719,0.999854267,0.999790132,0.999714315,0.999626875,0.999527752,0.999417007,0.999294639,0.999160528,0.999014854,0.998857498,0.998688459,0.998507798,0.998315513,0.998111546,0.997895956,0.997668743,0.997429907,0.997179449,0.996917307,0.996643603,0.996358275,0.996061265,0.995752692,0.995432496,0.995100677,0.994757295,0.994402289,0.994035661,0.99365747,0.993267715,0.992866337,0.992453396,0.992028892,0.991592765,0.991145134,0.99068594,0.990215182,0.989732862,0.989239037,0.988733649,0.988216758,0.987688363,0.987148404,0.986596942,0.986033976,0.985459507,0.984873593,0.984276116,0.983667195,0.98304683,0.98241502,0.981771708,0.981116951,0.980450749,0.979773104,0.979084074,0.978383601,0.977671742,0.9769485,0.976213813,0.975467741,0.974710345,0.973941565,0.973161399,0.972369909,0.971567094,0.970752954,0.96992743,0.969090641,0.968242586,0.967383206,0.966512501,0.965630591,0.964737415,0.963832974,0.962917268,0.961990356,0.961052239,0.960102916,0.959142387,0.958170712,0.957187772,0.956193745,0.955188572,0.954172194,0.953144729,0.952106178,0.95105654,0.949995756,0.948923886,0.947840989,0.946747005,0.945642054,0.944526017,0.943398952,0.942260921,0.941111863,0.939951897,0.938780904,0.937599003,0.936406136,0.93520242,0.933987737,0.932762206,0.931525767,0.93027842,0.929020286,0.927751303,0.926471531,0.925180912,0.923879504,0.922567368,0.921244442,0.919910789,0.918566406,0.917211294,0.915845513,0.914469004,0.913081884,0.911684096,0.910275698,0.90885669,0.907427013,0.905986845,0.904536068,0.903074741,0.901602864,0.900120497,0.898627639,0.89712429,0.895610511,0.894086242,0.892551601,0.891006529,0.889451027,0.887885213,0.886309028,0.884722471,0.883125663,0.881518483,0.879901111,0.878273427,0.876635492,0.874987364,0.873328984,0.871660471,0.869981766,0.868292928,0.866593957,0.864884913,0.863165736,0.861436486,0.859697223,0.857947946,0.856188655,0.85441941,0.852640152,0.850850999,0.849051893,0.847242832,0.845423996,0.843595207,0.841756642,0.839908242,0.838050067,0.836182117,0.834304392,0.832416952,0.830519795,0.828612983,0.826696515,0.824770331,0.822834611,0.820889235,0.818934321,0.816969872,0.814995885,0.813012421,0.811019421,0.809017003,0.807005107,0.804983854,0.802953184,0.800913155,0.798863769,0.796805084,0.794737101,0.792659879,0.790573418,0.788477719,0.786372781,0.784258723,0.782135487,0.78000319,0.777861774,0.775711238,0.773551762,0.771383166,0.76920563,0.767019093,0.764823616,0.762619257,0.760405958,0.758183777,0.755952775,0.753713012,0.751464427,0.74920702,0.74694097,0.744666159,0.742382705,0.740090549,0.73778975,0.735480428,0.733162403,0.730835974,0.728500903,0.726157427,0.723805428,0.721444964,0.719076157,0.716698945,0.714313328,0.711919487,0.709517241,0.707106769,0.704688013,0.70226109,0.699825943,0.697382629,0.694931269,0.692471683,0.69000411,0.687528431,0.685044765,0.682553113,0.680053473,0.677545965,0.67503047,0.672507226,0.669976056,0.667437077,0.664890349,0.662335813,0.659773588,0.657203615,0.654626071,0.652040839,0.649448037,0.646847606,0.644239664,0.641624212,0.63900131,0.636370897,0.633733094,0.631087899,0.628435373,0.625775516,0.623108268,0.620433867,0.617752135,0.61506331,0.612367213,0.609664023,0.60695374,0.604236364,0.601511955,0.598780453,0.596042037,0.593296707,0.590544403,0.587785244,0.585019171,0.582246363,0.579466641,0.576680303,0.573887169,0.57108736,0.568280876,0.565467715,0.562648058,0.559821844,0.556989014,0.554149747,0.551303983,0.548451841,0.545593262,0.542728305,0.53985703,0.536979496,0.534095705,0.531205714,0.528309464,0.525407016,0.522498488,0.519583941,0.516663253,0.513736486,0.510803819,0.507865191,0.504920661,0.501970232,0.499013841,0.496051729,0.493083835,0.490110189,0.487130851,0.484145701,0.481155008,0.478158742,0.475156873,0.472149462,0.469136447,0.466118068,0.463094234,0.460065007,0.457030445,0.45399043,0.450945199,0.447894752,0.44483906,0.441778183,0.43871206,0.435640901,0.432564706,0.429483443,0.426397055,0.423305809,0.420209616,0.417108536,0.414002597,0.410891712,0.407776147,0.404655844,0.401530802,0.398401082,0.395266622,0.392127633,0.388984084,0.385836005,0.382683426,0.379526287,0.376364797,0.373198956,0.370028734,0.366854221,0.363675296,0.360492259,0.35730502,0.354113609,0.350918055,0.347718328,0.344514638,0.341306925,0.338095248,0.334879518,0.331659973,0.328436583,0.325209349,0.321978331,0.318743438,0.315504938,0.312262774,0.309016973,0.305767536,0.302514464,0.299257934,0.295997947,0.292734504,0.289467633,0.286197275,0.282923698,0.279646814,0.276366681,0.273083329,0.269796669,0.266507,0.263214201,0.259918332,0.256619304,0.253317416,0.250012577,0.246704832,0.243394196,0.24008061,0.236764327,0.233445302,0.23012355,0.226799101,0.22347191,0.220142215,0.216809958,0.213475183,0.210137904,0.206798062,0.203455925,0.200111419,0.196764588,0.193415448,0.190063938,0.186710328,0.183354557,0.179996625,0.176636606,0.173274413,0.169910312,0.166544229,0.163176209,0.159806162,0.156434372,0.153060749,0.149685353,0.146308213,0.142929241,0.139548719,0.136166573,0.132782847,0.129397571,0.126010656,0.122622401,0.119232714,0.115841635,0.112449199,0.10905534,0.105660327,0.102264084,0.098866649,0.0954680592,0.0920682326,0.0886674598,0.0852656513,0.0818628445,0.078459084,0.0750542879,0.0716487393,0.0682423562,0.0648351759,0.0614271201,0.0580184683,0.0546091385,0.0511991717,0.0477886088,0.0443773679,0.0409657285,0.0375536121,0.03414106,0.0307281073,0.0273146778,0.0239010509,0.0204871427,0.0170729961,0.0136586512,0.0102440277,0.00682940334,0.00341469981,-4.37113883e-08],"twiddles":[0.999971092,0.00760668842,0.999884248,0.0152129373,0.999739647,0.0228183065,0.99953711,0.0304223541,0.999276817,0.0380246416,0.998958647,0.0456247292,0.998582721,0.0532221757,0.998148978,0.060816545,0.997657478,0.068407394,0.997108281,0.075994283,0.996501327,0.0835767761,0.995836794,0.0911544338,0.995114565,0.0987268165,0.994334817,0.106293485,0.993497491,0.113854013,0.992602706,0.121407941,0.991650462,0.128954858,0.990640879,0.136494294,0.989573956,0.144025847,0.988449752,0.151549056,0.987268329,0.159063488,0.986029863,0.166568726,0.984734297,0.174064353,0.983381748,0.181549877,0.981972277,0.189024895,0.980506003,0.196488991,0.978983045,0.203941703,0.977403402,0.211382627,0.975767195,0.218811318,0.974074543,0.226227343,0.972325504,0.233630285,0.970520198,0.241019696,0.968658805,0.24839516,0.966741264,0.255756289,0.964767873,0.263102561,0.962738633,0.270433664,0.960653663,0.277749062,0.958513141,0.285048425,0.956317127,0.292331308,0.95406574,0.299597234,0.951759219,0.306845874,0.949397624,0.314076722,0.946981072,0.32128942,0.944509685,0.328483492,0.9419837,0.33565858,0.939403176,0.342814267,0.936768353,0.349950075,0.934079289,0.357065678,0.931336164,0.364160568,0.928539157,0.371234447,0.925688446,0.378286779,0.92278415,0.385317266,0.919826448,0.392325461,0.916815579,0.399310946,0.913751602,0.406273335,0.910634756,0.41321218,0.907465219,0.420127153,0.904243231,0.427017808,0.90096885,0.433883756,0.897642374,0.440724581,0.894263983,0.447539926,0.890833795,0.454329371,0.887352049,0.461092502,0.883818984,0.467828989,0.880234778,0.474538386,0.876599669,0.481220305,0.872913837,0.487874389,0.869177461,0.494500309,0.865390778,0.50109756,0.861554086,0.507665813,0.857667506,0.514204741,0.853731275,0.520713866,0.849745691,0.527192831,0.845710933,0.533641338,0.841627181,0.54005897,0.837494791,0.54644531,0.833313942,0.552800059,0.829084814,0.55912286,0.824807763,0.565413237,0.820482969,0.571670949,0.81611073,0.577895522,0.811691225,0.584086776,0.80722481,0.590244114,0.802711666,0.596367359,0.79815203,0.602456093,0.793546259,0.608509958,0.788894534,0.614528596,0.784197211,0.620511711,0.77945447,0.626458883,0.774666607,0.632369816,0.769833982,0.638244152,0.764956772,0.644081652,0.760035336,0.64988178,0.755069911,0.655644298,0.750060797,0.661368906,0.74500823,0.667055309,0.73991257,0.672703028,0.734774172,0.678311825,0.729593158,0.683881462,0.724370003,0.689411402,0.719104886,0.694901526,0.713798225,0.700351417,0.708450198,0.705760837,0.703061223,0.711129367,0.697631538,0.716456711,0.692161441,0.72174269,0.686651349,0.726986885,0.681101561,0.73218894,0.675512254,0.737348735,0.669883966,0.742465794,0.664216876,0.747539937,0.6585114,0.752570748,0.652767718,0.757558107,0.646986365,0.762501597,0.641167521,0.76740092,0.635311544,0.772255898,0.62941891,0.777066171,0.623489797,0.781831503,0.617524624,0.786551535,0.611523688,0.791226149,0.605487406,0.795854926,0.599416077,0.800437629,0.593309999,0.804974079,0.587169647,0.809463918,0.580995321,0.813906848,0.574787438,0.818302751,0.568546176,0.822651327,0.562272072,0.826952279,0.555965483,0.831205368,0.549626648,0.835410416,0.543256044,0.839567065,0.536854029,0.843675137,0.530420899,0.847734451,0.523957133,0.851744652,0.517462909,0.855705619,0.510938883,0.859617054,0.504385293,0.86347872,0.497802496,0.867290437,0.49119091,0.871051967,0.484550893,0.874763072,0.477882832,0.878423572,0.471187025,0.882033348,0.464464039,0.885591984,0.4577142,0.88909936,0.450937867,0.892555356,0.444135457,0.895959675,0.437307328,0.899312139,0.430453897,0.902612567,0.423575461,0.905860841,0.416672617,0.909056604,0.409745693,0.912199795,0.402795017,0.915290236,0.395821065,0.918327689,0.388824195,0.921311975,0.381804824,0.924242973,0.37476325,0.927120566,0.3677001,0.929944396,0.3606157,0.932714522,0.35351041,0.935430586,0.346384674,0.938092589,0.339238882,0.940700233,0.33207348,0.943253517,0.324888736,0.945752263,0.317685306,0.948196232,0.310463488,0.950585306,0.303223729,0.952919424,0.295966417,0.955198348,0.288691968,0.957422018,0.2814008,0.959590316,0.27409327,0.961703122,0.266769975,0.963760257,0.259431243,0.965761602,0.25207752,0.967707038,0.244709194,0.969596505,0.237326711,0.971429884,0.229930505,0.973207057,0.222520858,0.974927902,0.21509847,0.976592362,0.207663625,0.978200316,0.20021677,0.979751647,0.192758337,0.981246233,0.185288742,0.982684135,0.177808419,0.984065115,0.170317695,0.985389173,0.16281724,0.986656249,0.155307367,0.987866223,0.147788495,0.989018977,0.140261069,0.99011457,0.132725537,0.991152823,0.125182331,0.992133737,0.117631756,0.993057311,0.11007449,0.993923366,0.102510855,0.994731903,0.0949412882,0.995482862,0.0873662308,0.996176243,0.0797861218,0.996811986,0.0722013935,0.997390091,0.0646123663,0.99791044,0.057019718,0.998373032,0.0494237728,0.998777926,0.0418249667,0.999124944,0.0342237428,0.999414206,0.026620537,0.999645591,0.0190157909,0.99981916,0.0114098256,0.999934912,0.00380331953,0.999992788,0,0.999884248,0.0152129373,0.99953711,0.0304223541,0.998958647,0.0456247292,0.998148978,0.060816545,0.997108281,0.075994283,0.995836794,0.0911544338,0.994334817,0.106293485,0.992602706,0.121407941,0.990640879,0.136494294,0.988449752,0.151549056,0.986029863,0.166568726,0.983381748,0.181549877,0.980506003,0.196488991,0.977403402,0.211382627,0.974074543,0.226227343,0.970520198,0.241019696,0.966741264,0.255756289,0.962738633,0.270433664,0.958513141,0.285048425,0.95406574,0.299597234,0.949397624,0.314076722,0.944509685,0.328483492,0.939403176,0.342814267,0.934079289,0.357065678,0.928539157,0.371234447,0.92278415,0.385317266,0.916815579,0.399310946,0.910634756,0.41321218,0.904243231,0.427017808,0,0.99953711,0.0304223541,0.998148978,0.060816545,0.995836794,0.0911544338,0.992602706,0.121407941,0.988449752,0.151549056,0.983381748,0.181549877,0.977403402,0.211382627,0.970520198,0.241019696,0.962738633,0.270433664,0.95406574,0.299597234,0.944509685,0.328483492,0.934079289,0.357065678,0.92278415,0.385317266,0.910634756,0.41321218,0.897642374,0.440724581,0.883818984,0.467828989,0.869177461,0.494500309,0.853731275,0.520713866,0.837494791,0.54644531,0.820482969,0.571670949,0.802711666,0.596367359,0.784197211,0.620511711,0.764956772,0.644081652,0.74500823,0.667055309,0.724370003,0.689411402,0.703061223,0.711129367,0.681101561,0.73218894,0.6585114,0.752570748,0.635311544,0.772255898,0,0.998958647,0.0456247292,0.995836794,0.0911544338,0.990640879,0.136494294,0.983381748,0.181549877,0.974074543,0.226227343,0.962738633,0.270433664,0.949397624,0.314076722,0.934079289,0.357065678,0.916815579,0.399310976,0.897642374,0.440724581,0.876599669,0.481220305,0.853731275,0.520713866,0.829084814,0.55912286,0.802711666,0.596367359,0.774666607,0.632369816,0.74500823,0.667055309,0.713798165,0.700351477,0.681101501,0.732189,0.646986365,0.762501597,0.611523688,0.791226149,0.574787378,0.81830281,0.536854029,0.843675137,0.497802496,0.867290437,0.4577142,0.88909936,0.416672617,0.909056604,0.37476325,0.927120566,0.332073361,0.943253577,0.288691968,0.957422018,0.244709194,0.969596505,0,0.998148978,0.060816545,0.992602706,0.121407941,0.983381748,0.181549877,0.970520198,0.241019696,0.95406574,0.299597234,0.934079289,0.357065678,0.910634756,0.41321218,0.883818984,0.467828989,0.853731275,0.520713866,0.820482969,0.571670949,0.784197211,0.620511711,0.74500823,0.667055309,0.703061223,0.711129367,0.6585114,0.752570748,0.611523688,0.791226149,0.562272072,0.826952279,0.510938883,0.859617054,0.4577142,0.88909936,0.402795017,0.915290236,0.346384674,0.938092589,0.288691968,0.957422018,0.229930505,0.973207057,0.170317695,0.985389173,0.11007449,0.993923366,0.0494237728,0.998777926,-0.0114099132,0.999934912,-0.0722013563,0.997390091,-0.132725507,0.991152823,-0.192758411,0.981246233,0,0.997108281,0.075994283,0.988449752,0.151549056,0.974074543,0.226227328,0.95406574,0.299597234,0.928539157,0.371234447,0.897642374,0.440724552,0.861554086,0.507665813,0.820482969,0.571670949,0.774666607,0.632369816,0.724370003,0.689411402,0.669883966,0.742465794,0.611523688,0.791226089,0.549626708,0.835410357,0.484550893,0.874763072,0.416672617,0.909056604,0.346384674,0.938092589,0.27409339,0.961703062,0.20021677,0.979751647,0.125182331,0.992133737,0.0494237728,0.998777926,-0.0266205054,0.999645591,-0.102510944,0.994731903,-0.177808389,0.984065115,-0.25207749,0.967707038,-0.324888796,0.945752203,-0.395821035,0.918327689,-0.464464009,0.885591984,-0.530420899,0.847734451,-0.593310058,0.80497402,0,0.995836794,0.0911544338,0.983381748,0.181549877,0.962738633,0.270433664,0.934079289,0.357065678,0.897642374,0.440724581,0.853731275,0.520713866,0.802711666,0.596367359,0.74500823,0.667055309,0.681101501,0.732189,0.611523688,0.791226149,0.536854029,0.843675137,0.4577142,0.88909936,0.37476325,0.927120566,0.288691968,0.957422018,0.20021677,0.979751647,0.11007449,0.993923366,0.0190156717,0.99981916,-0.0722014755,0.997390091,-0.162817329,0.986656249,-0.252077609,0.967707038,-0.339238971,0.940700233,-0.42357555,0.905860782,-0.504385352,0.863478661,-0.58099544,0.813906848,-0.652767837,0.757557988,-0.719105005,0.694901407,-0.779454589,0.626458764,-0.833313882,0.552800059,-0.880234838,0.474538356,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999976516,0.0068518389,0.999906123,0.0137033556,0.999788761,0.0205542296,0.999624431,0.0274041388,0.999413192,0.0342527591,0.999155045,0.0410997756,0.998849988,0.0479448587,0.998498023,0.0547876917,0.998099208,0.0616279542,0.997653484,0.0684653223,0.997160971,0.0752994791,0.996621609,0.0821300969,0.996035457,0.0889568627,0.995402575,0.0957794413,0.994722962,0.102597535,0.99399662,0.109410807,0.993223608,0.116218939,0.992403984,0.123021625,0.99153775,0.129818529,0.990625024,0.136609331,0.989665747,0.143393725,0.988659978,0.150171399,0.987607837,0.156942025,0.986509323,0.16370526,0.985364437,0.17046082,0.984173357,0.177208379,0.982936025,0.183947608,0.981652617,0.190678209,0.980323076,0.19739987,0.97894752,0.204112247,0.977525949,0.210815042,0.976058543,0.217507944,0.9745453,0.224190637,0.972986341,0.230862796,0.971381664,0.237524122,0.969731331,0.244174302,0.968035579,0.250813007,0.966294289,0.257439971,0.964507699,0.264054805,0.96267581,0.270657241,0.960798681,0.277247012,0.958876491,0.283823729,0.956909239,0.290387124,0.954897106,0.296936899,0.952840149,0.303472728,0.95073843,0.30999434,0.948592067,0.316501349,0.946401179,0.322993517,0.944165885,0.329470545,0.941886246,0.335932046,0.93956238,0.342377812,0.937194407,0.348807514,0.934782386,0.355220824,0.932326555,0.361617476,0.929826915,0.36799714,0.927283645,0.374359518,0.924696803,0.380704314,0.922066569,0.387031287,0.919393063,0.393340021,0.916676402,0.399630338,0.913916647,0.405901879,0.911114037,0.412154347,0.908268631,0.418387502,0.905380607,0.424600989,0.902450025,0.430794537,0,0.999906123,0.0137033556,0.999624431,0.0274041388,0.999155045,0.0410997756,0.998498023,0.0547876917,0.997653484,0.0684653223,0.996621609,0.0821300969,0.995402575,0.0957794413,0.99399662,0.109410807,0.992403984,0.123021625,0.990625024,0.136609331,0.988659978,0.150171399,0.986509323,0.16370526,0.984173357,0.177208379,0.981652617,0.190678209,0.97894752,0.204112247,0.976058543,0.217507944,0.972986341,0.230862796,0.969731331,0.244174302,0.966294289,0.257439971,0.96267581,0.270657241,0.958876491,0.283823729,0.954897106,0.296936899,0.95073843,0.30999434,0.946401179,0.322993517,0.941886246,0.335932046,0.937194407,0.348807514,0.932326555,0.361617476,0.927283645,0.374359518,0.922066569,0.387031287,0.916676402,0.399630338,0.911114037,0.412154347,0.905380607,0.424600989,0.899477124,0.43696788,0.893404722,0.449252665,0.887164593,0.46145314,0.880757809,0.473566949,0.874185681,0.485591799,0.867449343,0.497525513,0.860550106,0.509365737,0.853489339,0.521110356,0.846268177,0.532757103,0.838888168,0.544303775,0.831350625,0.555748224,0.823656976,0.567088366,0.815808594,0.578321993,0.807807028,0.589447021,0.799653769,0.600461304,0.791350365,0.611362875,0.782898366,0.622149646,0.774299324,0.632819533,0.765554845,0.643370628,0.756666601,0.653800905,0.747636318,0.664108396,0.738465607,0.674291134,0.729156196,0.684347332,0.719709873,0.694274902,0.710128427,0.704072177,0.700413585,0.71373719,0.690567255,0.723268211,0.680591166,0.732663393,0.670487344,0.741921008,0.660257578,0.751039207,0.649903774,0.760016501,0.63942802,0.768850982,0.628832161,0.777541041,0,0.999788761,0.0205542296,0.999155045,0.0410997756,0.998099208,0.0616279542,0.996621609,0.0821300969,0.994722962,0.102597527,0.992403984,0.123021625,0.989665747,0.143393725,0.986509323,0.16370526,0.982936025,0.183947608,0.97894752,0.204112232,0.9745453,0.224190623,0.969731331,0.244174302,0.964507699,0.264054805,0.958876491,0.283823729,0.952840149,0.303472728,0.946401179,0.322993517,0.93956238,0.342377812,0.932326555,0.361617476,0.924696803,0.380704314,0.916676402,0.399630308,0.908268631,0.418387473,0.899477124,0.43696785,0.890305579,0.455363572,0.880757809,0.473566949,0.870837927,0.491570204,0.860550106,0.509365737,0.849898696,0.526946068,0.838888168,0.544303775,0.827523232,0.561431468,0.815808594,0.578321993,0.803749323,0.59496814,0.791350365,0.611362875,0.778617144,0.627499342,0.765554845,0.643370628,0.752169132,0.658970118,0.738465607,0.674291134,0.724450052,0.6893273,0.710128427,0.704072177,0.695506752,0.718519568,0.680591226,0.732663393,0.665388107,0.746497631,0.649903834,0.760016441,0.634145021,0.773214161,0.618118227,0.786085188,0.601830244,0.798624039,0.585287988,0.810825467,0.568498492,0.822684348,0.55146867,0.834195614,0.534205973,0.845354319,0.516717494,0.856155992,0.499010742,0.866595805,0.481093049,0.876669526,0.462972194,0.886372805,0.444655627,0.895701587,0.426151305,0.90465188,0.407466799,0.913220048,0.388610244,0.921402216,0.369589359,0.929195166,0.350412458,0.9365955,0.331087381,0.943600118,0.3116225,0.950205982,0.292025864,0.956410408,0.272305965,0.962210715,0.252470881,0.967604518,0.232529119,0.972589433,0,0.999624431,0.0274041388,0.998498023,0.0547876917,0.996621609,0.0821300969,0.99399662,0.109410807,0.990625024,0.136609331,0.986509323,0.16370526,0.981652617,0.190678209,0.976058543,0.217507944,0.969731331,0.244174302,0.96267581,0.270657241,0.954897106,0.296936899,0.946401179,0.322993517,0.937194407,0.348807514,0.927283645,0.374359518,0.916676402,0.399630338,0.905380607,0.424600989,0.893404722,0.449252665,0.880757809,0.473566949,0.867449343,0.497525513,0.853489339,0.521110356,0.838888168,0.544303775,0.823656976,0.567088366,0.807807028,0.589447021,0.791350365,0.611362875,0.774299324,0.632819533,0.756666601,0.653800905,0.738465607,0.674291134,0.719709873,0.694274902,0.700413585,0.71373719,0.680591166,0.732663393,0.660257578,0.751039207,0.63942802,0.768850982,0.618118167,0.786085188,0.596344054,0.802728951,0.574122012,0.818769753,0.55146867,0.834195614,0.528401196,0.848994792,0.504936695,0.863156378,0.481093049,0.876669526,0.45688802,0.889524221,0.432339728,0.901710808,0.407466799,0.913220048,0.3822878,0.924043298,0.356821537,0.934172571,0.331087381,0.943600118,0.305104405,0.952318907,0.278892368,0.96032238,0.252470881,0.967604518,0.225859612,0.974159837,0.199078813,0.979983509,0.172148496,0.985071003,0.145088732,0.989418626,0.117920123,0.993023098,0.0906629413,0.995881617,0.0633375347,0.997992158,0.0359646752,0.999353051,0.00856480096,0.999963343,-0.0188416261,0.999822497,-0.0462337807,0.998930633,-0.0735913292,0.997288465,-0.100893475,0.994897246,-0.128119841,0.991758704,-0.155250102,0.987875223,-0.182263613,0.983249724,-0.209140241,0.977885664,0,0.999413192,0.0342527591,0.997653484,0.0684653223,0.994722962,0.102597527,0.990625024,0.136609331,0.985364437,0.17046082,0.97894752,0.204112232,0.971381664,0.237524107,0.96267581,0.270657241,0.952840149,0.303472728,0.941886246,0.335932046,0.929826915,0.36799711,0.916676402,0.399630308,0.902450025,0.430794537,0.887164593,0.46145311,0.870837927,0.491570204,0.853489339,0.521110356,0.835139036,0.550038874,0.815808594,0.578321993,0.795520782,0.605926275,0.774299324,0.632819533,0.752169132,0.658970118,0.729156256,0.684347272,0.705287576,0.708921313,0.680591226,0.732663393,0.655096114,0.755545557,0.628832161,0.777541041,0.601830244,0.798624039,0.574122012,0.818769753,0.545740008,0.837954581,0.516717494,0.856155992,0.487088561,0.873352587,0.45688802,0.889524221,0.426151305,0.90465188,0.394914418,0.918717921,0.363213986,0.931705773,0.331087381,0.943600118,0.298572212,0.954387069,0.265706629,0.964053929,0.232529238,0.972589433,0.199078813,0.979983509,0.165394887,0.986227453,0.131516844,0.991313934,0.0974844471,0.995237052,0.0633376539,0.997992158,0.0291165244,0.999576032,-0.00513889501,0.999986768,-0.0393881649,0.999224007,-0.0735912099,0.997288465,-0.107707888,0.994182587,-0.141698152,0.989909887,-0.175522253,0.984475493,-0.209140241,0.977885664,-0.242512777,0.970148206,-0.275600702,0.96127218,-0.308365166,0.951268077,-0.340767771,0.940147519,-0.372770548,0.92792356,-0.404335737,0.914610624,-0.435426384,0.900224328,-0.46600613,0.88478148,-0.496038765,0.868300378,-0.52548945,0.850800097,-0.554323256,0.832301497,-0.582506657,0.812825918,-0.610006452,0.792396426,0,0.999155045,0.0410997756,0.996621609,0.0821300969,0.992403984,0.123021625,0.986509323,0.16370526,0.97894752,0.204112232,0.969731331,0.244174302,0.958876491,0.283823729,0.946401179,0.322993517,0.932326555,0.361617476,0.916676402,0.399630308,0.899477124,0.43696785,0.880757809,0.473566949,0.860550106,0.509365737,0.838888168,0.544303775,0.815808594,0.578321993,0.791350365,0.611362875,0.765554845,0.643370628,0.738465607,0.674291134,0.710128427,0.704072177,0.680591226,0.732663393,0.649903834,0.760016441,0.618118227,0.786085188,0.585287988,0.810825467,0.55146867,0.834195614,0.516717494,0.856155992,0.481093049,0.876669526,0.444655627,0.895701587,0.407466799,0.913220048,0.369589359,0.929195166,0.331087381,0.943600118,0.292025864,0.956410408,0.252470881,0.967604518,0.212489218,0.977163434,0.172148496,0.985071003,0.131516844,0.991313934,0.0906629413,0.995881617,0.0496558249,0.998766363,0.00856480096,0.999963343,-0.0325406976,0.999470413,-0.0735912099,0.997288465,-0.114517353,0.993421257,-0.155249983,0.987875223,-0.19572024,0.980659783,-0.235859767,0.971787095,-0.275600702,0.96127218,-0.314875901,0.94913286,-0.353618979,0.935389578,-0.391764611,0.920065463,-0.429247946,0.903186679,-0.46600613,0.88478148,-0.501976609,0.864881217,-0.537098944,0.84351927,-0.5713135,0.820731938,-0.604562759,0.796557546,-0.636790156,0.771037161,-0.66794163,0.744213641,-0.697964191,0.7161327,-0.726807415,0.686841309,-0.754422247,0.656389415,-0.780762315,0.62482816,-0.805782795,0.592211127,-0.829441786,0.558593154,-0.851698935,0.524031401,-0.87251693,0.488583893,-0.891860425,0.452310711,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999807239,0.0196336936,0.999229014,0.0392598175,0.998265624,0.0588708036,0.996917307,0.0784590989,0.99518472,0.0980171412,0.993068457,0.117537402,0.990569353,0.137012333,0.987688363,0.156434476,0.984426558,0.175796285,0.980785251,0.195090324,0.976765871,0.214309156,0.972369909,0.233445376,0.967599094,0.252491593,0.962455213,0.271440446,0.956940353,0.290284663,0.95105654,0.309017003,0.944806039,0.327630192,0.938191354,0.346117079,0.931214929,0.364470512,0.923879504,0.382683456,0.916187942,0.400748849,0.908143163,0.418659747,0.899748266,0.436409235,0.891006529,0.453990519,0.881921232,0.471396744,0.872496009,0.488621265,0.862734377,0.505657434,0.852640152,0.522498548,0.842217267,0.539138317,0.831469595,0.555570245,0.82040143,0.571787953,0.809017003,0.587785244,0.797320664,0.603555977,0.785316885,0.619093955,0.773010433,0.634393334,0.760405958,0.649448097,0.747508347,0.66425246,0.734322488,0.678800762,0.720853567,0.693087399,0,0,0.999229014,0.0392598175,0.996917307,0.0784590989,0.993068457,0.117537402,0.987688363,0.156434476,0.980785251,0.195090324,0.972369909,0.233445376,0.962455213,0.271440446,0.95105654,0.309017003,0.938191354,0.346117079,0.923879504,0.382683456,0.908143163,0.418659747,0.891006529,0.453990519,0.872496009,0.488621265,0.852640152,0.522498548,0.831469595,0.555570245,0.809017003,0.587785244,0.785316885,0.619093955,0.760405958,0.649448097,0.734322488,0.678800762,0.707106769,0.707106769,0.678800702,0.734322548,0.649448037,0.760405958,0.619093955,0.785316944,0.587785244,0.809017003,0.555570185,0.831469655,0.522498488,0.852640212,0.488621175,0.872496068,0.453990519,0.891006529,0.418659747,0.908143163,0.382683426,0.923879504,0.346117049,0.938191354,0.309016973,0.95105654,0.271440387,0.962455273,0.233445302,0.972369909,0.195090234,0.98078531,0.156434372,0.987688363,0.117537402,0.993068457,0.078459084,0.996917307,0.0392597876,0.999229014,0,0,0.998265624,0.0588708036,0.993068457,0.117537402,0.984426558,0.175796285,0.972369909,0.233445376,0.956940353,0.290284663,0.938191354,0.346117079,0.916187942,0.400748849,0.891006529,0.453990519,0.862734377,0.505657434,0.831469595,0.555570245,0.797320664,0.603555977,0.760405958,0.649448097,0.720853567,0.693087399,0.678800702,0.734322548,0.634393275,0.773010433,0.587785244,0.809017003,0.539138258,0.842217267,0.488621175,0.872496068,0.436409265,0.899748266,0.382683426,0.923879504,0.327630162,0.944806039,0.271440387,0.962455273,0.214309081,0.976765871,0.156434372,0.987688363,0.0980171338,0.99518472,0.0392597876,0.999229014,-0.0196337439,0.999807239,-0.0784591734,0.996917307,-0.137012437,0.990569353,-0.195090324,0.980785251,-0.252491593,0.967599094,-0.309017032,0.95105648,-0.364470571,0.931214929,-0.418659836,0.908143103,-0.471396834,0.881921232,-0.522498667,0.852640092,-0.571788073,0.820401371,-0.619093895,0.785316944,-0.6642524,0.747508347,0,0,0.996917307,0.0784590989,0.987688363,0.156434476,0.972369909,0.233445376,0.95105654,0.309017003,0.923879504,0.382683456,0.891006529,0.453990519,0.852640152,0.522498548,0.809017003,0.587785244,0.760405958,0.649448097,0,0,0.987688363,0.156434476,0.95105654,0.309017003,0.891006529,0.453990519,0.809017003,0.587785244,0.707106769,0.707106769,0.587785244,0.809017003,0.453990519,0.891006529,0.309016973,0.95105654,0.156434372,0.987688363,0,0,0.972369909,0.233445376,0.891006529,0.453990519,0.760405958,0.649448097,0.587785244,0.809017003,0.382683426,0.923879504,0.156434372,0.987688363,-0.0784591734,0.996917307,-0.309017032,0.95105648,-0.522498667,0.852640092,0,0,0.95105654,0.309017003,0.809017003,0.587785244,0,0.809017003,0.587785244,0.309016973,0.95105654,0,0.587785244,0.809017003,-0.309017032,0.95105648,0,0,0,0,0,0,0.999948621,0.0101339966,0.999794602,0.020266952,0.999537885,0.0303978268,0.999178529,0.040525578,0.998716533,0.0506491661,0.998151958,0.0607675575,0.997484863,0.0708797053,0.996715367,0.0809845701,0.99584347,0.0910811201,0.994869351,0.10116832,0.993793011,0.111245133,0.992614627,0.12131051,0.99133426,0.131363437,0.989952147,0.14140287,0.988468349,0.151427776,0.986882985,0.161437139,0.985196292,0.171429917,0.983408451,0.181405082,0.98151958,0.191361636,0.979529917,0.201298505,0.977439702,0.211214736,0.975249052,0.221109271,0.972958267,0.230981067,0.970567524,0.24082917,0.968077123,0.250652552,0.965487301,0.260450155,0.962798297,0.270220995,0.960010469,0.279964149,0.957123995,0.289678514,0.954139233,0.299363106,0.95105654,0.309017003,0.947876096,0.318639129,0.944598317,0.328228533,0.941223562,0.337784261,0.937752128,0.347305268,0.934184372,0.356790602,0.930520713,0.366239309,0.926761448,0.375650376,0.922907054,0.385022879,0.918957829,0.394355834,0.914914191,0.403648317,0.910776675,0.412899315,0.906545579,0.422107935,0.902221382,0.431273192,0.897804558,0.440394163,0.893295467,0.449469864,0.888694704,0.458499461,0.884002626,0.467481941,0.87921977,0.476416409,0.874346614,0.485301971,0.869383693,0.494137675,0.864331424,0.502922595,0.859190464,0.511655927,0.853961229,0.520336688,0.848644257,0.528964043,0.843240142,0.537537038,0.837749481,0.54605478,0.832172751,0.554516494,0.826510549,0.562921226,0.820763469,0.571268201,0.814932048,0.579556525,0.809017003,0.587785244,0.803018808,0.595953643,0.796938241,0.604060829,0.790775716,0.612105966,0.78453207,0.620088279,0.778207839,0.628006876,0.771803617,0.63586098,0.765320182,0.643649817,0.758758128,0.651372492,0.75211817,0.659028292,0.745400965,0.66661638,0.738607168,0.674136043,0.731737554,0.681586504,0.724792778,0.68896693,0.717773557,0.696276605,0.710680664,0.703514755,0,0.999794602,0.020266952,0.999178529,0.040525578,0.998151958,0.0607675575,0.996715367,0.0809845701,0.994869351,0.10116832,0.992614627,0.12131051,0.989952147,0.14140287,0.986882985,0.161437139,0.983408451,0.181405082,0.979529917,0.201298505,0.975249052,0.221109271,0.970567524,0.24082917,0.965487301,0.260450155,0.960010469,0.279964149,0.954139233,0.299363106,0.947876096,0.318639129,0.941223562,0.337784261,0.934184372,0.356790602,0.926761448,0.375650376,0.918957829,0.394355834,0.910776675,0.412899315,0.902221382,0.431273192,0.893295467,0.449469864,0.884002626,0.467481941,0.874346614,0.485301971,0.864331424,0.502922595,0.853961229,0.520336688,0.843240142,0.537537038,0.832172751,0.554516494,0.820763469,0.571268201,0.809017003,0.587785244,0.796938241,0.604060829,0.78453207,0.620088279,0.771803617,0.63586098,0.758758128,0.651372492,0.745400965,0.66661638,0.731737554,0.681586504,0.717773557,0.696276605,0.703514755,0.710680664,0.68896693,0.724792778,0.674136043,0.738607168,0.659028292,0.75211817,0.643649817,0.765320122,0.628006876,0.778207779,0.612105966,0.790775716,0.595953643,0.803018808,0.579556465,0.814932048,0.562921286,0.826510549,0.54605484,0.837749422,0.528963983,0.848644257,0.511655927,0.859190464,0.494137675,0.869383633,0.476416439,0.87921977,0.458499491,0.888694644,0.440394104,0.897804558,0.422107905,0.906545579,0.403648317,0.91491425,0.385022908,0.922906995,0.366239309,0.930520713,0.347305298,0.937752128,0.328228503,0.944598377,0.309016973,0.95105654,0.289678484,0.957123995,0.270221025,0.962798297,0.250652552,0.968077123,0.230981112,0.972958207,0.211214796,0.977439642,0.191361591,0.98151958,0.171429887,0.985196292,0.151427776,0.988468349,0.131363451,0.99133426,0.111245163,0.993793011,0.0910811722,0.99584347,0.0708796531,0.997484863,0.0506491363,0.998716533,0.0303978138,0.999537885,0.0101340031,0.999948621,0,0.999537885,0.0303978268,0.998151958,0.0607675575,0.99584347,0.0910811201,0.992614627,0.12131051,0.988468349,0.151427776,0.983408451,0.181405082,0.977439702,0.211214736,0.970567524,0.24082917,0.962798297,0.270220995,0.954139233,0.299363106,0.944598317,0.328228533,0.934184372,0.356790602,0.922907054,0.385022879,0.910776675,0.412899315,0.897804558,0.440394163,0.884002626,0.467481941,0.869383693,0.494137675,0.853961229,0.520336688,0.837749481,0.54605478,0.820763469,0.571268201,0.803018808,0.595953643,0.78453207,0.620088279,0.765320182,0.643649817,0.745400965,0.66661638,0.724792778,0.68896693,0.703514755,0.710680664,0.681586504,0.731737554,0.659028292,0.75211817,0.63586098,0.771803617,0.612105966,0.790775716,0.587785244,0.809017003,0.562921286,0.826510549,0.537537038,0.843240142,0.511655927,0.859190464,0.485301942,0.874346614,0.458499491,0.888694644,0.431273222,0.902221382,0.403648317,0.91491425,0.375650346,0.926761448,0.347305298,0.937752128,0.318639129,0.947876096,0.289678484,0.957123995,0.260450095,0.965487301,0.230981112,0.972958207,0.201298535,0.979529917,0.171429887,0.985196292,0.141402811,0.989952147,0.111245163,0.993793011,0.0809845775,0.996715367,0.0506491363,0.998716533,0.0202670097,0.999794602,-0.0101339715,0.999948621,-0.0405255854,0.999178529,-0.0708797425,0.997484863,-0.101168275,0.994869351,-0.131363422,0.99133426,-0.161437154,0.986882985,-0.191361681,0.98151958,-0.221109226,0.975249052,-0.250652522,0.968077123,-0.279964149,0.960010469,-0.309017032,0.95105648,-0.337784201,0.941223562,-0.36623928,0.930520713,-0.394355893,0.918957829,-0.422107875,0.906545579,-0.449469954,0.893295467,-0.476416409,0.87921977,-0.502922535,0.864331484,-0.528964043,0.848644197,-0.554516494,0.832172751,-0.579556406,0.814932108,-0.604060888,0.796938181,-0.628006816,0.778207839,-0.651372552,0.758758068,-0.674136102,0.738607168,-0.696276546,0.717773616,0,0.999178529,0.040525578,0.996715367,0.0809845701,0.992614627,0.12131051,0.986882985,0.161437139,0.979529917,0.201298505,0.970567524,0.24082917,0.960010469,0.279964149,0.947876096,0.318639129,0.934184372,0.356790602,0.918957829,0.394355834,0.902221382,0.431273192,0.884002626,0.467481941,0.864331424,0.502922595,0.843240142,0.537537038,0.820763469,0.571268201,0,0.996715367,0.0809845701,0.986882985,0.161437139,0.970567524,0.24082917,0.947876096,0.318639129,0.918957829,0.394355834,0.884002626,0.467481941,0.843240142,0.537537038,0.796938241,0.604060829,0.745400965,0.66661638,0.68896693,0.724792778,0.628006876,0.778207779,0.562921286,0.826510549,0.494137675,0.869383633,0.422107905,0.906545579,0.347305298,0.937752128,0,0.992614627,0.12131051,0.970567524,0.24082917,0.934184372,0.356790602,0.884002626,0.467481941,0.820763469,0.571268201,0.745400965,0.66661638,0.659028292,0.75211817,0.562921286,0.826510549,0.458499491,0.888694644,0.347305298,0.937752128,0.230981112,0.972958207,0.111245163,0.993793011,-0.0101339715,0.999948621,-0.131363422,0.99133426,-0.250652522,0.968077123,0,0.986882985,0.161437139,0.947876096,0.318639129,0.884002626,0.467481941,0.796938241,0.604060829,0.68896693,0.724792778,0.562921286,0.826510549,0.422107905,0.906545579,0.270221025,0.962798297,0.111245163,0.993793011,-0.0506491065,0.998716533,-0.211214766,0.977439702,-0.36623928,0.930520713,-0.511655927,0.859190464,-0.643649817,0.765320122,-0.758758068,0.651372552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999943316,0.0106492657,0.999773204,0.0212973226,0.999489665,0.0319429673,0.999092877,0.0425849855,0.998582721,0.0532221757,0.997959316,0.0638533309,0.997222722,0.0744772479,0.996373057,0.0850927085,0.995410383,0.0956985205,0.994334817,0.106293485,0.993146479,0.116876401,0.991845489,0.127446055,0.990432084,0.138001248,0.988906264,0.148540795,0.987268329,0.159063488,0.985518456,0.169568166,0.983656824,0.180053607,0.981683612,0.190518603,0.979599059,0.200962022,0.977403402,0.211382627,0.975096881,0.221779272,0.972679794,0.232150763,0.970152438,0.242495909,0.967514992,0.252813607,0.964767873,0.263102561,0.961911321,0.273361713,0.958945692,0.28358987,0.955871284,0.29378587,0.952688456,0.303948522,0.949397624,0.314076722,0.945999086,0.324169278,0.94249326,0.334225118,0.938880563,0.34424302,0.935161412,0.35422191,0.931336164,0.364160568,0.927405298,0.374057978,0.923369288,0.383912951,0.919228554,0.393724382,0.914983511,0.403491169,0.910634756,0.41321218,0.906182706,0.422886342,0.901627898,0.432512552,0.896970868,0.442089707,0.892212033,0.451616734,0.887352049,0.461092532,0.882391453,0.470515996,0.87733078,0.479886144,0.872170568,0.489201903,0.866911471,0.498462111,0.861554086,0.507665813,0.85609895,0.516811967,0.850546718,0.52589947,0.844898045,0.534927368,0.839153588,0.543894529,0.833313942,0.552800059,0.827379763,0.561642945,0.821351767,0.570422053,0.815230548,0.579136491,0.809017003,0.587785244,0.802711666,0.596367359,0.796315253,0.604881883,0.789828539,0.613327682,0.783252239,0.621704042,0.776587129,0.63000983,0.769833982,0.638244152,0.762993455,0.646406174,0.756066501,0.654494822,0.749053717,0.662509322,0.741955996,0.670448601,0.734774172,0.678311825,0.727508962,0.686098218,0.720161259,0.693806708,0.712731898,0.701436579,0.705221713,0.708986878,0.697631538,0.716456711,0.689962208,0.723845422,0.682214677,0.731151938,0.67438972,0.738375545,0.666488349,0.745515466,0.6585114,0.752570748,0.650459707,0.759540796,0.642334282,0.766424596,0.634135962,0.773221552,0.625865757,0.77993077,0.617524564,0.786551595,0.609113395,0.793083131,0.600633085,0.799524784,0.592084646,0.805875778,0.583469152,0.812135339,0.574787378,0.81830281,0.566040456,0.824377477,0.5572294,0.830358624,0.548355043,0.836245596,0.539418578,0.842037797,0.530420899,0.847734451,0.52136302,0.853335023,0.512246072,0.858838737,0.50307107,0.864245057,0.493838966,0.869553387,0.484550893,0.874763072,0.475207746,0.879873633,0.465810806,0.884884357,0.456361055,0.889794707,0.446859539,0.894604146,0.437307328,0.899312139,0.427705437,0.903918147,0.418055147,0.908421636,0.408357441,0.912822127,0.398613423,0.917119026,0.388824195,0.921311975,0.37899074,0.925400436,0.369114459,0.929383934,0.359196275,0.93326205,0.349237382,0.937034309,0.339238882,0.940700233,0.329201788,0.944259584,0.31912747,0.947711825,0.309016973,0.95105654,0.298871398,0.95429337,0.288691968,0.957422018,0.278479666,0.960442126,0.268235892,0.963353276,0.25796169,0.966155171,0.247658253,0.968847454,0.237326711,0.971429884,0.226968154,0.973902166,0.216583952,0.976264,0.206175208,0.978515089,0.195743069,0.980655193,0.185288742,0.982684135,0.174813271,0.984601617,0.1643181,0.986407399,0.153804287,0.988101304,0.143273041,0.989683211,0.132725537,0.991152823,0.122162871,0.99251008,0.111586466,0.993754745,0.100997403,0.994886696,0.0903968886,0.995905817,0.0797861218,0.996811986,0.0691661835,0.997605145,0.0585385263,0.998285174,0.0479042269,0.998851955,0.0372644961,0.999305427,0.026620537,0.999645591,0.0159734413,0.999872446,0.00532465242,0.999985814,0,0.999773204,0.0212973226,0.999092877,0.0425849855,0.997959316,0.0638533309,0.996373057,0.0850927085,0.994334817,0.106293485,0.991845489,0.127446055,0.988906264,0.148540795,0.985518456,0.169568166,0.981683612,0.190518603,0.977403402,0.211382627,0.972679794,0.232150763,0.967514992,0.252813607,0.961911321,0.273361713,0.955871284,0.29378587,0.949397624,0.314076722,0.94249326,0.334225118,0.935161412,0.35422191,0.927405298,0.374057978,0.919228554,0.393724382,0.910634756,0.41321218,0.901627898,0.432512552,0.892212033,0.451616734,0.882391453,0.470515996,0.872170568,0.489201903,0.861554086,0.507665813,0.850546718,0.52589947,0.839153588,0.543894529,0.827379763,0.561642945,0.815230548,0.579136491,0,0.999092877,0.0425849855,0.996373057,0.0850927085,0.991845489,0.127446055,0.985518456,0.169568166,0.977403402,0.211382627,0.967514992,0.252813607,0.955871284,0.29378587,0.94249326,0.334225118,0.927405298,0.374057978,0.910634756,0.41321218,0.892212033,0.451616734,0.872170568,0.489201903,0.850546718,0.52589947,0.827379763,0.561642945,0.802711666,0.596367359,0.776587129,0.63000983,0.749053717,0.662509322,0.720161259,0.693806708,0.689962208,0.723845422,0.6585114,0.752570748,0.625865757,0.77993077,0.592084646,0.805875778,0.5572294,0.830358624,0.52136302,0.853335023,0.484550893,0.874763072,0.446859539,0.894604146,0.408357441,0.912822127,0.369114459,0.929383934,0.329201788,0.944259584,0,0.997959316,0.0638533309,0.991845489,0.127446055,0.981683612,0.190518618,0.967514992,0.252813607,0.949397624,0.314076751,0.927405298,0.374058008,0.901627898,0.432512581,0.872170568,0.489201903,0.839153588,0.543894529,0.802711606,0.596367419,0.762993455,0.646406233,0.7201612,0.693806767,0.67438972,0.738375545,0.625865757,0.77993083,0.574787319,0.81830281,0.52136302,0.853335023,0.465810806,0.884884357,0.408357441,0.912822127,0.349237263,0.937034309,0.288691849,0.957422078,0.226968154,0.973902166,0.16431798,0.986407399,0.100997284,0.994886696,0.0372643769,0.999305427,-0.0266206246,0.999645591,-0.090396978,0.995905817,-0.153804496,0.988101304,-0.216584161,0.97626394,-0.278479844,0.960442066,0,0.996373057,0.0850927085,0.985518456,0.169568166,0.967514992,0.252813607,0.94249326,0.334225118,0.910634756,0.41321218,0.872170568,0.489201903,0.827379763,0.561642945,0.776587129,0.63000983,0.720161259,0.693806708,0.6585114,0.752570748,0.592084646,0.805875778,0.52136302,0.853335023,0.446859539,0.894604146,0.369114459,0.929383934,0.288691968,0.957422018,0.206175208,0.978515089,0.122162871,0.99251008,0.0372644961,0.999305427,-0.0479043126,0.998851955,-0.132725507,0.991152823,-0.216584042,0.976264,-0.298871487,0.95429337,-0.378990829,0.925400436,-0.456361234,0.889794588,-0.530420899,0.847734451,-0.600633144,0.799524784,-0.666488409,0.745515406,-0.727509022,0.686098099,-0.783252358,0.621703863,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999940276,0.0109270625,0.999761224,0.0218528192,0.999462724,0.0327759683,0.999044895,0.0436952002,0.998507798,0.0546092167,0.997851491,0.0655167177,0.997075975,0.0764163882,0.996181488,0.0873069391,0.995167971,0.0981870666,0.994035661,0.109055459,0.992784679,0.119910844,0.991415143,0.130751908,0.989927173,0.141577348,0.988321066,0.15238589,0.986596942,0.163176239,0.98475498,0.173947111,0.982795477,0.184697196,0.980718613,0.195425242,0.978524625,0.206129938,0.976213813,0.216810033,0.973786414,0.227464244,0.971242785,0.23809129,0.968583167,0.248689905,0.965807855,0.259258837,0.962917268,0.269796789,0.959911704,0.280302525,0.95679152,0.290774822,0.953557074,0.30121237,0.950208783,0.311613977,0.946747005,0.32197836,0.943172216,0.332304299,0.939484835,0.34259057,0.935685217,0.352835923,0.931773901,0.363039136,0.927751303,0.373199016,0.923617959,0.383314341,0.919374287,0.393383861,0.915020883,0.403406441,0.910558224,0.413380861,0.905986845,0.423305899,0.901307225,0.433180422,0.896520019,0.443003207,0.891625822,0.452773064,0.886625051,0.46248889,0.881518483,0.472149491,0.876306653,0.481753707,0.870990217,0.491300374,0.865569711,0.50078845,0.86004591,0.510216653,0.85441941,0.519583941,0.848690867,0.528889239,0.842860997,0.538131356,0.836930454,0.54730922,0.830900013,0.556421757,0.824770331,0.565467834,0.818542242,0.57444638,0.812216341,0.58335638,0,0.999761224,0.0218528192,0.999044895,0.0436952002,0.997851491,0.0655167177,0.996181488,0.0873069391,0.994035661,0.109055459,0.991415143,0.130751908,0.988321066,0.15238589,0.98475498,0.173947111,0.980718613,0.195425242,0.976213813,0.216810033,0.971242785,0.23809129,0.965807855,0.259258837,0.959911704,0.280302525,0.953557074,0.30121237,0.946747005,0.32197836,0.939484835,0.34259057,0.931773901,0.363039136,0.923617959,0.383314341,0.915020883,0.403406441,0.905986845,0.423305899,0.896520019,0.443003207,0.886625051,0.46248889,0.876306653,0.481753707,0.865569711,0.50078845,0.85441941,0.519583941,0.842860997,0.538131356,0.830900013,0.556421757,0.818542242,0.57444638,0.805793464,0.592196643,0.792659879,0.609664142,0.779147744,0.626840353,0.765263438,0.643717229,0.751013637,0.660286725,0.736405194,0.676540792,0.721444964,0.692471743,0.70614022,0.708072007,0.690498233,0.723334074,0.674526453,0.738250673,0.65823251,0.75281471,0.641624212,0.767019153,0.624709487,0.780857265,0.607496321,0.794322491,0.589993119,0.807408273,0.572208047,0.820108473,0.554149687,0.832417011,0.535826743,0.844327927,0.517247856,0.855835617,0.498421878,0.866934597,0.479357928,0.877619505,0.460065007,0.887885213,0.440552294,0.897726953,0.420829266,0.907139838,0.400905222,0.916119516,0.380789638,0.924661696,0.360492259,0.932762206,0.340022743,0.94041723,0.319390684,0.947623134,0,0.999462724,0.0327759683,0.997851491,0.0655167177,0.995167971,0.0981870666,0.991415143,0.130751908,0.986596942,0.163176239,0.980718613,0.195425242,0.973786414,0.227464244,0.965807855,0.259258837,0.95679152,0.290774822,0.946747005,0.32197836,0.935685217,0.352835923,0.923617959,0.383314341,0.910558224,0.413380861,0.896520019,0.443003207,0.881518483,0.472149491,0.865569711,0.50078845,0.848690867,0.528889239,0.830900013,0.556421757,0.812216341,0.58335638,0.792659879,0.609664142,0.772251666,0.63531673,0.751013637,0.660286725,0.728968561,0.684547126,0.70614022,0.708072007,0.682553113,0.730836034,0.65823251,0.75281471,0.633204639,0.773984432,0.607496321,0.794322491,0.581135273,0.813807011,0.554149687,0.832417011,0.526568711,0.850132585,0.498421878,0.866934597,0.469739467,0.882805109,0.440552294,0.897726953,0.410891712,0.911684155,0.380789638,0.924661696,0.350278348,0.936645627,0.319390684,0.947623134,0.288159817,0.957582355,0.256619304,0.966512561,0.22480306,0.974404216,0.192745239,0.981248856,0.160480291,0.98703903,0.128042907,0.991768658,0.09546794,0.995432496,0.0627903789,0.998026729,0.0300453547,0.999548554,-0.00273195957,0.999996245,-0.0355063379,0.999369442,-0.0682425648,0.997668743,-0.100905456,0.994895995,-0.133459926,0.991054237,-0.165870979,0.986147463,-0.1981038,0.980181038,-0.230123743,0.973161399,-0.261896402,0.965095997,-0.293387651,0.955993533,0,0.999044895,0.0436952002,0.996181488,0.0873069391,0.991415143,0.130751908,0.98475498,0.173947111,0.976213813,0.216810033,0.965807855,0.259258837,0.953557074,0.30121237,0.939484835,0.34259057,0.923617959,0.383314341,0.905986845,0.423305899,0.886625051,0.46248889,0.865569711,0.50078845,0.842860997,0.538131356,0.818542242,0.57444638,0.792659879,0.609664142,0.765263438,0.643717229,0.736405194,0.676540792,0.70614022,0.708072007,0.674526453,0.738250673,0.641624212,0.767019153,0.607496321,0.794322491,0.572208047,0.820108473,0.535826743,0.844327927,0.498421878,0.866934597,0.460065007,0.887885213,0.420829266,0.907139838,0.380789638,0.924661696,0.340022743,0.94041723,0.298606217,0.9543764,0.256619304,0.966512561,0.214142337,0.976802468,0.171256185,0.985226512,0.128042907,0.991768658,0.0845851675,0.996416271,0.0409657285,0.999160528,-0.00273195957,0.999996245,-0.0464243107,0.998921812,-0.0900280997,0.995939255,-0.133459926,0.991054237,-0.176636696,0.984276116,-0.219476178,0.975617886,-0.261896402,0.965095997,-0.303816259,0.952730656,-0.345155895,0.938545346,-0.385836214,0.922567308,-0.425779372,0.904826999,-0.464909256,0.885358334,-0.503151298,0.864198327,-0.540431976,0.841387689,-0.576680362,0.816969872,-0.611827374,0.790991306,-0.645805478,0.763502002,-0.678550005,0.734554231,-0.709998548,0.704203188,-0.740090668,0.672507107,-0.768769085,0.639526486,-0.795979202,0.60532403,0,0.998507798,0.0546092167,0.994035661,0.109055459,0.986596942,0.163176239,0.976213813,0.216810033,0.962917268,0.269796789,0.946747005,0.32197836,0.927751303,0.373199016,0.905986845,0.423305899,0.881518483,0.472149462,0.85441941,0.519583941,0.824770331,0.565467834,0,0.994035661,0.109055459,0.976213813,0.216810033,0.946747005,0.32197836,0.905986845,0.423305899,0.85441941,0.519583941,0.792659879,0.609664142,0.721444964,0.692471743,0.641624212,0.767019153,0.554149747,0.832417011,0.460065007,0.887885213,0.360492259,0.932762206,0,0.986596942,0.163176239,0.946747005,0.32197836,0.881518483,0.472149491,0.792659879,0.609664142,0.682553113,0.730836034,0.554149687,0.832417011,0.410891712,0.911684155,0.256619304,0.966512561,0.09546794,0.995432496,-0.0682425648,0.997668743,-0.230123743,0.973161399,0,0.976213813,0.216810033,0.905986845,0.423305899,0.792659879,0.609664142,0.641624212,0.767019153,0.460065007,0.887885213,0.256619304,0.966512561,0.0409657285,0.999160528,-0.176636696,0.984276116,-0.385836095,0.922567368,-0.576680362,0.816969872,-0.740090668,0.672507107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999967635,0.00804496557,0.999870539,0.0160894096,0.999708772,0.0241328143,0.999482274,0.0321746543,0.999191046,0.0402144119,0.998835206,0.048251573,0.998414695,0.0562856048,0.997929573,0.0643159971,0.997379839,0.0723422244,0.996765614,0.0803637654,0.996086836,0.0883801132,0.995343566,0.0963907391,0.994535923,0.104395121,0.993663847,0.112392753,0.992727518,0.120383099,0.991726935,0.128365666,0.990662098,0.136339918,0.989533186,0.144305363,0.988340259,0.152261436,0.987083316,0.160207674,0.985762537,0.168143556,0.984377921,0.176068529,0.982929587,0.183982119,0.981417656,0.191883802,0.979842186,0.199773058,0.978203297,0.207649395,0.976501107,0.215512276,0.974735737,0.223361224,0.972907245,0.231195718,0.971015811,0.239015236,0.969061494,0.246819288,0.967044532,0.254607379,0.964964926,0.262378961,0.962822855,0.270133585,0.960618496,0.277870715,0,0.999870539,0.0160894096,0.999482274,0.0321746543,0.998835206,0.048251573,0.997929573,0.0643159971,0.996765614,0.0803637654,0.995343566,0.0963907391,0.993663847,0.112392753,0.991726935,0.128365666,0.989533186,0.144305363,0.987083316,0.160207674,0.984377921,0.176068529,0.981417656,0.191883802,0.978203297,0.207649395,0.974735737,0.223361224,0.971015811,0.239015236,0.967044532,0.254607379,0.962822855,0.270133585,0.95835191,0.285589874,0.953632891,0.300972223,0.94866699,0.31627664,0.943455517,0.331499219,0.937999725,0.346635938,0.932301164,0.361682922,0.926361203,0.376636297,0.920181453,0.391492158,0.913763463,0.406246632,0.907108903,0.420895964,0.9002195,0.435436338,0.893097103,0.44986397,0.885743439,0.464175135,0.878160477,0.478366166,0.870350182,0.49243331,0.862314582,0.506372988,0.854055703,0.520181537,0.84557575,0.533855498,0,0.999708772,0.0241328143,0.998835206,0.048251573,0.997379839,0.0723422244,0.995343566,0.0963907391,0.992727518,0.120383106,0.989533186,0.144305363,0.985762537,0.168143556,0.981417656,0.191883802,0.976501107,0.215512291,0.971015811,0.239015251,0.964964926,0.262378961,0.95835191,0.285589874,0.951180756,0.30863446,0.943455517,0.331499219,0.935180724,0.354170889,0.926361203,0.376636297,0.917002141,0.398882329,0.907108903,0.420895994,0.896687329,0.442664474,0.885743439,0.464175165,0.874283612,0.485415488,0.862314582,0.506372988,0.849843204,0.527035594,0.83687681,0.547391236,0.823423028,0.567427993,0.809489548,0.587134302,0.795084596,0.606498539,0.780216515,0.625509501,0.764894009,0.644156158,0.749125957,0.662427604,0.732921541,0.68031317,0.716290176,0.697802544,0.699241638,0.714885414,0.681785762,0.731551886,0.66393286,0.747792184,0,0.999482274,0.0321746543,0.997929573,0.0643159971,0.995343566,0.0963907391,0.991726935,0.128365666,0.987083316,0.160207674,0.981417656,0.191883802,0.974735737,0.223361224,0.967044532,0.254607379,0.95835191,0.285589874,0.94866699,0.31627664,0.937999725,0.346635938,0.926361203,0.376636297,0.913763463,0.406246632,0.9002195,0.435436338,0.885743439,0.464175135,0.870350182,0.49243331,0.854055703,0.520181537,0.83687681,0.547391236,0.818831444,0.574034035,0.799938142,0.600082457,0.780216515,0.625509501,0.759687066,0.65028888,0.738370895,0.674394846,0.716290176,0.697802544,0.693467796,0.720487595,0.669927359,0.742426693,0.645693183,0.763596952,0.620790362,0.783976614,0.595244825,0.803544402,0.569082856,0.822280169,0.542331636,0.840164483,0.51501888,0.857178867,0.487172782,0.873305619,0.45882228,0.888528049,0.429996669,0.902830482,0,0.999191046,0.0402144119,0.996765614,0.0803637654,0.992727518,0.120383099,0.987083316,0.160207674,0.979842186,0.199773058,0.971015811,0.239015236,0.960618496,0.277870715,0.94866699,0.31627664,0.935180724,0.354170889,0.920181453,0.391492158,0.903693497,0.428180009,0.885743439,0.464175135,0.866360426,0.499419302,0.84557575,0.533855498,0.823423028,0.567427993,0.799938142,0.600082457,0.775159121,0.631766081,0.749125957,0.662427604,0.721880853,0.692017376,0.693467796,0.720487595,0.66393286,0.747792184,0.633323789,0.773886919,0.601690054,0.798729658,0.569082856,0.822280169,0.535555065,0.844500303,0.501160741,0.86535418,0.465955615,0.884808064,0.429996669,0.902830482,0.393342018,0.919392228,0.356050998,0.934466541,0.318183959,0.948028982,0.279802144,0.960057676,0.240967631,0.970533133,0.201743275,0.979438424,0.162192538,0.986759126,0,0.998835206,0.048251573,0.995343566,0.0963907391,0.989533186,0.144305363,0.981417656,0.191883802,0.971015811,0.239015251,0.95835191,0.285589874,0.943455517,0.331499219,0.926361203,0.376636297,0.907108903,0.420895994,0.885743439,0.464175165,0.862314582,0.506372988,0.83687681,0.547391236,0.809489548,0.587134302,0.780216515,0.625509501,0.749125957,0.662427604,0.716290176,0.697802544,0.681785762,0.731551886,0.645693123,0.763597012,0.608096302,0.793863237,0.569082856,0.822280228,0.528743625,0.848781586,0.487172782,0.873305619,0.444466949,0.895795226,0.400725693,0.916198075,0.356050909,0.934466541,0.310546666,0.950558126,0.264319122,0.964435279,0.217475682,0.976065755,0.170125633,0.985422373,0.122379385,0.992483377,0.0743479282,0.997232378,0.0261432696,0.999658227,-0.0221222918,0.999755263,-0.0703363195,0.997523308,-0.118386373,0.992967606,0,0.998414695,0.0562856048,0.993663847,0.112392753,0.985762537,0.168143556,0.974735737,0.223361224,0.960618496,0.277870744,0.943455517,0.331499219,0.92330122,0.384076655,0.9002195,0.435436338,0.874283612,0.485415488,0.84557569,0.533855498,0.814186871,0.580602944,0.780216515,0.625509501,0.743772507,0.668432832,0.704970241,0.70923686,0.66393286,0.747792184,0.620790362,0.783976614,0.57567966,0.817675352,0.528743625,0.848781586,0.480131298,0.87719661,0.42999655,0.902830541,0.378498584,0.9256019,0.325800449,0.945438564,0.272069424,0.962277651,0.217475682,0.976065755,0.162192538,0.986759126,0.106395021,0.994323969,0.050260298,0.998736143,-0.00603390438,0.999981821,-0.0623088554,0.998056889,-0.118386373,0.992967606,-0.174088418,0.984730005,-0.229238614,0.973370254,-0.283661991,0.958924353,-0.337185889,0.941438079,-0.389640808,0.920966923,0,0.997929573,0.0643159971,0.991726935,0.128365666,0.981417656,0.191883802,0.967044532,0.254607379,0.94866699,0.31627664,0.926361203,0.376636297,0.9002195,0.435436338,0.870350182,0.49243331,0.83687681,0.547391236,0.799938142,0.600082457,0.759687066,0.65028888,0.716290176,0.697802544,0.669927359,0.742426693,0.620790362,0.783976614,0.569082856,0.822280169,0.51501888,0.857178867,0.45882228,0.888528049,0.400725693,0.916198075,0.340969861,0.940074205,0.279802144,0.960057676,0.217475682,0.976065755,0.154248819,0.988032043,0.0903832316,0.995907068,0.0261432696,0.999658227,-0.0382048301,0.999269903,-0.10239473,0.994743824,-0.166160628,0.986098707,-0.229238614,0.973370254,-0.291367233,0.956611276,-0.352289349,0.935891151,-0.41175282,0.911295593,-0.469511151,0.882926524,-0.525325358,0.850901484,-0.578964233,0.815352917,-0.63020575,0.776428163,0,0.997379839,0.0723422244,0.989533186,0.144305363,0.976501107,0.215512291,0.95835191,0.285589874,0.935180724,0.354170889,0.907108903,0.420895994,0.874283612,0.485415488,0.83687681,0.547391236,0.795084596,0.606498539,0.749125957,0.662427604,0.699241638,0.714885414,0.645693123,0.763597012,0.588761032,0.808307171,0.528743625,0.848781586,0.465955526,0.884808123,0.400725693,0.916198075,0.333395928,0.942786932,0.264319122,0.964435279,0.193857178,0.981029749,0.122379385,0.992483377,0.0502601787,0.998736143,-0.0221222918,0.999755263,-0.0943888351,0.995535433,-0.166160747,0.986098707,-0.237061948,0.971494555,-0.306720883,0.951799512,-0.374772519,0.927116811,-0.440860331,0.897575736,-0.504637718,0.863331199,-0.565770924,0.82456249,-0.623939097,0.781472981,-0.678837836,0.734288216,-0.73017931,0.683255553,-0.777694285,0.628642619,-0.82113409,0.570735276,0,0.996765614,0.0803637654,0.987083316,0.160207674,0.971015811,0.239015236,0.94866699,0.31627664,0.920181453,0.391492158,0.885743439,0.464175135,0.84557575,0.533855498,0.799938142,0.600082457,0.749125957,0.662427604,0.693467796,0.720487595,0.633323789,0.773886919,0.569082856,0.822280169,0.501160741,0.86535418,0.429996669,0.902830482,0.356050998,0.934466541,0.279802144,0.960057676,0.201743275,0.979438424,0.122379385,0.992483377,0.0422238484,0.999108195,-0.0382048301,0.999269903,-0.118386254,0.992967606,-0.197801977,0.980242014,-0.275938153,0.961175382,-0.352289349,0.935891151,-0.426361531,0.904552817,-0.497675806,0.867363155,-0.565770686,0.824562609,-0.63020575,0.776428163,-0.690564096,0.723271191,-0.746455371,0.665435493,-0.797517955,0.603295267,-0.843421519,0.537252367,-0.883869171,0.467734158,-0.918599308,0.395190239,-0.947387159,0.320089936,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999964714,0.00839988142,0.999858856,0.0167991705,0.999682486,0.0251972731,0.999435604,0.0335935988,0.999118149,0.0419875532,0.998730183,0.0503785461,0.998271763,0.0587659851,0.997742951,0.0671492741,0.997143686,0.0755278245,0.996474087,0.0839010477,0.995734155,0.0922683626,0.994924009,0.100629151,0.994043648,0.108982846,0.993093133,0.117328852,0.992072523,0.125666574,0.990981936,0.133995429,0.989821434,0.142314836,0.988591075,0.150624186,0.987290978,0.158922926,0.985921204,0.167210445,0.984481871,0.175486177,0.982973099,0.183749512,0.981394947,0.191999882,0.979747534,0.200236723,0.978031039,0.208459407,0.976245463,0.216667399,0.974391043,0.224860102,0.972467899,0.23303695,0.970476091,0.241197348,0.968415797,0.249340713,0.966287255,0.257466465,0.964090466,0.265574098,0.961825669,0.273662984,0.959492981,0.281732559,0.957092583,0.289782256,0.954624712,0.297811478,0.952089429,0.30581972,0.949487031,0.313806355,0.946817577,0.321770877,0.944081306,0.329712659,0.941278458,0.337631196,0.938409209,0.34552592,0.93547374,0.353396237,0.932472229,0.361241668,0.929404974,0.369061559,0.926272094,0.376855433,0.923073888,0.384622723,0.919810534,0.392362863,0.91648227,0.400075316,0.913089335,0.407759547,0.909631968,0.415415019,0.906110466,0.423041135,0.902525008,0.430637449,0.898875892,0.438203335,0.895163298,0.445738345,0.891387582,0.453241885,0.887548923,0.460713446,0.88364768,0.468152493,0.879684091,0.475558519,0.875658393,0.482930988,0.871570945,0.490269363,0.867422044,0.497573137,0.86321187,0.504841864,0.85894078,0.512074947,0.854609132,0.519271851,0.850217104,0.526432157,0.845765173,0.533555329,0.841253519,0.540640771,0.836682558,0.547688127,0.832052529,0.554696918,0.827363789,0.561666429,0.822616637,0.568596363,0.817811489,0.575486243,0.812948585,0.582335413,0.8080284,0.589143574,0.803051174,0.595910072,0.798017204,0.602634668,0.792927027,0.609316587,0.787780881,0.615955591,0.782579124,0.622551143,0.777322114,0.629102767,0.772010326,0.635609984,0.766644061,0.64207232,0.761223674,0.648489416,0.755749583,0.654860735,0.750222206,0.661185801,0.74464184,0.667464256,0.739008904,0.673695624,0.733323872,0.679879427,0.727587104,0.686015308,0.721798956,0.69210273,0.715959966,0.698141336,0.710070372,0.704130709,0,0.999858856,0.0167991705,0.999435604,0.0335935988,0.998730183,0.0503785461,0.997742951,0.0671492741,0.996474087,0.0839010477,0.994924009,0.100629151,0.993093133,0.117328852,0.990981936,0.133995429,0.988591075,0.150624186,0.985921204,0.167210445,0.982973099,0.183749512,0.979747534,0.200236723,0.976245463,0.216667399,0.972467899,0.23303695,0.968415797,0.249340713,0.964090466,0.265574098,0.959492981,0.281732559,0.954624712,0.297811478,0.949487031,0.313806355,0.944081306,0.329712659,0.938409209,0.34552592,0.932472229,0.361241668,0.926272094,0.376855433,0.919810534,0.392362863,0.913089335,0.407759547,0.906110466,0.423041135,0.898875892,0.438203335,0.891387582,0.453241885,0.88364768,0.468152493,0.875658393,0.482930988,0.867422044,0.497573137,0.85894078,0.512074947,0.850217104,0.526432157,0.841253519,0.540640771,0.832052529,0.554696918,0.822616637,0.568596363,0.812948585,0.582335413,0.803051174,0.595910072,0.792927027,0.609316587,0.782579124,0.622551143,0.772010326,0.635609984,0.761223674,0.648489416,0.750222206,0.661185801,0.739008904,0.673695624,0.727587104,0.686015308,0.715959966,0.698141336,0.704130769,0.710070372,0.69210279,0.721798956,0.679879487,0.733323872,0.667464316,0.744641781,0.654860735,0.755749583,0.64207238,0.766644001,0.629102767,0.777322114,0.615955651,0.787780821,0.602634668,0.798017204,0.589143574,0.8080284,0.575486243,0.81781143,0.561666489,0.827363729,0.547688186,0.836682498,0.533555329,0.845765173,0.51927191,0.854609072,0.504841924,0.863211811,0.490269363,0.871570945,0.475558549,0.879684091,0.460713506,0.887548923,0.445738345,0.895163298,0.430637449,0.902525008,0.415415049,0.909631968,0.400075406,0.91648221,0.384622723,0.923073888,0.369061589,0.929404914,0.353396326,0.93547368,0.337631196,0.941278458,0.321770877,0.946817577,0.30581975,0.952089429,0.289782315,0.957092583,0.273662984,0.961825669,0.257466525,0.966287196,0.241197407,0.970476091,0.224860206,0.974391043,0.208459422,0.978031039,0.191999942,0.981394947,0.175486252,0.984481871,0.158922926,0.987290978,0.142314866,0.989821434,0.125666633,0.992072523,0.108982943,0.994043648,0.0922683701,0.995734155,0.0755278692,0.997143686,0.0587660596,0.998271763,0.0419875458,0.999118149,0.0251972992,0.999682486,0.0083999401,0.999964714,0,0.999682486,0.0251972731,0.998730183,0.0503785461,0.997143686,0.0755278245,0.994924009,0.100629151,0.992072523,0.125666574,0.988591075,0.150624186,0.984481871,0.175486177,0.979747534,0.200236723,0.974391043,0.224860102,0.968415797,0.249340713,0.961825669,0.273662984,0.954624712,0.297811478,0.946817577,0.321770877,0.938409209,0.34552592,0.929404974,0.369061559,0.919810534,0.392362863,0.909631968,0.415415019,0.898875892,0.438203335,0.887548923,0.460713446,0.875658393,0.482930988,0.86321187,0.504841864,0.850217104,0.526432157,0.836682558,0.547688127,0.822616637,0.568596363,0.8080284,0.589143574,0.792927027,0.609316587,0.777322114,0.629102767,0.761223674,0.648489416,0.74464184,0.667464256,0.727587104,0.686015308,0.710070372,0.704130709,0.69210279,0.721798956,0.673695624,0.739008904,0.654860735,0.755749583,0.635609984,0.772010326,0.615955651,0.787780821,0.595910132,0.803051114,0.575486243,0.81781143,0.554696918,0.832052469,0.533555329,0.845765173,0.512075007,0.858940721,0.490269363,0.871570945,0.468152553,0.88364768,0.445738345,0.895163298,0.423041195,0.906110466,0.400075406,0.91648221,0.376855463,0.926272094,0.353396326,0.93547368,0.329712659,0.944081306,0.30581975,0.952089429,0.281732529,0.959492981,0.257466525,0.966287196,0.233037025,0.97246784,0.208459422,0.978031039,0.183749571,0.982973099,0.158922926,0.987290978,0.133995473,0.990981936,0.108982943,0.994043648,0.0839010775,0.996474087,0.0587660596,0.998271763,0.0335936062,0.999435604,0.0083999401,0.999964714,-0.0167991798,0.999858856,-0.0419875123,0.999118149,-0.0671491846,0.997742951,-0.0922683328,0.995734155,-0.117328778,0.993093133,-0.142314836,0.989821434,-0.1672104,0.985921264,-0.191999897,0.981394947,-0.216667369,0.976245463,-0.241197258,0.970476091,-0.265574098,0.964090466,-0.289782166,0.957092643,-0.313806355,0.949487031,-0.337631166,0.941278517,-0.361241579,0.932472289,-0.384622693,0.923073888,-0.407759488,0.913089395,-0.430637449,0.902525008,-0.453241825,0.891387582,-0.47555843,0.87968415,-0.497573227,0.867421985,-0.519271851,0.854609072,-0.540640771,0.841253579,-0.561666369,0.827363789,-0.582335353,0.812948704,-0.602634668,0.798017204,-0.622551143,0.782579124,-0.64207232,0.766644061,-0.661185741,0.750222206,-0.679879367,0.733323991,-0.698141396,0.715959907,0,0.999435604,0.0335935988,0.997742951,0.0671492741,0.994924009,0.100629151,0.990981936,0.133995429,0.985921204,0.167210445,0.979747534,0.200236723,0.972467899,0.23303695,0.964090466,0.265574098,0,0.997742951,0.0671492741,0.990981936,0.133995429,0.979747534,0.200236723,0.964090466,0.265574098,0.944081306,0.329712659,0.919810534,0.392362863,0.891387582,0.453241885,0.85894078,0.512074947,0,0.994924009,0.100629151,0.979747534,0.200236723,0.954624712,0.297811478,0.919810534,0.392362863,0.875658393,0.482930988,0.822616637,0.568596363,0.761223674,0.648489416,0.69210279,0.721798956,0,0.990981936,0.133995429,0.964090466,0.265574098,0.919810534,0.392362863,0.85894078,0.512074947,0.782579124,0.622551143,0.69210279,0.721798956,0.589143574,0.8080284,0.475558549,0.879684091,0,0.985921204,0.167210445,0.944081306,0.329712659,0.875658453,0.482930928,0.782579124,0.622551143,0.667464316,0.744641781,0.533555448,0.845765114,0.384622842,0.923073828,0.224860206,0.974391043,0,0.979747534,0.200236723,0.919810534,0.392362863,0.822616637,0.568596363,0.69210279,0.721798956,0.533555329,0.845765173,0.353396326,0.93547368,0.158922926,0.987290978,-0.0419875123,0.999118149,0,0.972467899,0.23303695,0.891387582,0.453241885,0.761223674,0.648489416,0.589143574,0.8080284,0.384622723,0.923073888,0.158922926,0.987290978,-0.0755278394,0.997143686,-0.30581972,0.952089429,0,0.964090466,0.265574098,0.85894078,0.512074947,0.69210279,0.721798956,0.475558549,0.879684091,0.224860206,0.974391043,-0.0419875123,0.999118149,-0.30581972,0.952089429,-0.547688127,0.836682558,0,0.954624712,0.297811478,0.822616637,0.568596363,0.615955651,0.787780821,0.353396326,0.93547368,0.0587660596,0.998271763,-0.241197258,0.970476091,-0.519271851,0.854609072,-0.750222087,0.66118592,0,0.944081306,0.329712659,0.782579124,0.622551143,0.533555448,0.845765114,0.224860206,0.974391043,-0.108982787,0.994043648,-0.430637211,0.902525127,-0.70413053,0.71007055,-0.898875773,0.438203543,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999971092,0.00760668842,0.999884248,0.0152129373,0.999739647,0.0228183065,0.99953711,0.0304223541,0.999276817,0.0380246416,0.998958647,0.0456247292,0.998582721,0.0532221757,0.998148978,0.060816545,0.997657478,0.068407394,0.997108281,0.075994283,0.996501327,0.0835767761,0.995836794,0.0911544338,0.995114565,0.0987268165,0.994334817,0.106293485,0.993497491,0.113854013,0.992602706,0.121407941,0.991650462,0.128954858,0.990640879,0.136494294,0.989573956,0.144025847,0.988449752,0.151549056,0.987268329,0.159063488,0.986029863,0.166568726,0.984734297,0.174064353,0.983381748,0.181549877,0.981972277,0.189024895,0.980506003,0.196488991,0.978983045,0.203941703,0.977403402,0.211382627,0.975767195,0.218811318,0.974074543,0.226227343,0.972325504,0.233630285,0.970520198,0.241019696,0.968658805,0.24839516,0.966741264,0.255756289,0.964767873,0.263102561,0.962738633,0.270433664,0.960653663,0.277749062,0.958513141,0.285048425,0.956317127,0.292331308,0.95406574,0.299597234,0.951759219,0.306845874,0.949397624,0.314076722,0.946981072,0.32128942,0.944509685,0.328483492,0.9419837,0.33565858,0.939403176,0.342814267,0.936768353,0.349950075,0.934079289,0.357065678,0.931336164,0.364160568,0.928539157,0.371234447,0.925688446,0.378286779,0.92278415,0.385317266,0.919826448,0.392325461,0.916815579,0.399310946,0.913751602,0.406273335,0.910634756,0.41321218,0.907465219,0.420127153,0.904243231,0.427017808,0.90096885,0.433883756,0.897642374,0.440724581,0.894263983,0.447539926,0.890833795,0.454329371,0.887352049,0.461092502,0.883818984,0.467828989,0.880234778,0.474538386,0.876599669,0.481220305,0.872913837,0.487874389,0.869177461,0.494500309,0.865390778,0.50109756,0.861554086,0.507665813,0.857667506,0.514204741,0.853731275,0.520713866,0.849745691,0.527192831,0.845710933,0.533641338,0.841627181,0.54005897,0.837494791,0.54644531,0.833313942,0.552800059,0.829084814,0.55912286,0.824807763,0.565413237,0.820482969,0.571670949,0.81611073,0.577895522,0.811691225,0.584086776,0.80722481,0.590244114,0.802711666,0.596367359,0.79815203,0.602456093,0.793546259,0.608509958,0.788894534,0.614528596,0.784197211,0.620511711,0.77945447,0.626458883,0.774666607,0.632369816,0.769833982,0.638244152,0.764956772,0.644081652,0.760035336,0.64988178,0.755069911,0.655644298,0.750060797,0.661368906,0.74500823,0.667055309,0.73991257,0.672703028,0.734774172,0.678311825,0.729593158,0.683881462,0.724370003,0.689411402,0.719104886,0.694901526,0.713798225,0.700351417,0.708450198,0.705760837,0.703061223,0.711129367,0.697631538,0.716456711,0.692161441,0.72174269,0.686651349,0.726986885,0.681101561,0.73218894,0.675512254,0.737348735,0.669883966,0.742465794,0.664216876,0.747539937,0.6585114,0.752570748,0.652767718,0.757558107,0.646986365,0.762501597,0.641167521,0.76740092,0.635311544,0.772255898,0.62941891,0.777066171,0.623489797,0.781831503,0.617524624,0.786551535,0.611523688,0.791226149,0.605487406,0.795854926,0.599416077,0.800437629,0.593309999,0.804974079,0.587169647,0.809463918,0.580995321,0.813906848,0.574787438,0.818302751,0.568546176,0.822651327,0.562272072,0.826952279,0.555965483,0.831205368,0.549626648,0.835410416,0.543256044,0.839567065,0.536854029,0.843675137,0.530420899,0.847734451,0.523957133,0.851744652,0.517462909,0.855705619,0.510938883,0.859617054,0.504385293,0.86347872,0.497802496,0.867290437,0.49119091,0.871051967,0.484550893,0.874763072,0.477882832,0.878423572,0.471187025,0.882033348,0.464464039,0.885591984,0.4577142,0.88909936,0.450937867,0.892555356,0.444135457,0.895959675,0.437307328,0.899312139,0.430453897,0.902612567,0.423575461,0.905860841,0.416672617,0.909056604,0.409745693,0.912199795,0.402795017,0.915290236,0.395821065,0.918327689,0.388824195,0.921311975,0.381804824,0.924242973,0.37476325,0.927120566,0.3677001,0.929944396,0.3606157,0.932714522,0.35351041,0.935430586,0.346384674,0.938092589,0.339238882,0.940700233,0.33207348,0.943253517,0.324888736,0.945752263,0.317685306,0.948196232,0.310463488,0.950585306,0.303223729,0.952919424,0.295966417,0.955198348,0.288691968,0.957422018,0.2814008,0.959590316,0.27409327,0.961703122,0.266769975,0.963760257,0.259431243,0.965761602,0.25207752,0.967707038,0.244709194,0.969596505,0.237326711,0.971429884,0.229930505,0.973207057,0.222520858,0.974927902,0.21509847,0.976592362,0.207663625,0.978200316,0.20021677,0.979751647,0.192758337,0.981246233,0.185288742,0.982684135,0.177808419,0.984065115,0.170317695,0.985389173,0.16281724,0.986656249,0.155307367,0.987866223,0.147788495,0.989018977,0.140261069,0.99011457,0.132725537,0.991152823,0.125182331,0.992133737,0.117631756,0.993057311,0.11007449,0.993923366,0.102510855,0.994731903,0.0949412882,0.995482862,0.0873662308,0.996176243,0.0797861218,0.996811986,0.0722013935,0.997390091,0.0646123663,0.99791044,0.057019718,0.998373032,0.0494237728,0.998777926,0.0418249667,0.999124944,0.0342237428,0.999414206,0.026620537,0.999645591,0.0190157909,0.99981916,0.0114098256,0.999934912,0.00380331953,0.999992788,0,0.999884248,0.0152129373,0.99953711,0.0304223541,0.998958647,0.0456247292,0.998148978,0.060816545,0.997108281,0.075994283,0.995836794,0.0911544338,0.994334817,0.106293485,0.992602706,0.121407941,0.990640879,0.136494294,0.988449752,0.151549056,0.986029863,0.166568726,0.983381748,0.181549877,0.980506003,0.196488991,0.977403402,0.211382627,0.974074543,0.226227343,0.970520198,0.241019696,0.966741264,0.255756289,0.962738633,0.270433664,0.958513141,0.285048425,0.95406574,0.299597234,0.949397624,0.314076722,0.944509685,0.328483492,0.939403176,0.342814267,0.934079289,0.357065678,0.928539157,0.371234447,0.92278415,0.385317266,0.916815579,0.399310946,0.910634756,0.41321218,0.904243231,0.427017808,0,0.99953711,0.0304223541,0.998148978,0.060816545,0.995836794,0.0911544338,0.992602706,0.121407941,0.988449752,0.151549056,0.983381748,0.181549877,0.977403402,0.211382627,0.970520198,0.241019696,0.962738633,0.270433664,0.95406574,0.299597234,0.944509685,0.328483492,0.934079289,0.357065678,0.92278415,0.385317266,0.910634756,0.41321218,0.897642374,0.440724581,0.883818984,0.467828989,0.869177461,0.494500309,0.853731275,0.520713866,0.837494791,0.54644531,0.820482969,0.571670949,0.802711666,0.596367359,0.784197211,0.620511711,0.764956772,0.644081652,0.74500823,0.667055309,0.724370003,0.689411402,0.703061223,0.711129367,0.681101561,0.73218894,0.6585114,0.752570748,0.635311544,0.772255898,0,0.998958647,0.0456247292,0.995836794,0.0911544338,0.990640879,0.136494294,0.983381748,0.181549877,0.974074543,0.226227343,0.962738633,0.270433664,0.949397624,0.314076722,0.934079289,0.357065678,0.916815579,0.399310976,0.897642374,0.440724581,0.876599669,0.481220305,0.853731275,0.520713866,0.829084814,0.55912286,0.802711666,0.596367359,0.774666607,0.632369816,0.74500823,0.667055309,0.713798165,0.700351477,0.681101501,0.732189,0.646986365,0.762501597,0.611523688,0.791226149,0.574787378,0.81830281,0.536854029,0.843675137,0.497802496,0.867290437,0.4577142,0.88909936,0.416672617,0.909056604,0.37476325,0.927120566,0.332073361,0.943253577,0.288691968,0.957422018,0.244709194,0.969596505,0,0.998148978,0.060816545,0.992602706,0.121407941,0.983381748,0.181549877,0.970520198,0.241019696,0.95406574,0.299597234,0.934079289,0.357065678,0.910634756,0.41321218,0.883818984,0.467828989,0.853731275,0.520713866,0.820482969,0.571670949,0.784197211,0.620511711,0.74500823,0.667055309,0.703061223,0.711129367,0.6585114,0.752570748,0.611523688,0.791226149,0.562272072,0.826952279,0.510938883,0.859617054,0.4577142,0.88909936,0.402795017,0.915290236,0.346384674,0.938092589,0.288691968,0.957422018,0.229930505,0.973207057,0.170317695,0.985389173,0.11007449,0.993923366,0.0494237728,0.998777926,-0.0114099132,0.999934912,-0.0722013563,0.997390091,-0.132725507,0.991152823,-0.192758411,0.981246233,0,0.997108281,0.075994283,0.988449752,0.151549056,0.974074543,0.226227328,0.95406574,0.299597234,0.928539157,0.371234447,0.897642374,0.440724552,0.861554086,0.507665813,0.820482969,0.571670949,0.774666607,0.632369816,0.724370003,0.689411402,0.669883966,0.742465794,0.611523688,0.791226089,0.549626708,0.835410357,0.484550893,0.874763072,0.416672617,0.909056604,0.346384674,0.938092589,0.27409339,0.961703062,0.20021677,0.979751647,0.125182331,0.992133737,0.0494237728,0.998777926,-0.0266205054,0.999645591,-0.102510944,0.994731903,-0.177808389,0.984065115,-0.25207749,0.967707038,-0.324888796,0.945752203,-0.395821035,0.918327689,-0.464464009,0.885591984,-0.530420899,0.847734451,-0.593310058,0.80497402,0,0.995836794,0.0911544338,0.983381748,0.181549877,0.962738633,0.270433664,0.934079289,0.357065678,0.897642374,0.440724581,0.853731275,0.520713866,0.802711666,0.596367359,0.74500823,0.667055309,0.681101501,0.732189,0.611523688,0.791226149,0.536854029,0.843675137,0.4577142,0.88909936,0.37476325,0.927120566,0.288691968,0.957422018,0.20021677,0.979751647,0.11007449,0.993923366,0.0190156717,0.99981916,-0.0722014755,0.997390091,-0.162817329,0.986656249,-0.252077609,0.967707038,-0.339238971,0.940700233,-0.42357555,0.905860782,-0.504385352,0.863478661,-0.58099544,0.813906848,-0.652767837,0.757557988,-0.719105005,0.694901407,-0.779454589,0.626458764,-0.833313882,0.552800059,-0.880234838,0.474538356,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999906719,0.0136586744,0.999626875,0.0273148008,0.999160528,0.0409658328,0.998507798,0.0546092167,0.997668743,0.0682424158,0.996643603,0.0818628892,0.995432496,0.0954680815,0.994035661,0.109055459,0.992453396,0.122622497,0.99068594,0.136166647,0.988733649,0.149685413,0.986596942,0.163176239,0.984276116,0.176636621,0.981771708,0.190064058,0.979084074,0.203456014,0.976213813,0.216810033,0.973161399,0.230123594,0.96992743,0.243394226,0.966512501,0.256619453,0.962917268,0.269796789,0.959142387,0.282923788,0.955188572,0.295998007,0.95105654,0.309017003,0.946747005,0.32197836,0.942260921,0.334879637,0.937599003,0.347718418,0.932762206,0.360492349,0.927751303,0.373199016,0.922567368,0.385836065,0.917211294,0.398401111,0.911684096,0.410891831,0.905986845,0.423305899,0.900120497,0.435640991,0.894086242,0.447894812,0.887885213,0.460065067,0.881518483,0.472149462,0.874987364,0.48414579,0.868292928,0.496051818,0.861436486,0.50786531,0.85441941,0.519583941,0.847242832,0.531205714,0.839908242,0.542728424,0.832416952,0.554149806,0.824770331,0.565467834,0.816969872,0.576680362,0.809017003,0.587785244,0.800913155,0.598780572,0.792659879,0.609664142,0.784258723,0.620433927,0.775711238,0.631087959,0.767019093,0.641624272,0.758183777,0.652040899,0.74920702,0.662335873,0.740090549,0.672507226,0.730835974,0.682553172,0.721444964,0.692471743,0.711919487,0.70226109,0,0.999626875,0.0273148008,0.998507798,0.0546092167,0.996643603,0.0818628892,0.994035661,0.109055459,0.99068594,0.136166647,0.986596942,0.163176239,0.981771708,0.190064058,0.976213813,0.216810033,0.96992743,0.243394226,0.962917268,0.269796789,0.955188572,0.295998007,0.946747005,0.32197836,0.937599003,0.347718418,0.927751303,0.373199016,0.917211294,0.398401111,0.905986845,0.423305899,0.894086242,0.447894812,0.881518483,0.472149462,0.868292928,0.496051818,0.85441941,0.519583941,0.839908242,0.542728424,0.824770331,0.565467834,0.809017003,0.587785244,0.792659879,0.609664142,0.775711238,0.631087959,0.758183777,0.652040899,0.740090549,0.672507226,0.721444964,0.692471743,0.70226109,0.711919487,0.682553113,0.730835974,0.662335813,0.749207139,0.641624212,0.767019153,0.620433867,0.784258783,0.598780453,0.800913215,0.576680303,0.816969931,0.554149747,0.832417011,0.531205714,0.847242892,0.507865191,0.861436546,0.484145701,0.874987423,0.460065007,0.887885213,0.435640931,0.900120556,0.410891712,0.911684155,0.385836005,0.922567368,0.360492259,0.932762206,0.334879518,0.942260981,0.309016973,0.95105654,0.282923698,0.959142447,0.256619304,0.966512561,0.23012355,0.973161399,0.203455925,0.979084134,0.176636606,0.984276116,0.149685353,0.988733709,0.122622401,0.992453396,0.0954680592,0.995432496,0.0682423562,0.997668803,0.0409657285,0.999160528,0.0136586512,0.999906719,0,0.999160528,0.0409658328,0.996643603,0.0818628892,0.992453396,0.122622505,0.986596942,0.163176239,0.979084074,0.203456029,0.96992743,0.243394241,0.959142387,0.282923788,0.946747005,0.32197836,0.932762146,0.360492349,0.917211294,0.398401111,0.900120497,0.435641021,0.881518483,0.472149491,0.861436486,0.50786531,0.839908242,0.542728424,0.816969872,0.576680362,0.792659879,0.609664142,0.767019093,0.641624331,0.740090489,0.672507286,0.711919427,0.70226115,0.682553113,0.730836034,0.652040839,0.758183897,0.620433807,0.784258783,0.587785184,0.809017062,0.554149687,0.832417011,0.519583941,0.85441941,0.484145701,0.874987423,0.447894633,0.894086361,0.410891712,0.911684155,0.373198956,0.927751362,0.334879518,0.942260981,0.295997828,0.955188632,0.256619304,0.966512561,0.216809958,0.976213813,0.176636487,0.984276175,0.136166453,0.990685999,0.09546794,0.995432496,0.0546091385,0.998507798,0.0136585319,0.999906719,-0.0273150038,0.999626875,-0.0682425648,0.997668743,-0.109055549,0.994035661,-0.149685562,0.988733649,-0.190064266,0.981771648,-0.230123743,0.973161399,-0.269796878,0.962917268,-0.309017152,0.95105648,-0.347718626,0.937598944,-0.385836214,0.922567308,-0.423305988,0.905986786,-0.460065097,0.887885213,-0.496051997,0.868292809,-0.531205893,0.847242773,-0.565467894,0.824770272,-0.598780751,0.800912976,-0.631088138,0.775711119,-0.662335992,0.74920696,-0.692471862,0.721444905,0,0.998507798,0.0546092167,0.994035661,0.109055459,0.986596942,0.163176239,0.976213813,0.216810033,0.962917268,0.269796789,0.946747005,0.32197836,0.927751303,0.373199016,0.905986845,0.423305899,0.881518483,0.472149462,0.85441941,0.519583941,0.824770331,0.565467834,0,0.994035661,0.109055459,0.976213813,0.216810033,0.946747005,0.32197836,0.905986845,0.423305899,0.85441941,0.519583941,0.792659879,0.609664142,0.721444964,0.692471743,0.641624212,0.767019153,0.554149747,0.832417011,0.460065007,0.887885213,0.360492259,0.932762206,0,0.986596942,0.163176239,0.946747005,0.32197836,0.881518483,0.472149491,0.792659879,0.609664142,0.682553113,0.730836034,0.554149687,0.832417011,0.410891712,0.911684155,0.256619304,0.966512561,0.09546794,0.995432496,-0.0682425648,0.997668743,-0.230123743,0.973161399,0,0.976213813,0.216810033,0.905986845,0.423305899,0.792659879,0.609664142,0.641624212,0.767019153,0.460065007,0.887885213,0.256619304,0.966512561,0.0409657285,0.999160528,-0.176636696,0.984276116,-0.385836095,0.922567368,-0.576680362,0.816969872,-0.740090668,0.672507107,0,0,0,0,0,0,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/cosqi/test/fixtures/c/fftpack/medium.json b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/medium.json new file mode 100644 index 000000000000..800241e153d1 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/medium.json @@ -0,0 +1 @@ +{"lengths":[21,26,79,74,26,111,22,57,32,107],"offsets":[0,21,47,126,200,226,337,359,416,448],"cosines":[0.997203767,0.988830805,0.974927902,0.955572784,0.930873752,0.90096885,0.866025388,0.826238751,0.781831443,0.733051836,0.680172682,0.623489797,0.563320041,0.49999997,0.433883637,0.365340978,0.294755161,0.222520858,0.149042249,0.0747300014,-4.37113883e-08,0.998175561,0.992708862,0.983619928,0.970941842,0.954720855,0.935016215,0.911899865,0.885456026,0.855781257,0.822983861,0.787183464,0.748510718,0.707106769,0.663122654,0.616718888,0.56806469,0.517337739,0.46472311,0.410412818,0.35460487,0.297503024,0.239315599,0.180254951,0.120536566,0.060378477,-4.37113883e-08,0.999802351,0.999209404,0.998221457,0.996838868,0.995062172,0.992892087,0.990329444,0.987375319,0.984030843,0.980297387,0.976176322,0.971669316,0.966778219,0.961504877,0.955851436,0.949820101,0.943413317,0.936633468,0.929483414,0.921965837,0.914083779,0.905840397,0.897238851,0.888282597,0.878975153,0.869320273,0.859321654,0.848983347,0.838309407,0.827304065,0.815971613,0.80431658,0.792343557,0.780057251,0.767462671,0.754564583,0.741368234,0.727878809,0.714101613,0.700042069,0.685705781,0.671098411,0.656225741,0.641093612,0.625708044,0.610075116,0.594201028,0.578091979,0.561754405,0.545194685,0.528419495,0.51143539,0.494249195,0.476867497,0.45929727,0.441545457,0.423619092,0.405525267,0.387271106,0.36886394,0.350310862,0.331619263,0.312796593,0.293850243,0.274787724,0.255616546,0.236344352,0.216978699,0.197527394,0.177997872,0.158397987,0.138735473,0.119018123,0.0992537141,0.0794500634,0.0596151277,0.039756503,0.0198821593,-4.37113883e-08,0.999774694,0.999098957,0.997973025,0.996397495,0.994372964,0.991900444,0.988980949,0.985615909,0.981806755,0.977555215,0.972863257,0.967732966,0.962166607,0.956166744,0.949736059,0.942877471,0.935594022,0.927889049,0.919765949,0.911228478,0.90228045,0.892925858,0.883168936,0.873014092,0.862465918,0.851529121,0.84020865,0.828509629,0.816437304,0.803997099,0.791194677,0.77803576,0.764526248,0.750672281,0.736480117,0.721956074,0.707106769,0.691938818,0.676459193,0.660674691,0.644592583,0.628219962,0.611564338,0.594633162,0.577434003,0.55997479,0.54226315,0.524307311,0.506115139,0.487694889,0.469054937,0.450203776,0.431149632,0.411901236,0.392467231,0.372856408,0.35307771,0.333139777,0.31305179,0.292822719,0.272461712,0.25197807,0.23138079,0.210679233,0.18988277,0.169000745,0.148042679,0.127017811,0.1059357,0.0848058611,0.0636378154,0.0424412079,0.0212253649,-4.37113883e-08,0.998175561,0.992708862,0.983619928,0.970941842,0.954720855,0.935016215,0.911899865,0.885456026,0.855781257,0.822983861,0.787183464,0.748510718,0.707106769,0.663122654,0.616718888,0.56806469,0.517337739,0.46472311,0.410412818,0.35460487,0.297503024,0.239315599,0.180254951,0.120536566,0.060378477,-4.37113883e-08,0.999899864,0.999599516,0.999098957,0.998398364,0.997497797,0.996397495,0.995097637,0.993598521,0.991900444,0.990003705,0.987908721,0.985615909,0.983125746,0.98043865,0.977555215,0.974476039,0.971201777,0.967732966,0.96407032,0.960214674,0.956166744,0.951927304,0.947497249,0.942877471,0.938068807,0.933072329,0.927888989,0.922519863,0.916965961,0.911228478,0.905308485,0.899207234,0.892925858,0.886465669,0.879827976,0.873014092,0.866025388,0.858863235,0.851529121,0.844024479,0.836350799,0.828509629,0.82050252,0.8123312,0.803997099,0.795502067,0.786847651,0.77803576,0.769068003,0.759946227,0.750672281,0.741248012,0.731675327,0.721956074,0.71209228,0.702085853,0.691938818,0.681653261,0.67123121,0.660674691,0.649985909,0.639166892,0.628219962,0.617147207,0.605950832,0.594633162,0.583196342,0.571642816,0.55997473,0.548194587,0.536304533,0.524307311,0.512204885,0.49999997,0.487694889,0.475292176,0.462794244,0.450203657,0.437522918,0.424754649,0.411901236,0.398965299,0.385949492,0.372856408,0.35968864,0.346448839,0.333139777,0.319763899,0.306323975,0.292822719,0.279262811,0.265646994,0.25197795,0.238258481,0.224491388,0.210679233,0.196824893,0.182931125,0.169000745,0.155036494,0.141041219,0.127017811,0.11296884,0.098897256,0.0848058611,0.0706974864,0.0565749519,0.0424410887,0.0282987282,0.0141508188,-4.37113883e-08,0.99745214,0.989821434,0.977146864,0.959492981,0.93694973,0.909631968,0.87767899,0.841253519,0.800541222,0.755749524,0.707106709,0.654860675,0.599277616,0.540640771,0.479248911,0.415414959,0.349464148,0.281732529,0.212565169,0.142314747,0.0713391155,-1.62920685e-07,0.999620318,0.998481512,0.996584475,0.993930697,0.990522087,0.986361325,0.981451511,0.975796402,0.969400287,0.962267995,0.95440501,0.945817232,0.936511219,0.926494062,0.915773332,0.904357135,0.892254233,0.879473746,0.866025388,0.851919413,0.837166488,0.821777821,0.805765092,0.789140522,0.771916628,0.754106581,0.735723853,0.71678251,0.697296798,0.677281559,0.65675199,0.63572371,0.614212692,0.592235267,0.569808006,0.546948135,0.523672879,0.49999997,0.47594735,0.451533288,0.42677635,0.40169543,0.376309365,0.350637525,0.324699432,0.298514754,0.272103369,0.2454855,0.218681082,0.191710606,0.164594546,0.137353495,0.110008135,0.0825792402,0.0550877564,0.0275543183,-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.999892235,0.999568999,0.999030352,0.998276412,0.997307301,0.996123314,0.994724572,0.993111551,0.99128443,0.989243746,0.986989796,0.984523177,0.981844425,0.978954017,0.975852668,0.972541034,0.969019771,0.965289652,0.961351573,0.957206249,0.952854693,0.948297799,0.94353646,0.93857187,0.933404922,0.928036869,0.922468841,0.916701972,0.910737574,0.904576898,0.898221254,0.891672015,0.88493067,0.87799859,0.870877266,0.863568306,0.856073201,0.848393679,0.84053123,0.832487702,0.824264705,0.815864146,0.807287753,0.798537314,0.789614797,0.780522168,0.771261334,0.761834264,0.752242982,0.742489576,0.732576191,0.722504914,0.712277949,0.701897442,0.691365719,0.680684984,0.669857621,0.658885777,0.647772014,0.636518598,0.62512809,0.613602757,0.601945221,0.590158045,0.578243613,0.566204548,0.554043472,0.541763008,0.529365778,0.516854525,0.504231811,0.491500497,0.478663176,0.46572271,0.452681988,0.439543575,0.42631045,0.412985563,0.399571568,0.386071563,0.37248826,0.35882467,0.345083863,0.331268579,0.317382008,0.303426951,0.289406478,0.275323749,0.261181563,0.246983111,0.232731551,0.2184297,0.204080909,0.189688012,0.175254226,0.160782799,0.146276608,0.131739005,0.117172889,0.102581531,0.0879681781,0.0733357519,0.0586875193,0.0440267585,0.0293563902,0.0146798147,-4.37113883e-08],"twiddles":[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.970941842,0.239315674,0.885456026,0.4647232,0.748510718,0.663122714,0.56806469,0.822983861,0.35460487,0.935016274,0.120536566,0.992708862,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.996397495,0.0848059282,0.985615909,0.169000819,0.967732966,0.25197807,0.942877471,0.333139807,0.911228478,0.411901265,0.873014092,0.487694949,0.828509629,0.55997479,0.77803576,0.628220022,0.721956074,0.691938877,0.660674691,0.75067234,0.594633162,0.803997159,0.524307311,0.851529121,0.450203776,0.892925858,0.372856408,0.927889049,0.292822719,0.956166744,0.210679233,0.977555275,0.127017811,0.991900444,0.0424412079,0.999098957,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.970941842,0.239315674,0.885456026,0.4647232,0.748510718,0.663122714,0.56806469,0.822983861,0.35460487,0.935016274,0.120536566,0.992708862,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.998398364,0.0565750524,0.993598521,0.112968877,0.985615909,0.169000819,0.974476039,0.224491417,0.960214674,0.279262871,0.942877471,0.333139807,0.922519863,0.385949582,0.899207234,0.437523037,0.873014092,0.487694949,0.844024479,0.536304653,0.8123312,0.583196402,0.77803576,0.628220022,0.741248012,0.67123121,0.702085853,0.71209228,0.660674691,0.75067234,0.617147207,0.786847711,0.571642816,0.820502579,0.524307311,0.851529121,0,0.993598521,0.112968877,0.974476039,0.224491417,0.942877471,0.333139807,0.899207234,0.437523037,0.844024479,0.536304653,0.77803576,0.628220022,0.702085853,0.71209228,0.617147207,0.786847711,0.524307311,0.851529121,0.424754649,0.905308485,0.319763899,0.947497249,0.210679233,0.977555275,0.098897256,0.995097637,-0.0141509064,0.999899864,-0.127017885,0.991900444,-0.238258675,0.971201718,-0.346449047,0.938068807,-0.450203747,0.892925858,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.959492981,0.281732589,0.841253519,0.540640831,0.654860675,0.755749583,0.415414959,0.909632027,0.142314747,0.989821434,0,0,0,0,0,0,0,0,0,0,0,0,0.993930697,0.110008225,0.975796402,0.218681097,0.945817232,0.324699461,0.904357135,0.426776439,0.851919413,0.523672938,0.789140522,0.614212692,0.71678251,0.697296798,0.63572371,0.771916687,0.546948135,0.837166488,0,0.975796402,0.218681097,0.904357135,0.426776439,0.789140522,0.614212692,0.63572371,0.771916687,0.451533288,0.892254293,0.2454855,0.969400287,0.0275543183,0.999620318,-0.191710696,0.981451452,-0.40169552,0.915773273,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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/cosqi/test/fixtures/c/fftpack/runner.c b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/runner.c new file mode 100644 index 000000000000..925618e4452b --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/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 cosqi( 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 ); + } + cosqi( 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/cosqi/test/fixtures/c/fftpack/small.json b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/small.json new file mode 100644 index 000000000000..1fc288ad1dff --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/fixtures/c/fftpack/small.json @@ -0,0 +1 @@ +{"lengths":[12,5,4,6,4,5,4,14,5,10],"offsets":[0,12,17,21,27,31,36,40,54,59],"cosines":[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.923879504,0.707106769,0.382683426,-4.37113883e-08,0.965925813,0.866025388,0.707106769,0.49999997,0.258819073,-4.37113883e-08,0.923879504,0.707106769,0.382683426,-4.37113883e-08,0.95105654,0.809017003,0.587785244,0.309016973,-4.37113883e-08,0.923879504,0.707106769,0.382683426,-4.37113883e-08,0.993712187,0.974927902,0.9438833,0.90096885,0.846724212,0.781831443,0.707106769,0.623489797,0.532032013,0.433883756,0.330279052,0.222520858,0.111964479,-4.37113883e-08,0.95105654,0.809017003,0.587785244,0.309016973,-4.37113883e-08,0.987688363,0.95105654,0.891006529,0.809017003,0.707106769,0.587785244,0.453990519,0.309016973,0.156434372,-4.37113883e-08],"twiddles":[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.49999997,0.866025448,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.90096885,0.433883756,0.623489797,0.781831503,0.222520858,0.974927902,0,0,0,0,0,0,0,0,0,0,0,0,0,0.809017003,0.587785244,0.309016973,0.95105654,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/test.js b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/test/test.js new file mode 100644 index 000000000000..3a69f920ea14 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/float32/cosqi/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 cosqi = 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 cosqi, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', function test( t ) { + t.strictEqual( cosqi.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 = cosqi( 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 ); + cosqi( 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 ); + cosqi( 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 ); + cosqi( 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 ); + cosqi( 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 ); + cosqi( 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 ); + cosqi( 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; + } + cosqi( 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 ) ); + + cosqi( 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 ); + cosqi( 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(); +});