Skip to content

Commit 01ce172

Browse files
committed
bench: added benchmarks for different cases in triangular mgf implementation
--- 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: 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: na - task: run_c_benchmarks status: na - task: run_cpp_benchmarks status: na - task: run_fortran_benchmarks status: na - task: run_javascript_benchmarks status: na - task: run_julia_benchmarks status: na - task: run_python_benchmarks status: na - task: run_r_benchmarks status: na - task: run_javascript_tests status: passed ---
1 parent aca10b4 commit 01ce172

File tree

2 files changed

+248
-0
lines changed

2 files changed

+248
-0
lines changed

lib/node_modules/@stdlib/stats/base/dists/triangular/mgf/test/test.factory.js

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ var factory = require( './../lib/factory.js' );
3434
var smallRange = require( './fixtures/julia/small_range.json' );
3535
var mediumRange = require( './fixtures/julia/medium_range.json' );
3636
var largeRange = require( './fixtures/julia/large_range.json' );
37+
var aLessCLessB = require( './fixtures/julia/a_less_c_less_b.json' );
38+
var aLessCEqB = require( './fixtures/julia/a_less_c_eq_b.json' );
39+
var aEqCLessB = require( './fixtures/julia/a_eq_c_less_b.json' );
40+
var aEqCEqB = require( './fixtures/julia/a_eq_c_eq_b.json' );
3741

3842

3943
// TESTS //
@@ -224,3 +228,127 @@ tape( 'the created function evaluates the MGF for `x` given a large range `b - a
224228
}
225229
t.end();
226230
});
231+
232+
tape( 'the function evaluates the MGF for `x` given the case: a < c < b', function test( t ) {
233+
var expected;
234+
var delta;
235+
var mgf;
236+
var tol;
237+
var x;
238+
var a;
239+
var b;
240+
var c;
241+
var y;
242+
var i;
243+
244+
expected = aLessCLessB.expected;
245+
x = aLessCLessB.x;
246+
a = aLessCLessB.a;
247+
b = aLessCLessB.b;
248+
c = aLessCLessB.c;
249+
for ( i = 0; i < x.length; i++ ) {
250+
mgf = factory( a[i], b[i], c[i] );
251+
y = mgf( x[i] );
252+
if ( y === expected[i] ) {
253+
t.equal( y, expected[i], 'x: '+x[i]+', a: '+a[i]+', b: '+b[i]+', c: '+c[i]+', y: '+y+', expected: '+expected[i] );
254+
} else {
255+
delta = abs( y - expected[ i ] );
256+
tol = 1.0 * EPS * abs( expected[ i ] );
257+
t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. a: '+a[i]+'. b: '+b[i]+'. c: '+c[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' );
258+
}
259+
}
260+
t.end();
261+
});
262+
263+
tape( 'the function evaluates the MGF for `x` given the case: a < c = b', function test( t ) {
264+
var expected;
265+
var delta;
266+
var mgf;
267+
var tol;
268+
var x;
269+
var a;
270+
var b;
271+
var c;
272+
var y;
273+
var i;
274+
275+
expected = aLessCEqB.expected;
276+
x = aLessCEqB.x;
277+
a = aLessCEqB.a;
278+
b = aLessCEqB.b;
279+
c = aLessCEqB.c;
280+
for ( i = 0; i < x.length; i++ ) {
281+
mgf = factory( a[i], b[i], c[i] );
282+
y = mgf( x[i] );
283+
if ( y === expected[i] ) {
284+
t.equal( y, expected[i], 'x: '+x[i]+', a: '+a[i]+', b: '+b[i]+', c: '+c[i]+', y: '+y+', expected: '+expected[i] );
285+
} else {
286+
delta = abs( y - expected[ i ] );
287+
tol = 1.0 * EPS * abs( expected[ i ] );
288+
t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. a: '+a[i]+'. b: '+b[i]+'. c: '+c[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' );
289+
}
290+
}
291+
t.end();
292+
});
293+
294+
tape( 'the function evaluates the MGF for `x` given the case: a = c < b', function test( t ) {
295+
var expected;
296+
var delta;
297+
var mgf;
298+
var tol;
299+
var x;
300+
var a;
301+
var b;
302+
var c;
303+
var y;
304+
var i;
305+
306+
expected = aEqCLessB.expected;
307+
x = aEqCLessB.x;
308+
a = aEqCLessB.a;
309+
b = aEqCLessB.b;
310+
c = aEqCLessB.c;
311+
for ( i = 0; i < x.length; i++ ) {
312+
mgf = factory( a[i], b[i], c[i] );
313+
y = mgf( x[i] );
314+
if ( y === expected[i] ) {
315+
t.equal( y, expected[i], 'x: '+x[i]+', a: '+a[i]+', b: '+b[i]+', c: '+c[i]+', y: '+y+', expected: '+expected[i] );
316+
} else {
317+
delta = abs( y - expected[ i ] );
318+
tol = 1.0 * EPS * abs( expected[ i ] );
319+
t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. a: '+a[i]+'. b: '+b[i]+'. c: '+c[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' );
320+
}
321+
}
322+
t.end();
323+
});
324+
325+
tape( 'the function evaluates the MGF for `x` given the case: a = c = b', function test( t ) {
326+
var expected;
327+
var delta;
328+
var mgf;
329+
var tol;
330+
var x;
331+
var a;
332+
var b;
333+
var c;
334+
var y;
335+
var i;
336+
337+
expected = aEqCEqB.expected;
338+
x = aEqCEqB.x;
339+
a = aEqCEqB.a;
340+
b = aEqCEqB.b;
341+
c = aEqCEqB.c;
342+
for ( i = 0; i < x.length; i++ ) {
343+
mgf = factory( a[i], b[i], c[i] );
344+
y = mgf( x[i] );
345+
if ( y === expected[i] ) {
346+
t.equal( y, expected[i], 'x: '+x[i]+', a: '+a[i]+', b: '+b[i]+', c: '+c[i]+', y: '+y+', expected: '+expected[i] );
347+
} else {
348+
delta = abs( y - expected[ i ] );
349+
tol = 1.0 * EPS * abs( expected[ i ] );
350+
t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. a: '+a[i]+'. b: '+b[i]+'. c: '+c[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' );
351+
}
352+
}
353+
t.end();
354+
});

lib/node_modules/@stdlib/stats/base/dists/triangular/mgf/test/test.native.js

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ var tryRequire = require( '@stdlib/utils/try-require' );
3333
var smallRange = require( './fixtures/julia/small_range.json' );
3434
var mediumRange = require( './fixtures/julia/medium_range.json' );
3535
var largeRange = require( './fixtures/julia/large_range.json' );
36+
var aLessCLessB = require( './fixtures/julia/a_less_c_less_b.json' );
37+
var aLessCEqB = require( './fixtures/julia/a_less_c_eq_b.json' );
38+
var aEqCLessB = require( './fixtures/julia/a_eq_c_less_b.json' );
39+
var aEqCEqB = require( './fixtures/julia/a_eq_c_eq_b.json' );
3640

3741

3842
// VARIABLES //
@@ -167,3 +171,119 @@ tape( 'the function evaluates the MGF for `x` given a large range `b - a`', opts
167171
}
168172
t.end();
169173
});
174+
175+
tape( 'the function evaluates the MGF for `x` given the case: a < c < b', opts, function test( t ) {
176+
var expected;
177+
var delta;
178+
var tol;
179+
var x;
180+
var a;
181+
var b;
182+
var c;
183+
var y;
184+
var i;
185+
186+
expected = aLessCLessB.expected;
187+
x = aLessCLessB.x;
188+
a = aLessCLessB.a;
189+
b = aLessCLessB.b;
190+
c = aLessCLessB.c;
191+
for ( i = 0; i < x.length; i++ ) {
192+
y = mgf( x[i], a[i], b[i], c[i] );
193+
if ( y === expected[i] ) {
194+
t.equal( y, expected[i], 'x: '+x[i]+', a: '+a[i]+', b: '+b[i]+', c: '+c[i]+', y: '+y+', expected: '+expected[i] );
195+
} else {
196+
delta = abs( y - expected[ i ] );
197+
tol = 4.0 * EPS * abs( expected[ i ] );
198+
t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. a: '+a[i]+'. b: '+b[i]+'. c: '+c[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' );
199+
}
200+
}
201+
t.end();
202+
});
203+
204+
tape( 'the function evaluates the MGF for `x` given the case: a < c = b', opts, function test( t ) {
205+
var expected;
206+
var delta;
207+
var tol;
208+
var x;
209+
var a;
210+
var b;
211+
var c;
212+
var y;
213+
var i;
214+
215+
expected = aLessCEqB.expected;
216+
x = aLessCEqB.x;
217+
a = aLessCEqB.a;
218+
b = aLessCEqB.b;
219+
c = aLessCEqB.c;
220+
for ( i = 0; i < x.length; i++ ) {
221+
y = mgf( x[i], a[i], b[i], c[i] );
222+
if ( y === expected[i] ) {
223+
t.equal( y, expected[i], 'x: '+x[i]+', a: '+a[i]+', b: '+b[i]+', c: '+c[i]+', y: '+y+', expected: '+expected[i] );
224+
} else {
225+
delta = abs( y - expected[ i ] );
226+
tol = 4.0 * EPS * abs( expected[ i ] );
227+
t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. a: '+a[i]+'. b: '+b[i]+'. c: '+c[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' );
228+
}
229+
}
230+
t.end();
231+
});
232+
233+
tape( 'the function evaluates the MGF for `x` given the case: a = c < b', opts, function test( t ) {
234+
var expected;
235+
var delta;
236+
var tol;
237+
var x;
238+
var a;
239+
var b;
240+
var c;
241+
var y;
242+
var i;
243+
244+
expected = aEqCLessB.expected;
245+
x = aEqCLessB.x;
246+
a = aEqCLessB.a;
247+
b = aEqCLessB.b;
248+
c = aEqCLessB.c;
249+
for ( i = 0; i < x.length; i++ ) {
250+
y = mgf( x[i], a[i], b[i], c[i] );
251+
if ( y === expected[i] ) {
252+
t.equal( y, expected[i], 'x: '+x[i]+', a: '+a[i]+', b: '+b[i]+', c: '+c[i]+', y: '+y+', expected: '+expected[i] );
253+
} else {
254+
delta = abs( y - expected[ i ] );
255+
tol = 4.0 * EPS * abs( expected[ i ] );
256+
t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. a: '+a[i]+'. b: '+b[i]+'. c: '+c[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' );
257+
}
258+
}
259+
t.end();
260+
});
261+
262+
tape( 'the function evaluates the MGF for `x` given the case: a = c = b', opts, function test( t ) {
263+
var expected;
264+
var delta;
265+
var tol;
266+
var x;
267+
var a;
268+
var b;
269+
var c;
270+
var y;
271+
var i;
272+
273+
expected = aEqCEqB.expected;
274+
x = aEqCEqB.x;
275+
a = aEqCEqB.a;
276+
b = aEqCEqB.b;
277+
c = aEqCEqB.c;
278+
for ( i = 0; i < x.length; i++ ) {
279+
y = mgf( x[i], a[i], b[i], c[i] );
280+
if ( y === expected[i] ) {
281+
t.equal( y, expected[i], 'x: '+x[i]+', a: '+a[i]+', b: '+b[i]+', c: '+c[i]+', y: '+y+', expected: '+expected[i] );
282+
} else {
283+
delta = abs( y - expected[ i ] );
284+
tol = 4.0 * EPS * abs( expected[ i ] );
285+
t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. a: '+a[i]+'. b: '+b[i]+'. c: '+c[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' );
286+
}
287+
}
288+
t.end();
289+
});

0 commit comments

Comments
 (0)