Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 53x 17x 17x 36x 53x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 60x 27x 27x 60x 1x 1x 1x 1x 1x | /**
* @license Apache-2.0
*
* Copyright (c) 2025 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );
var Unary = require( '@stdlib/math/array/tools/unary' );
// MAIN //
/**
* Returns a function for applying a unary function to each element in a provided input array.
*
* @param {Function} fcn - unary function to apply
* @param {StringArray} idtypes - list of supported input data types
* @param {StringArray} odtypes - list of supported output data types
* @param {string} policy - output data type policy
* @throws {TypeError} first argument must be a function
* @throws {TypeError} second argument must be an array of supported data types
* @throws {TypeError} third argument must be an array of supported data types
* @throws {TypeError} fourth argument must be a supported output data type policy
* @returns {Function} function for applying a unary function to each element in an array
*
* @example
* var base = require( '@stdlib/math/base/special/abs' );
*
* var dtypes = [ 'float64', 'float32', 'generic' ];
*
* var abs = factory( base, dtypes, dtypes, 'same' );
* // returns <Function>
*
* var x = abs( [ -1.0, 2.0, -3.0, 4.0 ] );
* // returns [ 1.0, 2.0, 3.0, 4.0 ]
*
* @example
* var base = require( '@stdlib/math/base/special/abs' );
*
* var dtypes = [ 'float64', 'float32', 'generic' ];
*
* var abs = factory( base, dtypes, dtypes, 'same' );
*
* var x = [ -1.0, -2.0, -3.0 ];
* var y = [ 0.0, 0.0, 0.0 ];
*
* var out = abs.assign( x, y );
* // returns [ 1.0, 2.0, 3.0 ]
*
* var bool = ( out === y );
* // returns true
*/
function factory( fcn, idtypes, odtypes, policy ) {
var f = new Unary( fcn, idtypes, odtypes, policy );
setReadOnly( main, 'assign', assign );
return main;
/**
* Applies a unary function to each element in a provided input array.
*
* @private
* @param {Collection} x - input array
* @param {Options} [options] - function options
* @param {string} [options.dtype] - output array data type
* @throws {TypeError} first argument must be a collection
* @throws {TypeError} first argument must have a supported data type
* @throws {TypeError} options argument must be an object
* @throws {TypeError} must provide valid options
* @returns {Collection} output array
*/
function main( x, options ) {
if ( arguments.length < 2 ) {
return f.apply( x );
}
return f.apply( x, options );
}
/**
* Applies a unary function to each element in a provided input array and assigns results to a provided output array.
*
* @private
* @param {Collection} x - input array
* @param {Collection} out - output array
* @throws {TypeError} first argument must be a collection
* @throws {TypeError} first argument must have a supported data type
* @throws {TypeError} second argument must be a collection
* @returns {Collection} output array
*/
function assign( x, out ) {
return f.assign( x, out );
}
}
// EXPORTS //
module.exports = factory;
|