1 /-------------- 3 --------------\
3 +-- 2 --v-- 3 --v-- 3 --v-- 1 --+
5 q[ 0] = (+ h[ 5] - h[ 7] + h[10] + h[13] + h[14]);
6 q[ 1] = (+ h[ 6] - h[ 8] + h[11] + h[14] - h[15]);
7 q[ 2] = (+ h[ 7] + h[ 9] - h[12] + h[15] + h[ 0]);
8 q[ 3] = (+ h[ 8] - h[10] + h[13] + h[ 0] - h[ 1]);
9 q[ 4] = (+ h[ 9] - h[11] - h[14] + h[ 1] + h[ 2]);
10 q[ 5] = (+ h[10] - h[12] + h[15] - h[ 2] + h[ 3]);
11 q[ 6] = (- h[11] + h[13] - h[ 0] - h[ 3] + h[ 4]);
12 q[ 7] = (- h[12] - h[14] + h[ 1] - h[ 4] - h[ 5]);
13 q[ 8] = (+ h[13] - h[15] + h[ 2] - h[ 5] - h[ 6]);
14 q[ 9] = (+ h[14] + h[ 0] - h[ 3] + h[ 6] - h[ 7]);
15 q[10] = (+ h[15] - h[ 1] - h[ 4] - h[ 7] + h[ 8]);
16 q[11] = (- h[ 0] - h[ 2] - h[ 5] + h[ 8] + h[ 9]);
17 q[12] = (+ h[ 1] + h[ 3] - h[ 6] - h[ 9] + h[10]);
18 q[13] = (+ h[ 2] + h[ 4] + h[ 7] + h[10] + h[11]);
19 q[14] = (+ h[ 3] - h[ 5] + h[ 8] - h[11] - h[12]);
20 q[15] = (- h[ 4] - h[ 6] - h[ 9] + h[12] + h[13]);
23 q[ 0] = (+ h[ 5] - h[ 7] + h[10] + h[13] + h[14]);
24 q[ 3] = (+ h[ 8] - h[10] + h[13] + h[ 0] - h[ 1]);
25 q[ 6] = (- h[11] + h[13] - h[ 0] - h[ 3] + h[ 4]);
26 q[ 9] = (+ h[14] + h[ 0] - h[ 3] + h[ 6] - h[ 7]);
27 q[12] = (+ h[ 1] + h[ 3] - h[ 6] - h[ 9] + h[10]);
28 q[15] = (- h[ 4] - h[ 6] - h[ 9] + h[12] + h[13]);
29 q[ 2] = (+ h[ 7] + h[ 9] - h[12] + h[15] + h[ 0]);
30 q[ 5] = (+ h[10] - h[12] + h[15] - h[ 2] + h[ 3]);
31 q[ 8] = (+ h[13] - h[15] + h[ 2] - h[ 5] - h[ 6]);
32 q[11] = (- h[ 0] - h[ 2] - h[ 5] + h[ 8] + h[ 9]);
33 q[14] = (+ h[ 3] - h[ 5] + h[ 8] - h[11] - h[12]);
34 q[ 1] = (+ h[ 6] - h[ 8] + h[11] + h[14] - h[15]);
35 q[ 4] = (+ h[ 9] - h[11] - h[14] + h[ 1] + h[ 2]);
36 q[ 7] = (- h[12] - h[14] + h[ 1] - h[ 4] - h[ 5]);
37 q[10] = (+ h[15] - h[ 1] - h[ 4] - h[ 7] + h[ 8]);
38 q[13] = (+ h[ 2] + h[ 4] + h[ 7] + h[10] + h[11]);
40 Q = 0; A=5; B=7; C=10; D=13; E=14; F=11; G=8;
41 Q = * A * B * C * D * E
42 Q+=3; A=G; G=F; F=E; E+=3; B=C; C=D; D+=3;
44 G=5; F=8; E=11; C=7; D=10;
66 +---------- 0x4222 / 0x2224
67 | +-------- 0x3AF7 / 0x7FA3
68 | | +------ 0xC725 / 0x527C
69 | | | +---- 0x4956 / 0x6594
70 | | | | +-- 0x50D2 / 0x2D05
94 /* signs (in order 0..15) */