Skip to content

Latest commit

 

History

History

README.md

wrap

Wrap a value to the half-open interval [min,max).

Usage

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

wrap( v, min, max )

Wraps a value to the half-open interval [min,max).

var v = wrap( 3.14, 0.0, 5.0 );
// returns 3.14

v = wrap( -3.14, 0.0, 5.0 );
// returns ~1.86

v = wrap( 10.0, 0.0, 5.0 );
// returns 0.0

v = wrap( -0.0, 0.0, 5.0 );
// returns 0.0

v = wrap( 0.0, -3.14, -0.0 );
// returns -3.14

If provided NaN for any argument, the function returns NaN.

var v = wrap( NaN, 0.0, 5.0 );
// returns NaN

v = wrap( 0.0, NaN, 5.0 );
// returns NaN

v = wrap( 3.14, 0.0, NaN );
// returns NaN

If provided min == max, the function returns NaN.

var v = wrap( 3.14, 3.0, 3.0 );
// returns NaN

Notes

  • The function does not distinguish between positive and negative zero. Where appropriate, the function returns positive zero.

Examples

var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
var logEachMap = require( '@stdlib/console/log-each-map' );
var wrap = require( '@stdlib/math/base/special/wrap' );

var opts = {
    'dtype': 'float64'
};
var min = discreteUniform( 100, 0, 10, opts );
var max = discreteUniform( 100, 5, 15, opts );
var v = discreteUniform( 100, -20, 20, opts );

logEachMap( 'wrap(%d,%d,%d) => %0.4f', v, min, max, wrap );

C APIs

Usage

#include "stdlib/math/base/special/wrap.h"

stdlib_base_wrap( v, min, max )

Wraps a value to the half-open interval [min,max).

double v = stdlib_base_wrap( 3.14, 0.0, 5.0 );
// returns 3.14

v = stdlib_base_wrap( -3.14, 0.0, 5.0 );
// returns ~1.86

The function accepts the following arguments:

  • v: [in] double input value to wrap.
  • min: [in] double minimum value.
  • max: [in] double maximum value.
double stdlib_base_wrap( const double v, const double min, const double max )

Examples

#include "stdlib/math/base/special/wrap.h"
#include <stdio.h>

int main( void ) {
    const double min[] = { 0.0, 0.0, 0.0, 0.0, -3.14 };
    const double max[] = { 5.0, 5.0, 5.0, 5.0, -0.0 };
    const double v[] = { 3.14, -3.14, 10.0, -0.0, 0.0 };

    double out;
    int i;
    for ( i = 0; i < 5; i++ ) {
        out = stdlib_base_wrap( v[i], min[i], max[i] );
        printf( "wrap(%lf,%lf,%lf) => %lf\n", v[i], min[i], max[i], out );
    }
}

See Also