diff options
Diffstat (limited to 'externals/vanilla/d_math.c')
-rw-r--r-- | externals/vanilla/d_math.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/externals/vanilla/d_math.c b/externals/vanilla/d_math.c new file mode 100644 index 00000000..10f27cfe --- /dev/null +++ b/externals/vanilla/d_math.c @@ -0,0 +1,34 @@ +/* Copyright (c) 1997-2001 Miller Puckette and others. +* For information on usage and redistribution, and for a DISCLAIMER OF ALL +* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ + +/* mathematical functions and other transfer functions, including tilde + versions of stuff from x_acoustics.c. +*/ + +#include "d_math.h" + + /* these are used in externs like "bonk" */ + +t_float q8_rsqrt(t_float f) +{ + long l = *(long *)(&f); + if (f < 0) return (0); + else return (rsqrt_exptab[(l >> 23) & 0xff] * + rsqrt_mantissatab[(l >> 13) & 0x3ff]); +} + +t_float q8_sqrt(t_float f) +{ + long l = *(long *)(&f); + if (f < 0) return (0); + else return (f * rsqrt_exptab[(l >> 23) & 0xff] * + rsqrt_mantissatab[(l >> 13) & 0x3ff]); +} + + /* the old names are OK unless we're in IRIX N32 */ + +#ifndef N32 +t_float qsqrt(t_float f) {return (q8_sqrt(f)); } +t_float qrsqrt(t_float f) {return (q8_rsqrt(f)); } +#endif |