@@ -24,7 +24,7 @@ var resolve = require( 'path' ).resolve;
24
24
var tape = require ( 'tape' ) ;
25
25
var NINF = require ( '@stdlib/constants/float64/ninf' ) ;
26
26
var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
27
- var randu = require ( '@stdlib/random/base/randu ' ) ;
27
+ var uniform = require ( '@stdlib/random/base/uniform ' ) ;
28
28
var tryRequire = require ( '@stdlib/utils/try-require' ) ;
29
29
var abs = require ( '@stdlib/math/base/special/abs' ) ;
30
30
var exp = require ( '@stdlib/math/base/special/exp' ) ;
@@ -76,31 +76,56 @@ tape( 'if provided `+-0`, the function returns -infinity', opts, function test(
76
76
} ) ;
77
77
78
78
tape ( 'the function computes the natural logarithm of `1-exp(-|x|)` (`0 < |x| <= ln(2)`)' , opts , function test ( t ) {
79
+ var delta ;
80
+ var rand ;
81
+ var tol ;
79
82
var x ;
80
83
var y ;
81
84
var v ;
82
85
var i ;
83
86
87
+ rand = uniform . factory ( 0.0 , LN2 , {
88
+ 'seed' : 129
89
+ } ) ;
84
90
for ( i = 0 ; i < 1e3 ; i ++ ) {
85
- v = randu ( ) * LN2 ;
91
+ v = rand ( ) ;
86
92
x = log1mexp ( v ) ;
87
93
y = ln ( - expm1 ( - v ) ) ;
88
- t . strictEqual ( x , y , 'returns ' + y + ' when provided ' + v ) ;
94
+ if ( x === y ) {
95
+ t . strictEqual ( x , y , 'returns ' + y + ' when provided ' + v ) ;
96
+ } else {
97
+ delta = abs ( x - y ) ;
98
+ tol = 1.0 * EPS * abs ( y ) ;
99
+ t . ok ( delta <= tol , 'within tolerance. v: ' + v + '. actual: ' + x + '. expected: ' + y + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
100
+ }
89
101
}
90
102
t . end ( ) ;
91
103
} ) ;
92
104
93
105
tape ( 'the function computes the natural logarithm of `1-exp(-|x|)` (`x > ln(2)`)' , opts , function test ( t ) {
106
+ var delta ;
107
+ var rand ;
108
+ var tol ;
94
109
var x ;
95
110
var y ;
96
111
var v ;
97
112
var i ;
98
113
114
+ rand = uniform . factory ( LN2 + EPS , 100.0 , {
115
+ 'seed' : 919
116
+ } ) ;
117
+
99
118
for ( i = 0 ; i < 1e3 ; i ++ ) {
100
- v = LN2 + EPS + ( randu ( ) * 100.0 ) ;
119
+ v = rand ( ) ;
101
120
x = log1mexp ( v ) ;
102
121
y = log1p ( - exp ( - v ) ) ;
103
- t . strictEqual ( x , y , 'returns ' + y + ' when provided ' + v ) ;
122
+ if ( x === y ) {
123
+ t . strictEqual ( x , y , 'returns ' + y + ' when provided ' + v ) ;
124
+ } else {
125
+ delta = abs ( x - y ) ;
126
+ tol = 1.0 * EPS * abs ( y ) ;
127
+ t . ok ( delta <= tol , 'within tolerance. v: ' + v + '. actual: ' + x + '. expected: ' + y + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
128
+ }
104
129
}
105
130
t . end ( ) ;
106
131
} ) ;
0 commit comments