code: public static void rank1UpdateMultL_Row( final int blockLength ,
                                               final DSubmatrixD1 A ,
                                               final int row , final int colStart , final double gamma )
      {
          final int height = Math.min(blockLength,A.row1 - A.row0);
  
          final double dataA[] = A.original.data;
  
          int zeroOffset = colStart-row;
  
          for( int i = row+1; i < height; i++ ) {
              // total = U^T * A(i,:)
              double total = innerProdRow(blockLength, A, row, A , i, zeroOffset );
  
              total *= gamma;
              // A(i,:) - gamma*U*total
  
              for( int j = A.col0; j < A.col1; j += blockLength ) {
                  int width = Math.min( blockLength , A.col1 - j );
  
                  int indexU = A.row0*A.original.numCols + height*j + row*width;
                  int indexA = A.row0*A.original.numCols + height*j + i*width;
  
                  if( j == A.col0 ) {
                      indexU += colStart+1;
                      indexA += colStart;
  
                      dataA[indexA++] -= total;
  
                      for( int k = colStart+1; k < width; k++ ) {
                          dataA[ indexA++ ] -= total*dataA[ indexU++ ];
                      }
                  } else {
                      for( int k = 0; k < width; k++ ) {
                          dataA[ indexA++ ] -= total*dataA[ indexU++ ];
                      }
                  }
              }
          }
      }
docs: <p>
  Applies a householder reflector stored in row 'row' to the remainder of the row
  in the block after it.  Takes in account leading zeros and one.<br>
  <br>
  A = A*(I - &gamma;*u*u<sup>T</sup>)<br>
  </p>
  
  @param A submatrix that is block aligned
  @param row The row in A containing 'u'
  @param colStart First index in 'u' that the reflector starts at