1 #define index(i, j, k, l) ((i) + 4 * ((j) + 4 * ((k) + 4 * (l))))
2 
3 /* order coefficients (i, j, k, l) by i + j + k + l, then i^2 + j^2 + k^2 + l^2 */
4 cache_align_(static const uchar perm_4[256]) = {
5   index(0, 0, 0, 0), /*   0 :  0 */
thread_count_omp(const zfp_stream * stream)6 
7   index(1, 0, 0, 0), /*   1 :  1 */
8   index(0, 1, 0, 0), /*   2 :  1 */
9   index(0, 0, 1, 0), /*   3 :  1 */
10   index(0, 0, 0, 1), /*   4 :  1 */
11 
12   index(1, 1, 0, 0), /*   5 :  2 */
13   index(0, 0, 1, 1), /*   6 :  2 */
14   index(1, 0, 1, 0), /*   7 :  2 */
15   index(0, 1, 0, 1), /*   8 :  2 */
16   index(1, 0, 0, 1), /*   9 :  2 */
17   index(0, 1, 1, 0), /*  10 :  2 */
18 
19   index(2, 0, 0, 0), /*  11 :  2 */
20   index(0, 2, 0, 0), /*  12 :  2 */
21   index(0, 0, 2, 0), /*  13 :  2 */
22   index(0, 0, 0, 2), /*  14 :  2 */
23 
24   index(0, 1, 1, 1), /*  15 :  3 */
25   index(1, 0, 1, 1), /*  16 :  3 */
26   index(1, 1, 0, 1), /*  17 :  3 */
27   index(1, 1, 1, 0), /*  18 :  3 */
28 
29   index(2, 1, 0, 0), /*  19 :  3 */
30   index(2, 0, 1, 0), /*  20 :  3 */
31   index(2, 0, 0, 1), /*  21 :  3 */
32   index(0, 2, 1, 0), /*  22 :  3 */
33   index(0, 2, 0, 1), /*  23 :  3 */
34   index(1, 2, 0, 0), /*  24 :  3 */
35   index(0, 0, 2, 1), /*  25 :  3 */
36   index(1, 0, 2, 0), /*  26 :  3 */
37   index(0, 1, 2, 0), /*  27 :  3 */
38   index(1, 0, 0, 2), /*  28 :  3 */
39   index(0, 1, 0, 2), /*  29 :  3 */
40   index(0, 0, 1, 2), /*  30 :  3 */
41 
42   index(3, 0, 0, 0), /*  31 :  3 */
43   index(0, 3, 0, 0), /*  32 :  3 */
44   index(0, 0, 3, 0), /*  33 :  3 */
45   index(0, 0, 0, 3), /*  34 :  3 */
46 
47   index(1, 1, 1, 1), /*  35 :  4 */
48 
49   index(2, 0, 1, 1), /*  36 :  4 */
50   index(2, 1, 0, 1), /*  37 :  4 */
51   index(2, 1, 1, 0), /*  38 :  4 */
52   index(1, 2, 0, 1), /*  39 :  4 */
53   index(1, 2, 1, 0), /*  40 :  4 */
54   index(0, 2, 1, 1), /*  41 :  4 */
55   index(1, 1, 2, 0), /*  42 :  4 */
56   index(0, 1, 2, 1), /*  43 :  4 */
57   index(1, 0, 2, 1), /*  44 :  4 */
58   index(0, 1, 1, 2), /*  45 :  4 */
59   index(1, 0, 1, 2), /*  46 :  4 */
60   index(1, 1, 0, 2), /*  47 :  4 */
61 
62   index(2, 2, 0, 0), /*  48 :  4 */
63   index(0, 0, 2, 2), /*  49 :  4 */
64   index(2, 0, 2, 0), /*  50 :  4 */
65   index(0, 2, 0, 2), /*  51 :  4 */
66   index(2, 0, 0, 2), /*  52 :  4 */
67   index(0, 2, 2, 0), /*  53 :  4 */
68 
69   index(3, 1, 0, 0), /*  54 :  4 */
70   index(3, 0, 1, 0), /*  55 :  4 */
71   index(3, 0, 0, 1), /*  56 :  4 */
72   index(0, 3, 1, 0), /*  57 :  4 */
73   index(0, 3, 0, 1), /*  58 :  4 */
74   index(1, 3, 0, 0), /*  59 :  4 */
75   index(0, 0, 3, 1), /*  60 :  4 */
76   index(1, 0, 3, 0), /*  61 :  4 */
77   index(0, 1, 3, 0), /*  62 :  4 */
78   index(1, 0, 0, 3), /*  63 :  4 */
79   index(0, 1, 0, 3), /*  64 :  4 */
80   index(0, 0, 1, 3), /*  65 :  4 */
81 
82   index(2, 1, 1, 1), /*  66 :  5 */
83   index(1, 2, 1, 1), /*  67 :  5 */
84   index(1, 1, 2, 1), /*  68 :  5 */
85   index(1, 1, 1, 2), /*  69 :  5 */
86 
87   index(1, 0, 2, 2), /*  70 :  5 */
88   index(1, 2, 0, 2), /*  71 :  5 */
89   index(1, 2, 2, 0), /*  72 :  5 */
90   index(2, 1, 0, 2), /*  73 :  5 */
91   index(2, 1, 2, 0), /*  74 :  5 */
92   index(0, 1, 2, 2), /*  75 :  5 */
93   index(2, 2, 1, 0), /*  76 :  5 */
94   index(0, 2, 1, 2), /*  77 :  5 */
95   index(2, 0, 1, 2), /*  78 :  5 */
96   index(0, 2, 2, 1), /*  79 :  5 */
97   index(2, 0, 2, 1), /*  80 :  5 */
98   index(2, 2, 0, 1), /*  81 :  5 */
99 
100   index(3, 0, 1, 1), /*  82 :  5 */
101   index(3, 1, 0, 1), /*  83 :  5 */
102   index(3, 1, 1, 0), /*  84 :  5 */
103   index(1, 3, 0, 1), /*  85 :  5 */
104   index(1, 3, 1, 0), /*  86 :  5 */
105   index(0, 3, 1, 1), /*  87 :  5 */
106   index(1, 1, 3, 0), /*  88 :  5 */
107   index(0, 1, 3, 1), /*  89 :  5 */
108   index(1, 0, 3, 1), /*  90 :  5 */
109   index(0, 1, 1, 3), /*  91 :  5 */
110   index(1, 0, 1, 3), /*  92 :  5 */
111   index(1, 1, 0, 3), /*  93 :  5 */
112 
113   index(3, 2, 0, 0), /*  94 :  5 */
114   index(3, 0, 2, 0), /*  95 :  5 */
115   index(3, 0, 0, 2), /*  96 :  5 */
116   index(0, 3, 2, 0), /*  97 :  5 */
117   index(0, 3, 0, 2), /*  98 :  5 */
118   index(2, 3, 0, 0), /*  99 :  5 */
119   index(0, 0, 3, 2), /* 100 :  5 */
120   index(2, 0, 3, 0), /* 101 :  5 */
121   index(0, 2, 3, 0), /* 102 :  5 */
122   index(2, 0, 0, 3), /* 103 :  5 */
123   index(0, 2, 0, 3), /* 104 :  5 */
124   index(0, 0, 2, 3), /* 105 :  5 */
125 
126   index(2, 2, 1, 1), /* 106 :  6 */
127   index(1, 1, 2, 2), /* 107 :  6 */
128   index(2, 1, 2, 1), /* 108 :  6 */
129   index(1, 2, 1, 2), /* 109 :  6 */
130   index(2, 1, 1, 2), /* 110 :  6 */
131   index(1, 2, 2, 1), /* 111 :  6 */
132 
133   index(0, 2, 2, 2), /* 112 :  6 */
134   index(2, 0, 2, 2), /* 113 :  6 */
135   index(2, 2, 0, 2), /* 114 :  6 */
136   index(2, 2, 2, 0), /* 115 :  6 */
137 
138   index(3, 1, 1, 1), /* 116 :  6 */
139   index(1, 3, 1, 1), /* 117 :  6 */
140   index(1, 1, 3, 1), /* 118 :  6 */
141   index(1, 1, 1, 3), /* 119 :  6 */
142 
143   index(3, 2, 1, 0), /* 120 :  6 */
144   index(3, 2, 0, 1), /* 121 :  6 */
145   index(3, 0, 2, 1), /* 122 :  6 */
146   index(3, 1, 2, 0), /* 123 :  6 */
147   index(3, 1, 0, 2), /* 124 :  6 */
148   index(3, 0, 1, 2), /* 125 :  6 */
149   index(0, 3, 2, 1), /* 126 :  6 */
150   index(1, 3, 2, 0), /* 127 :  6 */
151   index(1, 3, 0, 2), /* 128 :  6 */
152   index(0, 3, 1, 2), /* 129 :  6 */
153   index(2, 3, 1, 0), /* 130 :  6 */
154   index(2, 3, 0, 1), /* 131 :  6 */
155   index(1, 0, 3, 2), /* 132 :  6 */
156   index(0, 1, 3, 2), /* 133 :  6 */
157   index(2, 1, 3, 0), /* 134 :  6 */
158   index(2, 0, 3, 1), /* 135 :  6 */
159   index(0, 2, 3, 1), /* 136 :  6 */
160   index(1, 2, 3, 0), /* 137 :  6 */
161   index(2, 1, 0, 3), /* 138 :  6 */
162   index(2, 0, 1, 3), /* 139 :  6 */
163   index(0, 2, 1, 3), /* 140 :  6 */
164   index(1, 2, 0, 3), /* 141 :  6 */
165   index(1, 0, 2, 3), /* 142 :  6 */
166   index(0, 1, 2, 3), /* 143 :  6 */
167 
168   index(3, 3, 0, 0), /* 144 :  6 */
169   index(0, 0, 3, 3), /* 145 :  6 */
170   index(3, 0, 3, 0), /* 146 :  6 */
171   index(0, 3, 0, 3), /* 147 :  6 */
172   index(3, 0, 0, 3), /* 148 :  6 */
173   index(0, 3, 3, 0), /* 149 :  6 */
174 
175   index(1, 2, 2, 2), /* 150 :  7 */
176   index(2, 1, 2, 2), /* 151 :  7 */
177   index(2, 2, 1, 2), /* 152 :  7 */
178   index(2, 2, 2, 1), /* 153 :  7 */
179 
180   index(3, 2, 1, 1), /* 154 :  7 */
181   index(3, 1, 2, 1), /* 155 :  7 */
182   index(3, 1, 1, 2), /* 156 :  7 */
183   index(1, 3, 2, 1), /* 157 :  7 */
184   index(1, 3, 1, 2), /* 158 :  7 */
185   index(2, 3, 1, 1), /* 159 :  7 */
186   index(1, 1, 3, 2), /* 160 :  7 */
187   index(2, 1, 3, 1), /* 161 :  7 */
188   index(1, 2, 3, 1), /* 162 :  7 */
189   index(2, 1, 1, 3), /* 163 :  7 */
190   index(1, 2, 1, 3), /* 164 :  7 */
191   index(1, 1, 2, 3), /* 165 :  7 */
192 
193   index(3, 0, 2, 2), /* 166 :  7 */
194   index(3, 2, 0, 2), /* 167 :  7 */
195   index(3, 2, 2, 0), /* 168 :  7 */
196   index(2, 3, 0, 2), /* 169 :  7 */
197   index(2, 3, 2, 0), /* 170 :  7 */
198   index(0, 3, 2, 2), /* 171 :  7 */
199   index(2, 2, 3, 0), /* 172 :  7 */
200   index(0, 2, 3, 2), /* 173 :  7 */
201   index(2, 0, 3, 2), /* 174 :  7 */
202   index(0, 2, 2, 3), /* 175 :  7 */
203   index(2, 0, 2, 3), /* 176 :  7 */
204   index(2, 2, 0, 3), /* 177 :  7 */
205 
206   index(1, 0, 3, 3), /* 178 :  7 */
207   index(1, 3, 0, 3), /* 179 :  7 */
208   index(1, 3, 3, 0), /* 180 :  7 */
209   index(3, 1, 0, 3), /* 181 :  7 */
210   index(3, 1, 3, 0), /* 182 :  7 */
211   index(0, 1, 3, 3), /* 183 :  7 */
212   index(3, 3, 1, 0), /* 184 :  7 */
213   index(0, 3, 1, 3), /* 185 :  7 */
214   index(3, 0, 1, 3), /* 186 :  7 */
215   index(0, 3, 3, 1), /* 187 :  7 */
216   index(3, 0, 3, 1), /* 188 :  7 */
217   index(3, 3, 0, 1), /* 189 :  7 */
218 
219   index(2, 2, 2, 2), /* 190 :  8 */
220 
221   index(3, 1, 2, 2), /* 191 :  8 */
222   index(3, 2, 1, 2), /* 192 :  8 */
223   index(3, 2, 2, 1), /* 193 :  8 */
224   index(2, 3, 1, 2), /* 194 :  8 */
225   index(2, 3, 2, 1), /* 195 :  8 */
226   index(1, 3, 2, 2), /* 196 :  8 */
227   index(2, 2, 3, 1), /* 197 :  8 */
228   index(1, 2, 3, 2), /* 198 :  8 */
229   index(2, 1, 3, 2), /* 199 :  8 */
230   index(1, 2, 2, 3), /* 200 :  8 */
231   index(2, 1, 2, 3), /* 201 :  8 */
232   index(2, 2, 1, 3), /* 202 :  8 */
233 
234   index(3, 3, 1, 1), /* 203 :  8 */
235   index(1, 1, 3, 3), /* 204 :  8 */
236   index(3, 1, 3, 1), /* 205 :  8 */
237   index(1, 3, 1, 3), /* 206 :  8 */
238   index(3, 1, 1, 3), /* 207 :  8 */
239   index(1, 3, 3, 1), /* 208 :  8 */
240 
241   index(2, 0, 3, 3), /* 209 :  8 */
242   index(2, 3, 0, 3), /* 210 :  8 */
243   index(2, 3, 3, 0), /* 211 :  8 */
244   index(3, 2, 0, 3), /* 212 :  8 */
245   index(3, 2, 3, 0), /* 213 :  8 */
246   index(0, 2, 3, 3), /* 214 :  8 */
247   index(3, 3, 2, 0), /* 215 :  8 */
248   index(0, 3, 2, 3), /* 216 :  8 */
249   index(3, 0, 2, 3), /* 217 :  8 */
250   index(0, 3, 3, 2), /* 218 :  8 */
251   index(3, 0, 3, 2), /* 219 :  8 */
252   index(3, 3, 0, 2), /* 220 :  8 */
253 
254   index(3, 2, 2, 2), /* 221 :  9 */
255   index(2, 3, 2, 2), /* 222 :  9 */
256   index(2, 2, 3, 2), /* 223 :  9 */
257   index(2, 2, 2, 3), /* 224 :  9 */
258 
259   index(2, 1, 3, 3), /* 225 :  9 */
260   index(2, 3, 1, 3), /* 226 :  9 */
261   index(2, 3, 3, 1), /* 227 :  9 */
262   index(3, 2, 1, 3), /* 228 :  9 */
263   index(3, 2, 3, 1), /* 229 :  9 */
264   index(1, 2, 3, 3), /* 230 :  9 */
265   index(3, 3, 2, 1), /* 231 :  9 */
266   index(1, 3, 2, 3), /* 232 :  9 */
267   index(3, 1, 2, 3), /* 233 :  9 */
268   index(1, 3, 3, 2), /* 234 :  9 */
269   index(3, 1, 3, 2), /* 235 :  9 */
270   index(3, 3, 1, 2), /* 236 :  9 */
271 
272   index(0, 3, 3, 3), /* 237 :  9 */
273   index(3, 0, 3, 3), /* 238 :  9 */
274   index(3, 3, 0, 3), /* 239 :  9 */
275   index(3, 3, 3, 0), /* 240 :  9 */
276 
277   index(3, 3, 2, 2), /* 241 : 10 */
278   index(2, 2, 3, 3), /* 242 : 10 */
279   index(3, 2, 3, 2), /* 243 : 10 */
280   index(2, 3, 2, 3), /* 244 : 10 */
281   index(3, 2, 2, 3), /* 245 : 10 */
282   index(2, 3, 3, 2), /* 246 : 10 */
283 
284   index(1, 3, 3, 3), /* 247 : 10 */
285   index(3, 1, 3, 3), /* 248 : 10 */
286   index(3, 3, 1, 3), /* 249 : 10 */
287   index(3, 3, 3, 1), /* 250 : 10 */
288 
289   index(2, 3, 3, 3), /* 251 : 11 */
290   index(3, 2, 3, 3), /* 252 : 11 */
291   index(3, 3, 2, 3), /* 253 : 11 */
292   index(3, 3, 3, 2), /* 254 : 11 */
293 
294   index(3, 3, 3, 3), /* 255 : 12 */
295 };
296 
297 #undef index
298