@(@\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}} }@)@
This is cppad-20221105 documentation. Here is a link to its
current documentation
.
Replacing The CppAD Error Handler: Example and Test
# include <cppad/utility/error_handler.hpp>
# include <cstring>
namespace {
void myhandler(
bool known ,
int line ,
const char *file ,
const char *exp ,
const char *msg )
{ // error handler must not return, so throw an exceptionthrow line;
}
}
bool ErrorHandler(void)
{ using CppAD::ErrorHandler;
int lineMinusFive = 0;
// replace the default CppAD error handler
ErrorHandler info(myhandler);
// set ok to false unless catch block is executed
bool ok = false;
// use try / catch because handler throws an exceptiontry {
// set the static variable Line to next source code line
lineMinusFive = __LINE__;
// can call myhandler anywhere that ErrorHandler is defined
ErrorHandler::Call(
true , // reason for the error is known
__LINE__ , // current source code line number
__FILE__ , // current source code file name
"1 > 0" , // an intentional error condition
"Testing ErrorHandler" // reason for error
);
}
catch ( int line )
{ // check value of the line number that was passed to handler
ok = (line == lineMinusFive + 5);
}
// info drops out of scope and the default CppAD error handler// is restored when this routine returns.return ok;
}