docs: public static boolean isUnitary(ZMatrixRMaj Q , double tol ) {
          if( Q.numRows < Q.numCols ) {
              throw new IllegalArgumentException("The number of rows must be more than or equal to the number of columns");
          }
  
          Complex_F64 prod = new Complex_F64();
  
          ZMatrixRMaj u[] = CommonOps_ZDRM.columnsToVector(Q, null);
  
          for( int i = 0; i < u.length; i++ ) {
              ZMatrixRMaj a = u[i];
  
              VectorVectorMult_ZDRM.innerProdH(a, a, prod);
  
              if( Math.abs(prod.real-1) > tol)
                  return false;
              if( Math.abs(prod.imaginary) > tol)
                  return false;
  
              for( int j = i+1; j < u.length; j++ ) {
                  VectorVectorMult_ZDRM.innerProdH(a, u[j], prod);
  
                  if( !(prod.getMagnitude2() <= tol*tol))
                      return false;
              }
          }
  
          return true;
      }