MCPcopy Create free account
hub / github.com/MegEngine/MegCC / get_table

Function get_table

compiler/script/tool/cv_remap_table.cpp:40–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38}
39
40static short* get_table() {
41 const int ksize = 2;
42 if (init_table) {
43 return &global_table[0];
44 } else {
45 short* itab = global_table;
46 float _tab[8 * INTER_TAB_SIZE];
47 int i, j, k1, k2;
48 init_inter_tab_1d(_tab, INTER_TAB_SIZE);
49 for (i = 0; i < INTER_TAB_SIZE; ++i) {
50 for (j = 0; j < INTER_TAB_SIZE; ++j, itab += ksize * ksize) {
51 int isum = 0;
52 for (k1 = 0; k1 < ksize; ++k1) {
53 float vy = _tab[i * ksize + k1];
54 for (k2 = 0; k2 < ksize; ++k2) {
55 float v = vy * _tab[j * ksize + k2];
56 isum += itab[k1 * ksize + k2] =
57 SATURATE_CAST_SHORT(v * INTER_REMAP_COEF_SCALE);
58 }
59 }
60 if (isum != INTER_REMAP_COEF_SCALE) {
61 int diff = isum - INTER_REMAP_COEF_SCALE;
62 int ksize2 = ksize / 2, Mk1 = ksize2, Mk2 = ksize2;
63 int mk1 = ksize2, mk2 = ksize2;
64 for (k1 = ksize2; k1 < ksize2 + 2; ++k1)
65 for (k2 = ksize2; k2 < ksize2 + 2; ++k2) {
66 if (itab[k1 * ksize + k2] < itab[mk1 * ksize + mk2]) {
67 mk1 = k1;
68 mk2 = k2;
69 } else if (
70 itab[k1 * ksize + k2] > itab[Mk1 * ksize + Mk2]) {
71 Mk1 = k1;
72 Mk2 = k2;
73 }
74 }
75 if (diff < 0)
76 itab[Mk1 * ksize + Mk2] =
77 (short)(itab[Mk1 * ksize + Mk2] - diff);
78 else
79 itab[mk1 * ksize + mk2] =
80 (short)(itab[mk1 * ksize + mk2] - diff);
81 }
82 }
83 }
84 init_table = true;
85 return &global_table[0];
86 }
87}
88int main() {
89 short* table = get_table();
90 for (int i = 0; i < INTER_TAB_SIZE * INTER_TAB_SIZE; i++) {

Callers 1

mainFunction · 0.85

Calls 1

init_inter_tab_1dFunction · 0.85

Tested by

no test coverage detected