code: protected void householder( int j )
      {
          final double u[] = dataQR[j];
  
          // find the largest value in this column
          // this is used to normalize the column and mitigate overflow/underflow
          final double max = QrHelperFunctions_DDRM.findMax(u, j, numRows - j);
  
          if( max == 0.0 ) {
              gamma = 0;
              error = true;
          } else {
              // computes tau and normalizes u by max
              tau = QrHelperFunctions_DDRM.computeTauAndDivide(j, numRows, u, max);
  
              // divide u by u_0
              double u_0 = u[j] + tau;
              QrHelperFunctions_DDRM.divideElements(j + 1, numRows, u, u_0);
  
              gamma = u_0/tau;
              tau *= max;
  
              u[j] = -tau;
          }
  
          gammas[j] = gamma;
      }
docs: <p>
  Computes the householder vector "u" for the first column of submatrix j.  Note this is
  a specialized householder for this problem.  There is some protection against
  overfloaw and underflow.
  </p>
  <p>
  Q = I - &gamma;uu<sup>T</sup>
  </p>
  <p>
  This function finds the values of 'u' and '&gamma;'.
  </p>
  
  @param j Which submatrix to work off of.