Base Type Requirements for Ordered Comparisons
Keywords: base type requirements ordered comparisons purpose not

| Prev | Next |  |  |  |  |  | base_ordered |

Base Type Requirements for Ordered Comparisons
Purpose
The following operations (in the CppAD namespace) are required to use the type `AD<Base>` :

Syntax | Result
`b = GreaterThanZero(x)` `` | x > 0
`b = GreaterThanOrZero(x)` `` | x ≥ 0
`b = LessThanZero(x)` `` | x < 0
`b = LessThanOrZero(x)` `` | x ≤ 0
`b = abs_geq(x, y)` `` | | x | ≥ | y | .

where the arguments and return value have the prototypes `
const Base& x
const Base& y
bool b
`
Ordered Type
If the type `Base` supports ordered operations, these functions should have their corresponding definitions. For example, `
namespace CppAD {
inline bool GreaterThanZero(const Base &x)
{ return (x > 0);
}
}
` The other functions would replace `>` by the corresponding operator. For example, see base_alloc .
Not Ordered
If the type `Base` does not support ordering, one might (but need not) define `GreaterThanZero` as follows: `
namespace CppAD {
inline bool GreaterThanZero(const Base &x)
{ // attempt to use GreaterThanZero with a Base argument
assert(0);
return x;
}
}
` The other functions would have the corresponding definition. For example, see complex Ordered .

Input File: omh/base_require/base_ordered.omh