func (m *matrixImpl) Multiply(n types.Matrix) types.Matrix { validates.ShapeShouldBeMultipliable(m, n) rows := m.Rows() columns := n.Columns() r := Zeros(rows, columns) cursor := n.NonZeros() for cursor.HasNext() { element, j, k := cursor.Get() for i := 0; i < rows; i++ { r.Update(i, k, r.Get(i, k)+m.Get(i, j)*element) } } return r }