@@ -25,7 +25,6 @@ var tape = require( 'tape' );
25
25
var tryRequire = require ( '@stdlib/utils/try-require' ) ;
26
26
var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
27
27
var abs = require ( '@stdlib/math/base/special/abs' ) ;
28
- var max = require ( '@stdlib/math/base/special/max' ) ;
29
28
var PINF = require ( '@stdlib/constants/float64/pinf' ) ;
30
29
var NINF = require ( '@stdlib/constants/float64/ninf' ) ;
31
30
var EPS = require ( '@stdlib/constants/float64/eps' ) ;
@@ -63,31 +62,55 @@ tape( 'if provided `NaN` for any parameter, the function returns `NaN`', opts, f
63
62
t . end ( ) ;
64
63
} ) ;
65
64
66
- tape ( 'if provided `+infinity` for `x` and a valid `v`, the function returns `0`' , opts , function test ( t ) {
65
+ tape ( 'if provided `+infinity` for `x` and a finite `v`, the function returns `0`' , opts , function test ( t ) {
67
66
var y = pdf ( PINF , 1.0 ) ;
68
67
t . equal ( y , 0.0 , 'returns 0' ) ;
69
68
t . end ( ) ;
70
69
} ) ;
71
70
72
- tape ( 'if provided `-infinity` for `x` and a valid `v`, the function returns `0`' , opts , function test ( t ) {
71
+ tape ( 'if provided `-infinity` for `x` and a finite `v`, the function returns `0`' , opts , function test ( t ) {
73
72
var y = pdf ( NINF , 1.0 ) ;
74
73
t . equal ( y , 0.0 , 'returns 0' ) ;
75
74
t . end ( ) ;
76
75
} ) ;
77
76
78
- tape ( 'if provided `v <= 0 `, the function returns `NaN`' , opts , function test ( t ) {
77
+ tape ( 'if provided `+infinity` for `v `, the function returns `NaN`' , opts , function test ( t ) {
79
78
var y ;
80
79
80
+ y = pdf ( 0.0 , PINF ) ;
81
+ t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
82
+
83
+ y = pdf ( NaN , PINF ) ;
84
+ t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
85
+
86
+ y = pdf ( PINF , PINF ) ;
87
+ t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
88
+
89
+ y = pdf ( NINF , PINF ) ;
90
+ t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
91
+
92
+ t . end ( ) ;
93
+ } ) ;
94
+
95
+ tape ( 'if provided a nonpositive `v`, the function always returns `NaN`' , opts , function test ( t ) {
96
+ var y ;
97
+
98
+ y = pdf ( 2.0 , 0.0 ) ;
99
+ t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
100
+
81
101
y = pdf ( 2.0 , - 1.0 ) ;
82
102
t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
83
103
84
- y = pdf ( 0.0 , 0.0 ) ;
104
+ y = pdf ( 0.0 , - 1.0 ) ;
105
+ t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
106
+
107
+ y = pdf ( 2.0 , NINF ) ;
85
108
t . equal ( isnan ( y ) , true , 'returns NaN' ) ;
86
109
87
110
t . end ( ) ;
88
111
} ) ;
89
112
90
- tape ( 'the function evaluates the pdf for `x` given a small range `v` ' , opts , function test ( t ) {
113
+ tape ( 'the function evaluates the pdf for `x` given parameter `v` (when `x` and `v` are small) ' , opts , function test ( t ) {
91
114
var expected ;
92
115
var delta ;
93
116
var tol ;
@@ -105,14 +128,14 @@ tape( 'the function evaluates the pdf for `x` given a small range `v`', opts, fu
105
128
t . equal ( y , expected [ i ] , 'x: ' + x [ i ] + ', v: ' + v [ i ] + ', y: ' + y + ', expected: ' + expected [ i ] ) ;
106
129
} else {
107
130
delta = abs ( y - expected [ i ] ) ;
108
- tol = max ( 2 .0 * EPS * abs ( expected [ i ] ) , 1.0e-14 ) ;
131
+ tol = 10 .0 * EPS * abs ( expected [ i ] ) ;
109
132
t . ok ( delta <= tol , 'within tolerance. x: ' + x [ i ] + '. v: ' + v [ i ] + '. y: ' + y + '. E: ' + expected [ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
110
133
}
111
134
}
112
135
t . end ( ) ;
113
136
} ) ;
114
137
115
- tape ( 'the function evaluates the pdf for `x` given a medium range `v` ' , opts , function test ( t ) {
138
+ tape ( 'the function evaluates the pdf for `x` given parameter `v` (when `x` is large and `v` small) ' , opts , function test ( t ) {
116
139
var expected ;
117
140
var delta ;
118
141
var tol ;
@@ -121,23 +144,23 @@ tape( 'the function evaluates the pdf for `x` given a medium range `v`', opts, f
121
144
var y ;
122
145
var i ;
123
146
124
- expected = smallLarge . expected ;
125
- x = smallLarge . x ;
126
- v = smallLarge . v ;
147
+ expected = largeSmall . expected ;
148
+ x = largeSmall . x ;
149
+ v = largeSmall . v ;
127
150
for ( i = 0 ; i < x . length ; i ++ ) {
128
151
y = pdf ( x [ i ] , v [ i ] ) ;
129
152
if ( y === expected [ i ] ) {
130
153
t . equal ( y , expected [ i ] , 'x: ' + x [ i ] + ', v: ' + v [ i ] + ', y: ' + y + ', expected: ' + expected [ i ] ) ;
131
154
} else {
132
155
delta = abs ( y - expected [ i ] ) ;
133
- tol = max ( 2 .0 * EPS * abs ( expected [ i ] ) , 1.0e-14 ) ;
156
+ tol = 10 .0 * EPS * abs ( expected [ i ] ) ;
134
157
t . ok ( delta <= tol , 'within tolerance. x: ' + x [ i ] + '. v: ' + v [ i ] + '. y: ' + y + '. E: ' + expected [ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
135
158
}
136
159
}
137
160
t . end ( ) ;
138
161
} ) ;
139
162
140
- tape ( 'the function evaluates the pdf for `x` given a large range `v` ' , opts , function test ( t ) {
163
+ tape ( 'the function evaluates the pdf for `x` given parameter `v` (when `x` is small and `v` large) ' , opts , function test ( t ) {
141
164
var expected ;
142
165
var delta ;
143
166
var tol ;
@@ -146,23 +169,23 @@ tape( 'the function evaluates the pdf for `x` given a large range `v`', opts, fu
146
169
var y ;
147
170
var i ;
148
171
149
- expected = largeSmall . expected ;
150
- x = largeSmall . x ;
151
- v = largeSmall . v ;
172
+ expected = smallLarge . expected ;
173
+ x = smallLarge . x ;
174
+ v = smallLarge . v ;
152
175
for ( i = 0 ; i < x . length ; i ++ ) {
153
176
y = pdf ( x [ i ] , v [ i ] ) ;
154
177
if ( y === expected [ i ] ) {
155
178
t . equal ( y , expected [ i ] , 'x: ' + x [ i ] + ', v: ' + v [ i ] + ', y: ' + y + ', expected: ' + expected [ i ] ) ;
156
179
} else {
157
180
delta = abs ( y - expected [ i ] ) ;
158
- tol = max ( 2 .0 * EPS * abs ( expected [ i ] ) , 1.0e-14 ) ;
181
+ tol = 40 .0 * EPS * abs ( expected [ i ] ) ;
159
182
t . ok ( delta <= tol , 'within tolerance. x: ' + x [ i ] + '. v: ' + v [ i ] + '. y: ' + y + '. E: ' + expected [ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
160
183
}
161
184
}
162
185
t . end ( ) ;
163
186
} ) ;
164
187
165
- tape ( 'the function evaluates the pdf for `x` given a large range `v` ' , opts , function test ( t ) {
188
+ tape ( 'the function evaluates the pdf for `x` given parameter `v` (when `x` and `v` are large) ' , opts , function test ( t ) {
166
189
var expected ;
167
190
var delta ;
168
191
var tol ;
@@ -180,7 +203,7 @@ tape( 'the function evaluates the pdf for `x` given a large range `v`', opts, fu
180
203
t . equal ( y , expected [ i ] , 'x: ' + x [ i ] + ', v: ' + v [ i ] + ', y: ' + y + ', expected: ' + expected [ i ] ) ;
181
204
} else {
182
205
delta = abs ( y - expected [ i ] ) ;
183
- tol = max ( 2 .0 * EPS * abs ( expected [ i ] ) , 1.0e-14 ) ;
206
+ tol = 40 .0 * EPS * abs ( expected [ i ] ) ;
184
207
t . ok ( delta <= tol , 'within tolerance. x: ' + x [ i ] + '. v: ' + v [ i ] + '. y: ' + y + '. E: ' + expected [ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
185
208
}
186
209
}
0 commit comments