isNumericallyEqual(x,y) compares two scalar types using a tolerance (default or explicitly specified) and returns true if they are close enough.
More...
|
bool | SimTK::isNumericallyEqual (const float &a, const float &b, double tol=RTraits< float >::getDefaultTolerance()) |
| Compare two floats for approximate equality. More...
|
|
bool | SimTK::isNumericallyEqual (const double &a, const double &b, double tol=RTraits< double >::getDefaultTolerance()) |
| Compare two doubles for approximate equality. More...
|
|
bool | SimTK::isNumericallyEqual (const long double &a, const long double &b, double tol=RTraits< long double >::getDefaultTolerance()) |
| Compare two long doubles for approximate equality. More...
|
|
bool | SimTK::isNumericallyEqual (const float &a, const double &b, double tol=RTraits< float >::getDefaultTolerance()) |
| Compare a float and a double for approximate equality at float precision. More...
|
|
bool | SimTK::isNumericallyEqual (const double &a, const float &b, double tol=RTraits< float >::getDefaultTolerance()) |
| Compare a float and a double for approximate equality at float precision. More...
|
|
bool | SimTK::isNumericallyEqual (const float &a, const long double &b, double tol=RTraits< float >::getDefaultTolerance()) |
| Compare a float and a long double for approximate equality at float precision. More...
|
|
bool | SimTK::isNumericallyEqual (const long double &a, const float &b, double tol=RTraits< float >::getDefaultTolerance()) |
| Compare a float and a long double for approximate equality at float precision. More...
|
|
bool | SimTK::isNumericallyEqual (const double &a, const long double &b, double tol=RTraits< double >::getDefaultTolerance()) |
| Compare a double and a long double for approximate equality at double precision. More...
|
|
bool | SimTK::isNumericallyEqual (const long double &a, const double &b, double tol=RTraits< double >::getDefaultTolerance()) |
| Compare a double and a long double for approximate equality at double precision. More...
|
|
bool | SimTK::isNumericallyEqual (const float &a, int b, double tol=RTraits< float >::getDefaultTolerance()) |
| Test a float for approximate equality to an integer. More...
|
|
bool | SimTK::isNumericallyEqual (int a, const float &b, double tol=RTraits< float >::getDefaultTolerance()) |
| Test a float for approximate equality to an integer. More...
|
|
bool | SimTK::isNumericallyEqual (const double &a, int b, double tol=RTraits< double >::getDefaultTolerance()) |
| Test a double for approximate equality to an integer. More...
|
|
bool | SimTK::isNumericallyEqual (int a, const double &b, double tol=RTraits< double >::getDefaultTolerance()) |
| Test a double for approximate equality to an integer. More...
|
|
bool | SimTK::isNumericallyEqual (const long double &a, int b, double tol=RTraits< long double >::getDefaultTolerance()) |
| Test a long double for approximate equality to an integer. More...
|
|
bool | SimTK::isNumericallyEqual (int a, const long double &b, double tol=RTraits< long double >::getDefaultTolerance()) |
| Test a long double for approximate equality to an integer. More...
|
|
template<class P , class Q > |
bool | SimTK::isNumericallyEqual (const std::complex< P > &a, const std::complex< Q > &b, double tol=RTraits< typename Narrowest< P, Q >::Precision >::getDefaultTolerance()) |
| Compare two complex numbers for approximate equality, using the numerical accuracy expectation of the narrower of the two precisions in the case of mixed precision. More...
|
|
template<class P , class Q > |
bool | SimTK::isNumericallyEqual (const conjugate< P > &a, const conjugate< Q > &b, double tol=RTraits< typename Narrowest< P, Q >::Precision >::getDefaultTolerance()) |
| Compare two conjugate numbers for approximate equality, using the numerical accuracy expectation of the narrower of the two precisions in the case of mixed precision. More...
|
|
template<class P , class Q > |
bool | SimTK::isNumericallyEqual (const std::complex< P > &a, const conjugate< Q > &b, double tol=RTraits< typename Narrowest< P, Q >::Precision >::getDefaultTolerance()) |
| Compare a complex and a conjugate number for approximate equality, using the numerical accuracy expectation of the narrower of the two precisions in the case of mixed precision. More...
|
|
template<class P , class Q > |
bool | SimTK::isNumericallyEqual (const conjugate< P > &a, const std::complex< Q > &b, double tol=RTraits< typename Narrowest< P, Q >::Precision >::getDefaultTolerance()) |
| Compare a complex and a conjugate number for approximate equality, using the numerical accuracy expectation of the narrower of the two precisions in the case of mixed precision. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const std::complex< P > &a, const float &b, double tol=RTraits< float >::getDefaultTolerance()) |
| Test whether a complex number is approximately equal to a particular real float. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const float &a, const std::complex< P > &b, double tol=RTraits< float >::getDefaultTolerance()) |
| Test whether a complex number is approximately equal to a particular real float. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const std::complex< P > &a, const double &b, double tol=RTraits< typename Narrowest< P, double >::Precision >::getDefaultTolerance()) |
| Test whether a complex number is approximately equal to a particular real double. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const double &a, const std::complex< P > &b, double tol=RTraits< typename Narrowest< P, double >::Precision >::getDefaultTolerance()) |
| Test whether a complex number is approximately equal to a particular real double. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const std::complex< P > &a, const long double &b, double tol=RTraits< P >::getDefaultTolerance()) |
| Test whether a complex number is approximately equal to a particular real long double. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const long double &a, const std::complex< P > &b, double tol=RTraits< P >::getDefaultTolerance()) |
| Test whether a complex number is approximately equal to a particular real long double. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const std::complex< P > &a, int b, double tol=RTraits< P >::getDefaultTolerance()) |
| Test whether a complex number is approximately equal to a particular integer. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (int a, const std::complex< P > &b, double tol=RTraits< P >::getDefaultTolerance()) |
| Test whether a complex number is approximately equal to a particular integer. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const conjugate< P > &a, const float &b, double tol=RTraits< float >::getDefaultTolerance()) |
| Test whether a conjugate number is approximately equal to a particular real float. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const float &a, const conjugate< P > &b, double tol=RTraits< float >::getDefaultTolerance()) |
| Test whether a conjugate number is approximately equal to a particular real float. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const conjugate< P > &a, const double &b, double tol=RTraits< typename Narrowest< P, double >::Precision >::getDefaultTolerance()) |
| Test whether a conjugate number is approximately equal to a particular real double. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const double &a, const conjugate< P > &b, double tol=RTraits< typename Narrowest< P, double >::Precision >::getDefaultTolerance()) |
| Test whether a conjugate number is approximately equal to a particular real double. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const conjugate< P > &a, const long double &b, double tol=RTraits< P >::getDefaultTolerance()) |
| Test whether a conjugate number is approximately equal to a particular real long double. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const long double &a, const conjugate< P > &b, double tol=RTraits< P >::getDefaultTolerance()) |
| Test whether a conjugate number is approximately equal to a particular real long double. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (const conjugate< P > &a, int b, double tol=RTraits< P >::getDefaultTolerance()) |
| Test whether a conjugate number is approximately equal to a particular integer. More...
|
|
template<class P > |
bool | SimTK::isNumericallyEqual (int a, const conjugate< P > &b, double tol=RTraits< P >::getDefaultTolerance()) |
| Test whether a conjugate number is approximately equal to a particular integer. More...
|
|
isNumericallyEqual(x,y) compares two scalar types using a tolerance (default or explicitly specified) and returns true if they are close enough.
The default tolerance used is the NTraits<P>::getSignificant() value (about 1e-14 in double precision, 1e-6 in float) for the narrower of the types being compared but you can override that. The tolerance is both a relative and absolute tolerance; for two numbers a and b and tolerance tol we compute the following condition:
For complex or conjugate numbers we insist that both the real and imaginary parts independently satisfy the above condition.