treelite
quantize_func.h
1 const char* quantize_func =
2 " private static int quantize(float val, int fid) {\n"
3 " final int offset = th_begin[fid];\n"
4 " final int len = th_len[fid];\n"
5 " int low = 0;\n"
6 " int high = len;\n"
7 " int mid;\n"
8 " float mval;\n"
9 " if (val < threshold[offset + 0]) {\n"
10 " return -10;\n"
11 " }\n"
12 " while (low + 1 < high) {\n"
13 " mid = (low + high) / 2;\n"
14 " mval = threshold[offset + mid];\n"
15 " if (val == mval) {\n"
16 " return mid * 2;\n"
17 " } else if (val < mval) {\n"
18 " high = mid;\n"
19 " } else {\n"
20 " low = mid;\n"
21 " }\n"
22 " }\n"
23 " if (threshold[offset + low] == val) {\n"
24 " return low * 2;\n"
25 " } else if (high == len) {\n"
26 " return len * 2;\n"
27 " } else {\n"
28 " return low * 2 + 1;\n"
29 " }\n"
30 " }\n";