1Strassen (MA, MB)
2
3 ad_hoc
4 // Dividimos las matrices MA y MB en cuatro componentes cada una
5 // Genera los números A(MA11), B(MA12), C(MA21), D(MA22), E(MB11), F(MB12), G(MB21) y H(MB22)
6 P1 = A * (F - H)
7 P2 = (A + B) * H
8 P3 = (C + D) * E
9 P4 = D * (G - E)
10 P5 = (A + D) * (E + H)
11 P6 = (B - D) * (G + H)
12 P7 = (A - C) * (E + F)
13
14 // Creamos los cuatro elementos de la solución
15 R11 = P5 + P4 - P2 + P6
16 R12 = P1 + P2
17 R21 = P3 + P4
18 R22 = P1 + P5 - P3 - P7
19
20 R = fusion(R11, R12, R21, R22);
21 return R;
22
23 else
24 // Dividimos las matrices MA y MB en cuatro cuadrantes cada una
25 // Se generan las submatrices A, B, C, D, E, F, G y H
26
27 P1 = Strassen(A, (F - H));
28 P2 = Strassen((A + B), H);
29 P3 = Strassen((C + D), E);
30 P4 = Strassen(D, (G - E));
31 P5 = Strassen((A + D), (E + H));
32 P6 = Strassen((B - D), (G + H));
33 P7 = Strassen((A - C), (E + F));
34
35 // Creamos los cuatro elementos de la solución
36 R11 = P5 + P4 - P2 + P6
37 R12 = P1 + P2
38 R21 = P3 + P4
39 R22 = P1 + P5 - P3 - P7
40
41 R = fusion(R11, R12, R21, R22);
42 return R;
43