Easy way to remember Strassen's Matrix Equation in C++

It is a matrix multiplication algorithm is based on divide and conquer method. It is used to multiply two matrices of the same size,

Finding multiplication of two matrices−

The strassen’s Algorithm reduces overhead for multiplication by simplifying the multiplication.

Here is the multiplication made using the strassen’s Algorithm: 

M1 = a*(f - h)
 M2 = (a + b)*h
 M3 = (c + d)*e
 M4 = d*(g - e)
 M5 = (a + d)*(e + h)
 M6 = (b - d)*(g + h)
 M7 = (a - c)*(e + f)


This can be easily remembered and the algorithm code can be decoded. For this we have a few rules, first remember these 6 things−

  • Use AHED for the first 4 values of M.
  • Use Diagonal multiplication for the 5th value of M.
  • Use last CR (last col from mat 1 and last row form mat 2) for 6th value of M.
  • Use first CR(first col from mat 1 and first row form mat 2) for 7th value of M.
  • While considering elements of row add them and in case of columns subtract them.
  • The update values after that using adjacent values.

Using these ways we can easily remember the values.