Skew A, Skew B, {Multiply, Accumulate, Rotate}
for i := 2 to m do -- Skew A
[i..m, 1..n] A := A@^right;
end;
for i := 2 to p do -- Skew B
[1..n, i..p] B := B@^below;
end;
[Res] C := 0.0; -- Initialize C
for i := 1 to n do -- For common
dim
[Res] C := C + A*B; -- For product
[Lop] A := A@^right; -- Rotate
A
[Rop] B := B@^below; -- Rotate
B
end;