abs

Compute the absolute value.

The absolute value is defined as

StartAbsoluteValue x EndAbsoluteValue equals StartLayout Enlarged left-brace 1st Row 1st Column x 2nd Column if x greater-than-or-equal-to 0 2nd Row 1st Column negative x 2nd Column if x less-than 0 EndLayout

Usage

var abs = require( '@stdlib/math/special/abs' );

abs( x[, options] )

Computes the absolute value.

var y = abs( -1.0 );
// returns 1.0

The function accepts the following arguments:

  • x: input ndarray, array-like object, or number. If provided an ndarray or array-like object, the function performs element-wise computation.
  • options: function options.

If provided an ndarray, the function returns an ndarray having the same shape and data type as x.

var array = require( '@stdlib/ndarray/array' );

var x = array( [ [ -1.0, -2.0 ], [ -3.0, -4.0 ] ] ); // 2x2
var y = abs( x );
// returns <ndarray>

var v = y.get( 0, 1 );
// returns 2.0

If provided an array-like object, the function returns an array-like object having the same length and data type as x.

var Float64Array = require( '@stdlib/array/float64' );

var x = new Float64Array( [ -1.0, -2.0 ] );
var y = abs( x );
// returns <Float64Array>[ 1.0, 2.0 ]

x = [ -1.0, -2.0 ];
y = abs( x );
// returns [ 1.0, 2.0 ]

The function accepts the following options:

  • dtype: output array data type. Only applicable when x is either an ndarray or array-like object. By default, the output array data type is inferred from the input array.
  • order: output array order. Only applicable when x is an ndarray. By default, the output array order is inferred from the input array.

By default, when provided either an ndarray or an array-like object, the function returns an object of the same "kind" (either an ndarray or array-like object, respectively) having the same underlying data type. To specify a different output array data type, set the dtype option.

var Float32Array = require( '@stdlib/array/float32' );

var x = new Float32Array( [ -1.0, -2.0 ] );
var y = abs( x );
// returns <Float32Array>[ 1.0, 2.0 ]

x = new Float32Array( [ -1.0, -2.0 ] );
y = abs( x, {
    'dtype': 'float64'
});
// returns <Float64Array>[ 1.0, 2.0 ]

abs.assign( x, y )

Computes the absolute value and assigns results to a provided output array.

var array = require( '@stdlib/ndarray/array' );

var x = array( [ [ -1.0, -2.0 ], [ -3.0, -4.0 ] ] ); // 2x2
var y = array( [ [ 0.0, 0.0 ], [ 0.0, 0.0 ] ] ); // 2x2
var out = abs.assign( x, y );
// returns <ndarray>

var bool = ( out === y );
// returns true

var v = y.get( 0, 1 );
// returns 2.0

The output array must be the same data "kind" (i.e., ndarray or array-like object) as the input array. For example, if x is an ndarray, y must also be an ndarray. Similarly, if x is an array-like object, y must also be an array-like object.

TODO: broadcasting discussion and example(s).

Examples

var Float64Array = require( '@stdlib/array/float64' );
var array = require( '@stdlib/ndarray/array' );
var ind2sub = require( '@stdlib/ndarray/ind2sub' );
var abs = require( '@stdlib/math/special/abs' );

// Provide a number...
var v = abs( -1.0 );
console.log( 'x = %d => abs(x) = %d', -1.0, v );

// Provide an array-like object...
var x = new Float64Array( [ -1.0, -2.0, -3.0 ] );
var y = abs( x );

var i;
for ( i = 0; i < x.length; i++ ) {
    console.log( 'x_%d = %d => abs(x_%d) = %d', i, x[ i ], i, y[ i ] );
}

// Provide an ndarray...
x = array( [ [ -1.0, -2.0 ], [ -3.0, -4.0 ] ] );
y = abs( x );

var sh = x.shape;
var sub;
for ( i = 0; i < x.length; i++ ) {
    sub = ind2sub( sh, i );
    console.log( 'x_%d%d = %d => abs(x_%d%d) = %d', sub[ 0 ], sub[ 1 ], x.iget( i ), sub[ 0 ], sub[ 1 ], y.iget( i ) );
}