base_ordered

View page source

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 ( x , y )

\(|x| \geq |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 .

Special Requirements

The following are special requirements when there is no ordered comparison for the base type:

Independent

record_compare must be false in the call to Independent .

Optimize

The no_conditional_skip option must be present when optimize is used.

PrintFor

The PrintFor operator cannot be used.