While studying FS coding, I created the attached drawing. The code used for de-interleaving is:

void tch_fr_deinterleave313(ubit_t *mC, int blockoffset) //see 3GPP TS 05.03 / 3.1.3
{
for (int k = 0; k < 456; k++) {
int B = ( k + blockoffset ) % 8;
int j = 2 * ((49 * k) % 57) + ((k % 8) / 4);
mC[k] = mI[B][j];
}
}

Now I want to study HS coding and de-interleaving. The GSM specs 05.03 / 3.2.3 only mentions a table for interleave coding and not a formula for matching j with k. Why is that?

I tried to find a formula by looking a the table pattern, but it looks quite inconsistent.

If there is no formula for coding/decoding HS, then do we have to use table lookup for each bit? Sounds very inefficient. Or am I missing something?

B