docs: 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_ZDRM.findMax(u, j, numRows - j);
  
          if( max == 0.0 ) {
              gamma = 0;
              error = true;
          } else {
              // computes tau and gamma, and normalizes u by max
              gamma = QrHelperFunctions_ZDRM.computeTauGammaAndDivide(j, numRows, u, max, tau);
  
              // divide u by u_0
  //            double u_0 = u[j] + tau;
              double real_u_0 = u[j*2] + tau.real;
              double imag_u_0 = u[j*2+1] + tau.imaginary;
              QrHelperFunctions_ZDRM.divideElements(j + 1, numRows, u, 0, real_u_0,imag_u_0 );
  
              tau.real *= max;
              tau.imaginary *= max;
  
              u[j*2]   = -tau.real;
              u[j*2+1] = -tau.imaginary;
          }
  
          gammas[j] = gamma;
      }