1*638691a0SAndroid Build Coastguard Worker /* Verify correctness of the sum-of-square routines */ 2*638691a0SAndroid Build Coastguard Worker #include <stdio.h> 3*638691a0SAndroid Build Coastguard Worker #include <stdlib.h> 4*638691a0SAndroid Build Coastguard Worker #include <time.h> 5*638691a0SAndroid Build Coastguard Worker 6*638691a0SAndroid Build Coastguard Worker /* These values should trigger leading/trailing array fragment handling */ 7*638691a0SAndroid Build Coastguard Worker #define NSAMP 200002 8*638691a0SAndroid Build Coastguard Worker #define OFFSET 1 9*638691a0SAndroid Build Coastguard Worker 10*638691a0SAndroid Build Coastguard Worker long long sumsq_wq(signed short *in,int cnt); 11*638691a0SAndroid Build Coastguard Worker long long sumsq_wq_ref(signed short *in,int cnt); 12*638691a0SAndroid Build Coastguard Worker main()13*638691a0SAndroid Build Coastguard Workerint main(){ 14*638691a0SAndroid Build Coastguard Worker int i; 15*638691a0SAndroid Build Coastguard Worker long long result,rresult; 16*638691a0SAndroid Build Coastguard Worker signed short samples[NSAMP]; 17*638691a0SAndroid Build Coastguard Worker 18*638691a0SAndroid Build Coastguard Worker srandom(time(NULL)); 19*638691a0SAndroid Build Coastguard Worker 20*638691a0SAndroid Build Coastguard Worker for(i=0;i<NSAMP;i++) 21*638691a0SAndroid Build Coastguard Worker samples[i] = random() & 0xffff; 22*638691a0SAndroid Build Coastguard Worker 23*638691a0SAndroid Build Coastguard Worker rresult = sumsq_wq(&samples[OFFSET],NSAMP-OFFSET); 24*638691a0SAndroid Build Coastguard Worker result = sumsq_wq(&samples[OFFSET],NSAMP-OFFSET); 25*638691a0SAndroid Build Coastguard Worker if(result == rresult){ 26*638691a0SAndroid Build Coastguard Worker printf("OK\n"); 27*638691a0SAndroid Build Coastguard Worker } else { 28*638691a0SAndroid Build Coastguard Worker printf("sum mismatch: %lld != %lld\n",result,rresult); 29*638691a0SAndroid Build Coastguard Worker } 30*638691a0SAndroid Build Coastguard Worker exit(0); 31*638691a0SAndroid Build Coastguard Worker } 32*638691a0SAndroid Build Coastguard Worker sumsq_wq_ref(signed short * in,int cnt)33*638691a0SAndroid Build Coastguard Workerlong long sumsq_wq_ref(signed short *in,int cnt){ 34*638691a0SAndroid Build Coastguard Worker long long sum = 0; 35*638691a0SAndroid Build Coastguard Worker int i; 36*638691a0SAndroid Build Coastguard Worker 37*638691a0SAndroid Build Coastguard Worker for(i=0;i<cnt;i++){ 38*638691a0SAndroid Build Coastguard Worker sum += (long)in[i] * in[i]; 39*638691a0SAndroid Build Coastguard Worker } 40*638691a0SAndroid Build Coastguard Worker return sum; 41*638691a0SAndroid Build Coastguard Worker } 42*638691a0SAndroid Build Coastguard Worker 43