Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 21 additions & 15 deletions lib/node_modules/@stdlib/fft/base/fftpack/float32/rffti/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,35 +40,37 @@ limitations under the License.
var rffti = require( '@stdlib/fft/base/fftpack/float32/rffti' );
```

#### rffti( N, workspace, strideW, offsetW )
#### rffti( N, w, strideW, offsetW )

Initializes a single-precision floating-point workspace array for performing a real-valued Fourier transform.

```javascript
var Float32Array = require( '@stdlib/array/float32' );
var Uint32Array = require( '@stdlib/array/uint32' );

var N = 8;
var workspace = new Float32Array( ( 2*N ) + 34 );
var w = new Float32Array( ( 2*N ) + 34 );

var out = rffti( N, workspace, 1, 0 );
var out = rffti( N, w, 1, 0 );
// returns <Float32Array>

var bool = ( out === workspace );
var bool = ( out === w );
// returns true

var twiddleFactors = workspace.slice( N, 2*N );
var twiddleFactors = w.slice( N, 2*N );
// returns <Float32Array>[ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ]

var factors = workspace.slice( 2*N, ( 2*N ) + 4 );
// returns <Float32Array>[ 8, 2, 2, 4 ]
var fview = new Uint32Array( w.buffer, w.byteOffset, w.length );
var factors = fview.slice( 2*N, ( 2*N ) + 4 );
// returns <Uint32Array>[ 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`.
- **w**: workspace [`Float32Array`][@stdlib/array/float32].
- **strideW**: stride length for `w`.
- **offsetW**: starting index for `w`.

</section>

Expand Down Expand Up @@ -116,26 +118,30 @@ The function accepts the following arguments:

```javascript
var Float32Array = require( '@stdlib/array/float32' );
var Uint32Array = require( '@stdlib/array/uint32' );
var zeroTo = require( '@stdlib/array/zero-to' );
var logEach = require( '@stdlib/console/log-each' );
var rffti = require( '@stdlib/fft/base/fftpack/float32/rffti' );

var N = 8;
var workspace = new Float32Array( ( 2*N ) + 34 );
var w = new Float32Array( ( 2*N ) + 34 );

rffti( N, workspace, 1, 0 );
rffti( N, w, 1, 0 );
console.log( 'Sequence length: %d', N );

console.log( 'Twiddle factors:' );
var idx = zeroTo( N, 'float32' );
logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( N, 2*N ) );
logEach( ' w[ %d ] = %0.4f', idx, w.slice( N, 2*N ) );

// Create an unsigned integer view over the workspace to read the factorization section:
var fview = new Uint32Array( w.buffer, w.byteOffset, w.length );

console.log( 'Factorization:' );
var nf = workspace[ (2*N)+1 ];
var nf = fview[ (2*N)+1 ];

console.log( ' number of factors: %d', nf );
idx = zeroTo( nf, 'float32' );
logEach( ' factor[ %d ]: %d', idx, workspace.slice( (2*N)+2, (2*N)+2+nf ) );
logEach( ' factor[ %d ]: %d', idx, fview.slice( (2*N)+2, (2*N)+2+nf ) );
```

</section>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ var rffti = require( './../lib' );
* @returns {Function} benchmark function
*/
function createBenchmark( N ) {
var workspace = new Float32Array( ( 2*N ) + 34 );
var w = new Float32Array( ( 2*N ) + 34 );
return benchmark;

/**
Expand All @@ -52,13 +52,13 @@ function createBenchmark( N ) {

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
rffti( N, workspace, 1, 0 );
if ( isnanf( workspace[ N ] ) ) {
rffti( N, w, 1, 0 );
if ( isnanf( w[ N ] ) ) {
b.fail( 'should not return NaN' );
}
}
b.toc();
if ( isnanf( workspace[ N ] ) ) {
if ( isnanf( w[ N ] ) ) {
b.fail( 'should not return NaN' );
}
b.pass( 'benchmark finished' );
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

{{alias}}( N, workspace, strideW, offsetW )
{{alias}}( N, w, strideW, offsetW )
Initializes a single-precision floating-point workspace array for performing
a real-valued Fourier transform.

Expand All @@ -23,14 +23,14 @@
N: integer
Length of the sequence.

workspace: Float32Array
w: Float32Array
Workspace array.

strideW: integer
Stride length for `workspace`.
Stride length for `w`.

offsetW: integer
Starting index for `workspace`.
Starting index for `w`.

Returns
-------
Expand All @@ -40,15 +40,16 @@
Examples
--------
> var N = 8;
> var workspace = new {{alias:@stdlib/array/float32}}( ( 2*N ) + 34 );
> var out = {{alias}}( N, workspace, 1, 0 )
> var w = new {{alias:@stdlib/array/float32}}( ( 2*N ) + 34 );
> var out = {{alias}}( N, w, 1, 0 )
<Float32Array>
> var bool = ( out === workspace )
> var bool = ( out === w )
true
> var twiddleFactors = workspace.slice( N, 2*N )
> var twiddleFactors = w.slice( N, 2*N )
<Float32Array>[ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ]
> var factors = workspace.slice( 2*N, ( 2*N ) + 4 )
<Float32Array>[ 8, 2, 2, 4 ]
> var fview = new {{alias:@stdlib/array/uint32}}( w.buffer, w.byteOffset, w.length );
> var factors = fview.slice( 2*N, ( 2*N ) + 4 )
<Uint32Array>[ 8, 2, 2, 4 ]

See Also
--------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,30 +27,32 @@
* - For single-point sequences (N=1), the function returns immediately as the FFT is the identity operation.
*
* @param N - length of the sequence
* @param workspace - workspace array
* @param strideW - stride length for `workspace`
* @param offsetW - starting index for `workspace`
* @param w - workspace array
* @param strideW - stride length for `w`
* @param offsetW - starting index for `w`
* @returns workspace array
*
* @example
* var Float32Array = require( '@stdlib/array/float32' );
* var Uint32Array = require( '@stdlib/array/uint32' );
*
* var N = 8;
* var workspace = new Float32Array( ( 2*N ) + 34 );
* var w = new Float32Array( ( 2*N ) + 34 );
*
* var out = rffti( N, workspace, 1, 0 );
* var out = rffti( N, w, 1, 0 );
* // returns <Float32Array>
*
* var bool = ( out === workspace );
* var bool = ( out === w );
* // returns true
*
* var twiddleFactors = workspace.slice( N, 2*N );
* var twiddleFactors = w.slice( N, 2*N );
* // returns <Float32Array>[ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ]
*
* var factors = workspace.slice( 2*N, ( 2*N ) + 4 );
* // returns <Float32Array>[ 8, 2, 2, 4 ]
* var fview = new Uint32Array( w.buffer, w.byteOffset, w.length );
* var factors = fview.slice( 2*N, ( 2*N ) + 4 );
* // returns <Uint32Array>[ 8, 2, 2, 4 ]
*/
declare function rffti( N: number, workspace: Float32Array, strideW: number, offsetW: number ): Float32Array;
declare function rffti( N: number, w: Float32Array, strideW: number, offsetW: number ): Float32Array;


// EXPORTS //
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,23 +23,23 @@ import rffti = require( './index' );

// The function returns a Float32Array...
{
const workspace = new Float32Array( ( 2*8 ) + 34 );
const w = new Float32Array( ( 2*8 ) + 34 );

rffti( 8, workspace, 1, 0 ); // $ExpectType Float32Array
rffti( 8, w, 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( ( 2*8 ) + 34 );
const w = new Float32Array( ( 2*8 ) + 34 );

rffti( '8', workspace, 1, 0 ); // $ExpectError
rffti( true, workspace, 1, 0 ); // $ExpectError
rffti( false, workspace, 1, 0 ); // $ExpectError
rffti( null, workspace, 1, 0 ); // $ExpectError
rffti( void 0, workspace, 1, 0 ); // $ExpectError
rffti( [], workspace, 1, 0 ); // $ExpectError
rffti( {}, workspace, 1, 0 ); // $ExpectError
rffti( ( x: number ): number => x, workspace, 1, 0 ); // $ExpectError
rffti( '8', w, 1, 0 ); // $ExpectError
rffti( true, w, 1, 0 ); // $ExpectError
rffti( false, w, 1, 0 ); // $ExpectError
rffti( null, w, 1, 0 ); // $ExpectError
rffti( void 0, w, 1, 0 ); // $ExpectError
rffti( [], w, 1, 0 ); // $ExpectError
rffti( {}, w, 1, 0 ); // $ExpectError
rffti( ( x: number ): number => x, w, 1, 0 ); // $ExpectError
}

// The compiler throws an error if the function is provided a second argument which is not a Float32Array...
Expand All @@ -57,39 +57,39 @@ import rffti = require( './index' );

// The compiler throws an error if the function is provided a third argument which is not a number...
{
const workspace = new Float32Array( ( 2*8 ) + 34 );
const w = new Float32Array( ( 2*8 ) + 34 );

rffti( 8, workspace, '1', 0 ); // $ExpectError
rffti( 8, workspace, true, 0 ); // $ExpectError
rffti( 8, workspace, false, 0 ); // $ExpectError
rffti( 8, workspace, null, 0 ); // $ExpectError
rffti( 8, workspace, void 0, 0 ); // $ExpectError
rffti( 8, workspace, [], 0 ); // $ExpectError
rffti( 8, workspace, {}, 0 ); // $ExpectError
rffti( 8, workspace, ( x: number ): number => x, 0 ); // $ExpectError
rffti( 8, w, '1', 0 ); // $ExpectError
rffti( 8, w, true, 0 ); // $ExpectError
rffti( 8, w, false, 0 ); // $ExpectError
rffti( 8, w, null, 0 ); // $ExpectError
rffti( 8, w, void 0, 0 ); // $ExpectError
rffti( 8, w, [], 0 ); // $ExpectError
rffti( 8, w, {}, 0 ); // $ExpectError
rffti( 8, w, ( 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( ( 2*8 ) + 34 );
const w = new Float32Array( ( 2*8 ) + 34 );

rffti( 8, workspace, 1, '0' ); // $ExpectError
rffti( 8, workspace, 1, true ); // $ExpectError
rffti( 8, workspace, 1, false ); // $ExpectError
rffti( 8, workspace, 1, null ); // $ExpectError
rffti( 8, workspace, 1, void 0 ); // $ExpectError
rffti( 8, workspace, 1, [] ); // $ExpectError
rffti( 8, workspace, 1, {} ); // $ExpectError
rffti( 8, workspace, 1, ( x: number ): number => x ); // $ExpectError
rffti( 8, w, 1, '0' ); // $ExpectError
rffti( 8, w, 1, true ); // $ExpectError
rffti( 8, w, 1, false ); // $ExpectError
rffti( 8, w, 1, null ); // $ExpectError
rffti( 8, w, 1, void 0 ); // $ExpectError
rffti( 8, w, 1, [] ); // $ExpectError
rffti( 8, w, 1, {} ); // $ExpectError
rffti( 8, w, 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( ( 2*8 ) + 34 );
const w = new Float32Array( ( 2*8 ) + 34 );

rffti(); // $ExpectError
rffti( 8 ); // $ExpectError
rffti( 8, workspace ); // $ExpectError
rffti( 8, workspace, 1 ); // $ExpectError
rffti( 8, workspace, 1, 0, 123 ); // $ExpectError
rffti( 8, w ); // $ExpectError
rffti( 8, w, 1 ); // $ExpectError
rffti( 8, w, 1, 0, 123 ); // $ExpectError
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,27 @@
'use strict';

var Float32Array = require( '@stdlib/array/float32' );
var Uint32Array = require( '@stdlib/array/uint32' );
var zeroTo = require( '@stdlib/array/zero-to' );
var logEach = require( '@stdlib/console/log-each' );
var rffti = require( './../lib' );

var N = 8;
var workspace = new Float32Array( ( 2*N ) + 34 );
var w = new Float32Array( ( 2*N ) + 34 );

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A lot of these s/workspace/w/ changes are not necessary. It is only the repl.txt file which needed to be updated, and it is okay if the naming conventions there differ due to length and/or id constraints.


rffti( N, workspace, 1, 0 );
rffti( N, w, 1, 0 );
console.log( 'Sequence length: %d', N );

console.log( 'Twiddle factors:' );
var idx = zeroTo( N, 'float32' );
logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( N, 2*N ) );
logEach( ' w[ %d ] = %0.4f', idx, w.slice( N, 2*N ) );

// Create an unsigned integer view over the workspace to read the factorization section:
var fview = new Uint32Array( w.buffer, w.byteOffset, w.length );

console.log( 'Factorization:' );
var nf = workspace[ (2*N)+1 ];
var nf = fview[ (2*N)+1 ];

console.log( ' number of factors: %d', nf );
idx = zeroTo( nf, 'float32' );
logEach( ' factor[ %d ]: %d', idx, workspace.slice( (2*N)+2, (2*N)+2+nf ) );
logEach( ' factor[ %d ]: %d', idx, fview.slice( (2*N)+2, (2*N)+2+nf ) );
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,24 @@
*
* @example
* var Float32Array = require( '@stdlib/array/float32' );
* var Uint32Array = require( '@stdlib/array/uint32' );
* var rffti = require( '@stdlib/fft/base/fftpack/float32/rffti' );
*
* var N = 8;
* var workspace = new Float32Array( ( 2*N ) + 34 );
* var w = new Float32Array( ( 2*N ) + 34 );
*
* var out = rffti( N, workspace, 1, 0 );
* var out = rffti( N, w, 1, 0 );
* // returns <Float32Array>
*
* var bool = ( out === workspace );
* var bool = ( out === w );
* // returns true
*
* var twiddleFactors = workspace.slice( N, 2*N );
* var twiddleFactors = w.slice( N, 2*N );
* // returns <Float32Array>[ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ]
*
* var factors = workspace.slice( 2*N, ( 2*N ) + 4 );
* // returns <Float32Array>[ 8, 2, 2, 4 ]
* var fview = new Uint32Array( w.buffer, w.byteOffset, w.length );
* var factors = fview.slice( 2*N, ( 2*N ) + 4 );
* // returns <Uint32Array>[ 8, 2, 2, 4 ]
*/

// MODULES //
Expand Down
Loading
Loading