diff libtwamr/inv_sqrt.h @ 253:54f6bc41ed10

libtwamr: integrate a* modules
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 05 Apr 2024 06:08:15 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/inv_sqrt.h	Fri Apr 05 06:08:15 2024 +0000
@@ -0,0 +1,54 @@
+/*
+********************************************************************************
+*
+*      GSM AMR-NB speech codec   R98   Version 7.6.0   December 12, 2001
+*                                R99   Version 3.3.0                
+*                                REL-4 Version 4.1.0                
+*
+********************************************************************************
+*
+*      File             : inv_sqrt.h
+*      Purpose          : Computes 1/sqrt(L_x),  where  L_x is positive.
+*                       : If L_x is negative or zero, the result is
+*                       : 1 (3fff ffff).
+*      Description      : The function 1/sqrt(L_x) is approximated by a table 
+*                       : and linear interpolation. The inverse square root is 
+*                       : computed using the following steps:
+*               1- Normalization of L_x.
+*               2- If (30-exponent) is even then shift right once.
+*               3- exponent = (30-exponent)/2  +1
+*               4- i = bit25-b31 of L_x;  16<=i<=63  because of normalization.
+*               5- a = bit10-b24
+*               6- i -=16
+*               7- L_y = table[i]<<16 - (table[i] - table[i+1]) * a * 2
+*               8- L_y >>= exponent
+*
+********************************************************************************
+*/
+#ifndef inv_sqrt_h
+#define inv_sqrt_h "$Id $"
+ 
+/*
+********************************************************************************
+*                         INCLUDE FILES
+********************************************************************************
+*/
+#include "typedef.h"
+
+/*
+********************************************************************************
+*                         DEFINITION OF DATA TYPES
+********************************************************************************
+*/
+ 
+/*
+********************************************************************************
+*                         DECLARATION OF PROTOTYPES
+********************************************************************************
+*/
+ 
+Word32 Inv_sqrt (      /* (o) : output value   (range: 0<=val<1)            */
+    Word32 L_x           /* (i) : input value    (range: 0<=val<=7fffffff)    */
+);
+ 
+#endif