diff options
author | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2014-06-19 00:24:14 -0400 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2014-06-19 00:24:14 -0400 |
commit | 9618b5cb6308961861ffffdf3794fc0d07bea2f3 (patch) | |
tree | 5ddbb6b85af75a83f8bd8e48986484f354be9fab /celt/vq.c | |
parent | a88d8365d42e5369777afa496b43ea88a1aa9106 (diff) | |
download | opus-exp_mips_alt_jun03.tar.gz |
C equivalent of the MIPS codeexp_mips_alt_jun03
Diffstat (limited to 'celt/vq.c')
-rw-r--r-- | celt/vq.c | 27 |
1 files changed, 24 insertions, 3 deletions
@@ -349,11 +349,32 @@ void renormalise_vector(celt_norm *X, int N, opus_val16 gain) #ifdef FIXED_POINT int k; #endif - opus_val32 E; + opus_val32 E = EPSILON; opus_val16 g; opus_val32 t; - celt_norm *xptr; - E = EPSILON + celt_inner_prod(X, X, N); + celt_norm *xptr = X; + + int X0, X2, X3, X1; + { + long long ac1 = ((long long)E); + /*if(N %4) + printf("error");*/ + for (i=0;i<N-2;i+=2) + { + X0 = (int)*xptr++; + ac1 += ( ((long long)X0) * ((long long)X0) ); + + X1 = (int)*xptr++; + ac1 += ( ((long long)X1) * ((long long)X1) ); + } + for (;i<N;i++) + { + X0 = (int)*xptr++; + ac1 += ( ((long long)X0) * ((long long)X0) ); + } + E = ac1; + } + #ifdef FIXED_POINT k = celt_ilog2(E)>>1; #endif |