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