1616* limitations under the License.
1717*/
1818
19+ /* eslint-disable max-lines */
20+
1921// TypeScript Version: 4.1
2022
2123/// <reference types="@stdlib/types"/>
2224
23- import { typedndarray , genericndarray } from '@stdlib/types/ndarray' ;
25+ import { typedndarray , genericndarray , complexndarray } from '@stdlib/types/ndarray' ;
2426import { MultiSlice , Slice } from '@stdlib/types/slice' ;
27+ import { ComplexLike } from '@stdlib/types/complex' ;
2528
2629/**
2730* Interface defining function options.
@@ -38,6 +41,75 @@ interface Options {
3841*/
3942type SliceArgument = Slice | number | null | undefined ;
4043
44+ /**
45+ * Typed ndarray element.
46+ */
47+ type Element < U > = U extends typedndarray < infer T > ? T : never ;
48+
49+ /**
50+ * Returns a new ndarray with a specified slice region filled with a provided value.
51+ *
52+ * @param x - input ndarray
53+ * @param value - fill value
54+ * @param s - slice argument
55+ * @param options - function options
56+ * @param options.strict - boolean indicating whether to enforce strict bounds checking
57+ * @returns output ndarray
58+ *
59+ * @example
60+ * var zeros = require( '@stdlib/ndarray/zeros' );
61+ * var MultiSlice = require( '@stdlib/slice/multi' );
62+ * var Slice = require( '@stdlib/slice/ctor' );
63+ *
64+ * var x = zeros( [ 2, 2 ], {
65+ * 'dtype': 'complex128'
66+ * });
67+ * // returns <ndarray>[ [ <Complex128>[ 0.0, 0.0 ], <Complex128>[ 0.0, 0.0 ] ], [ <Complex128>[ 0.0, 0.0 ], <Complex128>[ 0.0, 0.0 ] ] ]
68+ *
69+ * // Define a single-cell fill region:
70+ * var s0 = new Slice( 0, 1 );
71+ * var s1 = new Slice( 1, 2 );
72+ * var s = new MultiSlice( s0, s1 );
73+ *
74+ * // Fill the region with a scalar value:
75+ * var y = toFilledSlice( x, 9.0, s );
76+ * // returns <ndarray>[ [ <Complex128>[ 0.0, 0.0 ], <Complex128>[ 9.0, 0.0 ] ], [ <Complex128>[ 0.0, 0.0 ], <Complex128>[ 0.0, 0.0 ] ] ]
77+ *
78+ * var bool = ( y === x );
79+ * // returns false
80+ */
81+ declare function toFilledSlice < T extends complexndarray > ( x : T , value : number | ComplexLike , s : MultiSlice | ArrayLike < SliceArgument > , options ?: Options ) : T ;
82+
83+ /**
84+ * Returns a new ndarray with a specified slice region filled with a provided value.
85+ *
86+ * @param x - input ndarray
87+ * @param value - fill value
88+ * @param args - slice and option arguments
89+ * @returns output ndarray
90+ *
91+ * @example
92+ * var zeros = require( '@stdlib/ndarray/zeros' );
93+ * var Slice = require( '@stdlib/slice/ctor' );
94+ *
95+ * var x = zeros( [ 2, 2 ], {
96+ * 'dtype': 'complex128'
97+ * });
98+ * // returns <ndarray>[ [ <Complex128>[ 0.0, 0.0 ], <Complex128>[ 0.0, 0.0 ] ], [ <Complex128>[ 0.0, 0.0 ], <Complex128>[ 0.0, 0.0 ] ] ]
99+ *
100+ * // Define a single-cell fill region:
101+ * var s0 = new Slice( 0, 1 );
102+ * var s1 = new Slice( 1, 2 );
103+ *
104+ * // Fill the region with a scalar value:
105+ * var y = toFilledSlice( x, 9.0, s0, s1 );
106+ * // returns <ndarray>[ [ <Complex128>[ 0.0, 0.0 ], <Complex128>[ 9.0, 0.0 ] ], [ <Complex128>[ 0.0, 0.0 ], <Complex128>[ 0.0, 0.0 ] ] ]
107+ *
108+ * var bool = ( y === x );
109+ * // returns false
110+ */
111+ declare function toFilledSlice < T extends complexndarray > ( x : T , value : number | ComplexLike , ...args : Array < SliceArgument | Options > ) : T ;
112+
41113/**
42114* Returns a new ndarray with a specified slice region filled with a provided value.
43115*
@@ -49,26 +121,28 @@ type SliceArgument = Slice | number | null | undefined;
49121* @returns output ndarray
50122*
51123* @example
52- * var array = require( '@stdlib/ndarray/array ' );
124+ * var zeros = require( '@stdlib/ndarray/zeros ' );
53125* var MultiSlice = require( '@stdlib/slice/multi' );
54126* var Slice = require( '@stdlib/slice/ctor' );
55127*
56- * var x = array( [ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ], [ 9.0, 10.0, 11.0, 12.0 ] ] );
57- * // returns <ndarray>[ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ], [ 9.0, 10.0, 11.0, 12.0 ] ]
128+ * var x = zeros( [ 3, 4 ], {
129+ * 'dtype': 'float64'
130+ * });
131+ * // returns <ndarray>[ [ 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 0.0 ] ]
58132*
59- * // Define the fill region:
60- * var s0 = new Slice( 1, 3 );
61- * var s1 = new Slice( 2, 4 );
133+ * // Define an interior fill region:
134+ * var s0 = new Slice( 1, 2 );
135+ * var s1 = new Slice( 1, 3 );
62136* var s = new MultiSlice( s0, s1 );
63137*
64138* // Fill the region with a scalar value:
65- * var y = toFilledSlice( x, 0 .0, s );
66- * // returns <ndarray>[ [ 1 .0, 2 .0, 3 .0, 4 .0 ], [ 5 .0, 6 .0, 0 .0, 0.0 ], [ 9 .0, 10 .0, 0.0, 0.0 ] ]
139+ * var y = toFilledSlice( x, 9 .0, s );
140+ * // returns <ndarray>[ [ 0 .0, 0 .0, 0 .0, 0 .0 ], [ 0 .0, 9 .0, 9 .0, 0.0 ], [ 0 .0, 0 .0, 0.0, 0.0 ] ]
67141*
68142* var bool = ( y === x );
69143* // returns false
70144*/
71- declare function toFilledSlice < T = unknown , U extends typedndarray < T > = typedndarray < T > > ( x : U , value : T | number , s : MultiSlice | ArrayLike < SliceArgument > , options ?: Options ) : U ;
145+ declare function toFilledSlice < T = unknown , U extends typedndarray < T > = typedndarray < T > > ( x : U , value : Element < U > , s : MultiSlice | ArrayLike < SliceArgument > , options ?: Options ) : U ;
72146
73147/**
74148* Returns a new ndarray with a specified slice region filled with a provided value.
@@ -79,24 +153,26 @@ declare function toFilledSlice<T = unknown, U extends typedndarray<T> = typednda
79153* @returns output ndarray
80154*
81155* @example
82- * var array = require( '@stdlib/ndarray/array ' );
156+ * var zeros = require( '@stdlib/ndarray/zeros ' );
83157* var Slice = require( '@stdlib/slice/ctor' );
84158*
85- * var x = array( [ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ], [ 9.0, 10.0, 11.0, 12.0 ] ] );
86- * // returns <ndarray>[ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ], [ 9.0, 10.0, 11.0, 12.0 ] ]
159+ * var x = zeros( [ 3, 4 ], {
160+ * 'dtype': 'float64'
161+ * });
162+ * // returns <ndarray>[ [ 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 0.0 ] ]
87163*
88- * // Define the fill region:
89- * var s0 = new Slice( 1, 3 );
90- * var s1 = new Slice( 2, 4 );
164+ * // Define an interior fill region:
165+ * var s0 = new Slice( 1, 2 );
166+ * var s1 = new Slice( 1, 3 );
91167*
92168* // Fill the region with a scalar value:
93- * var y = toFilledSlice( x, 0 .0, s0, s1 );
94- * // returns <ndarray>[ [ 1 .0, 2 .0, 3 .0, 4 .0 ], [ 5 .0, 6 .0, 0 .0, 0.0 ], [ 9 .0, 10 .0, 0.0, 0.0 ] ]
169+ * var y = toFilledSlice( x, 9 .0, s0, s1 );
170+ * // returns <ndarray>[ [ 0 .0, 0 .0, 0 .0, 0 .0 ], [ 0 .0, 9 .0, 9 .0, 0.0 ], [ 0 .0, 0 .0, 0.0, 0.0 ] ]
95171*
96172* var bool = ( y === x );
97173* // returns false
98174*/
99- declare function toFilledSlice < T = unknown , U extends typedndarray < T > = typedndarray < T > > ( x : U , value : T | number , ...args : Array < SliceArgument | Options > ) : U ;
175+ declare function toFilledSlice < T = unknown , U extends typedndarray < T > = typedndarray < T > > ( x : U , value : Element < U > , ...args : Array < SliceArgument | Options > ) : U ;
100176
101177/**
102178* Returns a new ndarray with a specified slice region filled with a provided value.
@@ -109,21 +185,23 @@ declare function toFilledSlice<T = unknown, U extends typedndarray<T> = typednda
109185* @returns output ndarray
110186*
111187* @example
112- * var array = require( '@stdlib/ndarray/array ' );
188+ * var zeros = require( '@stdlib/ndarray/zeros ' );
113189* var MultiSlice = require( '@stdlib/slice/multi' );
114190* var Slice = require( '@stdlib/slice/ctor' );
115191*
116- * var x = array( [ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ], [ 9.0, 10.0, 11.0, 12.0 ] ] );
117- * // returns <ndarray>[ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ], [ 9.0, 10.0, 11.0, 12.0 ] ]
192+ * var x = zeros( [ 3, 4 ], {
193+ * 'dtype': 'generic'
194+ * });
195+ * // returns <ndarray>[ [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ]
118196*
119- * // Define the fill region:
120- * var s0 = new Slice( 1, 3 );
121- * var s1 = new Slice( 2, 4 );
197+ * // Define an interior fill region:
198+ * var s0 = new Slice( 1, 2 );
199+ * var s1 = new Slice( 1, 3 );
122200* var s = new MultiSlice( s0, s1 );
123201*
124202* // Fill the region with a scalar value:
125- * var y = toFilledSlice( x, 0.0 , s );
126- * // returns <ndarray>[ [ 1. 0, 2. 0, 3. 0, 4. 0 ], [ 5. 0, 6.0, 0.0 , 0.0 ], [ 9. 0, 10. 0, 0.0, 0. 0 ] ]
203+ * var y = toFilledSlice( x, 9 , s );
204+ * // returns <ndarray>[ [ 0, 0, 0, 0 ], [ 0, 9, 9 , 0 ], [ 0, 0, 0, 0 ] ]
127205*
128206* var bool = ( y === x );
129207* // returns false
@@ -139,19 +217,21 @@ declare function toFilledSlice<T = unknown, U = unknown>( x: genericndarray<T>,
139217* @returns output ndarray
140218*
141219* @example
142- * var array = require( '@stdlib/ndarray/array ' );
220+ * var zeros = require( '@stdlib/ndarray/zeros ' );
143221* var Slice = require( '@stdlib/slice/ctor' );
144222*
145- * var x = array( [ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ], [ 9.0, 10.0, 11.0, 12.0 ] ] );
146- * // returns <ndarray>[ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ], [ 9.0, 10.0, 11.0, 12.0 ] ]
223+ * var x = zeros( [ 3, 4 ], {
224+ * 'dtype': 'generic'
225+ * });
226+ * // returns <ndarray>[ [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ]
147227*
148- * // Define the fill region:
149- * var s0 = new Slice( 1, 3 );
150- * var s1 = new Slice( 2, 4 );
228+ * // Define an interior fill region:
229+ * var s0 = new Slice( 1, 2 );
230+ * var s1 = new Slice( 1, 3 );
151231*
152232* // Fill the region with a scalar value:
153- * var y = toFilledSlice( x, 0.0 , s0, s1 );
154- * // returns <ndarray>[ [ 1. 0, 2. 0, 3. 0, 4. 0 ], [ 5. 0, 6.0, 0.0 , 0.0 ], [ 9. 0, 10. 0, 0.0, 0. 0 ] ]
233+ * var y = toFilledSlice( x, 9 , s0, s1 );
234+ * // returns <ndarray>[ [ 0, 0, 0, 0 ], [ 0, 9, 9 , 0 ], [ 0, 0, 0, 0 ] ]
155235*
156236* var bool = ( y === x );
157237* // returns false
0 commit comments