Fix Jean-Marc's sqrt(0.5) constants.
authorTimothy B. Terriberry <tterribe@xiph.org>
Sun, 9 Jan 2011 06:11:46 +0000 (22:11 -0800)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Sun, 9 Jan 2011 06:40:05 +0000 (01:40 -0500)
There were two different ones in use, one with less precision than
 a float, and the other missing a digit in the middle.

libcelt/bands.c
libcelt/celt.c

index 6f764c6..09ff354 100644 (file)
@@ -225,8 +225,8 @@ static void stereo_split(celt_norm *X, celt_norm *Y, int N)
    for (j=0;j<N;j++)
    {
       celt_norm r, l;
-      l = MULT16_16_Q15(QCONST16(.70711f,15), X[j]);
-      r = MULT16_16_Q15(QCONST16(.70711f,15), Y[j]);
+      l = MULT16_16_Q15(QCONST16(.70710678f,15), X[j]);
+      r = MULT16_16_Q15(QCONST16(.70710678f,15), Y[j]);
       X[j] = l+r;
       Y[j] = r-l;
    }
@@ -459,8 +459,8 @@ void haar1(celt_norm *X, int N0, int stride)
       for (j=0;j<N0;j++)
       {
          celt_norm tmp1, tmp2;
-         tmp1 = MULT16_16_Q15(QCONST16(.7070678f,15), X[stride*2*j+i]);
-         tmp2 = MULT16_16_Q15(QCONST16(.7070678f,15), X[stride*(2*j+1)+i]);
+         tmp1 = MULT16_16_Q15(QCONST16(.70710678f,15), X[stride*2*j+i]);
+         tmp2 = MULT16_16_Q15(QCONST16(.70710678f,15), X[stride*(2*j+1)+i]);
          X[stride*2*j+i] = tmp1 + tmp2;
          X[stride*(2*j+1)+i] = tmp1 - tmp2;
       }
index b2f875f..c05120b 100644 (file)
@@ -436,7 +436,7 @@ static const signed char tf_select_table[4][8] = {
 static celt_word32 l1_metric(const celt_norm *tmp, int N, int LM, int width)
 {
    int i, j;
-   static const celt_word16 sqrtM_1[4] = {Q15ONE, QCONST16(0.70711f,15), QCONST16(0.5f,15), QCONST16(0.35355f,15)};
+   static const celt_word16 sqrtM_1[4] = {Q15ONE, QCONST16(.70710678f,15), QCONST16(0.5f,15), QCONST16(0.35355339f,15)};
    celt_word32 L1;
    celt_word16 bias;
    L1=0;