xref: /aosp_15_r20/external/fec/sqtest.c (revision 638691a093b4f9473cd6ee8f3e0139deef159a86)
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 Worker int 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 Worker long 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