private static void Ifct8(ArraySlice <float> bloque, ArraySlice <float> res, float[,] tIcos) { float dc = bloque[0] * tIcos[0, 0]; float suma02 = 0; suma02 += bloque[4] * tIcos[4, 0]; float suma01 = 0; suma01 += bloque[2] * tIcos[2, 0]; suma01 += bloque[6] * tIcos[6, 0]; float suma11 = 0; suma11 += bloque[2] * tIcos[2, 1]; suma11 += bloque[6] * tIcos[6, 1]; float suma00 = 0; suma00 += bloque[1] * tIcos[1, 0]; suma00 += bloque[3] * tIcos[3, 0]; suma00 += bloque[5] * tIcos[5, 0]; suma00 += bloque[7] * tIcos[7, 0]; float suma10 = 0; suma10 += bloque[1] * tIcos[1, 1]; suma10 += bloque[3] * tIcos[3, 1]; suma10 += bloque[5] * tIcos[5, 1]; suma10 += bloque[7] * tIcos[7, 1]; float suma20 = 0; suma20 += bloque[1] * tIcos[1, 2]; suma20 += bloque[3] * tIcos[3, 2]; suma20 += bloque[5] * tIcos[5, 2]; suma20 += bloque[7] * tIcos[7, 2]; float suma30 = 0; suma30 += bloque[1] * tIcos[1, 3]; suma30 += bloque[3] * tIcos[3, 3]; suma30 += bloque[5] * tIcos[5, 3]; suma30 += bloque[7] * tIcos[7, 3]; float p00 = dc + suma02; float p01 = dc - suma02; float p10 = p00 + suma01; float p11 = p00 - suma01; float p12 = p01 + suma11; float p13 = p01 - suma11; res[0] = p10 + suma00; res[7] = p10 - suma00; res[3] = p11 + suma30; res[4] = p11 - suma30; res[1] = p12 + suma10; res[6] = p12 - suma10; res[2] = p13 + suma20; res[5] = p13 - suma20; }