diff --git a/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/lib/factory.js b/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/lib/factory.js index 433044e3ab0a..edfa8a299c52 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/lib/factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/lib/factory.js @@ -49,7 +49,6 @@ var C = 0.5 * ( LN2 - LNPI ); */ function factory( sigma ) { var lsigma; - var sigma2; if ( isnan( sigma ) || sigma <= 0.0 @@ -57,7 +56,6 @@ function factory( sigma ) { return constantFunction( NaN ); } lsigma = ln( sigma ); - sigma2 = sigma * sigma; return logpdf; /** @@ -72,13 +70,15 @@ function factory( sigma ) { * // returns */ function logpdf( x ) { + var v; if ( isnan( x ) ) { return NaN; } if ( x < 0.0 ) { return NINF; } - return C - lsigma - ( (x*x) / ( 2.0 * sigma2 ) ); + v = x / sigma; + return C - lsigma - ( (v*v) / 2.0 ); } } diff --git a/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/lib/main.js index d0a9ff5be121..cc83fdc7d1bd 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/lib/main.js +++ b/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/lib/main.js @@ -76,6 +76,7 @@ var C = 0.5 * ( LN2 - LNPI ); * // returns NaN */ function logpdf( x, sigma ) { + var v; if ( isnan( x ) || isnan( sigma ) || @@ -86,7 +87,8 @@ function logpdf( x, sigma ) { if ( x < 0.0 ) { return NINF; } - return C - ln( sigma ) - ( (x*x) / ( 2.0 * (sigma*sigma) ) ); + v = x / sigma; + return C - ln( sigma ) - ( (v*v) / 2.0 ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/src/main.c b/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/src/main.c index fce0b2e9256e..2bd046194f48 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dists/halfnormal/logpdf/src/main.c @@ -38,6 +38,7 @@ static const double C = 0.5 * ( STDLIB_CONSTANT_FLOAT64_LN2 - STDLIB_CONSTANT_FL * // returns ~-0.546 */ double stdlib_base_dists_halfnormal_logpdf( const double x, const double sigma ) { + double v; if ( stdlib_base_is_nan( x ) || stdlib_base_is_nan( sigma ) || @@ -48,5 +49,6 @@ double stdlib_base_dists_halfnormal_logpdf( const double x, const double sigma ) if ( x < 0.0 ) { return STDLIB_CONSTANT_FLOAT64_NINF; } - return C - stdlib_base_ln( sigma ) - ( (x*x) / ( 2.0 * (sigma*sigma) ) ); + v = x / sigma; + return C - stdlib_base_ln( sigma ) - ( (v*v) / 2.0 ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/lib/factory.js b/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/lib/factory.js index b958366b3fae..4c2bf31b519d 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/lib/factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/lib/factory.js @@ -22,10 +22,10 @@ var constantFunction = require( '@stdlib/utils/constant-function' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var pow = require( '@stdlib/math/base/special/pow' ); +var abs2 = require( '@stdlib/math/base/special/abs2' ); var ln = require( '@stdlib/math/base/special/ln' ); var NINF = require( '@stdlib/constants/float64/ninf' ); -var PI = require( '@stdlib/constants/float64/pi' ); +var LN_TWO_PI = require( '@stdlib/constants/float64/ln-two-pi' ); // MAIN // @@ -46,9 +46,7 @@ var PI = require( '@stdlib/constants/float64/pi' ); * // returns ~-3.672 */ function factory( mu, sigma ) { - var s2; var A; - var B; if ( isnan( mu ) || isnan( sigma ) || @@ -56,9 +54,7 @@ function factory( mu, sigma ) { ) { return constantFunction( NaN ); } - s2 = pow( sigma, 2.0 ); - A = -0.5 * ln( 2.0 * s2 * PI ); - B = -1.0 / ( 2.0 * s2 ); + A = ( -0.5 * LN_TWO_PI ) - ln( sigma ); return logpdf; /** @@ -73,13 +69,15 @@ function factory( mu, sigma ) { * // returns */ function logpdf( x ) { + var lnx; if ( isnan( x ) ) { return NaN; } if ( x <= 0.0 ) { return NINF; } - return A - ln( x ) + ( B * pow( ln(x) - mu, 2.0 ) ); + lnx = ln( x ); + return A - lnx - ( 0.5 * abs2( ( lnx - mu ) / sigma ) ); } } diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/lib/main.js index 0749d31da819..1694898dfa5d 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/lib/main.js +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/lib/main.js @@ -21,10 +21,10 @@ // MODULES // var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var pow = require( '@stdlib/math/base/special/pow' ); +var abs2 = require( '@stdlib/math/base/special/abs2' ); var ln = require( '@stdlib/math/base/special/ln' ); var NINF = require( '@stdlib/constants/float64/ninf' ); -var PI = require( '@stdlib/constants/float64/pi' ); +var LN_TWO_PI = require( '@stdlib/constants/float64/ln-two-pi' ); // MAIN // @@ -71,9 +71,8 @@ var PI = require( '@stdlib/constants/float64/pi' ); * // returns NaN */ function logpdf( x, mu, sigma ) { - var s2; + var lnx; var A; - var B; if ( isnan( x ) || isnan( mu ) || @@ -85,10 +84,9 @@ function logpdf( x, mu, sigma ) { if ( x <= 0.0 ) { return NINF; } - s2 = pow( sigma, 2.0 ); - A = -0.5 * ln( 2.0 * s2 * PI ); - B = -1.0 / ( 2.0 * s2 ); - return A - ln( x ) + ( B * pow( ln(x) - mu, 2.0 ) ); + lnx = ln( x ); + A = ( -0.5 * LN_TWO_PI ) - ln( sigma ); + return A - lnx - ( 0.5 * abs2( ( lnx - mu ) / sigma ) ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/manifest.json b/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/manifest.json index 9e8f2feb817a..335b608a0857 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/manifest.json +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/manifest.json @@ -40,10 +40,10 @@ "dependencies": [ "@stdlib/math/base/napi/ternary", "@stdlib/math/base/assert/is-nan", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/math/base/special/ln", "@stdlib/constants/float64/ninf", - "@stdlib/constants/float64/pi" + "@stdlib/constants/float64/ln-two-pi" ] }, { @@ -59,11 +59,11 @@ "libpath": [], "dependencies": [ "@stdlib/math/base/assert/is-nan", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/math/base/special/ln", "@stdlib/constants/float64/ninf", "@stdlib/constants/float64/eps", - "@stdlib/constants/float64/pi" + "@stdlib/constants/float64/ln-two-pi" ] }, { @@ -79,10 +79,10 @@ "libpath": [], "dependencies": [ "@stdlib/math/base/assert/is-nan", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/math/base/special/ln", "@stdlib/constants/float64/ninf", - "@stdlib/constants/float64/pi" + "@stdlib/constants/float64/ln-two-pi" ] } ] diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/src/main.c b/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/src/main.c index 310e71488243..46e213e080e1 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/logpdf/src/main.c @@ -18,10 +18,10 @@ #include "stdlib/stats/base/dists/lognormal/logpdf.h" #include "stdlib/math/base/assert/is_nan.h" -#include "stdlib/math/base/special/pow.h" +#include "stdlib/math/base/special/abs2.h" #include "stdlib/math/base/special/ln.h" #include "stdlib/constants/float64/ninf.h" -#include "stdlib/constants/float64/pi.h" +#include "stdlib/constants/float64/ln_two_pi.h" /** * Evaluates the natural logarithm of the probability density function (PDF) for a lognormal distribution with location parameter `mu` and scale parameter `sigma` at a value `x`. @@ -37,9 +37,7 @@ */ double stdlib_base_dists_lognormal_logpdf( const double x, const double mu, const double sigma ) { double lnx; - double s2; double A; - double B; if ( stdlib_base_is_nan( x ) || @@ -52,9 +50,7 @@ double stdlib_base_dists_lognormal_logpdf( const double x, const double mu, cons if ( x <= 0.0 ) { return STDLIB_CONSTANT_FLOAT64_NINF; } - s2 = stdlib_base_pow( sigma, 2.0 ); lnx = stdlib_base_ln( x ); - A = -0.5 * stdlib_base_ln( 2.0 * s2 * STDLIB_CONSTANT_FLOAT64_PI ); - B = -1.0 / ( 2.0 * s2 ); - return A - lnx + ( B * stdlib_base_pow( lnx - mu, 2.0 ) ); + A = ( -0.5 * STDLIB_CONSTANT_FLOAT64_LN_TWO_PI ) - stdlib_base_ln( sigma ); + return A - lnx - ( 0.5 * stdlib_base_abs2( ( lnx - mu ) / sigma ) ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/lib/factory.js b/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/lib/factory.js index 0a67d308ed6b..5b14c2e9aad2 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/lib/factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/lib/factory.js @@ -22,11 +22,10 @@ var constantFunction = require( '@stdlib/utils/constant-function' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var sqrt = require( '@stdlib/math/base/special/sqrt' ); var exp = require( '@stdlib/math/base/special/exp' ); -var pow = require( '@stdlib/math/base/special/pow' ); +var abs2 = require( '@stdlib/math/base/special/abs2' ); var ln = require( '@stdlib/math/base/special/ln' ); -var PI = require( '@stdlib/constants/float64/pi' ); +var SQRT_TWO_PI = require( '@stdlib/constants/float64/sqrt-two-pi' ); // MAIN // @@ -47,9 +46,7 @@ var PI = require( '@stdlib/constants/float64/pi' ); * // returns ~0.025 */ function factory( mu, sigma ) { - var s2; var A; - var B; if ( isnan( mu ) || isnan( sigma ) || @@ -57,9 +54,7 @@ function factory( mu, sigma ) { ) { return constantFunction( NaN ); } - s2 = pow( sigma, 2.0 ); - A = 1.0 / ( sqrt( 2.0 * s2 * PI ) ); - B = -1.0 / ( 2.0 * s2 ); + A = 1.0 / ( sigma * SQRT_TWO_PI ); return pdf; /** @@ -80,7 +75,7 @@ function factory( mu, sigma ) { if ( x <= 0.0 ) { return 0.0; } - return (1.0/x) * A * exp( B * pow( ln(x) - mu, 2.0 ) ); + return (1.0/x) * A * exp( -0.5 * abs2( ( ln(x) - mu ) / sigma ) ); } } diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/lib/main.js index 45aec9384530..27b61e4c7720 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/lib/main.js +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/lib/main.js @@ -21,11 +21,10 @@ // MODULES // var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var sqrt = require( '@stdlib/math/base/special/sqrt' ); var exp = require( '@stdlib/math/base/special/exp' ); -var pow = require( '@stdlib/math/base/special/pow' ); +var abs2 = require( '@stdlib/math/base/special/abs2' ); var ln = require( '@stdlib/math/base/special/ln' ); -var PI = require( '@stdlib/constants/float64/pi' ); +var SQRT_TWO_PI = require( '@stdlib/constants/float64/sqrt-two-pi' ); // MAIN // @@ -72,9 +71,7 @@ var PI = require( '@stdlib/constants/float64/pi' ); * // returns NaN */ function pdf( x, mu, sigma ) { - var s2; var A; - var B; if ( isnan( x ) || isnan( mu ) || @@ -86,10 +83,8 @@ function pdf( x, mu, sigma ) { if ( x <= 0.0 ) { return 0.0; } - s2 = pow( sigma, 2.0 ); - A = 1.0 / ( sqrt( 2.0 * s2 * PI ) ); - B = -1.0 / ( 2.0 * s2 ); - return (1.0/x) * A * exp( B * pow( ln(x) - mu, 2.0 ) ); + A = 1.0 / ( sigma * SQRT_TWO_PI ); + return (1.0/x) * A * exp( -0.5 * abs2( ( ln(x) - mu ) / sigma ) ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/manifest.json b/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/manifest.json index bec2ec21d922..af11707d0b85 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/manifest.json +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/manifest.json @@ -41,10 +41,9 @@ "@stdlib/math/base/napi/ternary", "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/exp", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/math/base/special/ln", - "@stdlib/math/base/special/sqrt", - "@stdlib/constants/float64/pi" + "@stdlib/constants/float64/sqrt-two-pi" ] }, { @@ -62,10 +61,9 @@ "@stdlib/math/base/assert/is-nan", "@stdlib/constants/float64/eps", "@stdlib/math/base/special/exp", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/math/base/special/ln", - "@stdlib/math/base/special/sqrt", - "@stdlib/constants/float64/pi" + "@stdlib/constants/float64/sqrt-two-pi" ] }, { @@ -83,10 +81,9 @@ "@stdlib/math/base/assert/is-nan", "@stdlib/constants/float64/eps", "@stdlib/math/base/special/exp", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/math/base/special/ln", - "@stdlib/math/base/special/sqrt", - "@stdlib/constants/float64/pi" + "@stdlib/constants/float64/sqrt-two-pi" ] } ] diff --git a/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/src/main.c b/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/src/main.c index f1e2f994c64e..5a3d7a498123 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dists/lognormal/pdf/src/main.c @@ -20,9 +20,8 @@ #include "stdlib/math/base/special/ln.h" #include "stdlib/math/base/assert/is_nan.h" #include "stdlib/math/base/special/exp.h" -#include "stdlib/math/base/special/pow.h" -#include "stdlib/math/base/special/sqrt.h" -#include "stdlib/constants/float64/pi.h" +#include "stdlib/math/base/special/abs2.h" +#include "stdlib/constants/float64/sqrt_two_pi.h" /** * Evaluates the PDF for a lognormal distribution with location `mu` and scale `sigma`. @@ -39,7 +38,6 @@ double stdlib_base_dists_lognormal_pdf( const double x, const double mu, const double sigma ) { double exp_value; double lnx_u; - double s2; double z; double y; if ( @@ -53,11 +51,10 @@ double stdlib_base_dists_lognormal_pdf( const double x, const double mu, const d if ( x <= 0.0 ) { return 0.0; } - s2 = stdlib_base_pow( sigma, 2.0 ); - lnx_u = stdlib_base_pow( ( stdlib_base_ln( x ) - mu ), 2.0 ); - z = -lnx_u / ( 2.0 * s2 ); + lnx_u = stdlib_base_abs2( ( stdlib_base_ln( x ) - mu ) / sigma ); + z = -0.5 * lnx_u; exp_value = stdlib_base_exp( z ); - y = 1.0 / ( x * sigma * stdlib_base_sqrt( 2.0 * STDLIB_CONSTANT_FLOAT64_PI ) ); + y = 1.0 / ( x * sigma * STDLIB_CONSTANT_FLOAT64_SQRT_TWO_PI ); return y * exp_value; } diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/lib/factory.js b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/lib/factory.js index 0db82b30d052..d4294b7d9334 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/lib/factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/lib/factory.js @@ -24,7 +24,7 @@ var constantFunction = require( '@stdlib/utils/constant-function' ); var degenerate = require( '@stdlib/stats/base/dists/degenerate/logpdf' ).factory; var LN_TWO_PI = require( '@stdlib/constants/float64/ln-two-pi' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var pow = require( '@stdlib/math/base/special/pow' ); +var abs2 = require( '@stdlib/math/base/special/abs2' ); var ln = require( '@stdlib/math/base/special/ln' ); @@ -46,9 +46,7 @@ var ln = require( '@stdlib/math/base/special/ln' ); * // returns ~-4.737 */ function factory( mu, sigma ) { - var s2; var A; - var B; if ( isnan( mu ) || isnan( sigma ) || @@ -59,9 +57,7 @@ function factory( mu, sigma ) { if ( sigma === 0.0 ) { return degenerate( mu ); } - s2 = pow( sigma, 2.0 ); A = (-0.5) * ( ( 2.0*ln( sigma ) ) + LN_TWO_PI ); - B = -1.0 / ( 2.0*s2 ); return logpdf; /** @@ -76,7 +72,7 @@ function factory( mu, sigma ) { * // returns */ function logpdf( x ) { - return A + ( B * pow( x-mu, 2.0 ) ); + return A - ( 0.5 * abs2( ( x-mu ) / sigma ) ); } } diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/lib/main.js index b42945dc60ec..0e45c1ffb33b 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/lib/main.js +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/lib/main.js @@ -21,7 +21,7 @@ // MODULES // var ln = require( '@stdlib/math/base/special/ln' ); -var pow = require( '@stdlib/math/base/special/pow' ); +var abs2 = require( '@stdlib/math/base/special/abs2' ); var LN_TWO_PI = require( '@stdlib/constants/float64/ln-two-pi' ); var NINF = require( '@stdlib/constants/float64/ninf' ); var PINF = require( '@stdlib/constants/float64/pinf' ); @@ -72,9 +72,7 @@ var isnan = require( '@stdlib/math/base/assert/is-nan' ); * // returns Infinity */ function logpdf( x, mu, sigma ) { - var s2; var A; - var B; if ( isnan( x ) || isnan( mu ) || @@ -86,10 +84,8 @@ function logpdf( x, mu, sigma ) { if ( sigma === 0.0 ) { return ( x === mu ) ? PINF : NINF; } - s2 = pow( sigma, 2.0 ); A = (-0.5) * ( ( 2.0*ln( sigma ) ) + LN_TWO_PI ); - B = -1.0 / ( 2.0*s2 ); - return A + ( B * pow( x-mu, 2.0 ) ); + return A - ( 0.5 * abs2( ( x-mu ) / sigma ) ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/manifest.json b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/manifest.json index a8682b1f4de8..5c0f38c7533a 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/manifest.json +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/manifest.json @@ -41,7 +41,7 @@ "@stdlib/math/base/napi/ternary", "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/ln", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/constants/float64/ln-two-pi", "@stdlib/constants/float64/pinf", "@stdlib/constants/float64/ninf" @@ -61,7 +61,7 @@ "dependencies": [ "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/ln", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/constants/float64/ln-two-pi", "@stdlib/constants/float64/pinf", "@stdlib/constants/float64/ninf" @@ -81,7 +81,7 @@ "dependencies": [ "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/ln", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/constants/float64/ln-two-pi", "@stdlib/constants/float64/pinf", "@stdlib/constants/float64/ninf" diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/src/main.c b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/src/main.c index 99ed1fd3c4ae..54e621daedd7 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/logpdf/src/main.c @@ -19,7 +19,7 @@ #include "stdlib/stats/base/dists/normal/logpdf.h" #include "stdlib/math/base/assert/is_nan.h" #include "stdlib/math/base/special/ln.h" -#include "stdlib/math/base/special/pow.h" +#include "stdlib/math/base/special/abs2.h" #include "stdlib/constants/float64/ln_two_pi.h" #include "stdlib/constants/float64/ninf.h" #include "stdlib/constants/float64/pinf.h" @@ -37,9 +37,7 @@ * // returns ~-2.919 */ double stdlib_base_dists_normal_logpdf( const double x, const double mu, const double sigma ) { - double s2; double A; - double B; if ( stdlib_base_is_nan( x ) || @@ -52,8 +50,6 @@ double stdlib_base_dists_normal_logpdf( const double x, const double mu, const d if ( sigma == 0.0 ) { return (x == mu) ? STDLIB_CONSTANT_FLOAT64_PINF : STDLIB_CONSTANT_FLOAT64_NINF; } - s2 = stdlib_base_pow( sigma, 2.0 ); A = (-0.5) * ( ( 2.0 * stdlib_base_ln(sigma) ) + STDLIB_CONSTANT_FLOAT64_LN_TWO_PI ); - B = -1.0 / ( 2.0 * s2 ); - return A + ( B * stdlib_base_pow( x - mu, 2.0 ) ); + return A - ( 0.5 * stdlib_base_abs2( ( x - mu ) / sigma ) ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/lib/factory.js b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/lib/factory.js index 4dcdb8846cf7..c7b55b915622 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/lib/factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/lib/factory.js @@ -23,10 +23,9 @@ var constantFunction = require( '@stdlib/utils/constant-function' ); var degenerate = require( '@stdlib/stats/base/dists/degenerate/pdf' ).factory; var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var sqrt = require( '@stdlib/math/base/special/sqrt' ); var exp = require( '@stdlib/math/base/special/exp' ); -var pow = require( '@stdlib/math/base/special/pow' ); -var TWO_PI = require( '@stdlib/constants/float64/two-pi' ); +var abs2 = require( '@stdlib/math/base/special/abs2' ); +var SQRT_TWO_PI = require( '@stdlib/constants/float64/sqrt-two-pi' ); // MAIN // @@ -47,9 +46,7 @@ var TWO_PI = require( '@stdlib/constants/float64/two-pi' ); * // returns ~0.009 */ function factory( mu, sigma ) { - var s2; var A; - var B; if ( isnan( mu ) || isnan( sigma ) || @@ -60,9 +57,7 @@ function factory( mu, sigma ) { if ( sigma === 0.0 ) { return degenerate( mu ); } - s2 = pow( sigma, 2.0 ); - A = 1.0 / sqrt( s2*TWO_PI ); - B = -1.0 / ( 2.0*s2 ); + A = 1.0 / ( sigma * SQRT_TWO_PI ); return pdf; /** @@ -80,7 +75,7 @@ function factory( mu, sigma ) { if ( isnan( x ) ) { return NaN; } - return A * exp( B * pow(x-mu, 2.0) ); + return A * exp( -0.5 * abs2( ( x-mu ) / sigma ) ); } } diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/lib/main.js index 9821ea17faa2..a82e95c9a88e 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/lib/main.js +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/lib/main.js @@ -21,9 +21,8 @@ // MODULES // var exp = require( '@stdlib/math/base/special/exp' ); -var pow = require( '@stdlib/math/base/special/pow' ); -var sqrt = require( '@stdlib/math/base/special/sqrt' ); -var TWO_PI = require( '@stdlib/constants/float64/two-pi' ); +var abs2 = require( '@stdlib/math/base/special/abs2' ); +var SQRT_TWO_PI = require( '@stdlib/constants/float64/sqrt-two-pi' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); @@ -72,9 +71,7 @@ var isnan = require( '@stdlib/math/base/assert/is-nan' ); * // returns Infinity */ function pdf( x, mu, sigma ) { - var s2; var A; - var B; if ( isnan( x ) || isnan( mu ) || @@ -86,10 +83,8 @@ function pdf( x, mu, sigma ) { if ( sigma === 0.0 ) { return ( x === mu ) ? PINF : 0.0; } - s2 = pow( sigma, 2.0 ); - A = 1.0 / sqrt( s2*TWO_PI ); - B = -1.0 / ( 2.0*s2 ); - return A * exp( B * pow(x-mu, 2.0) ); + A = 1.0 / ( sigma * SQRT_TWO_PI ); + return A * exp( -0.5 * abs2( ( x-mu ) / sigma ) ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/manifest.json b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/manifest.json index 2dac8970622a..03210b36c3fa 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/manifest.json +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/manifest.json @@ -39,10 +39,9 @@ "libpath": [], "dependencies": [ "@stdlib/math/base/napi/ternary", - "@stdlib/constants/float64/two-pi", + "@stdlib/constants/float64/sqrt-two-pi", "@stdlib/math/base/assert/is-nan", - "@stdlib/math/base/special/sqrt", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/math/base/special/exp", "@stdlib/constants/float64/pinf" ] @@ -59,10 +58,9 @@ "libraries": [], "libpath": [], "dependencies": [ - "@stdlib/constants/float64/two-pi", + "@stdlib/constants/float64/sqrt-two-pi", "@stdlib/math/base/assert/is-nan", - "@stdlib/math/base/special/sqrt", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/math/base/special/exp", "@stdlib/constants/float64/pinf", "@stdlib/constants/float64/eps" @@ -80,10 +78,9 @@ "libraries": [], "libpath": [], "dependencies": [ - "@stdlib/constants/float64/two-pi", + "@stdlib/constants/float64/sqrt-two-pi", "@stdlib/math/base/assert/is-nan", - "@stdlib/math/base/special/sqrt", - "@stdlib/math/base/special/pow", + "@stdlib/math/base/special/abs2", "@stdlib/math/base/special/exp", "@stdlib/constants/float64/pinf", "@stdlib/constants/float64/eps" diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/src/main.c b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/src/main.c index c871049729e6..4358e3dbd963 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/pdf/src/main.c @@ -18,10 +18,9 @@ #include "stdlib/stats/base/dists/normal/pdf.h" #include "stdlib/math/base/assert/is_nan.h" -#include "stdlib/math/base/special/sqrt.h" -#include "stdlib/math/base/special/pow.h" +#include "stdlib/math/base/special/abs2.h" #include "stdlib/math/base/special/exp.h" -#include "stdlib/constants/float64/two_pi.h" +#include "stdlib/constants/float64/sqrt_two_pi.h" #include "stdlib/constants/float64/pinf.h" /** @@ -37,9 +36,7 @@ * // returns ~0.054 */ double stdlib_base_dists_normal_pdf( const double x, const double mu, const double sigma ) { - double s2; double A; - double B; if ( stdlib_base_is_nan( x ) || stdlib_base_is_nan( mu ) || @@ -51,8 +48,6 @@ double stdlib_base_dists_normal_pdf( const double x, const double mu, const doub if ( sigma == 0.0 ) { return ( x == mu ) ? STDLIB_CONSTANT_FLOAT64_PINF : 0.0; } - s2 = stdlib_base_pow( sigma, 2.0 ); - A = 1.0 / stdlib_base_sqrt( s2 * STDLIB_CONSTANT_FLOAT64_TWO_PI ); - B = -1.0 / ( 2.0 * s2 ); - return A * stdlib_base_exp( B * stdlib_base_pow( x - mu, 2.0 ) ); + A = 1.0 / ( sigma * STDLIB_CONSTANT_FLOAT64_SQRT_TWO_PI ); + return A * stdlib_base_exp( -0.5 * stdlib_base_abs2( ( x - mu ) / sigma ) ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/truncated-normal/pdf/lib/factory.js b/lib/node_modules/@stdlib/stats/base/dists/truncated-normal/pdf/lib/factory.js index 551a56c7110f..3fd133fa8007 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/truncated-normal/pdf/lib/factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/truncated-normal/pdf/lib/factory.js @@ -22,11 +22,10 @@ var constantFunction = require( '@stdlib/utils/constant-function' ); var exp = require( '@stdlib/math/base/special/exp' ); -var pow = require( '@stdlib/math/base/special/pow' ); +var abs2 = require( '@stdlib/math/base/special/abs2' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var sqrt = require( '@stdlib/math/base/special/sqrt' ); var normal = require( '@stdlib/stats/base/dists/normal/cdf' ).factory; -var PI = require( '@stdlib/constants/float64/pi' ); +var SQRT_TWO_PI = require( '@stdlib/constants/float64/sqrt-two-pi' ); // VARIABLES // @@ -66,9 +65,7 @@ var normalCDF = normal( 0.0, 1.0 ); * // returns 0.0 */ function factory( a, b, mu, sigma ) { - var s2x2; var A; - var B; var C; if ( @@ -81,9 +78,7 @@ function factory( a, b, mu, sigma ) { ) { return constantFunction( NaN ); } - s2x2 = 2.0 * pow( sigma, 2.0 ); - A = 1.0 / ( sqrt( s2x2 * PI ) ); - B = -1.0 / ( s2x2 ); + A = 1.0 / ( sigma * SQRT_TWO_PI ); C = normalCDF( (b-mu)/sigma ) - normalCDF( (a-mu)/sigma ); return pdf; @@ -101,7 +96,7 @@ function factory( a, b, mu, sigma ) { if ( x < a || x > b ) { return 0.0; } - return A * exp( B * pow( x - mu, 2.0 ) ) / C; + return A * exp( -0.5 * abs2( ( x - mu ) / sigma ) ) / C; } } diff --git a/lib/node_modules/@stdlib/stats/base/dists/truncated-normal/pdf/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/truncated-normal/pdf/lib/main.js index 236211d53c5d..ac390d8251cc 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/truncated-normal/pdf/lib/main.js +++ b/lib/node_modules/@stdlib/stats/base/dists/truncated-normal/pdf/lib/main.js @@ -21,11 +21,10 @@ // MODULES // var exp = require( '@stdlib/math/base/special/exp' ); -var pow = require( '@stdlib/math/base/special/pow' ); -var sqrt = require( '@stdlib/math/base/special/sqrt' ); +var abs2 = require( '@stdlib/math/base/special/abs2' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var normal = require( '@stdlib/stats/base/dists/normal/cdf' ).factory; -var PI = require( '@stdlib/constants/float64/pi' ); +var SQRT_TWO_PI = require( '@stdlib/constants/float64/sqrt-two-pi' ); // VARIABLES // @@ -66,9 +65,7 @@ var normalCDF = normal( 0.0, 1.0 ); * // returns 0.0 */ function pdf( x, a, b, mu, sigma ) { - var s2x2; var A; - var B; var C; if ( @@ -83,11 +80,9 @@ function pdf( x, a, b, mu, sigma ) { if ( x < a || x > b ) { return 0.0; } - s2x2 = 2.0 * pow( sigma, 2.0 ); - A = 1.0 / ( sqrt( s2x2 * PI ) ); - B = -1.0 / ( s2x2 ); + A = 1.0 / ( sigma * SQRT_TWO_PI ); C = normalCDF( (b-mu)/sigma ) - normalCDF( (a-mu)/sigma ); - return A * exp( B * pow( x - mu, 2.0 ) ) / C; + return A * exp( -0.5 * abs2( ( x - mu ) / sigma ) ) / C; } diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/lib/factory.js b/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/lib/factory.js index 26ef7a8a4046..b8f2e3923bc5 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/lib/factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/lib/factory.js @@ -60,7 +60,7 @@ function factory( mu, lambda ) { return degenerate( mu ); } A = sqrt( lambda / TWO_PI ); - B = -lambda / ( 2.0 * mu * mu ); + B = -0.5 * lambda; return pdf; /** @@ -82,8 +82,8 @@ function factory( mu, lambda ) { if ( x <= 0.0 || !isFinite( x ) ) { return 0.0; } - v = x - mu; - return A / ( x * sqrt( x ) ) * exp( B * v * v / x ); + v = ( x - mu ) / mu; + return A / ( x * sqrt( x ) ) * exp( ( ( B / x ) * v ) * v ); } } diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/lib/main.js index 2f6fca31a297..b3afbda20390 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/lib/main.js +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/lib/main.js @@ -109,9 +109,9 @@ function pdf( x, mu, lambda ) { return 0.0; } A = sqrt( lambda / TWO_PI ); - B = -lambda / ( 2.0 * mu * mu ); - v = x - mu; - return A / ( x * sqrt( x ) ) * exp( B * v * v / x ); + B = -0.5 * lambda; + v = ( x - mu ) / mu; + return A / ( x * sqrt( x ) ) * exp( ( ( B / x ) * v ) * v ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/src/main.c b/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/src/main.c index 63cf95e435e3..99877f48a195 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/pdf/src/main.c @@ -56,7 +56,7 @@ double stdlib_base_dists_wald_pdf( const double x, const double mu, const double return 0.0; } A = stdlib_base_sqrt( lambda / STDLIB_CONSTANT_FLOAT64_TWO_PI ); - B = -lambda / ( 2.0 * mu * mu ); - v = x - mu; - return A / ( x * stdlib_base_sqrt( x ) ) * stdlib_base_exp( B * v * v / x ); + B = -0.5 * lambda; + v = ( x - mu ) / mu; + return A / ( x * stdlib_base_sqrt( x ) ) * stdlib_base_exp( ( ( B / x ) * v ) * v ); }