wrap

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

Usage

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

wrap( v, min, max )

Wraps a value on 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/base/discrete-uniform' );
var wrap = require( '@stdlib/math/base/special/wrap' );

var min;
var max;
var v;
var i;

for ( i = 0; i < 100; i++ ) {
    min = discreteUniform( 0.0, 10.0 );
    max = discreteUniform( 5.0, 15.0 );
    v = discreteUniform( -20.0, 20.0 );
    console.log( 'wrap(%d,%d,%d) => %d', v, min, max, wrap( v, min, max ) );
}

C APIs

Usage

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

stdlib_base_wrap( v, min, max )

Wraps a value on 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 );
    }
}
Did you find this page helpful?