Operators

Base (i.e., lower-level) math operators.

Usage

var ns = require( '@stdlib/math/base/ops' );

ns

Namespace for "base" (i.e., lower-level) math operators.

var operators = ns;
// returns {...}

The namespace contains the following functions:

  • add( x, y ): compute the sum of two double-precision floating-point numbers.
  • add3( x, y, z ): compute the sum of three double-precision floating-point numbers.
  • add4( x, y, z, w ): compute the sum of four double-precision floating-point numbers.
  • add5( x, y, z, w, u ): compute the sum of five double-precision floating-point numbers.
  • addf( x, y ): compute the sum of two single-precision floating-point numbers.
  • cdiv( z1, z2 ): divide two double-precision complex floating-point numbers.
  • cneg( z ): negate a double-precision complex floating-point number.
  • cnegf( z ): negate a single-precision complex floating-point number.
  • csub( z1, z2 ): subtract two double-precision complex floating-point numbers.
  • csubf( z1, z2 ): subtract two single-precision complex floating-point numbers.
  • div( x, y ): divide two double-precision floating-point numbers.
  • divf( x, y ): divide two single-precision floating-point numbers.
  • imul( a, b ): perform C-like multiplication of two signed 32-bit integers.
  • imuldw( a, b ): compute the double word product of two signed 32-bit integers.
  • mul( x, y ): multiply two double-precision floating-point numbers.
  • mulf( x, y ): multiply two single-precision floating-point numbers.
  • sub( x, y ): subtract two double-precision floating-point numbers.
  • subf( x, y ): subtract two single-precision floating-point numbers.
  • umul( a, b ): perform C-like multiplication of two unsigned 32-bit integers.
  • umuldw( a, b ): compute the double word product of two unsigned 32-bit integers.

Examples

var Complex128 = require( '@stdlib/complex/float64/ctor' );
var ns = require( '@stdlib/math/base/ops' );

// Operations for double-precision floating point numbers:
console.log( ns.add( 1.25, 0.45 ) );
// => 1.7

console.log( ns.sub( 1.25, 0.45 ) );
// => 0.8

// Operations for single-precision floating point numbers:
console.log( ns.mulf( 1.3, 1.2 ) );
// => ~1.56

console.log( ns.divf( 1.2, 0.4 ) );
// => 3.0

// Operations for complex numbers:
var z1 = new Complex128( 5.0, 3.0 );
var z2 = new Complex128( -2.0, 1.0 );
console.log( ns.cmul( z1, z2 ) ); // { 're': -13.0, 'im': -1.0 }
// => <Complex128>

// Operations for signed 32-bit integers:
// 2^30 * -5 = -5368709120 => 32-bit integer overflow
console.log( ns.imul( 1073741824|0, -5|0 ) );
// => -1073741824

// Operations for unsigned 32-bit integers:
// 2^31 * 5 = 10737418240 => 32-bit integer overflow
console.log( ns.umul( 2147483648>>>0, 5>>>0 ) );
// => 2147483648

// Operations for double word product:
// -(2^31) * 2^30 = -2305843009213694000 => 32-bit integer overflow
console.log( ns.imuldw( 0x80000000|0, 0x40000000|0 ) );
// => [ -536870912, 0 ]
Did you find this page helpful?