Skip to content

Commit 8b3e422

Browse files
committed
refactor: made some changes to the implementation
1. Switched from pow()-1 to powm1() 2. Updated the ulp values of the test cases They were failing in test.native.js because of compiler optimisations --- 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: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: passed - task: lint_javascript_benchmarks status: na - 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: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed ---
1 parent 8745854 commit 8b3e422

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

lib/node_modules/@stdlib/math/base/special/kernel-betainc/lib/assign.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ var beta = require( '@stdlib/math/base/special/beta' );
4545
var sqrt = require( '@stdlib/math/base/special/sqrt' );
4646
var exp = require( '@stdlib/math/base/special/exp' );
4747
var pow = require( '@stdlib/math/base/special/pow' );
48+
var powm1 = require( '@stdlib/math/base/special/powm1' );
4849
var max = require( '@stdlib/math/base/special/max' );
4950
var min = require( '@stdlib/math/base/special/min' );
5051
var MAX_FLOAT64 = require( '@stdlib/constants/float64/max' );
@@ -210,7 +211,7 @@ function ibetaImp( x, a, b, regularized, upper, out, stride, offset ) {
210211
if ( y < 0.5 ) {
211212
p = ( upper ) ? -expm1( a * log1p(-y) ) : exp( a * log1p(-y) );
212213
} else {
213-
p = ( upper ) ? -( pow( x, a ) - 1.0 ) : pow( x, a );
214+
p = ( upper ) ? -powm1( x, a ) : pow( x, a );
214215
}
215216
if ( !regularized ) {
216217
p /= a;

lib/node_modules/@stdlib/math/base/special/kernel-betainc/manifest.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"@stdlib/math/base/special/sqrt",
5858
"@stdlib/math/base/special/exp",
5959
"@stdlib/math/base/special/pow",
60+
"@stdlib/math/base/special/powm1",
6061
"@stdlib/math/base/special/max",
6162
"@stdlib/math/base/special/min",
6263
"@stdlib/math/base/special/factorial",
@@ -103,6 +104,7 @@
103104
"@stdlib/math/base/special/sqrt",
104105
"@stdlib/math/base/special/exp",
105106
"@stdlib/math/base/special/pow",
107+
"@stdlib/math/base/special/powm1",
106108
"@stdlib/math/base/special/max",
107109
"@stdlib/math/base/special/min",
108110
"@stdlib/math/base/special/factorial",
@@ -150,6 +152,7 @@
150152
"@stdlib/math/base/special/sqrt",
151153
"@stdlib/math/base/special/exp",
152154
"@stdlib/math/base/special/pow",
155+
"@stdlib/math/base/special/powm1",
153156
"@stdlib/math/base/special/max",
154157
"@stdlib/math/base/special/min",
155158
"@stdlib/math/base/special/factorial",

lib/node_modules/@stdlib/math/base/special/kernel-betainc/test/test.native.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -252,11 +252,11 @@ tape( 'the function evaluates the lower regularized incomplete beta function for
252252

253253
val = kernelBetainc( 8391/100000, 9713/1000, 9940/100, true, false );
254254
expected = 0.46116895440368248909937863372410093344466819447476;
255-
t.strictEqual( isAlmostEqual( val[0], expected, 4 ), true, 'within tolerance.' );
255+
t.strictEqual( isAlmostEqual( val[0], expected, 1 ), true, 'within tolerance.' );
256256

257257
val = kernelBetainc( 0.75, 72.5, 1.125, true, false );
258258
expected = 1.3423066982487051710597194786268004978931316494920e-9;
259-
t.strictEqual( isAlmostEqual( val[0], expected, 13 ), true, 'within tolerance.' );
259+
t.strictEqual( isAlmostEqual( val[0], expected, 11 ), true, 'within tolerance.' );
260260

261261
val = kernelBetainc( 7599/10000, 4985/1000, 1066/1000, true, false );
262262
expected = 0.27533431334486812211032939156910472371928659321347;
@@ -268,7 +268,7 @@ tape( 'the function evaluates the lower regularized incomplete beta function for
268268

269269
val = kernelBetainc( 2003/10000, 4898/10000, 2251/10000, true, false );
270270
expected = 0.17089223868046209692215231702890838878342349377008;
271-
t.strictEqual( isAlmostEqual( val[0], expected, 3 ), true, 'within tolerance.' );
271+
t.strictEqual( isAlmostEqual( val[0], expected, 2 ), true, 'within tolerance.' );
272272

273273
val = kernelBetainc( 6537/10000, 4049/1000, 1540/10000, true, false );
274274
expected = 0.017273988301528087878279199511703371301647583919670;
@@ -280,7 +280,7 @@ tape( 'the function evaluates the lower regularized incomplete beta function for
280280

281281
val = kernelBetainc( 8665/100000, 2726/1000, 1151/100000, true, false );
282282
expected = 5.8218877068298586420691288375690562915515260230173e-6;
283-
t.strictEqual( isAlmostEqual( val[0], expected, 7 ), true, 'within tolerance.' );
283+
t.strictEqual( isAlmostEqual( val[0], expected, 5 ), true, 'within tolerance.' );
284284

285285
val = kernelBetainc( 7582/10000, 3431/10000, 4634/100000, true, false );
286286
expected = 0.15132819929418661038699397753916091907278005695387;
@@ -403,7 +403,7 @@ tape( 'the function handles extreme x values (Rocco Romeo bug cases)', opts, fun
403403
x0 = ldexp( 1.0, -52 );
404404
val = kernelBetainc( x0, 2, 24, false, false );
405405
expected=2.46519032881565349871772482100516780410072110983579277754743e-32;
406-
t.strictEqual( isAlmostEqual( val[ 0 ], expected, 4 ), true, 'within tolerance.' );
406+
t.strictEqual( isAlmostEqual( val[ 0 ], expected, 2 ), true, 'within tolerance.' );
407407

408408
val = kernelBetainc( x0, 2, 24, true, false );
409409
expected=1.47911419728939209923063489260310068246043266590147566652846e-29;
@@ -421,7 +421,7 @@ tape( 'the function handles extreme x values (Rocco Romeo bug cases)', opts, fun
421421
x0 = ldexp( 1.0, -373 );
422422
val = kernelBetainc( x0, 2, 31, false, false );
423423
expected=1.35080680244581673116149460571129957689952846520037541640260e-225;
424-
t.strictEqual( isAlmostEqual( val[ 0 ], expected, 14 ), true, 'within tolerance.' );
424+
t.strictEqual( isAlmostEqual( val[ 0 ], expected, 12 ), true, 'within tolerance.' );
425425

426426
val = kernelBetainc( x0, 2, 31, true, false );
427427
expected=1.34000034802625019731220264886560918028433223747877241307138e-222;
@@ -436,7 +436,7 @@ tape( 'the function returns the correct derivative for a naive analytical check'
436436

437437
val = kernelBetainc( 0.5, 2, 3, true, false );
438438
expected = 1.5;
439-
t.strictEqual( isAlmostEqual( val[ 1 ], expected, 2 ), true, 'within tolerance.' );
439+
t.strictEqual( isAlmostEqual( val[ 1 ], expected, 1 ), true, 'within tolerance.' );
440440

441441
t.end();
442442
});
@@ -476,7 +476,7 @@ tape( 'the function evaluates the lower regularized incomplete beta function for
476476
sb = smallRange.b;
477477
for ( i = 0; i < sv.length; i++ ) {
478478
y = kernelBetainc( sv[i], sa[i], sb[i], true, false )[0];
479-
t.strictEqual( isAlmostEqual( y, expected[ i ], 21 ), true, 'within tolerance' );
479+
t.strictEqual( isAlmostEqual( y, expected[ i ], 19 ), true, 'within tolerance' );
480480
}
481481
t.end();
482482
});
@@ -514,7 +514,7 @@ tape( 'the function evaluates the lower regularized incomplete beta function for
514514
mb = mediumRange.b;
515515
for ( i = 0; i < mv.length; i++ ) {
516516
y = kernelBetainc( mv[i], ma[i], mb[i], true, false )[0];
517-
t.strictEqual( isAlmostEqual( y, expected[ i ], 167 ), true, 'within tolerance' );
517+
t.strictEqual( isAlmostEqual( y, expected[ i ], 162 ), true, 'within tolerance' );
518518
}
519519
t.end();
520520
});

0 commit comments

Comments
 (0)