isSameValuef
Test if two single-precision floating-point numbers are the same value.
Usage
var isSameValuef = require( '@stdlib/number/float32/base/assert/is-same-value' );
isSameValuef( a, b )
Tests if two single-precision floating-point numbers a
and b
are the same value.
var toFloat32 = require( '@stdlib/number/float64/base/to-float32' );
var bool = isSameValuef( toFloat32( 3.14 ), toFloat32( 3.14 ) );
// returns true
bool = isSameValuef( toFloat32( 5.0 ), toFloat32( 3.0 ) );
// returns false
In contrast to the strict equality operator ===
, the function distinguishes between +0
and -0
and treats NaNs
as the same value.
var bool = ( 0.0 === -0.0 );
// returns true
bool = isSameValuef( 0.0, -0.0 );
// returns false
bool = isSameValuef( -0.0, -0.0 );
// returns true
bool = ( NaN === NaN );
// returns false
bool = isSameValuef( NaN, NaN );
// returns true
Notes
- The function implements the SameValue Algorithm as specified in ECMAScript 5.
Examples
var toFloat32 = require( '@stdlib/number/float64/base/to-float32' );
var isSameValuef = require( '@stdlib/number/float32/base/assert/is-same-value' );
var bool = isSameValuef( toFloat32( 3.14 ), toFloat32( 3.14 ) );
// returns true
bool = isSameValuef( toFloat32( 0.0 ), toFloat32( 0.0 ) );
// returns true
bool = isSameValuef( toFloat32( -0.0 ), toFloat32( 0.0 ) );
// returns false
bool = isSameValuef( toFloat32( NaN ), toFloat32( NaN ) );
// returns true
C APIs
Usage
#include "stdlib/number/float32/base/assert/is_same_value.h"
stdlib_base_float32_is_same_value( a, b )
Tests if two single-precision floating-point numbers a
and b
are the same value.
#include <stdbool.h>
bool v = stdlib_base_float32_is_same_value( 3.14f, 3.14f );
// returns true
v = stdlib_base_float32_is_same_value( 0.0f, -0.0f );
// returns false
The function accepts the following arguments:
- a:
[in] float
first input value. - b:
[in] float
second input value.
bool stdlib_base_float32_is_same_value( const float a, const float b );
Examples
#include "stdlib/number/float32/base/assert/is_same_value.h"
#include <stdbool.h>
#include <stdio.h>
int main( void ) {
const float a[] = {
5.0f,
-2.0f,
0.0f,
0.0f/0.0f
};
const float b[] = {
5.0f,
2.0f,
-0.0f,
0.0f/0.0f
};
bool v;
int i;
for ( i = 0; i < 4; i++ ) {
v = stdlib_base_float32_is_same_value( a[ i ], b[ i ] );
printf( "Same value? %s\n", ( v ) ? "True" : "False" );
}
}