code: public static void rank1UpdateMultR_TopRow(final int blockLength ,
                                                 final DSubmatrixD1 A , final int col , final double gamma )
      {
          final double dataA[] = A.original.data;
  
          final int widthCol = Math.min( blockLength , A.col1 - col );
  
          // step through columns in top block, skipping over the first block
          for( int colStartJ = A.col0 + blockLength; colStartJ < A.col1; colStartJ += blockLength ) {
              final int widthJ = Math.min( blockLength , A.col1 - colStartJ);
  
              for( int j = 0; j < widthJ; j++ ) {
                  // total = U^T * A(:,j) * gamma
                  double total = innerProdCol(blockLength, A, col, widthCol, (colStartJ-A.col0)+j, widthJ)*gamma;
  
                  // A(:,j) - gamma*U*total
                  // just update the top most block
                  int i = A.row0;
                  int height = Math.min( blockLength , A.row1 - i );
  
                  int indexU = i*A.original.numCols + height*A.col0 + col;
                  int indexA = i*A.original.numCols + height*colStartJ + j;
  
                  // take in account zeros and one
                  indexU += widthCol*(col+1);
                  indexA += widthJ*col;
  
                  dataA[ indexA ] -= total;
  
                  indexA += widthJ;
  
                  for( int k = col+1; k < height; k++ , indexU += widthCol, indexA += widthJ ) {
                      dataA[ indexA ] -= total*dataA[ indexU ];
                  }
              }
          }
      }
docs: <p>
  Applies a householder reflector stored in column 'col' to the top block row (excluding
  the first column) of A.  Takes in account leading zeros and one.<br>
  <br>
  A = (I - &gamma;*u*u<sup>T</sup>)*A<br>
  </p>
  
  @param A submatrix that is at most one block wide and aligned along inner blocks
  @param col The column in A containing 'u'