pvq: use small LUT for integer sqrt((n+3)/2) sqrt((n+2)/2)
[daala.git] / tools / gen_sqrt_tbl.c
1 #include <stdio.h>
2 #include <stdint.h>
3 #include <math.h>
4 #include "../src/odintrin.h"
5 #define OD_SQRT_TBL_SHIFT (10)
6
7 int main()
8 {
9   int i;
10   static int n[13] = {0, 0, 0, 0, 8, 15, 32, 0, 128, 0, 512, 0, 2048};
11   printf("static const od_val16 table[2][13] = {\n");
12   printf("{");
13   for (i = 0; i < 13; i++) {
14     if (n[i]) {
15       printf("%d, ", OD_MINI(32767, (int32_t)floor(.5
16        + (1 << OD_SQRT_TBL_SHIFT)*sqrt((n[i] + 2)/2.))));
17     }
18     else {
19       printf("0, ");
20     }
21   }
22   printf("},\n");
23   printf("{");
24   for (i = 0; i < 13; i++) {
25     if (n[i]) {
26       printf("%d, ", OD_MINI(32767, (int32_t)floor(.5
27        + (1 << OD_SQRT_TBL_SHIFT)*sqrt((n[i] + 3)/2.))));
28     }
29     else {
30       printf("0, ");
31     }
32   }
33   printf("}};\n");
34   return 0;
35 }