fixed input validity ranges in bw_sinhf and bw_acoshf + doc and tests
This commit is contained in:
parent
39bad57099
commit
7616c590a0
@ -56,6 +56,10 @@
|
|||||||
* value of input was in [<code>0.5f</code>,
|
* value of input was in [<code>0.5f</code>,
|
||||||
* <code>1.f</code>].</li>
|
* <code>1.f</code>].</li>
|
||||||
* <li>Fixed <code>bw_ceilf()</code> for negative input values.</li>
|
* <li>Fixed <code>bw_ceilf()</code> for negative input values.</li>
|
||||||
|
* <li>Fixed <code>bw_sqrtf()</code> for very large input values and
|
||||||
|
* improved implementation.</li>
|
||||||
|
* <li>Fixed input validity ranges in <code>bw_asinhf()</code> and
|
||||||
|
* <code>bw_acoshf()</code>.</li>
|
||||||
* <li>Removed usage of reserved identifiers and designated
|
* <li>Removed usage of reserved identifiers and designated
|
||||||
* initializers.</li>
|
* initializers.</li>
|
||||||
* <li>Improved documentation w.r.t. validity of input values and
|
* <li>Improved documentation w.r.t. validity of input values and
|
||||||
@ -403,7 +407,10 @@ static inline float bw_pow10f(float x);
|
|||||||
static inline float bw_dB2linf(float x);
|
static inline float bw_dB2linf(float x);
|
||||||
/*! <<<```
|
/*! <<<```
|
||||||
* Returns an approximation of 10 raised to the power of `x` / 20 (dB to
|
* Returns an approximation of 10 raised to the power of `x` / 20 (dB to
|
||||||
* linear ratio conversion).
|
* linear ratio conversion). For `x < -758.5955890732315f` it just returns
|
||||||
|
* `0.f`.
|
||||||
|
*
|
||||||
|
* `x` must be less than or equal to `770.630f`.
|
||||||
*
|
*
|
||||||
* Relative error < 0.062%.
|
* Relative error < 0.062%.
|
||||||
*
|
*
|
||||||
@ -414,7 +421,9 @@ static inline float bw_lin2dBf(float x);
|
|||||||
* Returns an approximation of 20 times the base-10 logarithm of `x` (linear
|
* Returns an approximation of 20 times the base-10 logarithm of `x` (linear
|
||||||
* ratio to dB conversion).
|
* ratio to dB conversion).
|
||||||
*
|
*
|
||||||
* Absolute error < 0.032, relative error < 1.2%.
|
* `x` must be finite and greater than or equal to `1.175494350822287e-38f`.
|
||||||
|
*
|
||||||
|
* Absolute error < 0.032 or relative error < 1.2%, whatever is worse.
|
||||||
*
|
*
|
||||||
* #### bw_sqrtf()
|
* #### bw_sqrtf()
|
||||||
* ```>>> */
|
* ```>>> */
|
||||||
@ -422,9 +431,9 @@ static inline float bw_sqrtf(float x);
|
|||||||
/*! <<<```
|
/*! <<<```
|
||||||
* Returns an approximation of the square root of `x`.
|
* Returns an approximation of the square root of `x`.
|
||||||
*
|
*
|
||||||
* Do not feed `0.f`.
|
* `x` must be finite and greater than or equal to `0.f`.
|
||||||
*
|
*
|
||||||
* Relative error < 0.0007%.
|
* Absolute error < 1.09e-19 or relative error < 0.0007%, whatever is worse.
|
||||||
*
|
*
|
||||||
* #### bw_tanhf()
|
* #### bw_tanhf()
|
||||||
* ```>>> */
|
* ```>>> */
|
||||||
@ -432,7 +441,7 @@ static inline float bw_tanhf(float x);
|
|||||||
/*! <<<```
|
/*! <<<```
|
||||||
* Returns an approximation of the hyperbolic tangent of `x`.
|
* Returns an approximation of the hyperbolic tangent of `x`.
|
||||||
*
|
*
|
||||||
* Absolute error < 0.035, relative error < 6.5%.
|
* Absolute error < 0.035 or relative error < 6.5%, whatever is worse.
|
||||||
*
|
*
|
||||||
* #### bw_sinhf()
|
* #### bw_sinhf()
|
||||||
* ```>>> */
|
* ```>>> */
|
||||||
@ -440,7 +449,9 @@ static inline float bw_sinhf(float x);
|
|||||||
/*! <<<```
|
/*! <<<```
|
||||||
* Returns an approximation of the hyperbolic sine of `x`.
|
* Returns an approximation of the hyperbolic sine of `x`.
|
||||||
*
|
*
|
||||||
* Relative error < 0.07%.
|
* |`x`| must less than or equal to `88.722f`.
|
||||||
|
*
|
||||||
|
* Absolute error < 1e-7 or relative error < 0.07%, whatever is worse.
|
||||||
*
|
*
|
||||||
* #### bw_coshf()
|
* #### bw_coshf()
|
||||||
* ```>>> */
|
* ```>>> */
|
||||||
@ -448,6 +459,8 @@ static inline float bw_coshf(float x);
|
|||||||
/*! <<<```
|
/*! <<<```
|
||||||
* Returns an approximation of the hyperbolic cosine of `x`.
|
* Returns an approximation of the hyperbolic cosine of `x`.
|
||||||
*
|
*
|
||||||
|
* |`x`| must less than or equal to `88.722f`.
|
||||||
|
*
|
||||||
* Relative error < 0.07%.
|
* Relative error < 0.07%.
|
||||||
*
|
*
|
||||||
* #### bw_asinhf()
|
* #### bw_asinhf()
|
||||||
@ -456,7 +469,9 @@ static inline float bw_asinhf(float x);
|
|||||||
/*! <<<```
|
/*! <<<```
|
||||||
* Returns an approximation of the hyperbolic arcsine of `x`.
|
* Returns an approximation of the hyperbolic arcsine of `x`.
|
||||||
*
|
*
|
||||||
* Absolute error < 0.004, relative error < 1.2%.
|
* |`x`| must less than or equal to `8.507059173023462e+37f`.
|
||||||
|
*
|
||||||
|
* Absolute error < 0.004 or relative error < 1.2%, whatever is worse.
|
||||||
*
|
*
|
||||||
* #### bw_acoshf()
|
* #### bw_acoshf()
|
||||||
* ```>>> */
|
* ```>>> */
|
||||||
@ -464,7 +479,9 @@ static inline float bw_acoshf(float x);
|
|||||||
/*! <<<```
|
/*! <<<```
|
||||||
* Returns an approximation of the hyperbolic arccosine of `x`.
|
* Returns an approximation of the hyperbolic arccosine of `x`.
|
||||||
*
|
*
|
||||||
* Absolute error < 0.004, relative error < 0.8%.
|
* `x` must be in [1.f, 8.507059173023462e+37f].
|
||||||
|
*
|
||||||
|
* Absolute error < 0.004 or relative error < 0.8%, whatever is worse.
|
||||||
* }}} */
|
* }}} */
|
||||||
|
|
||||||
/*** Implementation ***/
|
/*** Implementation ***/
|
||||||
@ -766,7 +783,7 @@ static inline float bw_pow10f(float x) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline float bw_dB2linf(float x) {
|
static inline float bw_dB2linf(float x) {
|
||||||
BW_ASSERT(bw_is_finite(x));
|
BW_ASSERT(!bw_is_nan(x));
|
||||||
BW_ASSERT(x <= 770.630f);
|
BW_ASSERT(x <= 770.630f);
|
||||||
const float y = bw_pow2f(0.1660964047443682f * x);
|
const float y = bw_pow2f(0.1660964047443682f * x);
|
||||||
BW_ASSERT(bw_is_finite(y));
|
BW_ASSERT(bw_is_finite(y));
|
||||||
@ -784,27 +801,27 @@ static inline float bw_lin2dBf(float x) {
|
|||||||
static inline float bw_sqrtf(float x) {
|
static inline float bw_sqrtf(float x) {
|
||||||
BW_ASSERT(bw_is_finite(x));
|
BW_ASSERT(bw_is_finite(x));
|
||||||
BW_ASSERT(x >= 0.f);
|
BW_ASSERT(x >= 0.f);
|
||||||
if (x < 8.077935669463161e-28f) {
|
if (x < 1.1754943508222875e-38f)
|
||||||
const float y = 3.518437208883201e13f * x;
|
return 0.f;
|
||||||
BW_ASSERT(bw_is_finite(y));
|
union { float f; int32_t i; } v;
|
||||||
return y;
|
|
||||||
}
|
|
||||||
union { float f; uint32_t u; } v;
|
|
||||||
v.f = x;
|
v.f = x;
|
||||||
v.u = (((v.u - 0x3f82a127) >> 1) + 0x3f7d8fc7) & 0x7fffffff;
|
int i = (v.i >> 26) & 0x38;
|
||||||
float r = bw_rcpf(x);
|
v.i += (0x200000e0 << i) & 0xff000000;
|
||||||
|
const float r = bw_rcpf(v.f);
|
||||||
|
v.i = (((v.i - 0x3f82a127) >> 1) + 0x3f7d8fc7) & 0x7fffffff;
|
||||||
v.f = v.f + v.f * (0.5f - 0.5f * r * v.f * v.f);
|
v.f = v.f + v.f * (0.5f - 0.5f * r * v.f * v.f);
|
||||||
v.f = v.f + v.f * (0.5f - 0.5f * r * v.f * v.f);
|
v.f = v.f + v.f * (0.5f - 0.5f * r * v.f * v.f);
|
||||||
|
v.i -= (0x100000f0 << i) & 0xff000000;
|
||||||
BW_ASSERT(bw_is_finite(v.f));
|
BW_ASSERT(bw_is_finite(v.f));
|
||||||
return v.f;
|
return v.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline float bw_tanhf(float x) {
|
static inline float bw_tanhf(float x) {
|
||||||
BW_ASSERT(bw_is_finite(x));
|
BW_ASSERT(!bw_is_nan(x));
|
||||||
const float xm = bw_clipf(x, -2.115287308554551f, 2.115287308554551f);
|
const float xm = bw_clipf(x, -2.115287308554551f, 2.115287308554551f);
|
||||||
const float axm = bw_absf(xm);
|
const float axm = bw_absf(xm);
|
||||||
const float y = xm * axm * (0.01218073260037716f * axm - 0.2750231331124371f) + xm;
|
const float y = xm * axm * (0.01218073260037716f * axm - 0.2750231331124371f) + xm;
|
||||||
BW_ASSERT(bw_is_finite(y));
|
BW_ASSERT(!bw_is_nan(y));
|
||||||
return y;
|
return y;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -826,7 +843,7 @@ static inline float bw_coshf(float x) {
|
|||||||
|
|
||||||
static inline float bw_asinhf(float x) {
|
static inline float bw_asinhf(float x) {
|
||||||
BW_ASSERT(bw_is_finite(x));
|
BW_ASSERT(bw_is_finite(x));
|
||||||
BW_ASSERT(x >= -1.7e38f && x <= 1.7e38f);
|
BW_ASSERT(x >= -8.507059173023462e+37f && x <= 8.507059173023462e+37f);
|
||||||
float a = bw_absf(x);
|
float a = bw_absf(x);
|
||||||
const float y = bw_copysignf(bw_logf((a >= 4096.f ? a : bw_sqrtf(a * a + 1.f)) + a), x);
|
const float y = bw_copysignf(bw_logf((a >= 4096.f ? a : bw_sqrtf(a * a + 1.f)) + a), x);
|
||||||
BW_ASSERT(bw_is_finite(y));
|
BW_ASSERT(bw_is_finite(y));
|
||||||
@ -835,7 +852,7 @@ static inline float bw_asinhf(float x) {
|
|||||||
|
|
||||||
static inline float bw_acoshf(float x) {
|
static inline float bw_acoshf(float x) {
|
||||||
BW_ASSERT(bw_is_finite(x));
|
BW_ASSERT(bw_is_finite(x));
|
||||||
BW_ASSERT(x >= 1.f);
|
BW_ASSERT(x >= 1.f && x <= 8.507059173023462e+37f);
|
||||||
const float y = bw_logf((x >= 8192.f ? x : bw_sqrtf(x * x - 1.f)) + x);
|
const float y = bw_logf((x >= 8192.f ? x : bw_sqrtf(x * x - 1.f)) + x);
|
||||||
BW_ASSERT(bw_is_finite(y));
|
BW_ASSERT(bw_is_finite(y));
|
||||||
return y;
|
return y;
|
||||||
|
292
test/bw_math.c
292
test/bw_math.c
@ -977,6 +977,298 @@ int main() {
|
|||||||
TEST_REL(bw_pow10f(10.5f), 31622776601.68379f, 0.00062f);
|
TEST_REL(bw_pow10f(10.5f), 31622776601.68379f, 0.00062f);
|
||||||
TEST_REL(bw_pow10f(20.5f), 3.162277660168379e+20f, 0.00062f);
|
TEST_REL(bw_pow10f(20.5f), 3.162277660168379e+20f, 0.00062f);
|
||||||
TEST_REL(bw_pow10f(30.5f), 3.162277660168380e+30f, 0.00062f);
|
TEST_REL(bw_pow10f(30.5f), 3.162277660168380e+30f, 0.00062f);
|
||||||
|
|
||||||
|
TEST(bw_dB2linf(-INFINITY), 0.f);
|
||||||
|
TEST(bw_dB2linf(-800.f), 0.f);
|
||||||
|
TEST_REL(bw_dB2linf(-600.5f), 9.440608762859265e-31f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(-400.5f), 9.440608762859264e-21f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(-200.5f), 9.440608762859226e-11f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(0.f), 1.f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(2.f), 1.258925411794167e+00f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(4.f), 1.584893192461114e+00f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(6.f), 1.995262314968880e+00f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(8.f), 2.511886431509580e+00f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(10.f), 3.162277660168380e+00f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(12.f), 3.981071705534972e+00f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(14.f), 5.011872336272722e+00f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(16.f), 6.309573444801933e+00f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(18.f), 7.943282347242816e+00f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(20.f), 10.f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(200.5f), 10592537251.77290f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(400.5f), 1.059253725177285e+20f, 0.00062f);
|
||||||
|
TEST_REL(bw_dB2linf(600.5f), 1.059253725177285e+30f, 0.00062f);
|
||||||
|
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(1.175494350822287e-38f), -758.5955890732326f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(1.e-30f), -600.f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(1.438449888287666e-27f), -536.8421052631579f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(2.069138081114798e-24f), -473.6842105263157f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(2.976351441631313e-21f), -410.5263157894737f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(4.281332398719396e-18f), -3.473684210526316e+02f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(6.158482110660280e-15f), -2.842105263157895e+02f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(8.858667904100795e-12f), -2.210526315789474e+02f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(1.274274985703132e-08f), -1.578947368421053e+02f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(1.832980710832437e-05f), -9.473684210526315e+01f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(2.636650898730366e-02f), -3.157894736842103e+01f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(1.f), 0.f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(1.3f), 2.278867046136735f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(3.792690190732238e+01f), 3.157894736842103e+01f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(5.455594781168515e+04f), 9.473684210526315e+01f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(7.847599703514622e+07f), 1.578947368421053e+02f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(1.128837891684693e+11f), 2.210526315789474e+02f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(1.623776739188718e+14f), 2.842105263157895e+02f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(2.335721469090121e+17f), 3.473684210526316e+02f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(3.359818286283788e+20f), 4.105263157894737e+02f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(4.832930238571732e+23f), 4.736842105263157e+02f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(6.951927961775592e+26f), 5.368421052631579e+02f, 0.032f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_lin2dBf(1e+30f), 6.000000000000000e+02f, 0.032f, 0.012f);
|
||||||
|
|
||||||
|
TEST_ABS_REL(bw_sqrtf(0.f), 0.f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(1e-28f), 1e-14f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5e-20f), 2.236067977499790e-10f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5e-15f), 7.071067811865476e-08f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5e-10f), 2.236067977499790e-05f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5e-5f), 7.071067811865475e-03f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(1.f), 1.f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5.f), 2.236067977499790f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5e5f), 707.1067811865476f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5e10f), 223606.7977499790f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5e15f), 70710678.11865476f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5e20f), 22360679774.99790f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5e25f), 7071067811865.476f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5e30f), 2.236067977499790e+15f, 1.09e-19f, 0.000007f);
|
||||||
|
TEST_ABS_REL(bw_sqrtf(5e35f), 7.071067811865476e+17f, 1.09e-19f, 0.000007f);
|
||||||
|
|
||||||
|
TEST_ABS_REL(bw_tanhf(-INFINITY), -1.f, 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-2.5f), tanhf(-2.5f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-2.0f), tanhf(-2.0f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-1.5f), tanhf(-1.5f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-1.0f), tanhf(-1.0f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-0.9f), tanhf(-0.9f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-0.8f), tanhf(-0.8f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-0.7f), tanhf(-0.7f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-0.6f), tanhf(-0.6f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-0.5f), tanhf(-0.5f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-0.4f), tanhf(-0.4f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-0.3f), tanhf(-0.3f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-0.2f), tanhf(-0.2f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-0.1f), tanhf(-0.1f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(-0.0f), tanhf(-0.0f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(0.0f), tanhf(0.0f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(0.1f), tanhf(0.1f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(0.2f), tanhf(0.2f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(0.3f), tanhf(0.3f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(0.4f), tanhf(0.4f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(0.5f), tanhf(0.5f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(0.6f), tanhf(0.6f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(0.7f), tanhf(0.7f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(0.8f), tanhf(0.8f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(0.9f), tanhf(0.9f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(1.0f), tanhf(1.0f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(1.5f), tanhf(1.5f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(2.0f), tanhf(2.0f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(2.5f), tanhf(2.5f), 0.035f, 0.065f);
|
||||||
|
TEST_ABS_REL(bw_tanhf(INFINITY), 1.f, 0.035f, 0.065f);
|
||||||
|
|
||||||
|
TEST_ABS_REL(bw_sinhf(-80.f), sinhf(-80.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-70.f), sinhf(-70.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-60.f), sinhf(-60.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-50.f), sinhf(-50.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-40.f), sinhf(-40.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-30.f), sinhf(-30.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-20.f), sinhf(-20.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-10.f), sinhf(-10.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-9.f), sinhf(-9.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-8.f), sinhf(-8.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-7.f), sinhf(-7.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-6.f), sinhf(-6.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-5.f), sinhf(-5.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-4.f), sinhf(-4.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-3.f), sinhf(-3.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-2.f), sinhf(-2.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-1.f), sinhf(-1.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-1e-1f), sinhf(-1e-1f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-1e-2f), sinhf(-1e-2f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-1e-3f), sinhf(-1e-3f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-1e-4f), sinhf(-1e-4f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-1e-5f), sinhf(-1e-5f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-1e-6f), sinhf(-1e-6f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-1e-7f), sinhf(-1e-7f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-1e-8f), sinhf(-1e-8f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-1e-9f), sinhf(-1e-9f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(-0.f), 0.f, 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(0.f), 0.f, 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(1e-9f), sinhf(1e-9f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(1e-8f), sinhf(1e-8f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(1e-7f), sinhf(1e-7f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(1e-6f), sinhf(1e-6f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(1e-5f), sinhf(1e-5f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(1e-4f), sinhf(1e-4f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(1e-3f), sinhf(1e-3f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(1e-2f), sinhf(1e-2f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(1e-1f), sinhf(1e-1f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(1.f), sinhf(1.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(2.f), sinhf(2.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(3.f), sinhf(3.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(4.f), sinhf(4.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(5.f), sinhf(5.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(6.f), sinhf(6.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(7.f), sinhf(7.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(8.f), sinhf(8.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(9.f), sinhf(9.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(10.f), sinhf(10.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(20.f), sinhf(20.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(30.f), sinhf(30.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(40.f), sinhf(40.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(50.f), sinhf(50.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(60.f), sinhf(60.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(70.f), sinhf(70.f), 1e-7f, 0.0007f);
|
||||||
|
TEST_ABS_REL(bw_sinhf(80.f), sinhf(80.f), 1e-7f, 0.0007f);
|
||||||
|
|
||||||
|
TEST_REL(bw_coshf(-80.f), coshf(-80.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-70.f), coshf(-70.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-60.f), coshf(-60.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-50.f), coshf(-50.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-40.f), coshf(-40.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-30.f), coshf(-30.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-20.f), coshf(-20.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-10.f), coshf(-10.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-9.f), coshf(-9.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-8.f), coshf(-8.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-7.f), coshf(-7.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-6.f), coshf(-6.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-5.f), coshf(-5.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-4.f), coshf(-4.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-3.f), coshf(-3.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-2.f), coshf(-2.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-1.f), coshf(-1.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-1e-1f), coshf(-1e-1f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-1e-2f), coshf(-1e-2f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-1e-3f), coshf(-1e-3f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-1e-4f), coshf(-1e-4f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-1e-5f), coshf(-1e-5f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-1e-6f), coshf(-1e-6f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-1e-7f), coshf(-1e-7f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-1e-8f), coshf(-1e-8f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-1e-9f), coshf(-1e-9f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(-0.f), 1.f, 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(0.f), 1.f, 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(1e-9f), coshf(1e-9f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(1e-8f), coshf(1e-8f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(1e-7f), coshf(1e-7f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(1e-6f), coshf(1e-6f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(1e-5f), coshf(1e-5f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(1e-4f), coshf(1e-4f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(1e-3f), coshf(1e-3f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(1e-2f), coshf(1e-2f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(1e-1f), coshf(1e-1f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(1.f), coshf(1.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(2.f), coshf(2.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(3.f), coshf(3.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(4.f), coshf(4.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(5.f), coshf(5.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(6.f), coshf(6.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(7.f), coshf(7.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(8.f), coshf(8.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(9.f), coshf(9.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(10.f), coshf(10.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(20.f), coshf(20.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(30.f), coshf(30.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(40.f), coshf(40.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(50.f), coshf(50.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(60.f), coshf(60.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(70.f), coshf(70.f), 0.0007f);
|
||||||
|
TEST_REL(bw_coshf(80.f), coshf(80.f), 0.0007f);
|
||||||
|
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e37f), asinhf(-1e37f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e30f), asinhf(-1e30f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e20f), asinhf(-1e20f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e10f), asinhf(-1e10f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e5f), asinhf(-1e5f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-100.f), asinhf(-100.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-80.f), asinhf(-80.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-70.f), asinhf(-70.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-60.f), asinhf(-60.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-50.f), asinhf(-50.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-40.f), asinhf(-40.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-30.f), asinhf(-30.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-20.f), asinhf(-20.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-10.f), asinhf(-10.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-9.f), asinhf(-9.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-8.f), asinhf(-8.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-7.f), asinhf(-7.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-6.f), asinhf(-6.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-5.f), asinhf(-5.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-4.f), asinhf(-4.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-3.f), asinhf(-3.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-2.f), asinhf(-2.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1.f), asinhf(-1.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e-1f), asinhf(-1e-1f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e-2f), asinhf(-1e-2f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e-3f), asinhf(-1e-3f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e-4f), asinhf(-1e-4f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e-5f), asinhf(-1e-5f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e-6f), asinhf(-1e-6f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e-7f), asinhf(-1e-7f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e-8f), asinhf(-1e-8f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-1e-9f), asinhf(-1e-9f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(-0.f), 0.f, 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(0.f), 0.f, 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e-9f), asinhf(1e-9f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e-8f), asinhf(1e-8f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e-7f), asinhf(1e-7f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e-6f), asinhf(1e-6f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e-5f), asinhf(1e-5f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e-4f), asinhf(1e-4f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e-3f), asinhf(1e-3f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e-2f), asinhf(1e-2f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e-1f), asinhf(1e-1f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1.f), asinhf(1.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(2.f), asinhf(2.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(3.f), asinhf(3.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(4.f), asinhf(4.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(5.f), asinhf(5.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(6.f), asinhf(6.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(7.f), asinhf(7.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(8.f), asinhf(8.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(9.f), asinhf(9.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(10.f), asinhf(10.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(20.f), asinhf(20.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(30.f), asinhf(30.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(40.f), asinhf(40.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(50.f), asinhf(50.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(60.f), asinhf(60.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(70.f), asinhf(70.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(80.f), asinhf(80.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(100.f), asinhf(100.f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e5f), asinhf(1e5f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e10f), asinhf(1e10f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e20f), asinhf(1e20f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e30f), asinhf(1e30f), 0.004f, 0.012f);
|
||||||
|
TEST_ABS_REL(bw_asinhf(1e37f), asinhf(1e37f), 0.004f, 0.012f);
|
||||||
|
|
||||||
|
TEST_ABS_REL(bw_acoshf(1.f), acoshf(1.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(2.f), acoshf(2.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(3.f), acoshf(3.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(4.f), acoshf(4.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(5.f), acoshf(5.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(6.f), acoshf(6.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(7.f), acoshf(7.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(8.f), acoshf(8.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(9.f), acoshf(9.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(10.f), acoshf(10.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(20.f), acoshf(20.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(30.f), acoshf(30.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(40.f), acoshf(40.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(50.f), acoshf(50.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(60.f), acoshf(60.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(70.f), acoshf(70.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(80.f), acoshf(80.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(100.f), acoshf(100.f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(1e5f), acoshf(1e5f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(1e10f), acoshf(1e10f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(1e20f), acoshf(1e20f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(1e30f), acoshf(1e30f), 0.004f, 0.008f);
|
||||||
|
TEST_ABS_REL(bw_acoshf(1e37f), acoshf(1e37f), 0.004f, 0.008f);
|
||||||
|
|
||||||
printf("\nsuceeded: %d, failed: %d\n\n", n_ok, n_ko);
|
printf("\nsuceeded: %d, failed: %d\n\n", n_ok, n_ko);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user