Skip to content

Commit 32d1354

Browse files
refactor: update math/base/assert/int32-is-even to follow latest project conventions
--- type: pre_push_report description: Results of running various checks prior to pushing changes. report: - task: run_javascript_examples status: na - task: run_c_examples status: na - task: run_cpp_examples status: na - task: run_javascript_readme_examples status: na - task: run_c_benchmarks status: passed - task: run_cpp_benchmarks status: na - task: run_fortran_benchmarks status: na - task: run_javascript_benchmarks status: passed - task: run_julia_benchmarks status: na - task: run_python_benchmarks status: na - task: run_r_benchmarks status: na - task: run_javascript_tests status: na ---
1 parent 665d028 commit 32d1354

File tree

5 files changed

+36
-66
lines changed

5 files changed

+36
-66
lines changed

lib/node_modules/@stdlib/math/base/assert/int32-is-even/benchmark/benchmark.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24-
var randu = require( '@stdlib/random/base/randu' );
2524
var float64ToInt32 = require( '@stdlib/number/float64/base/to-float32' );
25+
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
2626
var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;
2727
var pkg = require( './../package.json' ).name;
2828
var isEven = require( './../lib' );
@@ -31,14 +31,17 @@ var isEven = require( './../lib' );
3131
// MAIN //
3232

3333
bench( pkg, function benchmark( b ) {
34+
var len;
3435
var x;
3536
var y;
3637
var i;
3738

39+
len = 100;
40+
x = discreteUniform( len, -5.0e6, 5.0e6 );
41+
3842
b.tic();
3943
for ( i = 0; i < b.iterations; i++ ) {
40-
x = ( randu()*1.0e7 ) - 5.0e6;
41-
y = isEven( float64ToInt32( x ) );
44+
y = isEven( float64ToInt32( x[ i % len ] ) );
4245
if ( typeof y !== 'boolean' ) {
4346
b.fail( 'should return a boolean' );
4447
}

lib/node_modules/@stdlib/math/base/assert/int32-is-even/benchmark/benchmark.native.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222

2323
var resolve = require( 'path' ).resolve;
2424
var bench = require( '@stdlib/bench' );
25-
var randu = require( '@stdlib/random/base/randu' );
2625
var float64ToInt32 = require( '@stdlib/number/float64/base/to-float32' );
26+
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
2727
var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;
2828
var tryRequire = require( '@stdlib/utils/try-require' );
2929
var pkg = require( './../package.json' ).name;
@@ -40,14 +40,17 @@ var opts = {
4040
// MAIN //
4141

4242
bench( pkg+'::native', opts, function benchmark( b ) {
43+
var len;
4344
var x;
4445
var y;
4546
var i;
4647

48+
len = 100;
49+
x = discreteUniform( len, -5.0e6, 5.0e6 );
50+
4751
b.tic();
4852
for ( i = 0; i < b.iterations; i++ ) {
49-
x = ( randu()*1.0e7 ) - 5.0e6;
50-
y = iseven( float64ToInt32( x ) );
53+
y = iseven( float64ToInt32( x[ i % len ] ) );
5154
if ( typeof y !== 'boolean' ) {
5255
b.fail( 'should return a boolean' );
5356
}

lib/node_modules/@stdlib/math/base/assert/int32-is-even/benchmark/c/native/benchmark.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,18 @@ static double rand_double( void ) {
9393
*/
9494
static double benchmark( void ) {
9595
double elapsed;
96-
double x;
96+
double x[ 100 ];
9797
double t;
9898
bool b;
9999
int i;
100100

101+
for ( i = 0; i < 100; i++ ) {
102+
x[ i ] = round( (rand_double()*200.0) - 100.0 );
103+
}
104+
101105
t = tic();
102106
for ( i = 0; i < ITERATIONS; i++ ) {
103-
x = ( rand_double() * 200.0 ) - 100.0;
104-
b = stdlib_base_int32_is_even( (int32_t)x );
107+
b = stdlib_base_int32_is_even( (int32_t)x[ i%100 ] );
105108
if ( b != true && b != false ) {
106109
printf( "should return either true or false\n" );
107110
break;

lib/node_modules/@stdlib/math/base/assert/int32-is-even/manifest.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,16 @@
3333
"include": [
3434
"./include"
3535
],
36-
"libraries": [],
36+
"libraries": [
37+
"-lm"
38+
],
3739
"libpath": [],
38-
"dependencies": []
40+
"dependencies": [
41+
"@stdlib/napi/export",
42+
"@stdlib/napi/argv",
43+
"@stdlib/napi/argv-int32",
44+
"@stdlib/napi/create-int32"
45+
]
3946
},
4047
{
4148
"task": "benchmark",

lib/node_modules/@stdlib/math/base/assert/int32-is-even/src/addon.c

Lines changed: 9 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
*/
1818

1919
#include "stdlib/math/base/assert/int32_is_even.h"
20+
#include "stdlib/napi/argv.h"
21+
#include "stdlib/napi/argv_int32.h"
22+
#include "stdlib/napi/create_int32.h"
23+
#include "stdlib/napi/export.h"
2024
#include <node_api.h>
2125
#include <stdint.h>
22-
#include <assert.h>
2326

2427
/**
2528
* Receives JavaScript callback invocation data.
@@ -29,60 +32,11 @@
2932
* @return Node-API value
3033
*/
3134
static napi_value addon( napi_env env, napi_callback_info info ) {
32-
napi_status status;
33-
34-
// Get callback arguments:
35-
size_t argc = 1;
36-
napi_value argv[ 1 ];
37-
status = napi_get_cb_info( env, info, &argc, argv, NULL, NULL );
38-
assert( status == napi_ok );
39-
40-
// Check whether we were provided the correct number of arguments:
41-
if ( argc < 1 ) {
42-
status = napi_throw_error( env, NULL, "invalid invocation. Insufficient arguments." );
43-
assert( status == napi_ok );
44-
return NULL;
45-
}
46-
if ( argc > 1 ) {
47-
status = napi_throw_error( env, NULL, "invalid invocation. Too many arguments." );
48-
assert( status == napi_ok );
49-
return NULL;
50-
}
51-
52-
napi_valuetype vtype0;
53-
status = napi_typeof( env, argv[ 0 ], &vtype0 );
54-
assert( status == napi_ok );
55-
if ( vtype0 != napi_number ) {
56-
status = napi_throw_type_error( env, NULL, "invalid argument. First argument must be a number." );
57-
assert( status == napi_ok );
58-
return NULL;
59-
}
60-
61-
int32_t x;
62-
status = napi_get_value_int32( env, argv[ 0 ], &x );
63-
assert( status == napi_ok );
64-
65-
bool result = stdlib_base_int32_is_even( x );
66-
67-
napi_value v;
68-
status = napi_create_int32( env, (int32_t)result, &v );
69-
assert( status == napi_ok );
70-
71-
return v;
35+
STDLIB_NAPI_ARGV( env, info, argv, argc, 1 );
36+
STDLIB_NAPI_ARGV_INT32( env, x, argv, 0 );
37+
STDLIB_NAPI_CREATE_INT32( env, (int32_t)stdlib_base_int32_is_even( x ), out );
38+
return out;
7239
}
7340

74-
/**
75-
* Initializes a Node-API module.
76-
*
77-
* @param env environment under which the function is invoked
78-
* @param exports exports object
79-
* @return main export
80-
*/
81-
static napi_value init( napi_env env, napi_value exports ) {
82-
napi_value fcn;
83-
napi_status status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, addon, NULL, &fcn );
84-
assert( status == napi_ok );
85-
return fcn;
86-
}
41+
STDLIB_NAPI_MODULE_EXPORT_FCN( addon )
8742

88-
NAPI_MODULE( NODE_GYP_MODULE_NAME, init )

0 commit comments

Comments
 (0)