diff options
Diffstat (limited to 'sqtest.c')
-rw-r--r-- | sqtest.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/sqtest.c b/sqtest.c new file mode 100644 index 0000000..b2abb09 --- /dev/null +++ b/sqtest.c @@ -0,0 +1,42 @@ +/* Verify correctness of the sum-of-square routines */ +#include <stdio.h> +#include <stdlib.h> +#include <time.h> + +/* These values should trigger leading/trailing array fragment handling */ +#define NSAMP 200002 +#define OFFSET 1 + +long long sumsq_wq(signed short *in,int cnt); +long long sumsq_wq_ref(signed short *in,int cnt); + +int main(){ + int i; + long long result,rresult; + signed short samples[NSAMP]; + + srandom(time(NULL)); + + for(i=0;i<NSAMP;i++) + samples[i] = random() & 0xffff; + + rresult = sumsq_wq(&samples[OFFSET],NSAMP-OFFSET); + result = sumsq_wq(&samples[OFFSET],NSAMP-OFFSET); + if(result == rresult){ + printf("OK\n"); + } else { + printf("sum mismatch: %lld != %lld\n",result,rresult); + } + exit(0); +} + +long long sumsq_wq_ref(signed short *in,int cnt){ + long long sum = 0; + int i; + + for(i=0;i<cnt;i++){ + sum += (long)in[i] * in[i]; + } + return sum; +} + |