@stdlib/blas-ext-base-gfill-by 0.0.3 → 0.0.7

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 CHANGED
@@ -1 +1 @@
1
- Copyright (c) 2016-2021 The Stdlib Authors.
1
+ Copyright (c) 2016-2022 The Stdlib Authors.
package/README.md CHANGED
@@ -20,7 +20,7 @@ limitations under the License.
20
20
 
21
21
  # gfillBy
22
22
 
23
- [![NPM version][npm-image]][npm-url] [![Build Status][test-image]][test-url] [![Coverage Status][coverage-image]][coverage-url] [![dependencies][dependencies-image]][dependencies-url]
23
+ [![NPM version][npm-image]][npm-url] [![Build Status][test-image]][test-url] [![Coverage Status][coverage-image]][coverage-url] <!-- [![dependencies][dependencies-image]][dependencies-url] -->
24
24
 
25
25
  > Fill a strided array according to a provided callback function.
26
26
 
@@ -60,7 +60,7 @@ gfillBy( x.length, x, 1, fill );
60
60
  The function has the following parameters:
61
61
 
62
62
  - **N**: number of indexed elements.
63
- - **x**: input [`Array`][mdn-array], [`typed array`][mdn-typed-array], or an array-like object (excluding strings and functions).
63
+ - **x**: input array.
64
64
  - **stride**: index increment.
65
65
  - **clbk**: callback function.
66
66
  - **thisArg**: execution context (_optional_).
@@ -143,7 +143,7 @@ function fill( v, i ) {
143
143
  var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ];
144
144
 
145
145
  gfillBy.ndarray( x.length, x, 1, 0, fill );
146
- // x => [ 0.0, 1.0, 6.0, -15.0, 20.0, 0.0, -7.0, -24.0 ]
146
+ // x => [ 0.0, 1.0, 6.0, -15.0, 16.0, 0.0, -6.0, -21.0 ]
147
147
  ```
148
148
 
149
149
  The function has the following additional parameters:
@@ -172,6 +172,7 @@ gfillBy.ndarray( 3, x, 1, x.length-3, fill );
172
172
  ## Notes
173
173
 
174
174
  - If `N <= 0`, both functions return `x` unchanged.
175
+ - Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/complex64`][@stdlib/array/complex64]).
175
176
  - When filling a strided array with a scalar constant, prefer using [`dfill`][@stdlib/blas/ext/base/dfill], [`sfill`][@stdlib/blas/ext/base/sfill], and/or [`gfill`][@stdlib/blas/ext/base/gfill], as, depending on the environment, these interfaces are likely to be significantly more performant.
176
177
 
177
178
  </section>
@@ -212,6 +213,22 @@ console.log( x );
212
213
 
213
214
  <!-- /.examples -->
214
215
 
216
+ <!-- Section for related `stdlib` packages. Do not manually edit this section, as it is automatically populated. -->
217
+
218
+ <section class="related">
219
+
220
+ * * *
221
+
222
+ ## See Also
223
+
224
+ - <span class="package-name">[`@stdlib/blas/ext/base/gfill`][@stdlib/blas/ext/base/gfill]</span><span class="delimiter">: </span><span class="description">fill a strided array with a specified scalar constant.</span>
225
+
226
+ </section>
227
+
228
+ <!-- /.related -->
229
+
230
+ <!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
231
+
215
232
 
216
233
  <section class="main-repo" >
217
234
 
@@ -223,6 +240,10 @@ This package is part of [stdlib][stdlib], a standard library for JavaScript and
223
240
 
224
241
  For more information on the project, filing bug reports and feature requests, and guidance on how to develop [stdlib][stdlib], see the main project [repository][stdlib].
225
242
 
243
+ #### Community
244
+
245
+ [![Chat][chat-image]][chat-url]
246
+
226
247
  ---
227
248
 
228
249
  ## License
@@ -232,7 +253,7 @@ See [LICENSE][stdlib-license].
232
253
 
233
254
  ## Copyright
234
255
 
235
- Copyright &copy; 2016-2021. The Stdlib [Authors][stdlib-authors].
256
+ Copyright &copy; 2016-2022. The Stdlib [Authors][stdlib-authors].
236
257
 
237
258
  </section>
238
259
 
@@ -251,24 +272,42 @@ Copyright &copy; 2016-2021. The Stdlib [Authors][stdlib-authors].
251
272
  [coverage-image]: https://img.shields.io/codecov/c/github/stdlib-js/blas-ext-base-gfill-by/main.svg
252
273
  [coverage-url]: https://codecov.io/github/stdlib-js/blas-ext-base-gfill-by?branch=main
253
274
 
254
- [dependencies-image]: https://img.shields.io/david/stdlib-js/blas-ext-base-gfill-by
275
+ <!--
276
+
277
+ [dependencies-image]: https://img.shields.io/david/stdlib-js/blas-ext-base-gfill-by.svg
255
278
  [dependencies-url]: https://david-dm.org/stdlib-js/blas-ext-base-gfill-by/main
256
279
 
280
+ -->
281
+
282
+ [umd]: https://github.com/umdjs/umd
283
+ [es-module]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules
284
+
285
+ [deno-url]: https://github.com/stdlib-js/blas-ext-base-gfill-by/tree/deno
286
+ [umd-url]: https://github.com/stdlib-js/blas-ext-base-gfill-by/tree/umd
287
+ [esm-url]: https://github.com/stdlib-js/blas-ext-base-gfill-by/tree/esm
288
+
289
+ [chat-image]: https://img.shields.io/gitter/room/stdlib-js/stdlib.svg
290
+ [chat-url]: https://gitter.im/stdlib-js/stdlib/
291
+
257
292
  [stdlib]: https://github.com/stdlib-js/stdlib
258
293
 
259
294
  [stdlib-authors]: https://github.com/stdlib-js/stdlib/graphs/contributors
260
295
 
261
296
  [stdlib-license]: https://raw.githubusercontent.com/stdlib-js/blas-ext-base-gfill-by/main/LICENSE
262
297
 
263
- [mdn-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
264
-
265
298
  [mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
266
299
 
267
- [@stdlib/blas/ext/base/dfill]: https://github.com/stdlib-js/blas-ext-base-dfill
300
+ [@stdlib/array/complex64]: https://www.npmjs.com/package/@stdlib/array-complex64
301
+
302
+ [@stdlib/blas/ext/base/dfill]: https://www.npmjs.com/package/@stdlib/blas-ext-base-dfill
303
+
304
+ [@stdlib/blas/ext/base/sfill]: https://www.npmjs.com/package/@stdlib/blas-ext-base-sfill
305
+
306
+ <!-- <related-links> -->
268
307
 
269
- [@stdlib/blas/ext/base/gfill]: https://github.com/stdlib-js/blas-ext-base-gfill
308
+ [@stdlib/blas/ext/base/gfill]: https://www.npmjs.com/package/@stdlib/blas-ext-base-gfill
270
309
 
271
- [@stdlib/blas/ext/base/sfill]: https://github.com/stdlib-js/blas-ext-base-sfill
310
+ <!-- </related-links> -->
272
311
 
273
312
  </section>
274
313
 
package/docs/repl.txt CHANGED
@@ -25,9 +25,8 @@
25
25
  N: integer
26
26
  Number of indexed elements.
27
27
 
28
- x: Array|TypedArray|Object
29
- Input array/collection. If provided an object, the object must be array-
30
- like (excluding strings and functions).
28
+ x: ArrayLikeObject
29
+ Input array.
31
30
 
32
31
  stride: integer
33
32
  Index increment for `x`.
@@ -40,8 +39,8 @@
40
39
 
41
40
  Returns
42
41
  -------
43
- x: Array|TypedArray|Object
44
- Input array/collection `x`.
42
+ x: ArrayLikeObject
43
+ Input array `x`.
45
44
 
46
45
  Examples
47
46
  --------
@@ -66,6 +65,7 @@
66
65
  > x0
67
66
  <Float64Array>[ 1.0, 5.0, 3.0, 5.0, 5.0, 5.0 ]
68
67
 
68
+
69
69
  {{alias}}.ndarray( N, x, stride, offset, clbk[, thisArg] )
70
70
  Fills a strided array according to a provided callback function and using
71
71
  alternative indexing semantics.
@@ -79,9 +79,8 @@
79
79
  N: integer
80
80
  Number of indexed elements.
81
81
 
82
- x: Array|TypedArray|Object
83
- Input array/collection. If provided an object, the object must be array-
84
- like (excluding strings and functions).
82
+ x: ArrayLikeObject
83
+ Input array.
85
84
 
86
85
  stride: integer
87
86
  Index increment for `x`.
@@ -97,8 +96,8 @@
97
96
 
98
97
  Returns
99
98
  -------
100
- x: Array|TypedArray|Object
101
- Input array/collection `x`.
99
+ x: ArrayLikeObject
100
+ Input array `x`.
102
101
 
103
102
  Examples
104
103
  --------
@@ -54,7 +54,7 @@ type Binary = ( value: any, aidx: number ) => any;
54
54
  * @param sidx - strided index (offset + aidx*stride)
55
55
  * @returns fill value
56
56
  */
57
- type Tertiary = ( value: any, aidx: number, sidx: number ) => any;
57
+ type Ternary = ( value: any, aidx: number, sidx: number ) => any;
58
58
 
59
59
  /**
60
60
  * Returns a fill value.
@@ -76,7 +76,7 @@ type Quaternary = ( value: any, aidx: number, sidx: number, array: Collection )
76
76
  * @param array - input array
77
77
  * @returns fill value
78
78
  */
79
- type Callback = Nullary | Unary | Binary | Tertiary | Quaternary;
79
+ type Callback = Nullary | Unary | Binary | Ternary | Quaternary;
80
80
 
81
81
  /**
82
82
  * Interface describing `gfillBy`.
@@ -0,0 +1,93 @@
1
+ /**
2
+ * @license Apache-2.0
3
+ *
4
+ * Copyright (c) 2022 The Stdlib Authors.
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+
19
+ 'use strict';
20
+
21
+ // MAIN //
22
+
23
+ /**
24
+ * Fills a strided array according to a provided callback function.
25
+ *
26
+ * @private
27
+ * @param {PositiveInteger} N - number of indexed elements
28
+ * @param {Object} x - input array object
29
+ * @param {Collection} x.data - input array data
30
+ * @param {Function} x.set - setter
31
+ * @param {Function} x.get - getter
32
+ * @param {integer} stride - index increment
33
+ * @param {NonNegativeInteger} offset - starting index
34
+ * @param {Callback} clbk - callback
35
+ * @param {*} thisArg - execution context
36
+ * @returns {Object} input array object
37
+ *
38
+ * @example
39
+ * var Complex64Array = require( '@stdlib/array-complex64' );
40
+ * var Complex64 = require( '@stdlib/complex-float32' );
41
+ * var reinterpret64 = require( '@stdlib/strided-base-reinterpret-complex64' );
42
+ *
43
+ * function setter( data, idx, value ) {
44
+ * data.set( value, idx );
45
+ * }
46
+ *
47
+ * function getter( data, idx ) {
48
+ * return data.get( idx );
49
+ * }
50
+ *
51
+ * var data = new Complex64Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] );
52
+ *
53
+ * var x = {
54
+ * 'data': data,
55
+ * 'setter': setter,
56
+ * 'getter': getter
57
+ * };
58
+ *
59
+ * function clbk() {
60
+ * return new Complex64( 5.0, 5.0 );
61
+ * }
62
+ *
63
+ * gfillBy( data.length, x, 1, 0, clbk, void 0 );
64
+ *
65
+ * var view = reinterpret64( x.data, 0 );
66
+ * // view => <Float32Array>[ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ]
67
+ */
68
+ function gfillBy( N, x, stride, offset, clbk, thisArg ) {
69
+ var xbuf;
70
+ var set;
71
+ var get;
72
+ var ix;
73
+ var i;
74
+
75
+ // Cache reference to array data:
76
+ xbuf = x.data;
77
+
78
+ // Cache a reference to the element accessors:
79
+ get = x.getter;
80
+ set = x.setter;
81
+
82
+ ix = offset;
83
+ for ( i = 0; i < N; i++ ) {
84
+ set( xbuf, ix, clbk.call( thisArg, get( xbuf, ix ), i, ix, x ) );
85
+ ix += stride;
86
+ }
87
+ return x;
88
+ }
89
+
90
+
91
+ // EXPORTS //
92
+
93
+ module.exports = gfillBy;
package/lib/index.js CHANGED
@@ -50,9 +50,16 @@
50
50
 
51
51
  // MODULES //
52
52
 
53
- var gfillBy = require( './main.js' );
53
+ var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );
54
+ var main = require( './main.js' );
55
+ var ndarray = require( './ndarray.js' );
56
+
57
+
58
+ // MAIN //
59
+
60
+ setReadOnly( main, 'ndarray', ndarray );
54
61
 
55
62
 
56
63
  // EXPORTS //
57
64
 
58
- module.exports = gfillBy;
65
+ module.exports = main;
package/lib/main.js CHANGED
@@ -20,14 +20,56 @@
20
20
 
21
21
  // MODULES //
22
22
 
23
- var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );
24
- var gfillBy = require( './gfill_by.js' );
25
- var ndarray = require( './ndarray.js' );
23
+ var arraylike2object = require( '@stdlib/array-base-arraylike2object' );
24
+ var accessors = require( './accessors.js' );
26
25
 
27
26
 
28
27
  // MAIN //
29
28
 
30
- setReadOnly( gfillBy, 'ndarray', ndarray );
29
+ /**
30
+ * Fills a strided array according to a provided callback function.
31
+ *
32
+ * @param {PositiveInteger} N - number of indexed elements
33
+ * @param {Collection} x - input array
34
+ * @param {integer} stride - index increment
35
+ * @param {Callback} clbk - callback
36
+ * @param {*} [thisArg] - execution context
37
+ * @returns {Collection} input array
38
+ *
39
+ * @example
40
+ * var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ];
41
+ *
42
+ * function fill() {
43
+ * return 5.0;
44
+ * }
45
+ *
46
+ * gfillBy( x.length, x, 1, fill );
47
+ * // x => [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ]
48
+ */
49
+ function gfillBy( N, x, stride, clbk, thisArg ) {
50
+ var ix;
51
+ var o;
52
+ var i;
53
+
54
+ if ( N <= 0 ) {
55
+ return x;
56
+ }
57
+ if ( stride < 0 ) {
58
+ ix = (1-N) * stride;
59
+ } else {
60
+ ix = 0;
61
+ }
62
+ o = arraylike2object( x );
63
+ if ( o.accessors ) {
64
+ accessors( N, o, stride, ix, clbk, thisArg );
65
+ return o.data;
66
+ }
67
+ for ( i = 0; i < N; i++ ) {
68
+ x[ ix ] = clbk.call( thisArg, x[ ix ], i, ix, x );
69
+ ix += stride;
70
+ }
71
+ return x;
72
+ }
31
73
 
32
74
 
33
75
  // EXPORTS //
package/lib/ndarray.js CHANGED
@@ -18,18 +18,24 @@
18
18
 
19
19
  'use strict';
20
20
 
21
+ // MODULES //
22
+
23
+ var arraylike2object = require( '@stdlib/array-base-arraylike2object' );
24
+ var accessors = require( './accessors.js' );
25
+
26
+
21
27
  // MAIN //
22
28
 
23
29
  /**
24
30
  * Fills a strided array according to a provided callback function.
25
31
  *
26
32
  * @param {PositiveInteger} N - number of indexed elements
27
- * @param {Collection} x - input array/collection
33
+ * @param {Collection} x - input array
28
34
  * @param {integer} stride - index increment
29
35
  * @param {NonNegativeInteger} offset - starting index
30
36
  * @param {Callback} clbk - callback
31
37
  * @param {*} [thisArg] - execution context
32
- * @returns {Collection} input array/collection
38
+ * @returns {Collection} input array
33
39
  *
34
40
  * @example
35
41
  * var x = [ 1.0, -2.0, 3.0, -4.0, 5.0, -6.0 ];
@@ -38,16 +44,22 @@
38
44
  * return 5.0;
39
45
  * }
40
46
  *
41
- * gfillBy( 3, 5.0, x, 1, x.length-3 );
47
+ * gfillBy( 3, x, 1, x.length-3, fill );
42
48
  * // x => [ 1.0, -2.0, 3.0, 5.0, 5.0, 5.0 ]
43
49
  */
44
50
  function gfillBy( N, x, stride, offset, clbk, thisArg ) {
45
51
  var ix;
52
+ var o;
46
53
  var i;
47
54
 
48
55
  if ( N <= 0 ) {
49
56
  return x;
50
57
  }
58
+ o = arraylike2object( x );
59
+ if ( o.accessors ) {
60
+ accessors( N, o, stride, offset, clbk, thisArg );
61
+ return o.data;
62
+ }
51
63
  ix = offset;
52
64
  for ( i = 0; i < N; i++ ) {
53
65
  x[ ix ] = clbk.call( thisArg, x[ ix ], i, ix, x );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stdlib/blas-ext-base-gfill-by",
3
- "version": "0.0.3",
3
+ "version": "0.0.7",
4
4
  "description": "Fill a strided array according to a provided callback function.",
5
5
  "license": "Apache-2.0",
6
6
  "author": {
@@ -28,7 +28,7 @@
28
28
  "examples": "make examples",
29
29
  "benchmark": "make benchmark"
30
30
  },
31
- "homepage": "https://github.com/stdlib-js/stdlib",
31
+ "homepage": "https://stdlib.io",
32
32
  "repository": {
33
33
  "type": "git",
34
34
  "url": "git://github.com/stdlib-js/blas-ext-base-gfill-by.git"
@@ -37,16 +37,22 @@
37
37
  "url": "https://github.com/stdlib-js/stdlib/issues"
38
38
  },
39
39
  "dependencies": {
40
+ "@stdlib/array-base-arraylike2object": "^0.0.x",
40
41
  "@stdlib/types": "^0.0.x",
41
42
  "@stdlib/utils-define-nonenumerable-read-only-property": "^0.0.x"
42
43
  },
43
44
  "devDependencies": {
45
+ "@stdlib/array-base-filled-by": "^0.0.x",
46
+ "@stdlib/array-complex128": "^0.0.x",
44
47
  "@stdlib/array-float64": "^0.0.x",
45
48
  "@stdlib/bench": "^0.0.x",
49
+ "@stdlib/complex-float64": "^0.0.x",
46
50
  "@stdlib/math-base-assert-is-nan": "^0.0.x",
47
51
  "@stdlib/math-base-special-pow": "^0.0.x",
48
52
  "@stdlib/math-base-special-round": "^0.0.x",
49
53
  "@stdlib/random-base-randu": "^0.0.x",
54
+ "@stdlib/random-base-uniform": "^0.0.x",
55
+ "@stdlib/strided-base-reinterpret-complex128": "^0.0.x",
50
56
  "tape": "git+https://github.com/kgryte/tape.git#fix/globby",
51
57
  "istanbul": "^0.4.1",
52
58
  "tap-spec": "5.x.x"
package/CHANGELOG.md DELETED
@@ -1,5 +0,0 @@
1
- # CHANGELOG
2
-
3
- > Package changelog.
4
-
5
- See [GitHub Releases](https://github.com/stdlib-js/blas-ext-base-gfill-by/releases) for the changelog.
package/lib/gfill_by.js DELETED
@@ -1,65 +0,0 @@
1
- /**
2
- * @license Apache-2.0
3
- *
4
- * Copyright (c) 2020 The Stdlib Authors.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
-
19
- 'use strict';
20
-
21
- // MAIN //
22
-
23
- /**
24
- * Fills a strided array according to a provided callback function.
25
- *
26
- * @param {PositiveInteger} N - number of indexed elements
27
- * @param {Collection} x - input array/collection
28
- * @param {integer} stride - index increment
29
- * @param {Callback} clbk - callback
30
- * @param {*} [thisArg] - execution context
31
- * @returns {Collection} input array/collection
32
- *
33
- * @example
34
- * var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ];
35
- *
36
- * function fill() {
37
- * return 5.0;
38
- * }
39
- *
40
- * gfillBy( x.length, x, 1, fill );
41
- * // x => [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ]
42
- */
43
- function gfillBy( N, x, stride, clbk, thisArg ) {
44
- var ix;
45
- var i;
46
-
47
- if ( N <= 0 ) {
48
- return x;
49
- }
50
- if ( stride < 0 ) {
51
- ix = (1-N) * stride;
52
- } else {
53
- ix = 0;
54
- }
55
- for ( i = 0; i < N; i++ ) {
56
- x[ ix ] = clbk.call( thisArg, x[ ix ], i, ix, x );
57
- ix += stride;
58
- }
59
- return x;
60
- }
61
-
62
-
63
- // EXPORTS //
64
-
65
- module.exports = gfillBy;