@stdlib/array-complex64 0.0.2 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +1 -1
- package/README.md +270 -121
- package/docs/types/index.d.ts +26 -48
- package/docs/types/test.ts +3 -3
- package/lib/from_array.js +4 -4
- package/lib/from_iterator.js +10 -12
- package/lib/from_iterator_map.js +11 -14
- package/lib/index.js +2 -2
- package/lib/main.js +398 -417
- package/package.json +12 -5
- package/CHANGELOG.md +0 -5
package/docs/types/index.d.ts
CHANGED
|
@@ -21,10 +21,9 @@
|
|
|
21
21
|
/// <reference types="@stdlib/types"/>
|
|
22
22
|
|
|
23
23
|
import { Iterator as Iter, IterableIterator } from '@stdlib/types/iter';
|
|
24
|
-
import { ArrayLike,
|
|
25
|
-
import { ComplexLike } from '@stdlib/types/object';
|
|
24
|
+
import { ArrayLike, RealOrComplexTypedArray, Complex64Array as Complex64ArrayInterface } from '@stdlib/types/array';
|
|
25
|
+
import { ComplexLike, Complex64 } from '@stdlib/types/object';
|
|
26
26
|
import ArrayBuffer = require( '@stdlib/array-buffer' );
|
|
27
|
-
import Complex64 = require( '@stdlib/complex-float32' );
|
|
28
27
|
|
|
29
28
|
// Define a union type representing both iterable and non-iterable iterators:
|
|
30
29
|
type Iterator = Iter | IterableIterator;
|
|
@@ -32,7 +31,7 @@ type Iterator = Iter | IterableIterator;
|
|
|
32
31
|
/**
|
|
33
32
|
* Class for creating a 64-bit complex number array.
|
|
34
33
|
*/
|
|
35
|
-
declare class Complex64Array {
|
|
34
|
+
declare class Complex64Array implements Complex64ArrayInterface {
|
|
36
35
|
/**
|
|
37
36
|
* 64-bit complex number array constructor.
|
|
38
37
|
*
|
|
@@ -100,7 +99,7 @@ declare class Complex64Array {
|
|
|
100
99
|
* var len = arr.length;
|
|
101
100
|
* // returns 2
|
|
102
101
|
*/
|
|
103
|
-
constructor( arg?: number |
|
|
102
|
+
constructor( arg?: number | RealOrComplexTypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ); // tslint:disable-line:max-line-length
|
|
104
103
|
|
|
105
104
|
/**
|
|
106
105
|
* Length (in bytes) of the array.
|
|
@@ -133,7 +132,7 @@ declare class Complex64Array {
|
|
|
133
132
|
* var nbytes = arr.BYTES_PER_ELEMENT;
|
|
134
133
|
* // returns 8
|
|
135
134
|
*/
|
|
136
|
-
readonly BYTES_PER_ELEMENT:
|
|
135
|
+
readonly BYTES_PER_ELEMENT: 8;
|
|
137
136
|
|
|
138
137
|
/**
|
|
139
138
|
* Number of array elements.
|
|
@@ -156,8 +155,8 @@ declare class Complex64Array {
|
|
|
156
155
|
*
|
|
157
156
|
* @example
|
|
158
157
|
* var Complex64 = require( `@stdlib/complex/float32` );
|
|
159
|
-
* var
|
|
160
|
-
* var
|
|
158
|
+
* var realf = require( `@stdlib/complex/realf` );
|
|
159
|
+
* var imagf = require( `@stdlib/complex/imagf` );
|
|
161
160
|
*
|
|
162
161
|
* var arr = new Complex64Array( 4 );
|
|
163
162
|
*
|
|
@@ -173,10 +172,10 @@ declare class Complex64Array {
|
|
|
173
172
|
* // Get the last array element:
|
|
174
173
|
* var z = arr.get( 3 );
|
|
175
174
|
*
|
|
176
|
-
* var re =
|
|
175
|
+
* var re = realf( z );
|
|
177
176
|
* // returns 2.0
|
|
178
177
|
*
|
|
179
|
-
* var im =
|
|
178
|
+
* var im = imagf( z );
|
|
180
179
|
* // returns 2.0
|
|
181
180
|
*/
|
|
182
181
|
copyWithin( target: number, start: number, end?: number ): Complex64Array;
|
|
@@ -234,27 +233,6 @@ declare class Complex64Array {
|
|
|
234
233
|
*/
|
|
235
234
|
get( i: number ): Complex64 | void;
|
|
236
235
|
|
|
237
|
-
/**
|
|
238
|
-
* Returns an array element.
|
|
239
|
-
*
|
|
240
|
-
* @param out - output array
|
|
241
|
-
* @param i - element index
|
|
242
|
-
* @throws index argument must be a nonnegative integer
|
|
243
|
-
* @returns array element
|
|
244
|
-
*
|
|
245
|
-
* @example
|
|
246
|
-
* var arr = new Complex64Array( 10 );
|
|
247
|
-
*
|
|
248
|
-
* var z = arr.get( 0 );
|
|
249
|
-
* // returns <Complex64>
|
|
250
|
-
*
|
|
251
|
-
* arr.set( [ 1.0, -1.0 ], 0 );
|
|
252
|
-
*
|
|
253
|
-
* z = arr.get( [ 0.0, 0.0 ], 0 );
|
|
254
|
-
* // returns [ 1.0, -1.0 ]
|
|
255
|
-
*/
|
|
256
|
-
get( out: ArrayLike<number>, i: number ): ArrayLike<number> | void;
|
|
257
|
-
|
|
258
236
|
/**
|
|
259
237
|
* Sets an array element.
|
|
260
238
|
*
|
|
@@ -287,18 +265,18 @@ declare class Complex64Array {
|
|
|
287
265
|
* @throws target array lacks sufficient storage to accommodate source values
|
|
288
266
|
*
|
|
289
267
|
* @example
|
|
290
|
-
* var
|
|
291
|
-
* var
|
|
268
|
+
* var realf = require( `@stdlib/complex/realf` );
|
|
269
|
+
* var imagf = require( `@stdlib/complex/imagf` );
|
|
292
270
|
*
|
|
293
271
|
* var arr = new Complex64Array( 10 );
|
|
294
272
|
*
|
|
295
273
|
* var z = arr.get( 0 );
|
|
296
274
|
* // returns <Complex64>
|
|
297
275
|
*
|
|
298
|
-
* var re =
|
|
276
|
+
* var re = realf( z );
|
|
299
277
|
* // returns 0.0
|
|
300
278
|
*
|
|
301
|
-
* var im =
|
|
279
|
+
* var im = imagf( z );
|
|
302
280
|
* // returns 0.0
|
|
303
281
|
*
|
|
304
282
|
* arr.set( [ 1.0, -1.0 ], 0 );
|
|
@@ -306,19 +284,19 @@ declare class Complex64Array {
|
|
|
306
284
|
* z = arr.get( 0 );
|
|
307
285
|
* // returns <Complex64>
|
|
308
286
|
*
|
|
309
|
-
* re =
|
|
287
|
+
* re = realf( z );
|
|
310
288
|
* // returns 1.0
|
|
311
289
|
*
|
|
312
|
-
* im =
|
|
290
|
+
* im = imagf( z );
|
|
313
291
|
* // returns -1.0
|
|
314
292
|
*/
|
|
315
|
-
set( value: ArrayLike<number | ComplexLike> |
|
|
293
|
+
set( value: ArrayLike<number | ComplexLike> | RealOrComplexTypedArray | ComplexLike, i?: number ): void; // tslint:disable-line:max-line-length
|
|
316
294
|
}
|
|
317
295
|
|
|
318
296
|
/**
|
|
319
297
|
* Interface defining a 64-bit complex number array constructor which is both "newable" and "callable".
|
|
320
298
|
*/
|
|
321
|
-
interface
|
|
299
|
+
interface Complex64ArrayConstructor {
|
|
322
300
|
/**
|
|
323
301
|
* 64-bit complex number array constructor.
|
|
324
302
|
*
|
|
@@ -386,7 +364,7 @@ interface Constructor {
|
|
|
386
364
|
* var len = arr.length;
|
|
387
365
|
* // returns 2
|
|
388
366
|
*/
|
|
389
|
-
new( arg?: number |
|
|
367
|
+
new( arg?: number | RealOrComplexTypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ): Complex64Array; // tslint-disable-line max-line-length
|
|
390
368
|
|
|
391
369
|
/**
|
|
392
370
|
* 64-bit complex number array constructor.
|
|
@@ -455,7 +433,7 @@ interface Constructor {
|
|
|
455
433
|
* var len = arr.length;
|
|
456
434
|
* // returns 2
|
|
457
435
|
*/
|
|
458
|
-
( arg?: number |
|
|
436
|
+
( arg?: number | RealOrComplexTypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ): Complex64Array; // tslint-disable-line max-line-length
|
|
459
437
|
|
|
460
438
|
/**
|
|
461
439
|
* Constructor name.
|
|
@@ -464,7 +442,7 @@ interface Constructor {
|
|
|
464
442
|
* var str = Complex64Array.name;
|
|
465
443
|
* // returns 'Complex64Array'
|
|
466
444
|
*/
|
|
467
|
-
readonly name:
|
|
445
|
+
readonly name: 'Complex64Array';
|
|
468
446
|
|
|
469
447
|
/**
|
|
470
448
|
* Size (in bytes) of each array element.
|
|
@@ -473,7 +451,7 @@ interface Constructor {
|
|
|
473
451
|
* var nbytes = Complex64Array.BYTES_PER_ELEMENT;
|
|
474
452
|
* // returns 8
|
|
475
453
|
*/
|
|
476
|
-
readonly BYTES_PER_ELEMENT:
|
|
454
|
+
readonly BYTES_PER_ELEMENT: 8;
|
|
477
455
|
|
|
478
456
|
/**
|
|
479
457
|
* Creates a new 64-bit complex number array from an array-like object or an iterable.
|
|
@@ -504,11 +482,11 @@ interface Constructor {
|
|
|
504
482
|
*
|
|
505
483
|
* @example
|
|
506
484
|
* var Complex64 = require( `@stdlib/complex/float32` );
|
|
507
|
-
* var
|
|
508
|
-
* var
|
|
485
|
+
* var realf = require( `@stdlib/complex/realf` );
|
|
486
|
+
* var imagf = require( `@stdlib/complex/imagf` );
|
|
509
487
|
*
|
|
510
488
|
* function clbk( v ) {
|
|
511
|
-
* return new Complex64(
|
|
489
|
+
* return new Complex64( realf(v)*2.0, imagf(v)*2.0 );
|
|
512
490
|
* }
|
|
513
491
|
*
|
|
514
492
|
* var arr = Complex64Array.from( [ new Complex64( 1.0, 1.0 ) ], clbk );
|
|
@@ -517,7 +495,7 @@ interface Constructor {
|
|
|
517
495
|
* var len = arr.length;
|
|
518
496
|
* // returns 1
|
|
519
497
|
*/
|
|
520
|
-
from( src: ArrayLike<number | ComplexLike> | Iterable<number | ComplexLike>, clbk?: Function, thisArg?: any ): Complex64Array; // tslint:disable-line:max-line-length
|
|
498
|
+
from( src: ArrayLike<number | ComplexLike> | RealOrComplexTypedArray | Iterable<number | ComplexLike>, clbk?: Function, thisArg?: any ): Complex64Array; // tslint:disable-line:max-line-length
|
|
521
499
|
|
|
522
500
|
/**
|
|
523
501
|
* Creates a new 64-bit complex number array from a variable number of arguments.
|
|
@@ -602,7 +580,7 @@ interface Constructor {
|
|
|
602
580
|
* var len = arr.length;
|
|
603
581
|
* // returns 2
|
|
604
582
|
*/
|
|
605
|
-
declare var ctor:
|
|
583
|
+
declare var ctor: Complex64ArrayConstructor;
|
|
606
584
|
|
|
607
585
|
|
|
608
586
|
// EXPORTS //
|
package/docs/types/test.ts
CHANGED
|
@@ -21,11 +21,11 @@
|
|
|
21
21
|
import Complex64Array = require( './index' );
|
|
22
22
|
import Complex64 = require( '@stdlib/complex-float32' );
|
|
23
23
|
import ArrayBuffer = require( '@stdlib/array-buffer' );
|
|
24
|
-
import
|
|
25
|
-
import
|
|
24
|
+
import realf = require( '@stdlib/complex-realf' );
|
|
25
|
+
import imagf = require( '@stdlib/complex-imagf' );
|
|
26
26
|
|
|
27
27
|
const clbk = ( v: Complex64 ) => {
|
|
28
|
-
return new Complex64(
|
|
28
|
+
return new Complex64( realf( v ) * 2.0, imagf( v ) * 2.0 );
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
|
package/lib/from_array.js
CHANGED
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
// MODULES //
|
|
22
22
|
|
|
23
23
|
var isComplexLike = require( '@stdlib/assert-is-complex-like' );
|
|
24
|
-
var
|
|
25
|
-
var
|
|
24
|
+
var realf = require( '@stdlib/complex-realf' );
|
|
25
|
+
var imagf = require( '@stdlib/complex-imagf' );
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
// MAIN //
|
|
@@ -48,8 +48,8 @@ function fromArray( buf, arr ) {
|
|
|
48
48
|
if ( !isComplexLike( v ) ) {
|
|
49
49
|
return null;
|
|
50
50
|
}
|
|
51
|
-
buf[ j ] =
|
|
52
|
-
buf[ j+1 ] =
|
|
51
|
+
buf[ j ] = realf( v );
|
|
52
|
+
buf[ j+1 ] = imagf( v );
|
|
53
53
|
j += 2; // stride
|
|
54
54
|
}
|
|
55
55
|
return buf;
|
package/lib/from_iterator.js
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
|
|
23
23
|
var isArrayLikeObject = require( '@stdlib/assert-is-array-like-object' );
|
|
24
24
|
var isComplexLike = require( '@stdlib/assert-is-complex-like' );
|
|
25
|
-
var
|
|
26
|
-
var
|
|
25
|
+
var realf = require( '@stdlib/complex-realf' );
|
|
26
|
+
var imagf = require( '@stdlib/complex-imagf' );
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
// MAIN //
|
|
@@ -43,19 +43,17 @@ function fromIterator( it ) {
|
|
|
43
43
|
out = [];
|
|
44
44
|
while ( true ) {
|
|
45
45
|
v = it.next();
|
|
46
|
-
z = v.value;
|
|
47
|
-
if ( z ) {
|
|
48
|
-
if ( isArrayLikeObject( z ) && z.length >= 2 ) {
|
|
49
|
-
out.push( z[ 0 ], z[ 1 ] );
|
|
50
|
-
} else if ( isComplexLike( z ) ) {
|
|
51
|
-
out.push( real( z ), imag( z ) );
|
|
52
|
-
} else {
|
|
53
|
-
return new TypeError( 'invalid argument. An iterator must return either a two-element array containing real and imaginary components or a complex number. Value: `'+z+'`.' );
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
46
|
if ( v.done ) {
|
|
57
47
|
break;
|
|
58
48
|
}
|
|
49
|
+
z = v.value;
|
|
50
|
+
if ( isArrayLikeObject( z ) && z.length >= 2 ) {
|
|
51
|
+
out.push( z[ 0 ], z[ 1 ] );
|
|
52
|
+
} else if ( isComplexLike( z ) ) {
|
|
53
|
+
out.push( realf( z ), imagf( z ) );
|
|
54
|
+
} else {
|
|
55
|
+
return new TypeError( 'invalid argument. An iterator must return either a two-element array containing real and imaginary components or a complex number. Value: `'+z+'`.' );
|
|
56
|
+
}
|
|
59
57
|
}
|
|
60
58
|
return out;
|
|
61
59
|
}
|
package/lib/from_iterator_map.js
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
|
|
23
23
|
var isArrayLikeObject = require( '@stdlib/assert-is-array-like-object' );
|
|
24
24
|
var isComplexLike = require( '@stdlib/assert-is-complex-like' );
|
|
25
|
-
var
|
|
26
|
-
var
|
|
25
|
+
var realf = require( '@stdlib/complex-realf' );
|
|
26
|
+
var imagf = require( '@stdlib/complex-imagf' );
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
// MAIN //
|
|
@@ -46,22 +46,19 @@ function fromIteratorMap( it, clbk, thisArg ) {
|
|
|
46
46
|
out = [];
|
|
47
47
|
i = -1;
|
|
48
48
|
while ( true ) {
|
|
49
|
-
i += 1;
|
|
50
49
|
v = it.next();
|
|
51
|
-
z = v.value;
|
|
52
|
-
if ( z ) {
|
|
53
|
-
z = clbk.call( thisArg, z, i );
|
|
54
|
-
if ( isArrayLikeObject( z ) && z.length >= 2 ) {
|
|
55
|
-
out.push( z[ 0 ], z[ 1 ] );
|
|
56
|
-
} else if ( isComplexLike( z ) ) {
|
|
57
|
-
out.push( real( z ), imag( z ) );
|
|
58
|
-
} else {
|
|
59
|
-
return new TypeError( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `'+z+'`.' );
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
50
|
if ( v.done ) {
|
|
63
51
|
break;
|
|
64
52
|
}
|
|
53
|
+
i += 1;
|
|
54
|
+
z = clbk.call( thisArg, v.value, i );
|
|
55
|
+
if ( isArrayLikeObject( z ) && z.length >= 2 ) {
|
|
56
|
+
out.push( z[ 0 ], z[ 1 ] );
|
|
57
|
+
} else if ( isComplexLike( z ) ) {
|
|
58
|
+
out.push( realf( z ), imagf( z ) );
|
|
59
|
+
} else {
|
|
60
|
+
return new TypeError( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `'+z+'`.' );
|
|
61
|
+
}
|
|
65
62
|
}
|
|
66
63
|
return out;
|
|
67
64
|
}
|