From c3a41b7ba466c914bc10bb2c428ce8d98c511d4e Mon Sep 17 00:00:00 2001 From: vivek maurya Date: Sat, 11 Jan 2025 17:00:19 +0000 Subject: [PATCH 1/2] refactor: update math/base/assert/is-prime to follow latest project conventions --- .../math/base/assert/is-prime/manifest.json | 6 +- .../math/base/assert/is-prime/src/addon.c | 66 +++---------------- .../math/base/assert/is-prime/test/test.js | 18 ++--- .../base/assert/is-prime/test/test.native.js | 18 ++--- 4 files changed, 32 insertions(+), 76 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/assert/is-prime/manifest.json b/lib/node_modules/@stdlib/math/base/assert/is-prime/manifest.json index d4c3183b9dd3..efa59860bb5e 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-prime/manifest.json +++ b/lib/node_modules/@stdlib/math/base/assert/is-prime/manifest.json @@ -39,7 +39,11 @@ "@stdlib/math/base/special/sqrt", "@stdlib/math/base/special/floor", "@stdlib/constants/float64/max-safe-integer", - "@stdlib/math/base/special/fmod" + "@stdlib/math/base/special/fmod", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-double", + "@stdlib/napi/create-int32" ] }, { diff --git a/lib/node_modules/@stdlib/math/base/assert/is-prime/src/addon.c b/lib/node_modules/@stdlib/math/base/assert/is-prime/src/addon.c index 1f1ba57715e0..9f92ebf092fd 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-prime/src/addon.c +++ b/lib/node_modules/@stdlib/math/base/assert/is-prime/src/addon.c @@ -17,10 +17,12 @@ */ #include "stdlib/math/base/assert/is_prime.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_double.h" +#include "stdlib/napi/create_int32.h" +#include "stdlib/napi/export.h" #include #include -#include -#include /** * Receives JavaScript callback invocation data. @@ -30,60 +32,10 @@ * @return Node-API value */ static napi_value addon( napi_env env, napi_callback_info info ) { - napi_status status; - - // Get callback arguments: - size_t argc = 1; - napi_value argv[ 1 ]; - status = napi_get_cb_info( env, info, &argc, argv, NULL, NULL ); - assert( status == napi_ok ); - - // Check whether we were provided the correct number of arguments: - if ( argc < 1 ) { - status = napi_throw_error( env, NULL, "invalid invocation. Insufficient arguments." ); - assert( status == napi_ok ); - return NULL; - } - if ( argc > 1 ) { - status = napi_throw_error( env, NULL, "invalid invocation. Too many arguments." ); - assert( status == napi_ok ); - return NULL; - } - - napi_valuetype vtype0; - status = napi_typeof( env, argv[ 0 ], &vtype0 ); - assert( status == napi_ok ); - if ( vtype0 != napi_number ) { - status = napi_throw_type_error( env, NULL, "invalid argument. First argument must be a number." ); - assert( status == napi_ok ); - return NULL; - } - - double x; - status = napi_get_value_double( env, argv[ 0 ], &x ); - assert( status == napi_ok ); - - bool result = stdlib_base_is_prime( x ); - - napi_value v; - status = napi_create_int32( env, (int32_t)result, &v ); - assert( status == napi_ok ); - - return v; -} - -/** -* Initializes a Node-API module. -* -* @param env environment under which the function is invoked -* @param exports exports object -* @return main export -*/ -static napi_value init( napi_env env, napi_value exports ) { - napi_value fcn; - napi_status status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, addon, NULL, &fcn ); - assert( status == napi_ok ); - return fcn; + STDLIB_NAPI_ARGV( env, info, argv, argc, 1 ); + STDLIB_NAPI_ARGV_DOUBLE( env, x, argv, 0 ); + STDLIB_NAPI_CREATE_INT32( env, (int32_t)stdlib_base_is_prime( x ), out ); + return out; } -NAPI_MODULE( NODE_GYP_MODULE_NAME, init ) +STDLIB_NAPI_MODULE_EXPORT_FCN( addon ) diff --git a/lib/node_modules/@stdlib/math/base/assert/is-prime/test/test.js b/lib/node_modules/@stdlib/math/base/assert/is-prime/test/test.js index bda7e7894812..cfdb16533ca8 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-prime/test/test.js +++ b/lib/node_modules/@stdlib/math/base/assert/is-prime/test/test.js @@ -49,14 +49,14 @@ tape( 'the function returns `true` if provided a prime number', function test( t M = 2e4; for ( i = 0; i < M; i++ ) { v = PRIMES[ i ]; - t.equal( isPrime( v ), true, 'returns true when provided '+v ); + t.equal( isPrime( v ), true, 'returns expected value when provided '+v ); } // Randomly test prime numbers chosen from the remainder of the list of known prime numbers... N = PRIMES.length - 1; for ( i = 0; i < 1e3; i++ ) { j = discreteUniform( M, N ); v = PRIMES[ j ]; - t.equal( isPrime( v ), true, 'returns true when provided '+v ); + t.equal( isPrime( v ), true, 'returns expected value when provided '+v ); } t.end(); }); @@ -72,7 +72,7 @@ tape( 'the function returns `false` if provided a composite number', function te N = PRIMES.length; hash = {}; for ( i = 0; i < N; i++ ) { - hash[ PRIMES[i] ] = true; + hash[ PRIMES[ i ] ] = true; } // Only test odd integers, as even integers are trivially composite... M = 2e5; @@ -80,14 +80,14 @@ tape( 'the function returns `false` if provided a composite number', function te if ( hash[ i ] ) { continue; } - t.equal( isPrime( i ), false, 'returns false when provided '+i ); + t.equal( isPrime( i ), false, 'returns expected value when provided '+i ); } // Generate random composite integers... MAX = PRIMES[ N-1 ]; for ( i = 0; i < 1e3; i++ ) { // Generate an odd integer... - j = discreteUniform( trunc( M/2 ), trunc( MAX/2 ) ); - j = (2*j) + 1; + j = discreteUniform( trunc( M / 2 ), trunc( MAX / 2 ) ); + j = ( 2 * j ) + 1; // Check if the generated integer is a known prime number... if ( hash[ j ] ) { @@ -95,7 +95,7 @@ tape( 'the function returns `false` if provided a composite number', function te i -= 1; continue; } - t.equal( isPrime( j ), false, 'returns false when provided '+j ); + t.equal( isPrime( j ), false, 'returns expected value when provided '+j ); } t.end(); }); @@ -104,9 +104,9 @@ tape( 'the function returns `false` if not provided a positive integer', functio var v; var i; for ( i = 0; i < 100; i++ ) { - v = ( randu()*100.0 ) - 50.0; + v = ( randu() * 100.0 ) - 50.0; if ( trunc(v) !== v ) { - t.equal( isPrime( v ), false, 'returns false when provided '+v ); + t.equal( isPrime( v ), false, 'returns expected value when provided '+v ); } } t.end(); diff --git a/lib/node_modules/@stdlib/math/base/assert/is-prime/test/test.native.js b/lib/node_modules/@stdlib/math/base/assert/is-prime/test/test.native.js index 07ac725e76c7..62f1bb118eef 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-prime/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/assert/is-prime/test/test.native.js @@ -58,14 +58,14 @@ tape( 'the function returns `true` if provided a prime number', opts, function t M = 2e4; for ( i = 0; i < M; i++ ) { v = PRIMES[ i ]; - t.equal( isPrime( v ), true, 'returns true when provided '+v ); + t.equal( isPrime( v ), true, 'returns expected value when provided '+v ); } // Randomly test prime numbers chosen from the remainder of the list of known prime numbers... N = PRIMES.length - 1; for ( i = 0; i < 1e3; i++ ) { j = discreteUniform( M, N ); v = PRIMES[ j ]; - t.equal( isPrime( v ), true, 'returns true when provided '+v ); + t.equal( isPrime( v ), true, 'returns expected value when provided '+v ); } t.end(); }); @@ -81,7 +81,7 @@ tape( 'the function returns `false` if provided a composite number', opts, funct N = PRIMES.length; hash = {}; for ( i = 0; i < N; i++ ) { - hash[ PRIMES[i] ] = true; + hash[ PRIMES[ i ] ] = true; } // Only test odd integers, as even integers are trivially composite... M = 2e5; @@ -89,14 +89,14 @@ tape( 'the function returns `false` if provided a composite number', opts, funct if ( hash[ i ] ) { continue; } - t.equal( isPrime( i ), false, 'returns false when provided '+i ); + t.equal( isPrime( i ), false, 'returns expected value when provided '+i ); } // Generate random composite integers... MAX = PRIMES[ N-1 ]; for ( i = 0; i < 1e3; i++ ) { // Generate an odd integer... - j = discreteUniform( trunc( M/2 ), trunc( MAX/2 ) ); - j = (2*j) + 1; + j = discreteUniform( trunc( M / 2 ), trunc( MAX / 2 ) ); + j = ( 2 * j ) + 1; // Check if the generated integer is a known prime number... if ( hash[ j ] ) { @@ -104,7 +104,7 @@ tape( 'the function returns `false` if provided a composite number', opts, funct i -= 1; continue; } - t.equal( isPrime( j ), false, 'returns false when provided '+j ); + t.equal( isPrime( j ), false, 'returns expected value when provided '+j ); } t.end(); }); @@ -113,9 +113,9 @@ tape( 'the function returns `false` if not provided a positive integer', opts, f var v; var i; for ( i = 0; i < 100; i++ ) { - v = ( randu()*100.0 ) - 50.0; + v = ( randu() * 100.0 ) - 50.0; if ( trunc(v) !== v ) { - t.equal( isPrime( v ), false, 'returns false when provided '+v ); + t.equal( isPrime( v ), false, 'returns expected value when provided '+v ); } } t.end(); From f0d914173042bde539b5dfceb10ee991ddd0e906 Mon Sep 17 00:00:00 2001 From: vivek maurya Date: Sat, 11 Jan 2025 17:08:26 +0000 Subject: [PATCH 2/2] refactor: update math/base/assert/is-prime to follow latest project conventions --- lib/node_modules/@stdlib/math/base/assert/is-prime/src/addon.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/math/base/assert/is-prime/src/addon.c b/lib/node_modules/@stdlib/math/base/assert/is-prime/src/addon.c index 9f92ebf092fd..69a3abfafdbe 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-prime/src/addon.c +++ b/lib/node_modules/@stdlib/math/base/assert/is-prime/src/addon.c @@ -39,3 +39,4 @@ static napi_value addon( napi_env env, napi_callback_info info ) { } STDLIB_NAPI_MODULE_EXPORT_FCN( addon ) +