docs: public static void rank1UpdateMultR_Col(final int blockLength ,
                                              final DSubmatrixD1 A , final int col , final double gamma )
      {
          final int width = Math.min(blockLength,A.col1 - A.col0);
  
          final double dataA[] = A.original.data;
  
          for( int j = col+1; j < width; j++ ) {
  
              // total = U^T * A(:,j)
              double total = innerProdCol(blockLength, A, col, width, j, width);
  
              total *= gamma;
              // A(:,j) - gamma*U*total
  
              for( int i = A.row0; i < A.row1; i += blockLength ) {
                  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*A.col0 + j;
  
                  if( i == A.row0 ) {
                      indexU += width*(col+1);
                      indexA += width*col;
  
                      dataA[ indexA ] -= total;
  
                      indexA += width;
  
                      for( int k = col+1; k < height; k++ , indexU += width, indexA += width ) {
                          dataA[ indexA ] -= total*dataA[ indexU ];
                      }
                  } else {
                      int endU = indexU + width*height;
                      // for( int k = 0; k < height; k++
                      for( ; indexU != endU; indexU += width, indexA += width ) {
                          dataA[ indexA ] -= total*dataA[ indexU ];
                      }
                  }
              }
          }
      }