add block matrix product algorithm