diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2f/README.md b/lib/node_modules/@stdlib/math/base/special/factorial2f/README.md index 9966b952667e..2c667e0f74c3 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2f/README.md +++ b/lib/node_modules/@stdlib/math/base/special/factorial2f/README.md @@ -136,16 +136,16 @@ logEachMap( 'factorial2f(%d) = %0.1f', x, factorial2f ); Evaluates the [double factorial][double-factorial] of `n` as a single-precision floating-point number. ```c -float out = stdlib_base_factorial2f( 3 ); +float out = stdlib_base_factorial2f( 3.0f ); // returns 3.0f ``` The function accepts the following arguments: -- **n**: `[in] int32_t` input value. +- **n**: `[in] float` input value. ```c -float stdlib_base_factorial2f( const int32_t n ); +float stdlib_base_factorial2f( const float n ); ``` @@ -169,16 +169,15 @@ float stdlib_base_factorial2f( const int32_t n ); ```c #include "stdlib/math/base/special/factorial2f.h" #include -#include int main( void ) { - const int32_t x[] = { 1, 10, 50, 56, 57 }; + const float x[] = { 1.0f, 10.0f, 50.0f, 56.0f, 57.0f }; float b; int i; for ( i = 0; i < 5; i++ ) { b = stdlib_base_factorial2f( x[ i ] ); - printf ( "factorial2f(%d) = %f\n", x[ i ], b ); + printf ( "factorial2f(%f) = %f\n", x[ i ], b ); } } ``` diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2f/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/factorial2f/benchmark/c/native/benchmark.c index 3dce326fbd78..f7ac585400fe 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2f/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/factorial2f/benchmark/c/native/benchmark.c @@ -91,14 +91,14 @@ static float rand_float( void ) { * @return elapsed time in seconds */ static double benchmark( void ) { - int32_t x[ 100 ]; + float x[ 100 ]; double elapsed; double t; float y; int i; for ( i = 0; i < 100; i++ ) { - x[ i ] = (int32_t)( 56*rand_float() ); + x[ i ] = roundf( 56.0f * rand_float() ); } t = tic(); diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2f/examples/c/example.c b/lib/node_modules/@stdlib/math/base/special/factorial2f/examples/c/example.c index 91ee56b05395..0c0a58096a28 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2f/examples/c/example.c +++ b/lib/node_modules/@stdlib/math/base/special/factorial2f/examples/c/example.c @@ -18,15 +18,14 @@ #include "stdlib/math/base/special/factorial2f.h" #include -#include int main( void ) { - const int32_t x[] = { 1, 10, 50, 56, 57 }; + const float x[] = { 1.0f, 10.0f, 50.0f, 56.0f, 57.0f }; float b; int i; for ( i = 0; i < 5; i++ ) { b = stdlib_base_factorial2f( x[ i ] ); - printf ( "factorial2f(%d) = %f\n", x[ i ], b ); + printf ( "factorial2f(%f) = %f\n", x[ i ], b ); } } diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2f/include/stdlib/math/base/special/factorial2f.h b/lib/node_modules/@stdlib/math/base/special/factorial2f/include/stdlib/math/base/special/factorial2f.h index 1bfbb69a936c..bcc9c298c116 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2f/include/stdlib/math/base/special/factorial2f.h +++ b/lib/node_modules/@stdlib/math/base/special/factorial2f/include/stdlib/math/base/special/factorial2f.h @@ -19,8 +19,6 @@ #ifndef STDLIB_MATH_BASE_SPECIAL_FACTORIAL2F_H #define STDLIB_MATH_BASE_SPECIAL_FACTORIAL2F_H -#include - /* * If C++, prevent name mangling so that the compiler emits a binary file having undecorated names, thus mirroring the behavior of a C compiler. */ @@ -31,7 +29,7 @@ extern "C" { /** * Evaluates the double factorial of `n` as a single-precision floating-point number. */ -float stdlib_base_factorial2f( const int32_t n ); +float stdlib_base_factorial2f( const float n ); #ifdef __cplusplus } diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2f/lib/main.js b/lib/node_modules/@stdlib/math/base/special/factorial2f/lib/main.js index df43a587c86e..f49a82611cd3 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2f/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/factorial2f/lib/main.js @@ -21,7 +21,7 @@ // MODULES // var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); -var isIntegerf = require( '@stdlib/math/base/assert/is-integerf' ); +var isNonnegativeIntegerf = require( '@stdlib/math/base/assert/is-nonnegative-integerf' ); var isEvenf = require( '@stdlib/math/base/assert/is-evenf' ); var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); var PINF = require( '@stdlib/constants/float32/pinf' ); @@ -62,15 +62,12 @@ function factorial2f( n ) { var v; var i; - if ( isnanf( n ) ) { + if ( isnanf( n ) || !isNonnegativeIntegerf( n ) ) { return NaN; } if ( n > FLOAT32_MAX_NTH_DOUBLE_FACTORIAL ) { return PINF; } - if ( n < 0 || isIntegerf( n ) === false ) { - return NaN; - } v = n|0; // asm type annotation if ( v === 0|0 || v === 1|0 ) { return 1|0; // asm type annotation diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2f/manifest.json b/lib/node_modules/@stdlib/math/base/special/factorial2f/manifest.json index e908a7d99888..6f6816b29780 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2f/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/factorial2f/manifest.json @@ -37,9 +37,10 @@ "libpath": [], "dependencies": [ "@stdlib/math/base/napi/unary", - "@stdlib/math/base/assert/int32-is-even", + "@stdlib/math/base/assert/is-evenf", "@stdlib/constants/float32/pinf", - "@stdlib/constants/float32/max-nth-double-factorial" + "@stdlib/constants/float32/max-nth-double-factorial", + "@stdlib/math/base/assert/is-nonnegative-integerf" ] }, { @@ -53,9 +54,10 @@ "libraries": [], "libpath": [], "dependencies": [ - "@stdlib/math/base/assert/int32-is-even", + "@stdlib/math/base/assert/is-evenf", "@stdlib/constants/float32/pinf", - "@stdlib/constants/float32/max-nth-double-factorial" + "@stdlib/constants/float32/max-nth-double-factorial", + "@stdlib/math/base/assert/is-nonnegative-integerf" ] }, { @@ -69,9 +71,10 @@ "libraries": [], "libpath": [], "dependencies": [ - "@stdlib/math/base/assert/int32-is-even", + "@stdlib/math/base/assert/is-evenf", "@stdlib/constants/float32/pinf", - "@stdlib/constants/float32/max-nth-double-factorial" + "@stdlib/constants/float32/max-nth-double-factorial", + "@stdlib/math/base/assert/is-nonnegative-integerf" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2f/src/addon.c b/lib/node_modules/@stdlib/math/base/special/factorial2f/src/addon.c index b2b2f522d3c3..d02d1a8c4133 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2f/src/addon.c +++ b/lib/node_modules/@stdlib/math/base/special/factorial2f/src/addon.c @@ -19,4 +19,4 @@ #include "stdlib/math/base/special/factorial2f.h" #include "stdlib/math/base/napi/unary.h" -STDLIB_MATH_BASE_NAPI_MODULE_I_F( stdlib_base_factorial2f ) +STDLIB_MATH_BASE_NAPI_MODULE_F_F( stdlib_base_factorial2f ) diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2f/src/main.c b/lib/node_modules/@stdlib/math/base/special/factorial2f/src/main.c index 21420f00973e..c43f9a749333 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2f/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/factorial2f/src/main.c @@ -17,42 +17,42 @@ */ #include "stdlib/math/base/special/factorial2f.h" -#include "stdlib/math/base/assert/int32_is_even.h" +#include "stdlib/math/base/assert/is_evenf.h" #include "stdlib/constants/float32/pinf.h" #include "stdlib/constants/float32/max_nth_double_factorial.h" -#include +#include "stdlib/math/base/assert/is_nonnegative_integerf.h" /** * Evaluates the double factorial of `n` as a single-precision floating-point number. * -* @param x input value +* @param n input value * @return double factorial * * @example -* float v = stdlib_base_factorial2f( 3 ); +* float v = stdlib_base_factorial2f( 3.0f ); * // returns 3.0f */ -float stdlib_base_factorial2f( const int32_t n ) { - int32_t last; - int32_t i; +float stdlib_base_factorial2f( const float n ) { + float last; float out; + float i; + if ( !stdlib_base_is_nonnegative_integerf( n ) ) { + return 0.0f / 0.0f; // NaN + } if ( n > STDLIB_CONSTANT_FLOAT32_MAX_NTH_DOUBLE_FACTORIAL ) { return STDLIB_CONSTANT_FLOAT32_PINF; } - if ( n < 0 ) { - return 0.0f / 0.0f; // NaN - } - if ( n == 0 || n == 1 ) { + if ( n == 0.0f || n == 1.0f ) { return 1.0f; } - if ( stdlib_base_int32_is_even( n ) ) { - last = 2; + if ( stdlib_base_is_evenf( n ) ) { + last = 2.0f; } else { - last = 3; + last = 3.0f; } out = 1.0f; - for ( i = n; i >= last; i -= 2 ) { + for ( i = n; i >= last; i -= 2.0f ) { out *= i; } return out;