wrap

Wrap a function accepting complex number arguments to support providing both real and complex numbers.

Usage

var wrap = require( '@stdlib/complex/base/wrap-function' );

wrap( fcn, nargs, ctor )

Returns a function which wraps a function accepting complex number arguments to support providing both real and complex numbers.

var Complex64 = require( '@stdlib/complex/float32/ctor' );
var caddf = require( '@stdlib/complex/float32/base/add' );

var f = wrap( caddf, 2, Complex64 );
// returns <Function>

The function accepts the following arguments:

  • fcn: the function to wrap.
  • nargs: the number of arguments to be provided to the wrapped function.
  • ctor: complex number constructor for converting real numbers to complex numbers.

Notes

  • The returned function assumes that the wrapped function accepts only complex number input arguments (i.e., every argument must be a complex number).
  • The returned function assumes that, if an input argument is non-numeric (i.e., not of type number), then the input argument is a complex number. The returned function does not verify that non-numeric input arguments are, in fact, complex number objects. The returned function passes non-numeric input arguments to the wrapped function without modification.

Examples

var Complex64 = require( '@stdlib/complex/float32/ctor' );
var caddf = require( '@stdlib/complex/float32/base/add' );
var realf = require( '@stdlib/complex/float32/real' );
var imagf = require( '@stdlib/complex/float32/imag' );
var wrap = require( '@stdlib/complex/base/wrap-function' );

var f = wrap( caddf, 2, Complex64 );

// ...

var z = f( 3.0, 4.0 );
// returns <Complex64>

var re = realf( z );
// returns 7.0

var im = imagf( z );
// returns 0.0

console.log( '%d + %di', re, im );
// => '7 + 0i'
Did you find this page helpful?