optimisation: Removed a bunch of conditional branches from comb2pulse()
[opus.git] / tests / cwrs32-test.c
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include "cwrs.h"
7 #include <string.h>
8 #define NMAX (10)
9 #define MMAX (9)
10
11 int main(int _argc,char **_argv){
12   int n;
13   for(n=2;n<=NMAX;n++){
14     int m;
15     for(m=0;m<=MMAX;m++){
16       celt_uint32_t uu[NMAX];
17       celt_uint32_t inc;
18       celt_uint32_t nc;
19       celt_uint32_t i;
20       nc=ncwrs_u32(n,m,uu);
21       inc=nc/10000;
22       if(inc<1)inc=1;
23       for(i=0;i<nc;i+=inc){
24         celt_uint32_t u[NMAX];
25         int           x[MMAX+1];
26         int           s[MMAX];
27         int           x2[MMAX];
28         int           s2[MMAX];
29         int           y[NMAX];
30         int           k;
31         memcpy(u,uu,n*sizeof(*u));
32         cwrsi32(n,m,i,x,s,u);
33         /*printf("%6u of %u:",i,nc);*/
34         /*for(k=0;k<m;k++){
35           printf(" %c%i",k>0&&x[k]==x[k-1]?' ':s[k]?'-':'+',x[k]);
36         }
37         printf(" ->");*/
38         memcpy(u,uu,n*sizeof(*u));
39         if(icwrs32(n,m,x,s,u)!=i){
40           fprintf(stderr,"Combination-index mismatch.\n");
41           return 1;
42         }
43         x[m] = -1;
44         comb2pulse(n,m,y,x,s);
45         /*for(j=0;j<n;j++)printf(" %c%i",y[j]?y[j]<0?'-':'+':' ',abs(y[j]));
46         printf("\n");*/
47         pulse2comb(n,m,x2,s2,y);
48         for(k=0;k<m;k++)if(x[k]!=x2[k]||s[k]!=s2[k]){
49           fprintf(stderr,"Pulse-combination mismatch.\n");
50           return 1;
51         }
52       }
53       /*printf("\n");*/
54     }
55   }
56   return 0;
57 }