Fixes FEC issues introduced in 7fcd66c
[opus.git] / src / mlp.c
index dd3690d..90e94a5 100644 (file)
--- a/src/mlp.c
+++ b/src/mlp.c
@@ -25,6 +25,9 @@
    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 
 #include <math.h>
 #include "mlp.h"
@@ -33,7 +36,6 @@
 #define MAX_NEURONS 100
 
 #ifdef FIXED_POINT
-extern const opus_val16 tansig_table[501];
 static inline opus_val16 tansig_approx(opus_val32 _x) /* Q19 */
 {
        int i;
@@ -60,11 +62,11 @@ static inline opus_val16 tansig_approx(opus_val32 _x) /* Q19 */
 }
 #else
 /*extern const float tansig_table[501];*/
-static inline double tansig_approx(double x)
+static inline opus_val16 tansig_approx(opus_val16 x)
 {
        int i;
-       double y, dy;
-       double sign=1;
+       opus_val16 y, dy;
+       opus_val16 sign=1;
     if (x>=8)
         return 1;
     if (x<=-8)
@@ -74,8 +76,8 @@ static inline double tansig_approx(double x)
           x=-x;
           sign=-1;
        }
-       i = lrint(25*x);
-       x -= .04*i;
+       i = (int)floor(.5f+25*x);
+       x -= .04f*i;
        y = tansig_table[i];
        dy = 1-y*y;
        y = y + x*dy*(1 - y*x);