diff --git a/lib/node_modules/@stdlib/math/base/special/ccis/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/ccis/benchmark/c/native/benchmark.c index 48a6c4ac9372..bfd73019f3bb 100644 --- a/lib/node_modules/@stdlib/math/base/special/ccis/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/ccis/benchmark/c/native/benchmark.c @@ -28,6 +28,7 @@ #define NAME "ccis" #define ITERATIONS 1000000 #define REPEATS 3 +#define ARRAY_SIZE 100 // For our re/im arrays /** * Prints the TAP version. @@ -73,7 +74,7 @@ static void print_results( double elapsed ) { static double tic( void ) { struct timeval now; gettimeofday( &now, NULL ); - return (double)now.tv_sec + (double)now.tv_usec/1.0e6; + return (double)now.tv_sec + (double)now.tv_usec / 1.0e6; } /** @@ -98,6 +99,16 @@ static double benchmark( void ) { double t; int i; + // Arrays to store 100 random real and imaginary values: + double re_array[ ARRAY_SIZE ]; + double im_array[ ARRAY_SIZE ]; + + // Initialize re and im arrays with random values: + for ( i = 0; i < ARRAY_SIZE; i++ ) { + re_array[ i ] = ( 1000.0 * rand_double() ) - 500.0; + im_array[ i ] = ( 1000.0 * rand_double() ) - 500.0; + } + stdlib_complex128_t z1; stdlib_complex128_t z2; @@ -107,20 +118,26 @@ static double benchmark( void ) { } t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { - z1 = stdlib_complex128( re[ i%100 ], im[ i%100 ] ); + + // Get real and imaginary values from the arrays using i % 100: + z1 = stdlib_complex128( re_array[ i % ARRAY_SIZE ], im_array[ i % ARRAY_SIZE ] ); z2 = stdlib_base_ccis( z1 ); - stdlib_complex128_reim( z2, &re[ i%100 ], &im[ i%100 ] ); - if ( re != re ) { - printf( "should not return NaN\n" ); + + // Overwrite the original arrays with the result: + stdlib_complex128_reim( z2, &re_array[ i % ARRAY_SIZE ], &im_array[ i % ARRAY_SIZE ] ); + + // Check if the real part becomes NaN: + if ( isnan( re_array[ i % ARRAY_SIZE ] ) ) { + printf( "should not return NaN at index %d\n", i % ARRAY_SIZE ); break; } } + elapsed = tic() - t; - if ( im != im ) { - printf( "should not return NaN\n" ); - } + return elapsed; } @@ -135,11 +152,13 @@ int main( void ) { srand( time( NULL ) ); print_version(); + for ( i = 0; i < REPEATS; i++ ) { printf( "# c::native::%s\n", NAME ); elapsed = benchmark(); print_results( elapsed ); - printf( "ok %d benchmark finished\n", i+1 ); + printf( "ok %d benchmark finished\n", i + 1 ); } + print_summary( REPEATS, REPEATS ); } diff --git a/lib/node_modules/@stdlib/ndarray/base/nullary/src/f_as_t.c b/lib/node_modules/@stdlib/ndarray/base/nullary/src/f_as_t.c index 8047260975ee..0d41fe38d73c 100644 --- a/lib/node_modules/@stdlib/ndarray/base/nullary/src/f_as_t.c +++ b/lib/node_modules/@stdlib/ndarray/base/nullary/src/f_as_t.c @@ -192,8 +192,8 @@ int8_t stdlib_ndarray_f_as_t_0d( struct ndarray *arrays[], void *fcn ) { */ int8_t stdlib_ndarray_f_as_t_1d( struct ndarray *arrays[], void *fcn ) { typedef uint16_t func_type( void ); - func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_1D_LOOP_CLBK( float ) + func_type *f = (const func_type *)fcn; + STDLIB_NDARRAY_NULLARY_1D_LOOP_CLBK(const float ) return 0; } @@ -275,8 +275,8 @@ int8_t stdlib_ndarray_f_as_t_1d( struct ndarray *arrays[], void *fcn ) { */ int8_t stdlib_ndarray_f_as_t_2d( struct ndarray *arrays[], void *fcn ) { typedef uint16_t func_type( void ); - func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_2D_LOOP_CLBK( float ) + func_type *f = (const func_type *)fcn; + STDLIB_NDARRAY_NULLARY_2D_LOOP_CLBK(const float ) return 0; } @@ -358,8 +358,8 @@ int8_t stdlib_ndarray_f_as_t_2d( struct ndarray *arrays[], void *fcn ) { */ int8_t stdlib_ndarray_f_as_t_2d_blocked( struct ndarray *arrays[], void *fcn ) { typedef uint16_t func_type( void ); - func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_2D_BLOCKED_LOOP_CLBK( float ) + func_type *f = (const func_type *)fcn; + STDLIB_NDARRAY_NULLARY_2D_BLOCKED_LOOP_CLBK(const float ) return 0; } @@ -440,9 +440,9 @@ int8_t stdlib_ndarray_f_as_t_2d_blocked( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_3d( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_3D_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_3D_LOOP_CLBK(const float ) return 0; } @@ -523,9 +523,9 @@ int8_t stdlib_ndarray_f_as_t_3d( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_3d_blocked( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_3D_BLOCKED_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_3D_BLOCKED_LOOP_CLBK(const float ) return 0; } @@ -606,9 +606,9 @@ int8_t stdlib_ndarray_f_as_t_3d_blocked( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_4d( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_4D_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_4D_LOOP_CLBK(const float ) return 0; } @@ -689,9 +689,9 @@ int8_t stdlib_ndarray_f_as_t_4d( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_4d_blocked( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_4D_BLOCKED_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_4D_BLOCKED_LOOP_CLBK(const float ) return 0; } @@ -772,9 +772,9 @@ int8_t stdlib_ndarray_f_as_t_4d_blocked( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_5d( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_5D_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_5D_LOOP_CLBK(const float ) return 0; } @@ -855,9 +855,9 @@ int8_t stdlib_ndarray_f_as_t_5d( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_5d_blocked( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_5D_BLOCKED_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_5D_BLOCKED_LOOP_CLBK(const float ) return 0; } @@ -938,9 +938,9 @@ int8_t stdlib_ndarray_f_as_t_5d_blocked( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_6d( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_6D_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_6D_LOOP_CLBK(const float ) return 0; } @@ -1021,9 +1021,9 @@ int8_t stdlib_ndarray_f_as_t_6d( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_6d_blocked( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_6D_BLOCKED_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_6D_BLOCKED_LOOP_CLBK(const float ) return 0; } @@ -1104,9 +1104,9 @@ int8_t stdlib_ndarray_f_as_t_6d_blocked( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_7d( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_7D_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_7D_LOOP_CLBK(const float ) return 0; } @@ -1187,9 +1187,9 @@ int8_t stdlib_ndarray_f_as_t_7d( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_7d_blocked( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_7D_BLOCKED_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_7D_BLOCKED_LOOP_CLBK(const float ) return 0; } @@ -1270,9 +1270,9 @@ int8_t stdlib_ndarray_f_as_t_7d_blocked( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_8d( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_8D_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_8D_LOOP_CLBK(const float ) return 0; } @@ -1353,9 +1353,9 @@ int8_t stdlib_ndarray_f_as_t_8d( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_8d_blocked( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_8D_BLOCKED_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_8D_BLOCKED_LOOP_CLBK(const float ) return 0; } @@ -1436,9 +1436,9 @@ int8_t stdlib_ndarray_f_as_t_8d_blocked( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_9d( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_9D_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_9D_LOOP_CLBK(const float ) return 0; } @@ -1519,9 +1519,9 @@ int8_t stdlib_ndarray_f_as_t_9d( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_9d_blocked( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_9D_BLOCKED_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_9D_BLOCKED_LOOP_CLBK(const float ) return 0; } @@ -1602,9 +1602,9 @@ int8_t stdlib_ndarray_f_as_t_9d_blocked( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_10d( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_10D_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_10D_LOOP_CLBK(const float ) return 0; } @@ -1685,9 +1685,9 @@ int8_t stdlib_ndarray_f_as_t_10d( struct ndarray *arrays[], void *fcn ) { * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_10d_blocked( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_10D_BLOCKED_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_10D_BLOCKED_LOOP_CLBK(const float ) return 0; } @@ -1768,9 +1768,9 @@ int8_t stdlib_ndarray_f_as_t_10d_blocked( struct ndarray *arrays[], void *fcn ) * stdlib_ndarray_free( x ); */ int8_t stdlib_ndarray_f_as_t_nd( struct ndarray *arrays[], void *fcn ) { - typedef uint16_t func_type( void ); + typedef uint16_t func_type(const void ); func_type *f = (func_type *)fcn; - STDLIB_NDARRAY_NULLARY_ND_LOOP_CLBK( float ) + STDLIB_NDARRAY_NULLARY_ND_LOOP_CLBK(const float ) return 0; }