Prev Next base_ordered

@(@\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}} }@)@
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 \geq 0 @)@
b = LessThanZero(x)    @(@ x < 0 @)@
b = LessThanOrZero(x)    @(@ x \leq 0 @)@
b = abs_geq(xy)    @(@ |x| \geq |y| @)@.
where the arguments and return value have the prototypes
     const 
Basex
     const 
Basey
     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