diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/lib/factory.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/lib/factory.js index b06372371439..12018453ab2f 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/lib/factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/lib/factory.js @@ -78,6 +78,10 @@ function factory( k, lambda ) { return NINF; } if ( x === 0.0 ) { + // The density at `0` is infinite for `k < 1`, `1/lambda` for `k = 1`, and `0` for `k > 1`: + if ( k < 1.0 ) { + return PINF; + } return ( k === 1.0 ) ? ln( k / lambda ) : NINF; } xol = x / lambda; diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/lib/main.js index 30fabe163288..33cbecd7a130 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/lib/main.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/lib/main.js @@ -82,6 +82,10 @@ function logpdf( x, k, lambda ) { return NINF; } if ( x === 0.0 ) { + // The density at `0` is infinite for `k < 1`, `1/lambda` for `k = 1`, and `0` for `k > 1`: + if ( k < 1.0 ) { + return PINF; + } return ( k === 1.0 ) ? ln( k/lambda ): NINF; } xol = x / lambda; diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/src/main.c b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/src/main.c index 8ee5534d4fcc..204d99b8a489 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/src/main.c @@ -52,6 +52,10 @@ double stdlib_base_dists_weibull_logpdf( const double x, const double k, const d return STDLIB_CONSTANT_FLOAT64_NINF; } if ( x == 0.0 ) { + // The density at `0` is infinite for `k < 1`, `1/lambda` for `k = 1`, and `0` for `k > 1`: + if ( k < 1.0 ) { + return STDLIB_CONSTANT_FLOAT64_PINF; + } return ( k == 1.0 ) ? stdlib_base_ln( k/lambda ) : STDLIB_CONSTANT_FLOAT64_NINF; } xol = x / lambda; diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.factory.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.factory.js index f56f4c86dd34..f5266e4981cb 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.factory.js @@ -189,7 +189,7 @@ tape( 'if provided a positive `lambda` and `k` equal to one, the created functio t.end(); }); -tape( 'if provided a positive `lambda` and `k` not equal to one, the created function returns `-infinity` for `x=0`', function test( t ) { +tape( 'if provided a positive `lambda` and `k` greater than one, the created function returns `-infinity` for `x=0`', function test( t ) { var logpdf; var y; @@ -199,6 +199,16 @@ tape( 'if provided a positive `lambda` and `k` not equal to one, the created fu t.end(); }); +tape( 'if provided a positive `lambda` and `k` less than one, the created function returns `+infinity` for `x=0`', function test( t ) { + var logpdf; + var y; + + logpdf = factory( 0.5, 1.0 ); + y = logpdf( 0.0 ); + t.strictEqual( y, PINF, 'returns expected value' ); + t.end(); +}); + tape( 'the created function evaluates the logpdf for `x` given large `lambda` and `k`', function test( t ) { var expected; var logpdf; diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.logpdf.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.logpdf.js index 4029b11a1dbc..520f60d3c273 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.logpdf.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.logpdf.js @@ -133,12 +133,18 @@ tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` equal to one, the t.end(); }); -tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` not equal to one, the function returns `-Infinity`', function test( t ) { +tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` greater than one, the function returns `-Infinity`', function test( t ) { var y = logpdf( 0.0, 2.0, 1.0 ); t.strictEqual( y, NINF, 'returns expected value' ); t.end(); }); +tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` less than one, the function returns `+Infinity`', function test( t ) { + var y = logpdf( 0.0, 0.5, 1.0 ); + t.strictEqual( y, PINF, 'returns expected value' ); + t.end(); +}); + tape( 'the function evaluates the logpdf for `x` given large `lambda` and `k`', function test( t ) { var expected; var lambda; diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.native.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.native.js index 87c03d644097..274f95ce814a 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/logpdf/test/test.native.js @@ -142,12 +142,18 @@ tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` equal to one, the t.end(); }); -tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` not equal to one, the function returns `-Infinity`', opts, function test( t ) { +tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` greater than one, the function returns `-Infinity`', opts, function test( t ) { var y = logpdf( 0.0, 2.0, 1.0 ); t.strictEqual( y, NINF, 'returns expected value' ); t.end(); }); +tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` less than one, the function returns `+Infinity`', opts, function test( t ) { + var y = logpdf( 0.0, 0.5, 1.0 ); + t.strictEqual( y, PINF, 'returns expected value' ); + t.end(); +}); + tape( 'the function evaluates the logpdf for `x` given large `lambda` and `k`', opts, function test( t ) { var expected; var lambda; diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/lib/factory.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/lib/factory.js index c50405971d3f..f1f61b4d856c 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/lib/factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/lib/factory.js @@ -77,6 +77,10 @@ function factory( k, lambda ) { return 0.0; } if ( x === 0.0 ) { + // The density at `0` is infinite for `k < 1`, `1/lambda` for `k = 1`, and `0` for `k > 1`: + if ( k < 1.0 ) { + return PINF; + } return ( k === 1.0 ) ? k / lambda : 0.0; } xol = x / lambda; diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/lib/main.js index 97fa3f70fdea..6d7fb77230ef 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/lib/main.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/lib/main.js @@ -83,6 +83,10 @@ function pdf( x, k, lambda ) { return 0.0; } if ( x === 0.0 ) { + // The density at `0` is infinite for `k < 1`, `1/lambda` for `k = 1`, and `0` for `k > 1`: + if ( k < 1.0 ) { + return PINF; + } return ( k === 1.0 ) ? k/lambda : 0.0; } xol = x / lambda; diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.factory.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.factory.js index b43f49a2f433..f8f4ef91ab5a 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.factory.js @@ -186,7 +186,7 @@ tape( 'if provided a positive `lambda` and `k` equal to one, the created functio t.end(); }); -tape( 'if provided a positive `lambda` and `k` not equal to one, the created function returns `0` for `x=0`', function test( t ) { +tape( 'if provided a positive `lambda` and `k` greater than one, the created function returns `0` for `x=0`', function test( t ) { var pdf; var y; @@ -196,6 +196,16 @@ tape( 'if provided a positive `lambda` and `k` not equal to one, the created fu t.end(); }); +tape( 'if provided a positive `lambda` and `k` less than one, the created function returns `+infinity` for `x=0`', function test( t ) { + var pdf; + var y; + + pdf = factory( 0.5, 1.0 ); + y = pdf( 0.0 ); + t.strictEqual( y, PINF, 'returns expected value' ); + t.end(); +}); + tape( 'the created function evaluates the pdf for `x` given large `lambda` and `k`', function test( t ) { var expected; var lambda; diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.native.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.native.js index 3a8c6b38bd7a..c0e000968428 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.native.js @@ -140,12 +140,18 @@ tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` equal to one, the t.end(); }); -tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` not equal to one, the function returns `0`', opts, function test( t ) { +tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` greater than one, the function returns `0`', opts, function test( t ) { var y = pdf( 0.0, 2.0, 1.0 ); t.strictEqual( y, 0.0, 'returns expected value' ); t.end(); }); +tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` less than one, the function returns `+Infinity`', opts, function test( t ) { + var y = pdf( 0.0, 0.5, 1.0 ); + t.strictEqual( y, PINF, 'returns expected value' ); + t.end(); +}); + tape( 'the function evaluates the pdf for `x` given large `lambda` and `k`', opts, function test( t ) { var expected; var lambda; diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.pdf.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.pdf.js index 45a37fb5ea9c..5b2c48ec25cd 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.pdf.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/pdf/test/test.pdf.js @@ -131,12 +131,18 @@ tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` equal to one, the t.end(); }); -tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` not equal to one, the function returns `0`', function test( t ) { +tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` greater than one, the function returns `0`', function test( t ) { var y = pdf( 0.0, 2.0, 1.0 ); t.strictEqual( y, 0.0, 'returns expected value' ); t.end(); }); +tape( 'if provided `0.0` for `x`, a positive `lambda` and `k` less than one, the function returns `+Infinity`', function test( t ) { + var y = pdf( 0.0, 0.5, 1.0 ); + t.strictEqual( y, PINF, 'returns expected value' ); + t.end(); +}); + tape( 'the function evaluates the pdf for `x` given large `lambda` and `k`', function test( t ) { var expected; var lambda;