ref: 0c387d7818a3f83442cd14b8ab20e17dc262f1a0
parent: e84b96bbc16dca4d6fbdafbd6387b8ade26b1328
author: Jean-Marc Valin <[email protected]>
date: Mon Jan 28 18:01:58 EST 2008
64-bit test for cwrs
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,9 +1,9 @@
INCLUDES = -I$(top_srcdir)/libcelt
METASOURCES = AUTO
-TESTS = ectest cwrs32-test
+TESTS = ectest cwrs32-test cwrs64-test
-bin_PROGRAMS = ectest cwrs32-test
+bin_PROGRAMS = ectest cwrs32-test cwrs64-test
ectest_SOURCES = ectest.c
ectest_LDADD = $(top_builddir)/libcelt/libcelt.la
@@ -10,3 +10,6 @@
cwrs32_test_SOURCES = cwrs32-test.c
cwrs32_test_LDADD = $(top_builddir)/libcelt/libcelt.la
+
+cwrs64_test_SOURCES = cwrs64-test.c
+cwrs64_test_LDADD = $(top_builddir)/libcelt/libcelt.la
--- a/tests/cwrs32-test.c
+++ b/tests/cwrs32-test.c
@@ -9,10 +9,14 @@
for(n=0;n<=NMAX;n++){
int m;
for(m=0;m<=MMAX;m++){
+ unsigned inc;
unsigned nc;
unsigned i;
nc=ncwrs(n,m);
- for(i=0;i<nc;i++){
+ inc = nc/10000;
+ if (inc<1)
+ inc = 1;
+ for(i=0;i<nc;i+=inc){
int x[MMAX];
int s[MMAX];
int x2[MMAX];
--- /dev/null
+++ b/tests/cwrs64-test.c
@@ -1,0 +1,51 @@
+#include <stdio.h>
+#include "cwrs.h"
+#define NMAX (32)
+#define MMAX (16)
+
+int main(int _argc,char **_argv){
+ int n;
+ for(n=0;n<=NMAX;n+=3){
+ int m;
+ for(m=0;m<=MMAX;m++){
+ celt_uint64_t inc;
+ celt_uint64_t nc;
+ celt_uint64_t i;
+ nc=ncwrs64(n,m);
+ /* Testing all cases just wouldn't work! */
+ inc = nc/1000;
+ if (inc<1)
+ inc = 1;
+ /*printf("%d/%d: %llu",n,m, nc);*/
+ for(i=0;i<nc;i+=inc){
+ int x[MMAX];
+ int s[MMAX];
+ int x2[MMAX];
+ int s2[MMAX];
+ int y[NMAX];
+ int j;
+ int k;
+ cwrsi64(n,m,i,x,s);
+ /*printf("%llu of %llu:",i,nc);
+ for(k=0;k<m;k++){
+ printf(" %c%i",k>0&&x[k]==x[k-1]?' ':s[k]?'-':'+',x[k]);
+ }
+ printf(" ->");*/
+ if(icwrs64(n,m,x,s)!=i){
+ fprintf(stderr,"Combination-index mismatch.\n");
+ return 1;
+ }
+ comb2pulse(n,m,y,x,s);
+ /*for(j=0;j<n;j++)printf(" %c%i",y[j]?y[j]<0?'-':'+':' ',abs(y[j]));
+ printf("\n");*/
+ pulse2comb(n,m,x2,s2,y);
+ for(k=0;k<m;k++)if(x[k]!=x2[k]||s[k]!=s2[k]){
+ fprintf(stderr,"Pulse-combination mismatch.\n");
+ return 1;
+ }
+ }
+ /*printf("\n");*/
+ }
+ }
+ return 0;
+}
\ No newline at end of file