From b20e724bac4d8b469d3987cbf15e9466e573efb0 Mon Sep 17 00:00:00 2001 From: JoyBoy <144602492+0PrashantYadav0@users.noreply.github.com> Date: Thu, 9 Jan 2025 23:10:18 +0530 Subject: [PATCH 1/8] feat: add C implementation for triangular logpdf --- .../base/dists/triangular/logpdf/README.md | 103 +++++++++ .../triangular/logpdf/benchmark/benchmark.js | 21 +- .../logpdf/benchmark/benchmark.native.js | 78 +++++++ .../triangular/logpdf/benchmark/c/Makefile | 146 ++++++++++++ .../triangular/logpdf/benchmark/c/benchmark.c | 145 ++++++++++++ .../base/dists/triangular/logpdf/binding.gyp | 170 ++++++++++++++ .../triangular/logpdf/examples/c/Makefile | 146 ++++++++++++ .../triangular/logpdf/examples/c/example.c | 46 ++++ .../base/dists/triangular/logpdf/include.gypi | 53 +++++ .../stats/base/dists/triangular/logpdf.h | 38 +++ .../dists/triangular/logpdf/lib/native.js | 81 +++++++ .../dists/triangular/logpdf/manifest.json | 90 ++++++++ .../base/dists/triangular/logpdf/package.json | 11 +- .../base/dists/triangular/logpdf/src/Makefile | 70 ++++++ .../base/dists/triangular/logpdf/src/addon.c | 23 ++ .../base/dists/triangular/logpdf/src/main.c | 63 +++++ .../triangular/logpdf/test/test.native.js | 216 ++++++++++++++++++ 17 files changed, 1489 insertions(+), 11 deletions(-) create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.native.js create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/c/Makefile create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/c/benchmark.c create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/binding.gyp create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/c/Makefile create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/c/example.c create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/include.gypi create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/include/stdlib/stats/base/dists/triangular/logpdf.h create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/lib/native.js create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/manifest.json create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/src/Makefile create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/src/addon.c create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/src/main.c create mode 100644 lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/test/test.native.js diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md index 24706c185e2f..692ac11b824e 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md @@ -158,6 +158,109 @@ for ( i = 0; i < 25; i++ ) { + + +
+ + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/stats/base/dists/geometric/logpdf.h" +``` + +#### stdlib_base_dists_geometric_logpdf( x, a, b, c ) + +Evaluates the natural logarithm of the [probability density function][pdf] (PDF) for a [triangular][triangular-distribution] distribution with parameters `a` (lower limit), `b` (upper limit) and `c` (mode). + +```c +double y = stdlib_base_dists_geometric_logpdf( 0.5, -1.0, 1.0, 0.0 ); +// returns ~-0.693 +``` + +The function accepts the following arguments: + +- **x**: `[in] double` input value. +- **a**: `[in] double` lower limit +- **b**: `[in] double` upper limit +- **c**: `[in] double` mode + +```c +double stdlib_base_dists_geometric_logpdf( const double x, const double a, const double b, const double c ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/stats/base/dists/triangular/logpdf.h" +#include "stdlib/constants/float64/eps.h" +#include +#include +#include + +static double random_uniform( const double min, const double max ) { + double v = (double)rand() / ( (double)RAND_MAX + 1.0 ); + return min + ( v*(max-min) ); +} + +int main( void ) { + double a; + double b; + double c; + double x; + double y; + int i; + + for ( i = 0; i < 25; i++ ) { + x = random_uniform( 0.0, 30.0 ); + a = random_uniform( 0.0, 10.0 ); + b = random_uniform( a, 40.0 ) + STDLIB_CONSTANT_FLOAT64_EPS; + c = a + random_uniform( 0.0, b - a ); + y = stdlib_base_dists_triangular_logpdf( x, a, b, c ); + printf( "x: %lf, a: %lf, b: %lf, c: %lf, ln(f(x;a,b,c)): %lf\n", x, a, b, c, y ); + } +} +``` + +
+ + + diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/include/stdlib/stats/base/dists/triangular/logpdf.h b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/include/stdlib/stats/base/dists/triangular/logpdf.h index 3f4a7ba3e11b..1f03803b9c94 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/include/stdlib/stats/base/dists/triangular/logpdf.h +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/include/stdlib/stats/base/dists/triangular/logpdf.h @@ -27,7 +27,7 @@ extern "C" { #endif /** -* Evaluates the natural logarithm of the probability density function (PDF) for the triangular distribution with parameters a, b, and c. +* Evaluates the natural logarithm of the probability density function (PDF) for a triangular distribution with lower limit `a` and upper limit `b` and mode `c` at a value `x`. */ double stdlib_base_dists_triangular_logpdf( const double x, const double a, const double b, const double c ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/package.json b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/package.json index 1c9d32bea456..967b3d6131cb 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/package.json +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/package.json @@ -1,7 +1,7 @@ { - "name": "@stdlib/stats/base/dists/triangular/pdf", + "name": "@stdlib/stats/base/dists/triangular/logpdf", "version": "0.0.0", - "description": "Triangular distribution probability density function (PDF).", + "description": "Triangular distribution logarithm of probability density function (PDF).", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", @@ -61,6 +61,10 @@ "probability", "pdf", "continuous", + "logarithm", + "log", + "ln", + "natural", "triangular", "univariate" ] From 6e71faab22f303330f83bb6e34188c15dd6eaecc Mon Sep 17 00:00:00 2001 From: Philipp Burckhardt Date: Sun, 19 Jan 2025 09:49:38 -0500 Subject: [PATCH 3/8] chore: apply suggestions from code review Signed-off-by: Philipp Burckhardt --- .../@stdlib/stats/base/dists/triangular/logpdf/README.md | 8 ++++---- .../base/dists/triangular/logpdf/benchmark/c/benchmark.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md index 73682c35c8a9..a0a91873cce5 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md @@ -200,9 +200,9 @@ double y = stdlib_base_dists_triangular_logpdf( 0.5, -1.0, 1.0, 0.0 ); The function accepts the following arguments: - **x**: `[in] double` input value. -- **a**: `[in] double` lower limit -- **b**: `[in] double` upper limit -- **c**: `[in] double` mode +- **a**: `[in] double` lower limit. +- **b**: `[in] double` upper limit. +- **c**: `[in] double` mode. ```c double stdlib_base_dists_triangular_logpdf( const double x, const double a, const double b, const double c ); @@ -249,7 +249,7 @@ int main( void ) { for ( i = 0; i < 25; i++ ) { x = random_uniform( 0.0, 30.0 ); a = random_uniform( 0.0, 10.0 ); - b = random_uniform( a, 40.0 ) + STDLIB_CONSTANT_FLOAT64_EPS; + b = random_uniform( a + STDLIB_CONSTANT_FLOAT64_EPS, 40.0 ); c = a + random_uniform( 0.0, b - a ); y = stdlib_base_dists_triangular_logpdf( x, a, b, c ); printf( "x: %lf, a: %lf, b: %lf, c: %lf, ln(f(x;a,b,c)): %lf\n", x, a, b, c, y ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/c/benchmark.c index 8e3e0b1089c7..f84f024dbb8c 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/c/benchmark.c +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/c/benchmark.c @@ -105,7 +105,7 @@ static double benchmark( void ) { for ( i = 0; i < 100; i++ ) { x[ i ] = random_uniform( 0.0, 30.0 ); a[ i ] = random_uniform( 0.0, 10.0 ); - b[ i ] = random_uniform( a[ i ], 40.0 ) + STDLIB_CONSTANT_FLOAT64_EPS; + b[ i ] = random_uniform( a[ i ] + STDLIB_CONSTANT_FLOAT64_EPS, 40.0 ); c[ i ] = a[ i ] + random_uniform( 0.0, b[ i ] - a[ i ] ); } From 8a8575097d1bb54a9798370737cce3b9bd132103 Mon Sep 17 00:00:00 2001 From: JoyBoy <144602492+0PrashantYadav0@users.noreply.github.com> Date: Mon, 17 Feb 2025 23:05:08 +0530 Subject: [PATCH 4/8] fix: changes in benchmarks --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../dists/triangular/logpdf/benchmark/benchmark.js | 13 ++++++------- .../triangular/logpdf/benchmark/benchmark.native.js | 11 +++++------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js index b7584d0ab496..90db45f78705 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js @@ -21,7 +21,7 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var EPS = require( '@stdlib/constants/float64/eps' ); @@ -45,12 +45,11 @@ bench( pkg, function benchmark( b ) { min = new Float64Array( len ); max = new Float64Array( len ); mode = new Float64Array( len ); - for ( i = 0; i < len; i++ ) { - x[ i ] = randu() * 30.0; - min[ i ] = randu() * 10.0; - max[ i ] = min[ i ] + ( randu() * 40.0 ) + EPS; - mode[ i ] = min[ i ] + ( ( max[ i ] - min[ i ] ) * randu() ); + x[ i ] = uniform( 0.0, 30.0 ); + min[ i ] = uniform( 0.0, 10.0 ); + max[ i ] = min[ i ] + ( uniform( 0.0, 40.0 ) ) + EPS; + mode[ i ] = min[ i ] + ( ( max[ i ] - min[ i ] ) * uniform( 0.0, 1.0 ) ); // eslint-disable-line max-len } b.tic(); @@ -84,7 +83,7 @@ bench( pkg+':factory', function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = ( randu()*2.0 ) - 2.0; + x = uniform( -2.0, 2.0 ); y = mylogpdf( x ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.native.js index 92de1db930bf..05526064ce05 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.native.js @@ -23,7 +23,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); var Float64Array = require( '@stdlib/array/float64' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var tryRequire = require( '@stdlib/utils/try-require' ); var EPS = require( '@stdlib/constants/float64/eps' ); @@ -54,12 +54,11 @@ bench( pkg+'::native', opts, function benchmark( b ) { min = new Float64Array( len ); max = new Float64Array( len ); mode = new Float64Array( len ); - for ( i = 0; i < len; i++ ) { - x[ i ] = randu() * 30.0; - min[ i ] = randu() * 10.0; - max[ i ] = min[ i ] + ( randu() * 40.0 ) + EPS; - mode[ i ] = min[ i ] + ( ( max[ i ] - min[ i ] ) * randu() ); + x[ i ] = uniform( 0.0, 30.0 ); + min[ i ] = uniform( 0.0, 10.0 ); + max[ i ] = min[ i ] + ( uniform( 0.0, 40.0 ) ) + EPS; + mode[ i ] = min[ i ] + ( ( max[ i ] - min[ i ] ) * uniform( 0.0, 1.0 ) ); // eslint-disable-line max-len } b.tic(); From 5223b20278a6c4fc3f29a23d382e91cd09254f79 Mon Sep 17 00:00:00 2001 From: JoyBoy <144602492+0PrashantYadav0@users.noreply.github.com> Date: Mon, 17 Feb 2025 23:13:19 +0530 Subject: [PATCH 5/8] chore: updated random generation function --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: passed - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: passed - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: passed - task: lint_c_examples status: passed - task: lint_c_benchmarks status: passed - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../base/dists/triangular/logpdf/README.md | 18 +++++------------- .../triangular/logpdf/benchmark/c/benchmark.c | 4 ---- .../triangular/logpdf/examples/c/example.c | 5 ----- .../dists/triangular/logpdf/examples/index.js | 10 +++++----- .../stats/base/dists/triangular/logpdf.h | 4 ---- .../base/dists/triangular/logpdf/lib/native.js | 4 ---- .../base/dists/triangular/logpdf/src/main.c | 9 --------- 7 files changed, 10 insertions(+), 44 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md index a0c8efda9533..2889eea79f95 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md @@ -134,7 +134,7 @@ y = mylogpdf( 12.0 ); ```javascript -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ); var logpdf = require( '@stdlib/stats/base/dists/triangular/logpdf' ); var a; @@ -145,10 +145,10 @@ var y; var i; for ( i = 0; i < 25; i++ ) { - x = randu() * 30.0; - a = randu() * 10.0; - b = a + (randu() * 40.0); - c = a + ((b-a) * randu()); + x = uniform( 0.0, 30.0 ); + a = uniform( 0.0, 10.0 ); + b = a + ( uniform( 0.0, 40.0 ) ); + c = uniform( a, b ); y = logpdf( x, a, b, c ); console.log( 'x: %d, a: %d, b: %d, c: %d, ln(f(x;a,b,c)): %d', x.toFixed( 4 ), a.toFixed( 4 ), b.toFixed( 4 ), c.toFixed( 4 ), y.toFixed( 4 ) ); } @@ -190,11 +190,7 @@ for ( i = 0; i < 25; i++ ) { #### stdlib_base_dists_triangular_logpdf( x, a, b, c ) -<<<<<<< HEAD -Evaluates the natural logarithm of the [probability density function][pdf] (PDF) for a [triangular][triangular-distribution] distribution with parameters `a` (lower limit), `b` (upper limit) and `c` (mode). -======= Evaluates the natural logarithm of the [probability density function][pdf] (PDF) for a [triangular][triangular-distribution] distribution with parameters `a` (lower limit), `b` (upper limit), and `c` (mode). ->>>>>>> develop ```c double y = stdlib_base_dists_triangular_logpdf( 0.5, -1.0, 1.0, 0.0 ); @@ -254,11 +250,7 @@ int main( void ) { x = random_uniform( 0.0, 30.0 ); a = random_uniform( 0.0, 10.0 ); b = random_uniform( a + STDLIB_CONSTANT_FLOAT64_EPS, 40.0 ); -<<<<<<< HEAD - c = a + random_uniform( 0.0, b - a ); -======= c = random_uniform( a, b ); ->>>>>>> develop y = stdlib_base_dists_triangular_logpdf( x, a, b, c ); printf( "x: %lf, a: %lf, b: %lf, c: %lf, ln(f(x;a,b,c)): %lf\n", x, a, b, c, y ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/c/benchmark.c index 075cc19c185b..3928690c9976 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/c/benchmark.c +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/c/benchmark.c @@ -106,11 +106,7 @@ static double benchmark( void ) { x[ i ] = random_uniform( 0.0, 30.0 ); a[ i ] = random_uniform( 0.0, 10.0 ); b[ i ] = random_uniform( a[ i ] + STDLIB_CONSTANT_FLOAT64_EPS, 40.0 ); -<<<<<<< HEAD - c[ i ] = a[ i ] + random_uniform( 0.0, b[ i ] - a[ i ] ); -======= c[ i ] = random_uniform( a[ i ], b[ i ] ); ->>>>>>> develop } t = tic(); diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/c/example.c b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/c/example.c index 3bef0d2edcc0..54d24190f1c4 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/c/example.c +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/c/example.c @@ -38,13 +38,8 @@ int main( void ) { for ( i = 0; i < 25; i++ ) { x = random_uniform( 0.0, 30.0 ); a = random_uniform( 0.0, 10.0 ); -<<<<<<< HEAD - b = random_uniform( a, 40.0 ) + STDLIB_CONSTANT_FLOAT64_EPS; - c = a + random_uniform( 0.0, b - a ); -======= b = random_uniform( a + STDLIB_CONSTANT_FLOAT64_EPS, 40.0 ); c = random_uniform( a, b ); ->>>>>>> develop y = stdlib_base_dists_triangular_logpdf( x, a, b, c ); printf( "x: %lf, a: %lf, b: %lf, c: %lf, ln(f(x;a,b,c)): %lf\n", x, a, b, c, y ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/index.js b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/index.js index 0976b5b96ab6..ced496adf852 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/index.js +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/index.js @@ -18,7 +18,7 @@ 'use strict'; -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ); var logpdf = require( './../lib' ); var a; @@ -29,10 +29,10 @@ var y; var i; for ( i = 0; i < 25; i++ ) { - x = randu() * 30.0; - a = randu() * 10.0; - b = a + (randu() * 40.0); - c = a + ((b-a) * randu()); + x = uniform( 0.0, 30.0 ); + a = uniform( 0.0, 10.0 ); + b = a + ( uniform( 0.0, 40.0 ) ); + c = uniform( a, b ); y = logpdf( x, a, b, c ); console.log( 'x: %d, a: %d, b: %d, c: %d, ln(f(x;a,b,c)): %d', x.toFixed( 4 ), a.toFixed( 4 ), b.toFixed( 4 ), c.toFixed( 4 ), y.toFixed( 4 ) ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/include/stdlib/stats/base/dists/triangular/logpdf.h b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/include/stdlib/stats/base/dists/triangular/logpdf.h index de42c28405ef..c7c72c8070c1 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/include/stdlib/stats/base/dists/triangular/logpdf.h +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/include/stdlib/stats/base/dists/triangular/logpdf.h @@ -27,11 +27,7 @@ extern "C" { #endif /** -<<<<<<< HEAD -* Evaluates the natural logarithm of the probability density function (PDF) for a triangular distribution with lower limit `a` and upper limit `b` and mode `c` at a value `x`. -======= * Evaluates the natural logarithm of the probability density function (PDF) for a triangular distribution with lower limit `a`, upper limit `b`, and mode `c` at a value `x`. ->>>>>>> develop */ double stdlib_base_dists_triangular_logpdf( const double x, const double a, const double b, const double c ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/lib/native.js b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/lib/native.js index 47d50d3d2963..1a26691472d8 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/lib/native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/lib/native.js @@ -26,11 +26,7 @@ var addon = require( './../src/addon.node' ); // MAIN // /** -<<<<<<< HEAD -* Evaluates the natural logarithm of the probability density function (PDF) for a triangular distribution with lower limit `a` and upper limit `b` and mode `c` at a value `x`. -======= * Evaluates the natural logarithm of the probability density function (PDF) for a triangular distribution with lower limit `a`, upper limit `b`, and mode `c` at a value `x`. ->>>>>>> develop * * @private * @param {number} x - input value diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/src/main.c b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/src/main.c index 840249e671e4..cb5aa024f89e 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/src/main.c @@ -23,12 +23,7 @@ #include "stdlib/math/base/special/ln.h" /** -<<<<<<< HEAD -* Evaluates the natural logarithm of the probability density function (PDF) for a triangular distribution -* with parameters `a`, `b`, and `c` at a value `x`. -======= * Evaluates the natural logarithm of the probability density function (PDF) for a triangular distribution with lower limit `a`, upper limit `b`, and mode `c` at a value `x`. ->>>>>>> develop * * @param x input value * @param a lower limit @@ -37,11 +32,7 @@ * @return evaluated logPDF * * @example -<<<<<<< HEAD -* double y = stdlib_base_dists_geometric_logpdf( 0.5, -1.0, 1.0, 0.0 ); -======= * double y = stdlib_base_dists_triangular_logpdf( 0.5, -1.0, 1.0, 0.0 ); ->>>>>>> develop * // returns ~-0.693 */ double stdlib_base_dists_triangular_logpdf( const double x, const double a, const double b, const double c ) { From 57509b0b1d4d05a50fd57c172324e2598ac85f07 Mon Sep 17 00:00:00 2001 From: JoyBoy <144602492+0PrashantYadav0@users.noreply.github.com> Date: Sat, 1 Mar 2025 13:48:28 +0530 Subject: [PATCH 6/8] chore: update according to code review --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: passed - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- 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: passed - task: run_c_benchmarks status: na - task: run_cpp_benchmarks status: na - task: run_fortran_benchmarks status: na - task: run_javascript_benchmarks status: failed --- --- .../@stdlib/stats/base/dists/triangular/logpdf/README.md | 2 +- .../stats/base/dists/triangular/logpdf/benchmark/benchmark.js | 4 ++-- .../dists/triangular/logpdf/benchmark/benchmark.native.js | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md index 2889eea79f95..08278f1b5c2b 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/README.md @@ -147,7 +147,7 @@ var i; for ( i = 0; i < 25; i++ ) { x = uniform( 0.0, 30.0 ); a = uniform( 0.0, 10.0 ); - b = a + ( uniform( 0.0, 40.0 ) ); + b = uniform( a, a + 40.0 ); c = uniform( a, b ); y = logpdf( x, a, b, c ); console.log( 'x: %d, a: %d, b: %d, c: %d, ln(f(x;a,b,c)): %d', x.toFixed( 4 ), a.toFixed( 4 ), b.toFixed( 4 ), c.toFixed( 4 ), y.toFixed( 4 ) ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js index 90db45f78705..036c50a2743e 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js @@ -48,8 +48,8 @@ bench( pkg, function benchmark( b ) { for ( i = 0; i < len; i++ ) { x[ i ] = uniform( 0.0, 30.0 ); min[ i ] = uniform( 0.0, 10.0 ); - max[ i ] = min[ i ] + ( uniform( 0.0, 40.0 ) ) + EPS; - mode[ i ] = min[ i ] + ( ( max[ i ] - min[ i ] ) * uniform( 0.0, 1.0 ) ); // eslint-disable-line max-len + max[ i ] = uniform( min[ i ] + EPS, 40.0+min[ i ] + EPS ); + mode[ i ] = uniform( min[ i ], max[ i ] ); } b.tic(); diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.native.js index 05526064ce05..9a84b8a9ec97 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.native.js @@ -57,8 +57,8 @@ bench( pkg+'::native', opts, function benchmark( b ) { for ( i = 0; i < len; i++ ) { x[ i ] = uniform( 0.0, 30.0 ); min[ i ] = uniform( 0.0, 10.0 ); - max[ i ] = min[ i ] + ( uniform( 0.0, 40.0 ) ) + EPS; - mode[ i ] = min[ i ] + ( ( max[ i ] - min[ i ] ) * uniform( 0.0, 1.0 ) ); // eslint-disable-line max-len + max[ i ] = uniform( min[ i ] + EPS, 40.0 + EPS + min[ i ] ); + mode[ i ] = uniform( max[ i ], max[ i ] ); } b.tic(); From ca56f54f2c6512d37b4f914ef2995995e45c720b Mon Sep 17 00:00:00 2001 From: JoyBoy <144602492+0PrashantYadav0@users.noreply.github.com> Date: Wed, 5 Mar 2025 14:12:16 +0530 Subject: [PATCH 7/8] fix: improve random number generation in triangular logpdf benchmark and examples --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: passed - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- type: pre_push_report description: Results of running various checks prior to pushing changes. report: - task: run_javascript_examples status: passed - task: run_c_examples status: na - task: run_cpp_examples status: na - task: run_javascript_readme_examples status: na - task: run_c_benchmarks status: na - 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 --- --- .../dists/triangular/logpdf/benchmark/benchmark.js | 10 +++++++--- .../base/dists/triangular/logpdf/examples/index.js | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js index 036c50a2743e..f9b1371b35ad 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js @@ -48,7 +48,7 @@ bench( pkg, function benchmark( b ) { for ( i = 0; i < len; i++ ) { x[ i ] = uniform( 0.0, 30.0 ); min[ i ] = uniform( 0.0, 10.0 ); - max[ i ] = uniform( min[ i ] + EPS, 40.0+min[ i ] + EPS ); + max[ i ] = uniform( min[ i ] + EPS, 40.0 + EPS + min[ i ] ); mode[ i ] = uniform( min[ i ], max[ i ] ); } @@ -72,6 +72,7 @@ bench( pkg+':factory', function benchmark( b ) { var mode; var min; var max; + var len; var x; var y; var i; @@ -80,11 +81,14 @@ bench( pkg+':factory', function benchmark( b ) { max = 1.5; mode = 0.5; mylogpdf = logpdf.factory( min, max, mode ); + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( -2.0, 2.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = uniform( -2.0, 2.0 ); - y = mylogpdf( x ); + y = mylogpdf( x[ x%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/index.js b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/index.js index ced496adf852..012f14888e96 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/index.js +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/examples/index.js @@ -31,7 +31,7 @@ var i; for ( i = 0; i < 25; i++ ) { x = uniform( 0.0, 30.0 ); a = uniform( 0.0, 10.0 ); - b = a + ( uniform( 0.0, 40.0 ) ); + b = uniform( a, a + 40.0 ); c = uniform( a, b ); y = logpdf( x, a, b, c ); console.log( 'x: %d, a: %d, b: %d, c: %d, ln(f(x;a,b,c)): %d', x.toFixed( 4 ), a.toFixed( 4 ), b.toFixed( 4 ), c.toFixed( 4 ), y.toFixed( 4 ) ); From f2c17145ebb9a4f03dea645ec95196fad0d5f4b5 Mon Sep 17 00:00:00 2001 From: JoyBoy <144602492+0PrashantYadav0@users.noreply.github.com> Date: Wed, 5 Mar 2025 20:35:35 +0530 Subject: [PATCH 8/8] chore: changes in benchmark --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../stats/base/dists/triangular/logpdf/benchmark/benchmark.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js index f9b1371b35ad..00de00352873 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/logpdf/benchmark/benchmark.js @@ -77,6 +77,7 @@ bench( pkg+':factory', function benchmark( b ) { var y; var i; + len = 100; min = -1.5; max = 1.5; mode = 0.5; @@ -88,7 +89,7 @@ bench( pkg+':factory', function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - y = mylogpdf( x[ x%x.length ] ); + y = mylogpdf( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); }