coefficients_zhoufang = {
const keyLevels = [
0, 13, 0, 5,
1, 1300249, 0, 499250,
2, 213113, 287, 99357,
3, 351854, 0, 199965,
4, 801100, 0, 490999,
10, 704075, 297466, 303694,
22, 46613, 31917, 21469,
32, 47482, 30617, 21900,
44, 43024, 42131, 14826,
64, 36411, 43219, 20369,
72, 38477, 53843, 7678,
77, 40503, 51547, 7948,
85, 35865, 34108, 30026,
95, 34117, 36899, 28983,
102, 35464, 35049, 29485,
107, 16477, 18810, 14712,
112, 33360, 37954, 28685,
127, 35269, 36066, 28664
];
const coefficients_zhoufang = new Uint32Array(256 * 4);
let keyPrev, rightPrev, downleftPrev, downPrev;
keyPrev = keyLevels[0]
rightPrev = coefficients_zhoufang[0] = coefficients_zhoufang[255 * 4 + 0] = keyLevels[1];
downleftPrev = coefficients_zhoufang[1] = coefficients_zhoufang[255 * 4 + 1] = keyLevels[2];
downPrev = coefficients_zhoufang[2] = coefficients_zhoufang[255 * 4 + 2] = keyLevels[3];
coefficients_zhoufang[3] = coefficients_zhoufang[255 * 4 + 3] = keyLevels[1] + keyLevels[2] + keyLevels[3];
for (let i = 4; i < keyLevels.length; i += 4) {
const key = keyLevels[i],
right = keyLevels[i+1],
downleft = keyLevels[i+2],
down = keyLevels[i+3];
const delta = (key - keyPrev);
for (let j = 1; keyPrev + j <= key; j++) {
const keyj = (keyPrev + j) * 4,
rightj = (right * j + rightPrev * (delta - j)) / delta | 0,
downleftj = (downleft * j + downleftPrev * (delta - j)) / delta | 0,
downj = (down * j + downPrev * (delta - j)) / delta | 0,
sum = rightj + downleftj + downj;
coefficients_zhoufang[keyj] = coefficients_zhoufang[255*4 - keyj] = rightj;
coefficients_zhoufang[keyj + 1] = coefficients_zhoufang[255*4 - keyj + 1] = downleftj;
coefficients_zhoufang[keyj + 2] = coefficients_zhoufang[255*4 - keyj + 2] = downj;
coefficients_zhoufang[keyj + 3] = coefficients_zhoufang[255*4 - keyj + 3] = sum;
}
keyPrev = key;
rightPrev = right,
downleftPrev = downleft;
downPrev = down;
}
return coefficients_zhoufang
}