code: public static double quality(DMatrixRMaj orig , EigenDecomposition_F64<DMatrixRMaj> eig )
      {
          DMatrixRMaj A = orig;
          DMatrixRMaj V = EigenOps_DDRM.createMatrixV(eig);
          DMatrixRMaj D = EigenOps_DDRM.createMatrixD(eig);
  
          // L = A*V
          DMatrixRMaj L = new DMatrixRMaj(A.numRows,V.numCols);
          CommonOps_DDRM.mult(A,V,L);
          // R = V*D
          DMatrixRMaj R = new DMatrixRMaj(V.numRows,D.numCols);
          CommonOps_DDRM.mult(V,D,R);
  
          DMatrixRMaj diff = new DMatrixRMaj(L.numRows,L.numCols);
          CommonOps_DDRM.subtract(L,R,diff);
  
          double top = NormOps_DDRM.normF(diff);
          double bottom = NormOps_DDRM.normF(L);
  
          double error = top/bottom;
  
          return error;
      }
docs: <p>
  Computes a metric which measures the the quality of an eigen value decomposition.  If a
  value is returned that is close to or smaller than 1e-15 then it is within machine precision.
  </p>
  <p>
  EVD quality is defined as:<br>
  <br>
  Quality = ||A*V - V*D|| / ||A*V||.
  </p>
  
  @param orig The original matrix. Not modified.
  @param eig EVD of the original matrix. Not modified.
  @return The quality of the decomposition.