\(\newcommand{\W}[1]{ \; #1 \; }\) \(\newcommand{\R}[1]{ {\rm #1} }\) \(\newcommand{\B}[1]{ {\bf #1} }\) \(\newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} }\) \(\newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} }\) \(\newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} }\) \(\newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }\)
NearEqual¶
View page sourceDetermine if Two Values Are Nearly Equal¶
Syntax¶
include <cppad/utility/near_equal.hpp>
NearEqual
( x , y , r , a )Purpose¶
Returns true, if x and y are nearly equal, and false otherwise.
x¶
The argument x has one of the following possible prototypes
const
Type & x ,const std::complex<
Type > & x ,y¶
The argument y has one of the following possible prototypes
const
Type & y ,const std::complex<
Type > & y ,r¶
The relative error criteria r has prototype
const
Type & r
It must be greater than or equal to zero. The relative error condition is defined as:
a¶
The absolute error criteria a has prototype
const
Type & a
It must be greater than or equal to zero. The absolute error condition is defined as:
b¶
The return value b has prototype
bool
b
If either x or y is infinite or not a number, the return value is false. Otherwise, if either the relative or absolute error condition (defined above) is satisfied, the return value is true. Otherwise, the return value is false.
Type¶
The type Type must be a NumericType . The routine CheckNumericType will generate an error message if this is not the case. In addition, the following operations must be defined objects a and b of type Type :
Operation |
Description |
a <= b |
less that or equal operator (returns a |
Include Files¶
The file cppad/utility/near_equal.hpp
is included by cppad/cppad.hpp
but it can also be included separately with out the rest of
the CppAD
routines.
Example¶
The file near_equal.cpp contains an example
and test of NearEqual
.
It return true if it succeeds and false otherwise.
Exercise¶
Create and run a program that contains the following code:
using std::complex;
using std::cout;
using std::endl;
complex<double> one(1., 0), i(0., 1);
complex<double> x = one / i;
complex<double> y = - i;
double r = 1e-12;
double a = 0;
bool ok = CppAD::NearEqual(x, y, r, a);
if( ok )
cout << "Ok" << endl;
else
cout << "Error" << endl;