diff --git a/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/benchmark.js index 5c2a4932dffa..0ea52481252f 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/benchmark.js @@ -21,8 +21,7 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; var pkg = require( './../package.json' ).name; var isEven = require( './../lib' ); @@ -31,14 +30,17 @@ var isEven = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var x; var y; var i; + len = 100; + x = discreteUniform( len, 0, 1000 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = round( (randu()*1.0e7) - 5.0e6 ); - y = isEven( x ); + y = isEven( x[ i % len ] ); if ( typeof y !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/benchmark.native.js index da205aada595..b95bed88186f 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/benchmark.native.js @@ -22,8 +22,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -40,14 +39,17 @@ var opts = { // MAIN // bench( pkg+'::native', opts, function benchmark( b ) { + var len; var x; var y; var i; + len = 100; + x = discreteUniform( len, 0, 1000 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = round( (randu()*1.0e7) - 5.0e6 ); - y = isEven( x ); + y = isEven( x[ i % len ] ); if ( typeof y !== 'boolean' ) { b.fail( 'should return a boolean' ); } diff --git a/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/c/native/benchmark.c index 5605d32ba184..7e0075a0d8a8 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/assert/is-even/benchmark/c/native/benchmark.c @@ -92,15 +92,18 @@ static double rand_double( void ) { */ static double benchmark( void ) { double elapsed; - double x; + double x[ 100 ]; double t; bool b; int i; + for ( i = 0; i < 100; i++ ) { + x[ i ] = round( (rand_double()*200.0) - 100.0 ); + } + t = tic(); for ( i = 0; i < ITERATIONS; i++ ) { - x = ( rand_double() * 200.0 ) - 100.0; - b = stdlib_base_is_even( x ); + b = stdlib_base_is_even( x[ i%100 ] ); if ( b != true && b != false ) { printf( "should return either true or false\n" ); break; diff --git a/lib/node_modules/@stdlib/math/base/assert/is-even/manifest.json b/lib/node_modules/@stdlib/math/base/assert/is-even/manifest.json index 33756e256dcf..accca2c07be0 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-even/manifest.json +++ b/lib/node_modules/@stdlib/math/base/assert/is-even/manifest.json @@ -1,5 +1,7 @@ { - "options": {}, + "options": { + "task": "build" + }, "fields": [ { "field": "src", @@ -24,6 +26,43 @@ ], "confs": [ { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [ + "-lm" + ], + "libpath": [], + "dependencies": [ + "@stdlib/math/base/assert/is-integer", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-double", + "@stdlib/napi/create-int32" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [ + "-lm" + ], + "libpath": [], + "dependencies": [ + "@stdlib/math/base/assert/is-integer" + ] + }, + { + "task": "examples", "src": [ "./src/main.c" ], diff --git a/lib/node_modules/@stdlib/math/base/assert/is-even/src/addon.c b/lib/node_modules/@stdlib/math/base/assert/is-even/src/addon.c index 85642e403244..b496a218e026 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-even/src/addon.c +++ b/lib/node_modules/@stdlib/math/base/assert/is-even/src/addon.c @@ -17,9 +17,12 @@ */ #include "stdlib/math/base/assert/is_even.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 /** * Receives JavaScript callback invocation data. @@ -29,60 +32,11 @@ * @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_even( x ); - - napi_value v; - status = napi_create_int32( env, (int32_t)result, &v ); - assert( status == napi_ok ); - - return v; + 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_even( x ), out ); + return out; } -/** -* 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_MODULE_EXPORT_FCN( addon ) -NAPI_MODULE( NODE_GYP_MODULE_NAME, init )