/* Verify correctness of the sum-of-square routines */ #include #include #include /* 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; }