Skip to content

Commit bfbc018

Browse files
committed
Refactor and update to have parity with Complex64Array
1 parent cb8b15e commit bfbc018

File tree

13 files changed

+5249
-337
lines changed

13 files changed

+5249
-337
lines changed

lib/node_modules/@stdlib/array/complex128/README.md

Lines changed: 889 additions & 9 deletions
Large diffs are not rendered by default.

lib/node_modules/@stdlib/array/complex128/docs/types/index.d.ts

Lines changed: 81 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@
2020

2121
/// <reference types="@stdlib/types"/>
2222

23-
import { ArrayLike, TypedArray, Complex128Array as Complex128ArrayInterface } from '@stdlib/types/array';
23+
import { Iterator as Iter, IterableIterator } from '@stdlib/types/iter';
24+
import { ArrayLike, RealOrComplexTypedArray, Complex128Array as Complex128ArrayInterface } from '@stdlib/types/array';
2425
import { ComplexLike, Complex128 } from '@stdlib/types/object';
2526
import ArrayBuffer = require( '@stdlib/array/buffer' );
2627

28+
// Define a union type representing both iterable and non-iterable iterators:
29+
type Iterator = Iter | IterableIterator;
30+
2731
/**
2832
* Class for creating a 128-bit complex number array.
2933
*/
@@ -95,7 +99,7 @@ declare class Complex128Array implements Complex128ArrayInterface {
9599
* var len = arr.length;
96100
* // returns 2
97101
*/
98-
constructor( arg?: number | TypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ); // tslint:disable-line:max-line-length
102+
constructor( arg?: number | RealOrComplexTypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ); // tslint:disable-line:max-line-length
99103

100104
/**
101105
* Length (in bytes) of the array.
@@ -128,7 +132,7 @@ declare class Complex128Array implements Complex128ArrayInterface {
128132
* var nbytes = arr.BYTES_PER_ELEMENT;
129133
* // returns 16
130134
*/
131-
readonly BYTES_PER_ELEMENT: number;
135+
readonly BYTES_PER_ELEMENT: 16;
132136

133137
/**
134138
* Number of array elements.
@@ -141,6 +145,74 @@ declare class Complex128Array implements Complex128ArrayInterface {
141145
*/
142146
readonly length: number;
143147

148+
/**
149+
* Copies a sequence of elements within the array to the position starting at `target`.
150+
*
151+
* @param target - index at which to start copying elements
152+
* @param start - source index at which to copy elements from
153+
* @param end - source index at which to stop copying elements from
154+
* @returns modified array
155+
*
156+
* @example
157+
* var Complex128 = require( `@stdlib/complex/float64` );
158+
* var real = require( `@stdlib/complex/real` );
159+
* var imag = require( `@stdlib/complex/imag` );
160+
*
161+
* var arr = new Complex128Array( 4 );
162+
*
163+
* // Set the array elements:
164+
* arr.set( new Complex128( 1.0, 1.0 ), 0 );
165+
* arr.set( new Complex128( 2.0, 2.0 ), 1 );
166+
* arr.set( new Complex128( 3.0, 3.0 ), 2 );
167+
* arr.set( new Complex128( 4.0, 4.0 ), 3 );
168+
*
169+
* // Copy the first two elements to the last two elements:
170+
* arr.copyWithin( 2, 0, 2 );
171+
*
172+
* // Get the last array element:
173+
* var z = arr.get( 3 );
174+
*
175+
* var re = real( z );
176+
* // returns 2.0
177+
*
178+
* var im = imag( z );
179+
* // returns 2.0
180+
*/
181+
copyWithin( target: number, start: number, end?: number ): Complex128Array;
182+
183+
/**
184+
* Returns an iterator for iterating over array key-value pairs.
185+
*
186+
* @returns iterator
187+
*
188+
* @example
189+
* var Complex128 = require( `@stdlib/complex/float64` );
190+
*
191+
* var arr = [
192+
* new Complex128( 1.0, 1.0 ),
193+
* new Complex128( 2.0, 2.0 ),
194+
* new Complex128( 3.0, 3.0 )
195+
* ];
196+
* arr = new Complex128Array( arr );
197+
*
198+
* // Create an iterator:
199+
* var it = arr.entries();
200+
*
201+
* // Iterate over the key-value pairs...
202+
* var v = it.next().value;
203+
* // returns [ 0, <Complex128> ]
204+
*
205+
* v = it.next().value;
206+
* // returns [ 1, <Complex128> ]
207+
*
208+
* v = it.next().value;
209+
* // returns [ 2, <Complex128> ]
210+
*
211+
* var bool = it.next().done;
212+
* // returns true
213+
*/
214+
entries(): Iterator;
215+
144216
/**
145217
* Returns an array element.
146218
*
@@ -218,7 +290,7 @@ declare class Complex128Array implements Complex128ArrayInterface {
218290
* im = imag( z );
219291
* // returns -1.0
220292
*/
221-
set( value: ArrayLike<number | ComplexLike> | Complex128Array | ComplexLike, i?: number ): void; // tslint:disable-line:max-line-length
293+
set( value: ArrayLike<number | ComplexLike> | RealOrComplexTypedArray | ComplexLike, i?: number ): void; // tslint:disable-line:max-line-length
222294
}
223295

224296
/**
@@ -292,7 +364,7 @@ interface Constructor {
292364
* var len = arr.length;
293365
* // returns 2
294366
*/
295-
new( arg?: number | TypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ): Complex128Array; // tslint-disable-line max-line-length
367+
new( arg?: number | RealOrComplexTypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ): Complex128Array; // tslint-disable-line max-line-length
296368

297369
/**
298370
* 128-bit complex number array constructor.
@@ -361,7 +433,7 @@ interface Constructor {
361433
* var len = arr.length;
362434
* // returns 2
363435
*/
364-
( arg?: number | TypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ): Complex128Array; // tslint-disable-line max-line-length
436+
( arg?: number | RealOrComplexTypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ): Complex128Array; // tslint-disable-line max-line-length
365437

366438
/**
367439
* Constructor name.
@@ -370,7 +442,7 @@ interface Constructor {
370442
* var str = Complex128Array.name;
371443
* // returns 'Complex128Array'
372444
*/
373-
readonly name: string;
445+
readonly name: 'Complex128Array';
374446

375447
/**
376448
* Size (in bytes) of each array element.
@@ -379,7 +451,7 @@ interface Constructor {
379451
* var nbytes = Complex128Array.BYTES_PER_ELEMENT;
380452
* // returns 16
381453
*/
382-
readonly BYTES_PER_ELEMENT: number;
454+
readonly BYTES_PER_ELEMENT: 16;
383455

384456
/**
385457
* Creates a new 128-bit complex number array from an array-like object or an iterable.
@@ -423,7 +495,7 @@ interface Constructor {
423495
* var len = arr.length;
424496
* // returns 1
425497
*/
426-
from( src: ArrayLike<number | ComplexLike> | Iterable<number | ComplexLike>, clbk?: Function, thisArg?: any ): Complex128Array; // tslint:disable-line:max-line-length
498+
from( src: ArrayLike<number | ComplexLike> | RealOrComplexTypedArray | Iterable<number | ComplexLike>, clbk?: Function, thisArg?: any ): Complex128Array; // tslint:disable-line:max-line-length
427499

428500
/**
429501
* Creates a new 128-bit complex number array from a variable number of arguments.

lib/node_modules/@stdlib/array/complex128/examples/index.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,12 @@ var Complex128 = require( '@stdlib/complex/float64' );
2222
var Float64Array = require( '@stdlib/array/float64' );
2323
var Complex128Array = require( './../lib' );
2424

25-
var arr;
26-
var out;
27-
2825
// Create a complex array by specifying a length:
29-
out = new Complex128Array( 3 );
26+
var out = new Complex128Array( 3 );
3027
console.log( out );
3128

3229
// Create a complex array from an array of complex numbers:
33-
arr = [
30+
var arr = [
3431
new Complex128( 1.0, -1.0 ),
3532
new Complex128( -3.14, 3.14 ),
3633
new Complex128( 0.5, 0.5 )

lib/node_modules/@stdlib/array/complex128/lib/from_iterator_map.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,15 @@ function fromIteratorMap( it, clbk, thisArg ) {
4444
var i;
4545

4646
out = [];
47-
i = 0;
47+
i = -1;
4848
while ( true ) {
4949
v = it.next();
5050
if ( v.done ) {
5151
break;
5252
}
5353
i += 1;
5454
z = clbk.call( thisArg, v.value, i );
55-
if ( isArrayLikeObject( z ) ) {
55+
if ( isArrayLikeObject( z ) && z.length >= 2 ) {
5656
out.push( z[ 0 ], z[ 1 ] );
5757
} else if ( isComplexLike( z ) ) {
5858
out.push( real( z ), imag( z ) );

lib/node_modules/@stdlib/array/complex128/lib/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@
8686

8787
// MODULES //
8888

89-
var Complex128Array = require( './main.js' );
89+
var main = require( './main.js' );
9090

9191

9292
// EXPORTS //
9393

94-
module.exports = Complex128Array;
94+
module.exports = main;

0 commit comments

Comments
 (0)