diff --git a/dnn/arch.h b/dnn/arch.h index 52de62334b71a7d07fac3daa4ae6c104d63d0718..0f29b49f990d71ffe44fcda8c79ac500117d64d1 100644 --- a/dnn/arch.h +++ b/dnn/arch.h @@ -157,22 +157,6 @@ typedef float celt_sig; typedef float celt_norm; typedef float celt_ener; -#ifdef FLOAT_APPROX -/* This code should reliably detect NaN/inf even when -ffast-math is used. - Assumes IEEE 754 format. */ -static OPUS_INLINE int celt_isnan(float x) -{ - union {float f; opus_uint32 i;} in; - in.f = x; - return ((in.i>>23)&0xFF)==0xFF && (in.i&0x007FFFFF)!=0; -} -#else -#ifdef __FAST_MATH__ -#error Cannot build libopus with -ffast-math unless FLOAT_APPROX is defined. This could result in crashes on extreme (e.g. NaN) input -#endif -#define celt_isnan(x) ((x)!=(x)) -#endif - #define Q15ONE 1.0f #define NORM_SCALING 1.f diff --git a/dnn/vec.h b/dnn/vec.h index 3853d844a274bce49801fe39e0f478db5a1e4826..0b9c289f43df4b107483f34590b1d07a11118f7e 100644 --- a/dnn/vec.h +++ b/dnn/vec.h @@ -52,22 +52,13 @@ static float tansig_approx(float x) int i; float y, dy; float sign=1; - /* Tests are reversed to catch NaNs */ - if (!(x<8)) - return 1; - if (!(x>-8)) - return -1; -#ifndef FIXED_POINT - /* Another check in case of -ffast-math */ - if (celt_isnan(x)) - return 0; -#endif if (x<0) { x=-x; sign=-1; } i = (int)floor(.5f+25*x); + i = IMAX(0, IMIN(200, i)); x -= .04f*i; y = tansig_table[i]; dy = 1-y*y;