Rework CWRS code.
[opus.git] / tests / cwrs64-test.c
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include "cwrs.h"
7 #define NMAX (32)
8 #define MMAX (16)
9
10 int main(int _argc,char **_argv){
11   int n;
12   for(n=0;n<=NMAX;n+=3){
13     int m;
14     for(m=0;m<=MMAX;m++){
15       celt_uint64_t uu[NMAX];
16       celt_uint64_t inc;
17       celt_uint64_t nc;
18       celt_uint64_t i;
19       nc=ncwrs_u64(n,m,uu);
20       /*Testing all cases just wouldn't work!*/
21       inc=nc/1000;
22       if(inc<1)inc=1;
23       /*printf("%d/%d: %llu",n,m, nc);*/
24       for(i=0;i<nc;i+=inc){
25         celt_uint64_t u[NMAX];
26         int           x[MMAX];
27         int           s[MMAX];
28         int           x2[MMAX];
29         int           s2[MMAX];
30         int           y[NMAX];
31         int           k;
32         memcpy(u,uu,n*sizeof(*u));
33         cwrsi64(n,m,i,x,s,u);
34         /*printf("%llu of %llu:",i,nc);
35         for(k=0;k<m;k++){
36           printf(" %c%i",k>0&&x[k]==x[k-1]?' ':s[k]?'-':'+',x[k]);
37         }
38         printf(" ->");*/
39         memcpy(u,uu,n*sizeof(*u));
40         if(icwrs64(n,m,x,s,u)!=i){
41           fprintf(stderr,"Combination-index mismatch.\n");
42           return 1;
43         }
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 }