Skip to content

Commit fb04f19

Browse files
authored
refactor: reduce test tolerance and fix casting
PR-URL: #2356 Ref: #2315 Reviewed-by: Athan Reines <[email protected]>
1 parent ced30b0 commit fb04f19

File tree

7 files changed

+21
-29
lines changed

7 files changed

+21
-29
lines changed

lib/node_modules/@stdlib/math/base/special/lnf/lib/main.js

+10-14
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
var toWordf = require( '@stdlib/number/float32/base/to-word' );
3838
var fromWordf = require( '@stdlib/number/float32/base/from-word' );
39-
var isnan = require( '@stdlib/math/base/assert/is-nan' );
39+
var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
4040
var NINF = require( '@stdlib/constants/float32/ninf' );
4141
var FLOAT32_EXPONENT_MASK = require( '@stdlib/constants/float32/exponent-mask' );
4242
var FLOAT32_EXPONENT_BIAS = require( '@stdlib/constants/float32/exponent-bias' );
@@ -87,7 +87,6 @@ function lnf( x ) {
8787
var ix;
8888
var t2;
8989
var t1;
90-
var dk;
9190
var k;
9291
var R;
9392
var f;
@@ -100,7 +99,7 @@ function lnf( x ) {
10099
if ( x === 0.0 ) {
101100
return NINF;
102101
}
103-
if ( isnan( x ) || x < 0.0 ) {
102+
if ( isnanf( x ) || x < 0.0 ) {
104103
return NaN;
105104
}
106105
x = float64ToFloat32( x );
@@ -109,7 +108,7 @@ function lnf( x ) {
109108

110109
// x < 2**-126
111110
if ( ix < 0x00800000 ) {
112-
k = float64ToFloat32( k - 25 );
111+
k -= 25;
113112

114113
// Subnormal number, scale up x
115114
x = float64ToFloat32( x * TWO25 );
@@ -120,7 +119,7 @@ function lnf( x ) {
120119
}
121120
k = float64ToFloat32( k + float64ToFloat32( ( ix >> 23 ) - FLOAT32_EXPONENT_BIAS ) ); // eslint-disable-line max-len
122121
ix &= FLOAT32_SIGNIFICAND_MASK;
123-
i = float64ToFloat32( ix + ( 0x95f64 << 3 ) ) & 0x800000;
122+
i = ( ix + ( 0x95f64 << 3 ) ) & 0x800000;
124123

125124
// Normalize x or x/2
126125
x = fromWordf( ix | ( i ^ 0x3f800000 ) );
@@ -133,22 +132,19 @@ function lnf( x ) {
133132
if ( k === 0 ) {
134133
return 0.0;
135134
}
136-
dk = k;
137-
return float64ToFloat32( float64ToFloat32( dk * LN2_HI ) + float64ToFloat32( dk * LN2_LO ) ); // eslint-disable-line max-len
135+
return float64ToFloat32( float64ToFloat32( k * LN2_HI ) + float64ToFloat32( k * LN2_LO ) ); // eslint-disable-line max-len
138136
}
139137
R = float64ToFloat32( float64ToFloat32( f * f ) * float64ToFloat32( 0.5 - float64ToFloat32( ONE_THIRD * f ) ) ); // eslint-disable-line max-len
140138
if ( k === 0 ) {
141139
return float64ToFloat32( f - R );
142140
}
143-
dk = k;
144-
return float64ToFloat32( float64ToFloat32( dk * LN2_HI ) - float64ToFloat32( float64ToFloat32( R - float64ToFloat32( dk * LN2_LO ) ) - f ) ); // eslint-disable-line max-len
141+
return float64ToFloat32( float64ToFloat32( k * LN2_HI ) - float64ToFloat32( float64ToFloat32( R - float64ToFloat32( k * LN2_LO ) ) - f ) ); // eslint-disable-line max-len
145142
}
146143
s = float64ToFloat32( f / float64ToFloat32( 2.0 + f ) );
147-
dk = k;
148144
z = float64ToFloat32( s * s );
149-
i = float64ToFloat32( ix - ( 0x6147a << 3 ) );
145+
i = ix - ( 0x6147a << 3 );
150146
w = float64ToFloat32( z * z );
151-
j = float64ToFloat32( ( 0x6b851 << 3 ) - ix );
147+
j = ( 0x6b851 << 3 ) - ix;
152148
t1 = float64ToFloat32( w * float64ToFloat32( polyvalP( w ) ) );
153149
t2 = float64ToFloat32( z * float64ToFloat32( polyvalQ( w ) ) );
154150
i |= j;
@@ -158,12 +154,12 @@ function lnf( x ) {
158154
if ( k === 0 ) {
159155
return float64ToFloat32( f - float64ToFloat32( hfsq - float64ToFloat32( s * float64ToFloat32( hfsq + R ) ) ) ); // eslint-disable-line max-len
160156
}
161-
return float64ToFloat32( float64ToFloat32( dk * LN2_HI ) - float64ToFloat32( float64ToFloat32( hfsq - float64ToFloat32( ( s * float64ToFloat32( hfsq + R ) ) + float64ToFloat32( dk * LN2_LO ) ) ) - f ) ); // eslint-disable-line max-len
157+
return float64ToFloat32( float64ToFloat32( k * LN2_HI ) - float64ToFloat32( float64ToFloat32( hfsq - float64ToFloat32( ( s * float64ToFloat32( hfsq + R ) ) + float64ToFloat32( k * LN2_LO ) ) ) - f ) ); // eslint-disable-line max-len
162158
}
163159
if ( k === 0 ) {
164160
return float64ToFloat32( f - float64ToFloat32( s * float64ToFloat32( f - R ) ) ); // eslint-disable-line max-len
165161
}
166-
return float64ToFloat32( float64ToFloat32( dk * LN2_HI ) - float64ToFloat32( float64ToFloat32( float64ToFloat32( s * float64ToFloat32( f - R ) ) - float64ToFloat32( dk * LN2_LO ) ) - f ) ); // eslint-disable-line max-len
162+
return float64ToFloat32( float64ToFloat32( k * LN2_HI ) - float64ToFloat32( float64ToFloat32( float64ToFloat32( s * float64ToFloat32( f - R ) ) - float64ToFloat32( k * LN2_LO ) ) - f ) ); // eslint-disable-line max-len
167163
}
168164

169165

lib/node_modules/@stdlib/math/base/special/lnf/manifest.json

-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
"@stdlib/math/base/napi/unary",
4040
"@stdlib/number/float32/base/to-word",
4141
"@stdlib/number/float32/base/from-word",
42-
"@stdlib/math/base/assert/is-nan",
4342
"@stdlib/constants/float32/ninf",
4443
"@stdlib/constants/float32/exponent-bias",
4544
"@stdlib/constants/float32/exponent-mask",
@@ -60,7 +59,6 @@
6059
"dependencies": [
6160
"@stdlib/number/float32/base/to-word",
6261
"@stdlib/number/float32/base/from-word",
63-
"@stdlib/math/base/assert/is-nan",
6462
"@stdlib/constants/float32/ninf",
6563
"@stdlib/constants/float32/exponent-bias",
6664
"@stdlib/constants/float32/exponent-mask",
@@ -81,7 +79,6 @@
8179
"dependencies": [
8280
"@stdlib/number/float32/base/to-word",
8381
"@stdlib/number/float32/base/from-word",
84-
"@stdlib/math/base/assert/is-nan",
8582
"@stdlib/constants/float32/ninf",
8683
"@stdlib/constants/float32/exponent-bias",
8784
"@stdlib/constants/float32/exponent-mask",

lib/node_modules/@stdlib/math/base/special/lnf/src/main.c

+3-4
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
#include "stdlib/math/base/special/lnf.h"
3333
#include "stdlib/number/float32/base/to_word.h"
3434
#include "stdlib/number/float32/base/from_word.h"
35-
#include "stdlib/math/base/assert/is_nan.h"
3635
#include "stdlib/constants/float32/ninf.h"
3736
#include "stdlib/constants/float32/exponent_bias.h"
3837
#include "stdlib/constants/float32/exponent_mask.h"
@@ -152,18 +151,18 @@ float stdlib_base_lnf( const float x ) {
152151
if ( k == 0 ) {
153152
return 0.0f;
154153
}
155-
dk = k;
154+
dk = (float)k;
156155
return ( ( dk * LN2_HI ) + ( dk * LN2_LO ) );
157156
}
158157
R = ( ( f * f ) * ( 0.5f - ( ONE_THIRD * f ) ) );
159158
if ( k == 0 ) {
160159
return ( f - R );
161160
}
162-
dk = k;
161+
dk = (float)k;
163162
return ( ( dk * LN2_HI ) - ( ( R - ( dk * LN2_LO ) ) - f ) );
164163
}
165164
s = ( f / ( 2.0f + f ) );
166-
dk = k;
165+
dk = (float)k;
167166
z = ( s * s );
168167
i = ( ix - ( 0x6147a << 3 ) );
169168
w = ( z * z );

lib/node_modules/@stdlib/math/base/special/lnf/test/fixtures/julia/runner.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ file = @__FILE__;
5959
dir = dirname( file );
6060

6161
# Subnormal values:
62-
x = range( 1.0e-39, stop = 1.4e-45, length = 500 );
62+
x = range( 1.0e-39, stop = 1.40129846e-45, length = 500 );
6363
out = joinpath( dir, "subnormal.json" );
6464
gen( x, out );
6565

0 commit comments

Comments
 (0)