Skip to content

Commit

Permalink
Remove NaN checks
Browse files Browse the repository at this point in the history
  • Loading branch information
jmvalin committed Mar 20, 2019
1 parent aee5df3 commit 4d28f2a
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 26 deletions.
16 changes: 0 additions & 16 deletions src/arch.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 1 addition & 10 deletions src/vec.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 4d28f2a

Please sign in to comment.