From e55b424b86b32f8f5c9f18e22ac602b18650c0c4 Mon Sep 17 00:00:00 2001 From: Aryan Sharma Date: Sat, 29 Aug 2026 03:38:35 +0530 Subject: [PATCH 1/5] feat(stats/base/ndarray/snanmskmin): add C implementation Signed-off-by: Aryan Sharma --- .../stats/base/ndarray/snanmskmin/README.md | 128 ++++++++- .../ndarray/snanmskmin/benchmark/benchmark.js | 2 +- .../snanmskmin/benchmark/benchmark.native.js | 145 ++++++++++ .../ndarray/snanmskmin/benchmark/c/Makefile | 146 ++++++++++ .../snanmskmin/benchmark/c/benchmark.length.c | 183 ++++++++++++ .../stats/base/ndarray/snanmskmin/binding.gyp | 171 ++++++++++++ .../ndarray/snanmskmin/docs/types/index.d.ts | 2 +- .../ndarray/snanmskmin/docs/types/test.ts | 2 +- .../ndarray/snanmskmin/examples/c/Makefile | 146 ++++++++++ .../ndarray/snanmskmin/examples/c/example.c | 31 +++ .../base/ndarray/snanmskmin/examples/index.js | 2 +- .../base/ndarray/snanmskmin/include.gypi | 51 ++++ .../stdlib/stats/base/ndarray/snanmskmin.h | 40 +++ .../base/ndarray/snanmskmin/lib/index.js | 17 +- .../stats/base/ndarray/snanmskmin/lib/main.js | 2 +- .../base/ndarray/snanmskmin/lib/native.js | 62 +++++ .../base/ndarray/snanmskmin/manifest.json | 107 +++++++ .../base/ndarray/snanmskmin/package.json | 4 + .../base/ndarray/snanmskmin/src/Makefile | 70 +++++ .../stats/base/ndarray/snanmskmin/src/addon.c | 64 +++++ .../stats/base/ndarray/snanmskmin/src/main.c | 102 +++++++ .../base/ndarray/snanmskmin/test/test.js | 234 ++-------------- .../base/ndarray/snanmskmin/test/test.main.js | 253 +++++++++++++++++ .../ndarray/snanmskmin/test/test.native.js | 260 ++++++++++++++++++ 24 files changed, 2011 insertions(+), 213 deletions(-) create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/benchmark/benchmark.native.js create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/benchmark/c/Makefile create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/benchmark/c/benchmark.length.c create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/binding.gyp create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/examples/c/Makefile create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/examples/c/example.c create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/include.gypi create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/include/stdlib/stats/base/ndarray/snanmskmin.h create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/lib/native.js create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/manifest.json create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/src/Makefile create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/src/addon.c create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/src/main.c create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/test/test.main.js create mode 100644 lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/test/test.native.js diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/README.md b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/README.md index 849c3c5adfd4..30a4b96493a0 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/README.md +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/README.md @@ -2,7 +2,7 @@ @license Apache-2.0 -Copyright (c) 2025 The Stdlib Authors. +Copyright (c) 2026 The Stdlib Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -103,6 +103,132 @@ console.log( v ); + + +
+ +## C APIs + +
+ +
+ + + +
+ +### Usage + +```c +#include "stdlib/stats/base/ndarray/snanmskmin.h" +``` + +#### stdlib_stats_snanmskmin( arrays ) + +Compute the minimum value of a one-dimensional single-precision floating-point ndarray according to a mask, ignoring `NaN` values. + +```c +#include "stdlib/ndarray/ctor.h" +#include "stdlib/ndarray/dtypes.h" +#include "stdlib/ndarray/orders.h" +#include "stdlib/ndarray/index_modes.h" +#include + +// ... + +// Create ndarray and mask... +struct ndarray *x = stdlib_ndarray_allocate( STDLIB_NDARRAY_FLOAT32, (uint8_t *)data, ndims, shape, xstrides, offset, order, imode, nsubmodes, submodes ); +struct ndarray *mask = stdlib_ndarray_allocate( STDLIB_NDARRAY_UINT8, (uint8_t *)mdata, ndims, shape, mstrides, offset, order, imode, nsubmodes, submodes ); + +const struct ndarray *arrays[] = { x, mask }; + +float v = stdlib_stats_snanmskmin( arrays ); + +// ... + +// Free memory: +stdlib_ndarray_free( x ); +stdlib_ndarray_free( mask ); +``` + +The function accepts the following arguments: + +- **arrays**: `[2](const struct ndarray *)` array containing ndarrays (a one-dimensional input ndarray and a one-dimensional mask ndarray). + +```c +float stdlib_stats_snanmskmin( const struct ndarray *arrays[] ); +``` + +
+ + + +
+ +
+ + + +
+ +### Examples + +```c +#include "stdlib/stats/base/ndarray/snanmskmin.h" +#include "stdlib/ndarray/ctor.h" +#include "stdlib/ndarray/dtypes.h" +#include "stdlib/ndarray/orders.h" +#include "stdlib/ndarray/index_modes.h" +#include +#include + +int main( void ) { + float x[] = { 1.0f, -2.0f, 4.0f, 2.0f, 0.0f/0.0f }; + uint8_t mask[] = { 0, 0, 1, 0, 0 }; + + int64_t ndims = 1; + int64_t shape[] = { 5 }; + int64_t strides[] = { 4 }; + int64_t mstrides[] = { 1 }; + int64_t offset = 0; + enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR; + enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR; + int8_t submodes[] = { imode }; + int64_t nsubmodes = 1; + + struct ndarray *X = stdlib_ndarray_allocate( STDLIB_NDARRAY_FLOAT32, (uint8_t *)x, ndims, shape, strides, offset, order, imode, nsubmodes, submodes ); + if ( X == NULL ) { + printf( "Error allocating memory.\n" ); + return 1; + } + + struct ndarray *Mask = stdlib_ndarray_allocate( STDLIB_NDARRAY_UINT8, (uint8_t *)mask, ndims, shape, mstrides, offset, order, imode, nsubmodes, submodes ); + if ( Mask == NULL ) { + printf( "Error allocating memory.\n" ); + stdlib_ndarray_free( X ); + return 1; + } + + const struct ndarray *arrays[] = { X, Mask }; + + float v = stdlib_stats_snanmskmin( arrays ); + printf( "min: %f\n", v ); + + stdlib_ndarray_free( X ); + stdlib_ndarray_free( Mask ); + + return 0; +} +``` + +
+ + + +
+ + + + diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/benchmark/c/benchmark.length.c index 782a9902dbe3..cdb6ee1fabfa 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/benchmark/c/benchmark.length.c +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/benchmark/c/benchmark.length.c @@ -17,16 +17,15 @@ */ #include "stdlib/stats/base/ndarray/snanmskmin.h" +#include "stdlib/ndarray/ctor.h" +#include "stdlib/ndarray/dtypes.h" +#include "stdlib/ndarray/orders.h" +#include "stdlib/ndarray/index_modes.h" #include #include +#include #include -#include #include -#include - -#define NAME "snanmskmin" -#define ITERATIONS 1000000 -#define REPEATS 3 /** * Prints the TAP version. @@ -66,7 +65,7 @@ static void print_results( int iterations, double elapsed ) { } /** -* Returns a clock time to resolve high precision timing. +* Returns a clock time. * * @return clock time */ @@ -77,29 +76,12 @@ static double tic( void ) { } /** -* Generates a random number. +* Generates a random number on the interval [0,1). * * @return random number */ static float rand_float( void ) { - float r = (float)rand() / (float)RAND_MAX; - if ( r > 0.8f ) { - return 0.0f / 0.0f; - } - return ( r * 20.0f ) - 10.0f; -} - -/** -* Generates a random mask value. -* -* @return random mask value -*/ -static uint8_t rand_mask( void ) { - float r = (float)rand() / (float)RAND_MAX; - if ( r < 0.2f ) { - return 1; - } - return 0; + return (float)rand() / ( (float)RAND_MAX + 1.0f ); } /** @@ -110,43 +92,49 @@ static uint8_t rand_mask( void ) { * @return elapsed time in seconds */ static double benchmark( int iterations, int len ) { - double elapsed; - double t; float *x; uint8_t *mask; int i; - float v; + double t; + double elapsed; - x = (float *)malloc( len * sizeof(float) ); - if ( x == NULL ) { - printf( "unable to allocate memory\n" ); - exit( 1 ); - } - mask = (uint8_t *)malloc( len * sizeof(uint8_t) ); - if ( mask == NULL ) { + x = (float *)malloc( len * sizeof( float ) ); + mask = (uint8_t *)malloc( len * sizeof( uint8_t ) ); + if ( x == NULL || mask == NULL ) { printf( "unable to allocate memory\n" ); exit( 1 ); } for ( i = 0; i < len; i++ ) { - x[ i ] = rand_float(); - mask[ i ] = rand_mask(); + x[ i ] = ( rand_float() * 20.0f ) - 10.0f; + mask[ i ] = ( rand_float() < 0.2f ) ? 1 : 0; } + int64_t shape[] = { len }; + int64_t strides[] = { 1 }; + int64_t mstrides[] = { 1 }; + + // cppcheck-suppress invalidPointerCast + struct ndarray *X = stdlib_ndarray_allocate( STDLIB_NDARRAY_FLOAT32, (uint8_t *)x, 1, shape, strides, 0, STDLIB_NDARRAY_ROW_MAJOR, STDLIB_NDARRAY_INDEX_ERROR, 1, (int8_t[]){ STDLIB_NDARRAY_INDEX_ERROR } ); + // cppcheck-suppress invalidPointerCast + struct ndarray *Mask = stdlib_ndarray_allocate( STDLIB_NDARRAY_UINT8, (uint8_t *)mask, 1, shape, mstrides, 0, STDLIB_NDARRAY_ROW_MAJOR, STDLIB_NDARRAY_INDEX_ERROR, 1, (int8_t[]){ STDLIB_NDARRAY_INDEX_ERROR } ); + + const struct ndarray *arrays[] = { X, Mask }; + + float v; t = tic(); for ( i = 0; i < iterations; i++ ) { - x[ i % len ] = (float)i; - v = stdlib_ndarray_snanmskmin( len, x, 1, 0, mask, 1, 0 ); - if ( v != v && v == v ) { // Should never happen unless compiler optimizes this out incorrectly, just to use v - printf( "unexpected result\n" ); + v = stdlib_stats_snanmskmin( arrays ); + if ( v != v ) { + printf( "should not return NaN\n" ); + break; } } elapsed = tic() - t; - - if ( v != v && v == v ) { - printf( "unexpected result\n" ); + if ( v != v ) { + printf( "should not return NaN\n" ); } - free( x ); - free( mask ); + stdlib_ndarray_free( X ); + stdlib_ndarray_free( Mask ); return elapsed; } @@ -160,24 +148,21 @@ int main( void ) { int iter; int len; int i; - int j; - // Use the current time to seed the random number generator: - srand( time( NULL ) ); + // Use a reproducible random seed: + srand( 1 ); print_version(); count = 0; for ( i = 1; i <= 6; i++ ) { - len = pow( 10, i ); - iter = ITERATIONS / pow( 10, i - 1 ); - for ( j = 0; j < REPEATS; j++ ) { - count += 1; - printf( "# c::%s:len=%d\n", NAME, len ); - elapsed = benchmark( iter, len ); - print_results( iter, elapsed ); - printf( "ok %d benchmark finished\n", count ); - } + len = (int)pow( 10, i ); + iter = 1000000 / (int)pow( 10, i-1 ); + printf( "# c::%s:len=%d\n", "snanmskmin", len ); + elapsed = benchmark( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", ++count ); } print_summary( count, count ); + return 0; } diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/examples/c/example.c b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/examples/c/example.c index a8e47b4aed92..020da7d3c2ff 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/examples/c/example.c +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/examples/c/example.c @@ -17,15 +17,49 @@ */ #include "stdlib/stats/base/ndarray/snanmskmin.h" +#include "stdlib/ndarray/ctor.h" +#include "stdlib/ndarray/dtypes.h" +#include "stdlib/ndarray/orders.h" +#include "stdlib/ndarray/index_modes.h" #include #include int main( void ) { - float x[] = { 1.0f, -2.0f, 4.0f, 2.0f, 0.0f/0.0f }; - uint8_t mask[] = { 0, 0, 1, 0, 0 }; + float x[] = { 1.0f, -2.0f, 4.0f, 2.0f }; + uint8_t mask[] = { 0, 0, 1, 0 }; - float v = stdlib_ndarray_snanmskmin( 5, x, 1, 0, mask, 1, 0 ); - printf( "min: %f\n", v ); + int64_t ndims = 1; + int64_t shape[] = { 4 }; + int64_t strides[] = { 4 }; + int64_t mstrides[] = { 1 }; + int64_t offset = 0; + enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR; + enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR; + int8_t submodes[] = { imode }; + int64_t nsubmodes = 1; + + // cppcheck-suppress invalidPointerCast + struct ndarray *X = stdlib_ndarray_allocate( STDLIB_NDARRAY_FLOAT32, (uint8_t *)x, ndims, shape, strides, offset, order, imode, nsubmodes, submodes ); + if ( X == NULL ) { + printf( "Error allocating memory.\n" ); + return 1; + } + + // cppcheck-suppress invalidPointerCast + struct ndarray *Mask = stdlib_ndarray_allocate( STDLIB_NDARRAY_UINT8, (uint8_t *)mask, ndims, shape, mstrides, offset, order, imode, nsubmodes, submodes ); + if ( Mask == NULL ) { + printf( "Error allocating memory.\n" ); + stdlib_ndarray_free( X ); + return 1; + } + + const struct ndarray *arrays[] = { X, Mask }; + + float v = stdlib_stats_snanmskmin( arrays ); + printf( "Minimum value: %f\n", v ); + + stdlib_ndarray_free( X ); + stdlib_ndarray_free( Mask ); return 0; } From 98411ef7240b29dc26c6f8db44e483deeb4dea34 Mon Sep 17 00:00:00 2001 From: Aryan Sharma Date: Sat, 29 Aug 2026 03:57:35 +0530 Subject: [PATCH 3/5] fix(stats/base/ndarray/snanmskmin): fix ESLint rules and uninitialized C variable Signed-off-by: Aryan Sharma --- .../base/ndarray/snanmskmin/benchmark/c/benchmark.length.c | 2 +- .../@stdlib/stats/base/ndarray/snanmskmin/lib/index.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/benchmark/c/benchmark.length.c index cdb6ee1fabfa..501d6ddedc56 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/benchmark/c/benchmark.length.c +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/benchmark/c/benchmark.length.c @@ -120,7 +120,7 @@ static double benchmark( int iterations, int len ) { const struct ndarray *arrays[] = { X, Mask }; - float v; + float v = 0.0f; t = tic(); for ( i = 0; i < iterations; i++ ) { v = stdlib_stats_snanmskmin( arrays ); diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/lib/index.js b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/lib/index.js index 70980ebc9d22..a6debdbbcf53 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/lib/index.js +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/lib/index.js @@ -37,6 +37,7 @@ // MODULES // +var join = require( 'path' ).join; var tryRequire = require( '@stdlib/utils/try-require' ); var isError = require( '@stdlib/assert/is-error' ); var main = require( './main.js' ); @@ -45,7 +46,7 @@ var main = require( './main.js' ); // MAIN // var snanmskmin; -var tmp = tryRequire( require( 'path' ).resolve( __dirname, 'native.js' ) ); +var tmp = tryRequire( join( __dirname, './native.js' ) ); if ( isError( tmp ) ) { snanmskmin = main; } else { @@ -55,4 +56,4 @@ if ( isError( tmp ) ) { // EXPORTS // -module.exports = snanmskmin; +module.exports = snanmskmin; \ No newline at end of file From ada2392a4305ba01ddaf9daf91cd8949ef1e56e0 Mon Sep 17 00:00:00 2001 From: Aryan Sharma Date: Sat, 29 Aug 2026 04:07:14 +0530 Subject: [PATCH 4/5] fix(stats/base/ndarray/snanmskmin): fix EOF newline in index.js and C benchmark Signed-off-by: Aryan Sharma --- .../stats/base/ndarray/snanmskmax/lib/index.js | 16 +++++++++++++++- .../stats/base/ndarray/snanmskmin/README.md | 1 - .../stats/base/ndarray/snanmskmin/lib/index.js | 2 +- .../stats/base/ndarray/snanmskmin/src/addon.c | 1 - .../stats/base/ndarray/snanmskrange/lib/index.js | 16 +++++++++++++++- 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmax/lib/index.js b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmax/lib/index.js index fd8dcda353eb..b2923b366809 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmax/lib/index.js +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmax/lib/index.js @@ -37,9 +37,23 @@ // MODULES // +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); var main = require( './main.js' ); +// MAIN // + +var snanmskmax; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + snanmskmax = main; +} else { + snanmskmax = tmp; +} + + // EXPORTS // -module.exports = main; +module.exports = snanmskmax; diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/README.md b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/README.md index 99cf466cf83a..30a4b96493a0 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/README.md +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/README.md @@ -244,4 +244,3 @@ int main( void ) { - diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/lib/index.js b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/lib/index.js index a6debdbbcf53..243bf76c6d5a 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/lib/index.js +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/lib/index.js @@ -56,4 +56,4 @@ if ( isError( tmp ) ) { // EXPORTS // -module.exports = snanmskmin; \ No newline at end of file +module.exports = snanmskmin; diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/src/addon.c b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/src/addon.c index fc6bf5737a5a..d510386c272f 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/src/addon.c +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/src/addon.c @@ -61,4 +61,3 @@ static napi_value addon( napi_env env, napi_callback_info info ) { } STDLIB_NAPI_MODULE_EXPORT_FCN( addon ) - diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskrange/lib/index.js b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskrange/lib/index.js index 62656a4920b6..f69f801cac73 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskrange/lib/index.js +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskrange/lib/index.js @@ -37,9 +37,23 @@ // MODULES // +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); var main = require( './main.js' ); +// MAIN // + +var snanmskrange; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + snanmskrange = main; +} else { + snanmskrange = tmp; +} + + // EXPORTS // -module.exports = main; +module.exports = snanmskrange; From 1d5f7521d3025cf3ed0afc2b44d6d978a9d15a90 Mon Sep 17 00:00:00 2001 From: Aryan Sharma Date: Sat, 29 Aug 2026 04:18:31 +0530 Subject: [PATCH 5/5] fix(stats/base/ndarray/snanmskmin): fix first tape test titles in test.main.js and test.native.js Signed-off-by: Aryan Sharma --- .../stats/base/ndarray/snanmskmin/test/test.main.js | 2 +- .../stats/base/ndarray/snanmskmin/test/test.native.js | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/test/test.main.js b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/test/test.main.js index 872a43a1d8c9..27f2c504cddc 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/test/test.main.js +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/test/test.main.js @@ -49,7 +49,7 @@ function vector( dtype, buffer, length, stride, offset ) { // TESTS // -tape( 'main export', function test( t ) { +tape( 'main export is a function', function test( t ) { t.ok( true, __filename ); t.strictEqual( typeof snanmskmin, 'function', 'main export is a function' ); t.end(); diff --git a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/test/test.native.js b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/test/test.native.js index 816d16e504a1..6a19ed2ce23a 100644 --- a/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/test/test.native.js +++ b/lib/node_modules/@stdlib/stats/base/ndarray/snanmskmin/test/test.native.js @@ -22,13 +22,13 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var Float32Array = require( '@stdlib/array/float32' ); -var Uint8Array = require( '@stdlib/array/uint8' ); -var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var isNegativeZerof = require( '@stdlib/math/base/assert/is-negative-zerof' ); +var Float32Array = require( '@stdlib/array/float32' ); var tryRequire = require( '@stdlib/utils/try-require' ); -var isError = require( '@stdlib/assert/is-error' ); +var Uint8Array = require( '@stdlib/array/uint8' ); var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var isError = require( '@stdlib/assert/is-error' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var snanmskmin = tryRequire( resolve( __dirname, './../lib/native.js' ) ); var opts = { @@ -56,7 +56,7 @@ function vector( dtype, buffer, length, stride, offset ) { // TESTS // -tape( 'main export', opts, function test( t ) { +tape( 'main export is a function', opts, function test( t ) { t.ok( true, __filename ); t.strictEqual( typeof snanmskmin, 'function', 'main export is a function' ); t.end();