Skip to content

Commit a6755be

Browse files
committed
test: add tests to achieve full coverage in beta and betaln
--- 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: 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 3c033a4 commit a6755be

File tree

5 files changed

+275
-11
lines changed

5 files changed

+275
-11
lines changed

lib/node_modules/@stdlib/math/base/special/beta/test/test.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
// MODULES //
2222

2323
var tape = require( 'tape' );
24+
var isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;
2425
var isInfinite = require( '@stdlib/math/base/assert/is-infinite' );
2526
var isnan = require( '@stdlib/assert/is-nan' );
2627
var abs = require( '@stdlib/math/base/special/abs' );
@@ -123,3 +124,49 @@ tape( 'the function evaluates the beta function (tested against Boost)', functio
123124
}
124125
t.end();
125126
});
127+
128+
tape( 'the function handles edge case where a+b < EPS', function test( t ) {
129+
var v;
130+
131+
// Test case where c = a + b < EPS
132+
v = beta( EPS/4.0, EPS/4.0 );
133+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
134+
135+
t.end();
136+
});
137+
138+
tape( 'the function handles edge case where c = a and b < EPS', function test( t ) {
139+
var v;
140+
141+
v = beta( 10.0, EPS/2.0 );
142+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
143+
144+
v = beta( 100.0, EPS/3.0 );
145+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
146+
147+
t.end();
148+
});
149+
150+
tape( 'the function handles large values where abs(b*ambh) < (cgh*100) && a > 100', function test( t ) { // eslint-disable-line @cspell/spellchecker
151+
var v;
152+
153+
v = beta( 150.0, 0.5 );
154+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
155+
156+
v = beta( 200.0, 1.0 );
157+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
158+
159+
t.end();
160+
});
161+
162+
tape( 'the function handles very large values where cgh > 1.0e10', function test( t ) {
163+
var v;
164+
165+
v = beta( 1.0e10, 1.0e10 );
166+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
167+
168+
v = beta( 5.0e10, 2.0e10 );
169+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
170+
171+
t.end();
172+
});
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/**
2+
* @license Apache-2.0
3+
*
4+
* Copyright (c) 2025 The Stdlib Authors.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
'use strict';
20+
21+
// MODULES //
22+
23+
var tape = require( 'tape' );
24+
var isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;
25+
var PINF = require( '@stdlib/constants/float64/pinf' );
26+
var rational = require( './../lib/lanczos_sum_expg_scaled.js' );
27+
28+
29+
// TESTS //
30+
31+
tape( 'main export is a function', function test( t ) {
32+
t.ok( true, __filename );
33+
t.strictEqual( typeof rational, 'function', 'main export is a function' );
34+
t.end();
35+
});
36+
37+
tape( 'the function returns `Infinity` for x = 0', function test( t ) {
38+
var v = rational( 0.0 );
39+
t.strictEqual( v, PINF, 'returns expected value' );
40+
t.end();
41+
});
42+
43+
tape( 'the function evaluates a rational function for positive values less than 1', function test( t ) {
44+
var v;
45+
46+
v = rational( 0.5 );
47+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
48+
49+
v = rational( 0.1 );
50+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
51+
52+
v = rational( 0.9 );
53+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
54+
55+
t.end();
56+
});
57+
58+
tape( 'the function evaluates a rational function for positive values greater than 1', function test( t ) {
59+
var v;
60+
61+
v = rational( 1.5 );
62+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
63+
64+
v = rational( 2.0 );
65+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
66+
67+
v = rational( 10.0 );
68+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
69+
70+
t.end();
71+
});
72+
73+
tape( 'the function evaluates a rational function for negative values', function test( t ) {
74+
var v;
75+
76+
v = rational( -0.5 );
77+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
78+
79+
v = rational( -1.0 );
80+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
81+
82+
v = rational( -2.0 );
83+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
84+
85+
t.end();
86+
});

lib/node_modules/@stdlib/math/base/special/betaln/test/test.dceval.js

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* @license Apache-2.0
33
*
4-
* Copyright (c) 2018 The Stdlib Authors.
4+
* Copyright (c) 2025 The Stdlib Authors.
55
*
66
* Licensed under the Apache License, Version 2.0 (the "License");
77
* you may not use this file except in compliance with the License.
@@ -21,7 +21,8 @@
2121
// MODULES //
2222

2323
var tape = require( 'tape' );
24-
var isnan = require( '@stdlib/assert/is-nan' );
24+
var isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;
25+
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2526
var dceval = require( './../lib/dceval.js' );
2627

2728

@@ -33,18 +34,41 @@ tape( 'main export is a function', function test( t ) {
3334
t.end();
3435
});
3536

36-
tape( 'the function returns `NaN` if provided `x` outside `[-1.1,1.1]`', function test( t ) {
37-
var y = dceval( 1.5, [1, 2, 3] );
38-
t.strictEqual( isnan( y ), true, 'returns expected value' );
37+
tape( 'the function evaluates the Chebyshev series for values in [-1.1, 1.1]', function test( t ) {
38+
var v;
3939

40-
y = dceval( 1.11, [1, 2, 3] );
41-
t.strictEqual( isnan( y ), true, 'returns expected value' );
40+
v = dceval( 0.0 );
41+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
4242

43-
y = dceval( -1.11, [1, 2, 3] );
44-
t.strictEqual( isnan( y ), true, 'returns expected value' );
43+
v = dceval( 0.5 );
44+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
4545

46-
y = dceval( -1.5, [1, 2, 3] );
47-
t.strictEqual( isnan( y ), true, 'returns expected value' );
46+
v = dceval( -0.5 );
47+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
48+
49+
v = dceval( 1.0 );
50+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
51+
52+
v = dceval( -1.0 );
53+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
54+
55+
t.end();
56+
});
57+
58+
tape( 'the function returns NaN for values outside [-1.1, 1.1]', function test( t ) {
59+
var v;
60+
61+
v = dceval( -1.2 );
62+
t.strictEqual( isnan( v ), true, 'returns expected value' );
63+
64+
v = dceval( 1.2 );
65+
t.strictEqual( isnan( v ), true, 'returns expected value' );
66+
67+
v = dceval( -2.0 );
68+
t.strictEqual( isnan( v ), true, 'returns expected value' );
69+
70+
v = dceval( 2.0 );
71+
t.strictEqual( isnan( v ), true, 'returns expected value' );
4872

4973
t.end();
5074
});
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
/**
2+
* @license Apache-2.0
3+
*
4+
* Copyright (c) 2025 The Stdlib Authors.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
'use strict';
20+
21+
// MODULES //
22+
23+
var tape = require( 'tape' );
24+
var isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;
25+
var isnan = require( '@stdlib/math/base/assert/is-nan' );
26+
var gammaCorrection = require( './../lib/gamma_correction.js' );
27+
28+
29+
// TESTS //
30+
31+
tape( 'main export is a function', function test( t ) {
32+
t.ok( true, __filename );
33+
t.strictEqual( typeof gammaCorrection, 'function', 'main export is a function' );
34+
t.end();
35+
});
36+
37+
tape( 'the function returns NaN for x < 10', function test( t ) {
38+
var v;
39+
40+
v = gammaCorrection( 5.0 );
41+
t.strictEqual( isnan( v ), true, 'returns expected value' );
42+
43+
v = gammaCorrection( 9.9 );
44+
t.strictEqual( isnan( v ), true, 'returns expected value' );
45+
46+
v = gammaCorrection( 0.0 );
47+
t.strictEqual( isnan( v ), true, 'returns expected value' );
48+
49+
t.end();
50+
});
51+
52+
tape( 'the function returns 0 for x >= XMAX', function test( t ) {
53+
var XMAX = 3.745194030963158e306;
54+
var v;
55+
56+
v = gammaCorrection( XMAX );
57+
t.strictEqual( v, 0.0, 'returns 0' );
58+
59+
v = gammaCorrection( XMAX * 2.0 );
60+
t.strictEqual( v, 0.0, 'returns 0' );
61+
62+
t.end();
63+
});
64+
65+
tape( 'the function evaluates gamma correction for 10 <= x < XBIG', function test( t ) {
66+
var v;
67+
68+
v = gammaCorrection( 10.0 );
69+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
70+
71+
v = gammaCorrection( 100.0 );
72+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
73+
74+
v = gammaCorrection( 1000.0 );
75+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
76+
77+
t.end();
78+
});
79+
80+
tape( 'the function evaluates gamma correction for x >= XBIG', function test( t ) {
81+
var XBIG = 94906265.62425156;
82+
var v;
83+
84+
v = gammaCorrection( XBIG );
85+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
86+
87+
v = gammaCorrection( XBIG * 2.0 );
88+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
89+
90+
v = gammaCorrection( 1.0e10 );
91+
t.strictEqual( isNumber( v ), true, 'returns expected value' );
92+
93+
t.end();
94+
});

lib/node_modules/@stdlib/math/base/special/betaln/test/test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ var tape = require( 'tape' );
2424
var isInfinite = require( '@stdlib/math/base/assert/is-infinite' );
2525
var isnan = require( '@stdlib/assert/is-nan' );
2626
var PINF = require( '@stdlib/constants/float64/pinf' );
27+
var NINF = require( '@stdlib/constants/float64/ninf' );
2728
var EPS = require( '@stdlib/constants/float64/eps' );
2829
var abs = require( '@stdlib/math/base/special/abs' );
2930
var betaln = require( './../lib' );
@@ -103,3 +104,15 @@ tape( 'the function evaluates the natural logarithm of the beta function', funct
103104
}
104105
t.end();
105106
});
107+
108+
tape( 'the function returns -Infinity when q = Infinity', function test( t ) {
109+
var v;
110+
111+
v = betaln( 1.0, PINF );
112+
t.strictEqual( v, NINF, 'returns expected value' );
113+
114+
v = betaln( 5.0, PINF );
115+
t.strictEqual( v, NINF, 'returns expected value' );
116+
117+
t.end();
118+
});

0 commit comments

Comments
 (0)