isSameValueZero

Test whether two double-precision complex floating-point numbers are the same value.

Usage

var isSameValueZero = require( '@stdlib/complex/float64/base/assert/is-same-value-zero' );

isSameValueZero( z1, z2 )

Tests whether two double-precision complex floating-point numbers are the same value.

var Complex128 = require( '@stdlib/complex/float64/ctor' );

var z1 = new Complex128( 5.0, 3.0 );
var z2 = new Complex128( 5.0, 3.0 );

var out = isSameValueZero( z1, z2 );
// returns true

In contrast to the strict equality operator ===, the function treats NaNs as the same value.

var Complex128 = require( '@stdlib/complex/float64/ctor' );

var z1 = new Complex128( NaN, NaN );
var z2 = new Complex128( NaN, NaN );

var out = isSameValueZero( z1, z2 );
// returns true

In contrast to the SameValue Algorithm (as specified in ECMAScript 5), the function does not distinguish between +0 and -0.

var Complex128 = require( '@stdlib/complex/float64/ctor' );

var z1 = new Complex128( -0.0, 0.0 );
var z2 = new Complex128( 0.0, -0.0 );

var out = isSameValueZero( z1, z2 );
// returns true

Examples

var Complex128 = require( '@stdlib/complex/float64/ctor' );
var isSameValueZero = require( '@stdlib/complex/float64/base/assert/is-same-value-zero' );

var z1 = new Complex128( 5.0, 3.0 );
var z2 = new Complex128( 5.0, 3.0 );
var out = isSameValueZero( z1, z2 );
// returns true

z1 = new Complex128( -5.0, -3.0 );
z2 = new Complex128( 5.0, 3.0 );
out = isSameValueZero( z1, z2 );
// returns false

z1 = new Complex128( NaN, 3.0 );
z2 = new Complex128( NaN, 3.0 );
out = isSameValueZero( z1, z2 );
// returns true

C APIs

Usage

#include "stdlib/complex/float64/base/assert/is_same_value_zero.h"

stdlib_base_complex128_is_same_value_zero( z1, z2 )

Tests whether two double-precision complex floating-point numbers are the same value.

#include "stdlib/complex/float64/ctor.h"
#include <stdbool.h>

stdlib_complex128_t z1 = stdlib_complex128( 5.0, 2.0 );
stdlib_complex128_t z2 = stdlib_complex128( 5.0, 2.0 );

bool v = stdlib_base_complex128_is_same_value_zero( z1, z2 );

The function accepts the following arguments:

  • z1: [in] stdlib_complex128_t first double-precision complex floating-point number.
  • z2: [in] stdlib_complex128_t second double-precision complex floating-point number.
bool stdlib_base_complex128_is_same_value_zero( const stdlib_complex128_t z1, const stdlib_complex128_t z2 );

Examples

#include "stdlib/complex/float64/base/assert/is_same_value_zero.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdbool.h>
#include <stdio.h>

int main( void ) {
    const stdlib_complex128_t z[] = {
        stdlib_complex128( 5.0, 2.0 ),
        stdlib_complex128( -2.0, 1.0 ),
        stdlib_complex128( 0.0, -0.0 ),
        stdlib_complex128( 0.0/0.0, 0.0/0.0 )
    };

    bool v;
    int i;
    for ( i = 0; i < 4; i++ ) {
        v = stdlib_base_complex128_is_same_value_zero( z[ i ], z[ i ] );
        printf( "Same value? %s\n", ( v ) ? "True" : "False" );
    }
}
Did you find this page helpful?