const std::complex<double> &falseCase ) { CppAD::ErrorHandler::Call( true , __LINE__ , __FILE__ , "std::complex<float> CondExpOp(...)", "Error: cannot use CondExp with a complex type" ); return std::complex<double>(0); } } /* $$ $head CondExpRel$$ The $cref/CPPAD_COND_EXP_REL/base_cond_exp/CondExpRel/$$ macro invocation $codep */ namespace CppAD { CPPAD_COND_EXP_REL( std::complex<double> ) } /* $$ used $code CondExpOp$$ above to define $codei%CondExp%Rel%$$ for $code std::complex<double>$$ arguments and $icode%Rel%$$ equal to $code Lt$$, $code Le$$, $code Eq$$, $code Ge$$, and $code Gt$$. $head EqualOpSeq$$ Complex numbers do not carry operation sequence information. Thus they are equal in this sense if and only if there values are equal. $codep */ namespace CppAD { inline bool EqualOpSeq( const std::complex<double> &x , const std::complex<double> &y )
const base_alloc& exp_if_true , const base_alloc& exp_if_false ) { // not used assert(false); // to void compiler error return base_alloc(); } } /* $$ $head CondExpRel$$ The $cref/CPPAD_COND_EXP_REL/base_cond_exp/CondExpRel/$$ macro invocation $codep */ namespace CppAD { CPPAD_COND_EXP_REL(base_alloc) } /* $$ uses $code CondExpOp$$ above to define $codei%CondExp%Rel%$$ for $code base_alloc$$ arguments and $icode%Rel%$$ equal to $code Lt$$, $code Le$$, $code Eq$$, $code Ge$$, and $code Gt$$. $head EqualOpSeq$$ The type $code base_alloc$$ is simple (in this respect) and so we define $codep */ namespace CppAD { inline bool EqualOpSeq(const base_alloc& x, const base_alloc& y) { return *x.ptrdbl_ == *y.ptrdbl_; } } /* $$