diff --git a/lib/node_modules/@stdlib/math/base/special/cinv/manifest.json b/lib/node_modules/@stdlib/math/base/special/cinv/manifest.json index ead3473a9678..e328ac9b4e1c 100644 --- a/lib/node_modules/@stdlib/math/base/special/cinv/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/cinv/manifest.json @@ -40,6 +40,7 @@ "@stdlib/complex/float64/ctor", "@stdlib/complex/float64/reim", "@stdlib/math/base/special/abs", + "@stdlib/math/base/special/max", "@stdlib/constants/float64/max", "@stdlib/constants/float64/eps", "@stdlib/constants/float64/smallest-normal" @@ -59,6 +60,7 @@ "@stdlib/complex/float64/ctor", "@stdlib/complex/float64/reim", "@stdlib/math/base/special/abs", + "@stdlib/math/base/special/max", "@stdlib/constants/float64/max", "@stdlib/constants/float64/eps", "@stdlib/constants/float64/smallest-normal" @@ -78,6 +80,7 @@ "@stdlib/complex/float64/ctor", "@stdlib/complex/float64/reim", "@stdlib/math/base/special/abs", + "@stdlib/math/base/special/max", "@stdlib/constants/float64/max", "@stdlib/constants/float64/eps", "@stdlib/constants/float64/smallest-normal" diff --git a/lib/node_modules/@stdlib/math/base/special/cinv/src/main.c b/lib/node_modules/@stdlib/math/base/special/cinv/src/main.c index f6ede8d3cf88..88def6b26381 100644 --- a/lib/node_modules/@stdlib/math/base/special/cinv/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/cinv/src/main.c @@ -18,12 +18,12 @@ #include "stdlib/math/base/special/cinv.h" #include "stdlib/math/base/special/abs.h" +#include "stdlib/math/base/special/max.h" #include "stdlib/constants/float64/max.h" #include "stdlib/constants/float64/eps.h" #include "stdlib/constants/float64/smallest_normal.h" #include "stdlib/complex/float64/ctor.h" #include "stdlib/complex/float64/reim.h" -#include // VARIABLES // @@ -70,8 +70,7 @@ stdlib_complex128_t stdlib_base_cinv( const stdlib_complex128_t z ) { stdlib_complex128_reim( z, &re, &im ); - // TODO: replace `fmax` with stdlib max implementation once available - ab = fmax( stdlib_base_abs( re ), stdlib_base_abs( im ) ); + ab = stdlib_base_max( stdlib_base_abs( re ), stdlib_base_abs( im ) ); s = 1.0; if ( ab >= LARGE_THRESHOLD ) { re *= 0.5; diff --git a/lib/node_modules/@stdlib/math/base/special/cinv/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/cinv/test/test.native.js index eaaf108d5887..ee9244b33b05 100644 --- a/lib/node_modules/@stdlib/math/base/special/cinv/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/cinv/test/test.native.js @@ -95,14 +95,18 @@ tape( 'the function computes a complex inverse', opts, function test( t ) { t.strictEqual( real( q ), qre[ i ], 'returns expected real component' ); } else { delta = abs( real( q ) - qre[ i ] ); - tol = EPS * abs( qre[ i ] ); + + // NOTE: the tolerance here is larger than for the JavaScript implementation due to compiler optimizations which may be performed resulting in result divergence. For discussion, see https://github.com/stdlib-js/stdlib/pull/2298#discussion_r1624765205 + tol = 1.8 * EPS * abs( qre[ i ] ); t.ok( delta <= tol, 'within tolerance. x: '+re[i]+'+ '+im[i]+'i. real: '+real( q )+'. expected: '+qre[i]+'. delta: '+delta+'. tol: '+tol+'.' ); } if ( imag( q ) === qim[ i ] ) { t.strictEqual( imag( q ), qim[ i ], 'returns expected imaginary component' ); } else { delta = abs( imag( q ) - qim[ i ] ); - tol = EPS * abs( qim[ i ] ); + + // NOTE: the tolerance here is larger than for the JavaScript implementation due to compiler optimizations which may be performed resulting in result divergence. For discussion, see https://github.com/stdlib-js/stdlib/pull/2298#discussion_r1624765205 + tol = 1.7 * EPS * abs( qim[ i ] ); t.ok( delta <= tol, 'within tolerance. x: '+re[i]+'+ '+im[i]+'i. imag: '+imag( q )+'. expected: '+qim[i]+'. delta: '+delta+'. tol: '+tol+'.' ); } }