code: public static void multAdd_zeros(final int blockLength ,
                                       final DSubmatrixD1 Y , final DSubmatrixD1 B ,
                                       final DSubmatrixD1 C )
      {
          int widthY = Y.col1 - Y.col0;
  
          for( int i = Y.row0; i < Y.row1; i += blockLength ) {
              int heightY = Math.min( blockLength , Y.row1 - i );
  
              for( int j = B.col0; j < B.col1; j += blockLength ) {
                  int widthB = Math.min( blockLength , B.col1 - j );
  
                  int indexC = (i-Y.row0+C.row0)*C.original.numCols + (j-B.col0+C.col0)*heightY;
  
                  for( int k = Y.col0; k < Y.col1; k += blockLength ) {
                      int indexY = i*Y.original.numCols + k*heightY;
                      int indexB = (k-Y.col0+B.row0)*B.original.numCols + j*widthY;
  
                      if( i == Y.row0 ) {
                          multBlockAdd_zerosone(Y.original.data,B.original.data,C.original.data,
                              indexY,indexB,indexC,heightY,widthY,widthB);
                      } else {
                          InnerMultiplication_DDRB.blockMultPlus(Y.original.data,B.original.data,C.original.data,
                                  indexY,indexB,indexC,heightY,widthY,widthB);
                      }
                  }
              }
          }
      }
docs: Special multiplication that takes in account the zeros and one in Y, which
  is the matrix that stores the householder vectors.