aboutsummaryrefslogtreecommitdiffstats
path: root/sqtest.c
diff options
context:
space:
mode:
Diffstat (limited to 'sqtest.c')
-rw-r--r--sqtest.c42
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;
+}
+