code: @Override
      public boolean decompose( DMatrixRMaj A ) {
          setExpectedMaxSize(A.numRows, A.numCols);
  
          maxValueAbs = CommonOps_DDRM.elementMaxAbs(A);
          convertToColumnMajor(A);
  
          // initialize pivot variables
          setupPivotInfo();
  
          // go through each column and perform the decomposition
          for( int j = 0; j < minLength; j++ ) {
              if( j > 0 )
                  updateNorms(j);
              swapColumns(j);
              // if its degenerate stop processing
              if( !householderPivot(j) )
                  break;
              updateA(j);
              rank = j+1;
          }
  
          return true;
      }
docs: <p>
  To decompose the matrix 'A' it must have full rank.  'A' is a 'm' by 'n' matrix.
  It requires about 2n*m<sup>2</sup>-2m<sup>2</sup>/3 flops.
  </p>
  
  <p>
  The matrix provided here can be of different
  dimension than the one specified in the constructor.  It just has to be smaller than or equal
  to it.
  </p>