Kompresja motyla

Z Wikipedii, wolnej encyklopedii

Kompresja motyla – kompresja stosowana w algorytmie COMP128. Nazwa pochodzi od angielskiego butterfly compression. Na wejściu jest 512 8-bitowych elementów, a po kompresji otrzymuje się 32 elementy, każdy po 4 bity.

Sposób działania pokazuje poniższy rysunek, a także pseudo-kod zamieszczony pod nim:

// j - obecny poziom

for j = 0 to 4
{
    for k = 0 to (2 ^ j) - 1
    {
        for l = 0 to 2 ^ (4 - j) - 1
        {
            m = 1 + k2 ^ (5 - j)
            n = m + 2 ^ (4 - j)
            y = (x[m] + 2x[n]) mod 2 ^ (9 - j)
            z = (2x[m] + x[n]) mod 2 ^ (9 - j)
            x[m] = T[j][y]
            x[n] = T[j][z]
        }
    }
}