2323var tape = require ( 'tape' ) ;
2424var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
2525var abs = require ( '@stdlib/math/base/special/abs' ) ;
26+ var exp = require ( '@stdlib/math/base/special/exp' ) ;
27+ var PINF = require ( '@stdlib/constants/float64/pinf' ) ;
28+ var NINF = require ( '@stdlib/constants/float64/ninf' ) ;
2629var EPS = require ( '@stdlib/constants/float64/eps' ) ;
2730var mgf = require ( './../lib' ) ;
2831
2932
3033// FIXTURES //
3134
32- var small = require ( './fixtures/julia/small.json' ) ;
33- var medium = require ( './fixtures/julia/medium.json' ) ;
34- var large = require ( './fixtures/julia/large.json' ) ;
35+ var smallRange = require ( './fixtures/julia/small.json' ) ;
36+ var mediumRange = require ( './fixtures/julia/medium.json' ) ;
37+ var largeRange = require ( './fixtures/julia/large.json' ) ;
3538
3639
3740// TESTS //
@@ -43,101 +46,107 @@ tape( 'main export is a function', function test( t ) {
4346} ) ;
4447
4548tape ( 'if provided `NaN` for any parameter, the function returns `NaN`' , function test ( t ) {
46- var y = mgf ( NaN , 1.0 ) ;
49+ var y = mgf ( NaN , 0.5 ) ;
4750 t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
4851 y = mgf ( 0.0 , NaN ) ;
4952 t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
5053 t . end ( ) ;
5154} ) ;
5255
53- tape ( 'if provided a nonpositive `lambda`, the function always returns `NaN`' , function test ( t ) {
56+ tape ( 'if provided `lambda <= 0 `, the function returns `NaN`' , function test ( t ) {
5457 var y ;
5558
5659 y = mgf ( 2.0 , - 1.0 ) ;
5760 t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
5861
59- y = mgf ( 0 .0, - 1 .0 ) ;
62+ y = mgf ( 2 .0, 0 .0 ) ;
6063 t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
6164
62- y = mgf ( 0.0 , 0.0 ) ;
63- t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
65+ t . end ( ) ;
66+ } ) ;
6467
65- y = mgf ( - 2.0 , 0.0 ) ;
66- t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
68+ tape ( 'if provided `+infinity` for `t` and a valid `lambda`, the function returns `+infinity`' , function test ( t ) {
69+ var y = mgf ( PINF , 0.5 ) ;
70+ t . equal ( y , PINF , 'returns +infinity' ) ;
71+ t . end ( ) ;
72+ } ) ;
6773
74+ tape ( 'if provided `-infinity` for `t` and a valid `lambda`, the function returns `exp(-lambda)`' , function test ( t ) {
75+ var y = mgf ( NINF , 0.5 ) ;
76+ t . equal ( y , exp ( - 0.5 ) , 'returns exp(-lambda)' ) ;
6877 t . end ( ) ;
6978} ) ;
7079
71- tape ( 'the function evaluates the mgf for `x ` given small `lambda` values ' , function test ( t ) {
80+ tape ( 'the function evaluates the mgf for `t ` given a small range `lambda`' , function test ( t ) {
7281 var expected ;
7382 var lambda ;
83+ var values ;
7484 var delta ;
7585 var tol ;
76- var x ;
7786 var y ;
7887 var i ;
7988
80- expected = small . expected ;
81- x = small . x ;
82- lambda = small . lambda ;
83- for ( i = 0 ; i < x . length ; i ++ ) {
84- y = mgf ( x [ i ] , lambda [ i ] ) ;
85- if ( y === expected [ i ] ) {
86- t . equal ( y , expected [ i ] , 'x : ' + x [ i ] + '. λ : '+ lambda [ i ] + '. y: '+ y + '. E : '+ expected [ i ] ) ;
89+ expected = smallRange . expected ;
90+ values = smallRange . x ;
91+ lambda = smallRange . lambda ;
92+ for ( i = 0 ; i < values . length ; i ++ ) {
93+ y = mgf ( values [ i ] , lambda [ i ] ) ;
94+ if ( y === expected [ i ] ) {
95+ t . equal ( y , expected [ i ] , 't : ' + values [ i ] + ', lambda : ' + lambda [ i ] + ', y: ' + y + ', expected : ' + expected [ i ] ) ;
8796 } else {
88- delta = abs ( y - expected [ i ] ) ;
89- tol = EPS * abs ( expected [ i ] ) ;
90- t . ok ( delta <= tol , 'within tolerance. x : ' + x [ i ] + '. λ : ' + lambda [ i ] + '. y: ' + y + '. E: ' + expected [ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
97+ delta = abs ( y - expected [ i ] ) ;
98+ tol = 1.0 * EPS * abs ( expected [ i ] ) ;
99+ t . ok ( delta <= tol , 'within tolerance. t : ' + values [ i ] + '. lambda : ' + lambda [ i ] + '. y: ' + y + '. E: ' + expected [ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
91100 }
92101 }
93102 t . end ( ) ;
94103} ) ;
95104
96- tape ( 'the function evaluates the mgf for `x ` given medium `lambda` values ' , function test ( t ) {
105+ tape ( 'the function evaluates the mgf for `t ` given a medium range `lambda`' , function test ( t ) {
97106 var expected ;
98107 var lambda ;
108+ var values ;
99109 var delta ;
100110 var tol ;
101- var x ;
102111 var y ;
103112 var i ;
104113
105- expected = medium . expected ;
106- x = medium . x ;
107- lambda = medium . lambda ;
108- for ( i = 0 ; i < x . length ; i ++ ) {
109- y = mgf ( x [ i ] , lambda [ i ] ) ;
110- if ( y === expected [ i ] ) {
111- t . equal ( y , expected [ i ] , 'x : ' + x [ i ] + '. λ : '+ lambda [ i ] + '. y: '+ y + '. E : '+ expected [ i ] ) ;
114+ expected = mediumRange . expected ;
115+ values = mediumRange . x ;
116+ lambda = mediumRange . lambda ;
117+ for ( i = 0 ; i < values . length ; i ++ ) {
118+ y = mgf ( values [ i ] , lambda [ i ] ) ;
119+ if ( y === expected [ i ] ) {
120+ t . equal ( y , expected [ i ] , 't : ' + values [ i ] + ', lambda : ' + lambda [ i ] + ', y: ' + y + ', expected : ' + expected [ i ] ) ;
112121 } else {
113- delta = abs ( y - expected [ i ] ) ;
114- tol = EPS * abs ( expected [ i ] ) ;
115- t . ok ( delta <= tol , 'within tolerance. x : ' + x [ i ] + '. λ : ' + lambda [ i ] + '. y: ' + y + '. E: ' + expected [ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
122+ delta = abs ( y - expected [ i ] ) ;
123+ tol = 1.0 * EPS * abs ( expected [ i ] ) ;
124+ t . ok ( delta <= tol , 'within tolerance. t : ' + values [ i ] + '. lambda : ' + lambda [ i ] + '. y: ' + y + '. E: ' + expected [ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
116125 }
117126 }
118127 t . end ( ) ;
119128} ) ;
120129
121- tape ( 'the function evaluates the mgf for `x ` given large `lambda` values ' , function test ( t ) {
130+ tape ( 'the function evaluates the mgf for `t ` given a large range `lambda`' , function test ( t ) {
122131 var expected ;
132+ var values ;
123133 var lambda ;
124134 var delta ;
125135 var tol ;
126- var x ;
127136 var y ;
128137 var i ;
129138
130- expected = large . expected ;
131- x = large . x ;
132- lambda = large . lambda ;
133- for ( i = 0 ; i < x . length ; i ++ ) {
134- y = mgf ( x [ i ] , lambda [ i ] ) ;
135- if ( y === expected [ i ] ) {
136- t . equal ( y , expected [ i ] , 'x : ' + x [ i ] + '. λ : '+ lambda [ i ] + '. y: '+ y + '. E : '+ expected [ i ] ) ;
139+ expected = largeRange . expected ;
140+ values = largeRange . x ;
141+ lambda = largeRange . lambda ;
142+ for ( i = 0 ; i < values . length ; i ++ ) {
143+ y = mgf ( values [ i ] , lambda [ i ] ) ;
144+ if ( y === expected [ i ] ) {
145+ t . equal ( y , expected [ i ] , 't : ' + values [ i ] + ', lambda : ' + lambda [ i ] + ', y: ' + y + ', expected : ' + expected [ i ] ) ;
137146 } else {
138- delta = abs ( y - expected [ i ] ) ;
139- tol = EPS * abs ( expected [ i ] ) ;
140- t . ok ( delta <= tol , 'within tolerance. x : ' + x [ i ] + '. λ : ' + lambda [ i ] + '. y: ' + y + '. E: ' + expected [ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
147+ delta = abs ( y - expected [ i ] ) ;
148+ tol = 1.0 * EPS * abs ( expected [ i ] ) ;
149+ t . ok ( delta <= tol , 'within tolerance. t : ' + values [ i ] + '. lambda : ' + lambda [ i ] + '. y: ' + y + '. E: ' + expected [ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
141150 }
142151 }
143152 t . end ( ) ;
0 commit comments