|
|
||
|---|---|---|
| .. | ||
| docs | ||
| lib | ||
| package.json | ||
| README.md | ||
Flipsign
Return a double-precision floating-point number with the magnitude of
xand the sign ofx*y.
Usage
var flipsign = require( '@stdlib/math/base/special/flipsign' );
flipsign( x, y )
Returns a double-precision floating-point number with the magnitude of x and the sign of x*y; i.e., only return -x when y is a negative number.
var z = flipsign( -3.14, 10.0 );
// returns -3.14
z = flipsign( -3.14, -1.0 );
// returns 3.14
z = flipsign( 1.0, -0.0 );
// returns -1.0
z = flipsign( -3.14, -0.0 );
// returns 3.14
z = flipsign( -0.0, 1.0 );
// returns -0.0
z = flipsign( 0.0, -1.0 );
// returns -0.0
Notes
- According to the IEEE 754 standard, a
NaNhas a biased exponent equal to2047, a significand greater than0, and a sign bit equal to either1or0. In which case,NaNmay not correspond to just one but many binary representations. Accordingly, care should be taken to ensure thatyis notNaN, else behavior may be indeterminate.
Examples
var randu = require( '@stdlib/random/base/randu' );
var flipsign = require( '@stdlib/math/base/special/flipsign' );
var x;
var y;
var z;
var i;
// Generate random double-precision floating-point numbers `x` and `y` and flip the sign of `x` only if `y` is negative...
for ( i = 0; i < 100; i++ ) {
x = (randu()*100.0) - 50.0;
y = (randu()*10.0) - 5.0;
z = flipsign( x, y );
console.log( 'x: %d, y: %d => %d', x, y, z );
}