<?xml version='1.0'?>
<html xmlns='http://www.w3.org/1999/xhtml'
      xmlns:math='http://www.w3.org/1998/Math/MathML'
>
<head>
<title>The CppAD General Purpose Library</title>
<meta name="description" id="description" content="The CppAD General Purpose Library"/>
<meta name="keywords" id="keywords" content=" numerical C++ template library concept "/>
<style type='text/css'>
body { color : black }
body { background-color : white }
A:link { color : blue }
A:visited { color : purple }
A:active { color : purple }
</style>
<script type='text/javascript' language='JavaScript' src='_library_xml.js'>
</script>
</head>
<body>
<table><tr>
<td>
<a href="http://www.coin-or.org/CppAD/" target="_top"><img border="0" src="_image.gif"/></a>
</td>
<td><a href="team_pthread.cpp.xml" target="_top">Prev</a>
</td><td><a href="errorhandler.xml" target="_top">Next</a>
</td><td>
<select onchange='choose_across0(this)'>
<option>Index-&gt;</option>
<option>contents</option>
<option>reference</option>
<option>index</option>
<option>search</option>
<option>external</option>
</select>
</td>
<td>
<select onchange='choose_up0(this)'>
<option>Up-&gt;</option>
<option>CppAD</option>
<option>library</option>
</select>
</td>
<td>
<select onchange='choose_down1(this)'>
<option>CppAD-&gt;</option>
<option>Install</option>
<option>Introduction</option>
<option>AD</option>
<option>ADFun</option>
<option>preprocessor</option>
<option>multi_thread</option>
<option>library</option>
<option>ipopt_solve</option>
<option>Example</option>
<option>speed</option>
<option>Appendix</option>
</select>
</td>
<td>
<select onchange='choose_down0(this)'>
<option>library-&gt;</option>
<option>ErrorHandler</option>
<option>NearEqual</option>
<option>speed_test</option>
<option>SpeedTest</option>
<option>time_test</option>
<option>NumericType</option>
<option>CheckNumericType</option>
<option>SimpleVector</option>
<option>CheckSimpleVector</option>
<option>nan</option>
<option>pow_int</option>
<option>Poly</option>
<option>LuDetAndSolve</option>
<option>RombergOne</option>
<option>RombergMul</option>
<option>Runge45</option>
<option>Rosen34</option>
<option>OdeErrControl</option>
<option>OdeGear</option>
<option>OdeGearControl</option>
<option>CppAD_vector</option>
<option>thread_alloc</option>
<option>index_sort</option>
<option>BenderQuad</option>
<option>opt_val_hes</option>
<option>LuRatio</option>
</select>
</td>
<td>
<select onchange='choose_current0(this)'>
<option>Headings-&gt;</option>
<option>Error Handler</option>
<option>Testing Utilities</option>
<option>C++ Concepts</option>
<option>CppAD Numerical Template Library</option>
<option>General Purpose Utilities</option>
<option>Numerical AD Library</option>
</select>
</td>
</tr></table><br/>








<center><b><big><big>The CppAD General Purpose Library</big></big></b></center>
<br/>
<b><big><a name="Error Handler" id="Error Handler">Error Handler</a></big></b>
<br/>
All of the routines in the CppAD namespace use the following 
general purpose error handler:
<table><tr><td align='left'  valign='top'>

<a href="errorhandler.xml" target="_top">ErrorHandler</a></td><td>
Replacing the CppAD Error Handler</td></tr>
<tr><td>

</td></tr>
</table>
<br/>
<b><big><a name="Testing Utilities" id="Testing Utilities">Testing Utilities</a></big></b>
<br/>
The routines listed below support numerical correctness and speed testing:
<table><tr><td align='left'  valign='top'>

<a href="nearequal.xml" target="_top">NearEqual</a></td><td>
Determine if Two Values Are Nearly Equal</td></tr>
<tr><td>

<a href="time_test.xml" target="_top">time_test</a></td><td>
Determine Amount of Time to Execute a Test</td></tr>
<tr><td>

<a href="speed_test.xml" target="_top">speed_test</a></td><td>
Run One Speed Test and Return Results</td></tr>
<tr><td>

<a href="speedtest.xml" target="_top">SpeedTest</a></td><td>
Run One Speed Test and Print Results</td></tr>
<tr><td>

</td></tr>
</table>
<br/>
<b><big><a name="C++ Concepts" id="C++ Concepts">C++ Concepts</a></big></b>

<br/>
We refer to a the set of classes that satisfy certain conditions
as a C++ concept.
The following concepts are used by the CppAD Template library:
<table><tr><td align='left'  valign='top'>

<a href="numerictype.xml" target="_top">NumericType</a></td><td>
Definition of a Numeric Type</td></tr>
<tr><td>

<a href="checknumerictype.xml" target="_top">CheckNumericType</a></td><td>
Check NumericType Class Concept</td></tr>
<tr><td>

<a href="simplevector.xml" target="_top">SimpleVector</a></td><td>
Definition of a Simple Vector</td></tr>
<tr><td>

<a href="checksimplevector.xml" target="_top">CheckSimpleVector</a></td><td>
Check Simple Vector Concept</td></tr>
<tr><td>

</td></tr>
</table>
<br/>
<b><big><a name="CppAD Numerical Template Library" id="CppAD Numerical Template Library">CppAD Numerical Template Library</a></big></b>
<br/>
The routines listed below are general purpose numerical routines
written with the floating point type a C++ template parameter.
This enables them to be used with algorithmic differentiation types,
as well as for other purposes. 
<table><tr><td align='left'  valign='top'>

<a href="nan.xml" target="_top">nan</a></td><td>
Obtain Nan or Determine if a Value is Nan</td></tr>
<tr><td>

<a href="pow_int.xml" target="_top">pow_int</a></td><td>
The Integer Power Function</td></tr>
<tr><td>

<a href="poly.xml" target="_top">Poly</a></td><td>
Evaluate a Polynomial or its Derivative</td></tr>
<tr><td>

<a href="ludetandsolve.xml" target="_top">LuDetAndSolve</a></td><td>
Compute Determinants and Solve Equations by LU Factorization</td></tr>
<tr><td>

<a href="rombergone.xml" target="_top">RombergOne</a></td><td>
One DimensionalRomberg Integration</td></tr>
<tr><td>

<a href="rombergmul.xml" target="_top">RombergMul</a></td><td>
Multi-dimensional Romberg Integration</td></tr>
<tr><td>

<a href="runge45.xml" target="_top">Runge45</a></td><td>
An Embedded 4th and 5th Order Runge-Kutta ODE Solver</td></tr>
<tr><td>

<a href="rosen34.xml" target="_top">Rosen34</a></td><td>
A 3rd and 4th Order Rosenbrock ODE Solver</td></tr>
<tr><td>

<a href="odeerrcontrol.xml" target="_top">OdeErrControl</a></td><td>
An Error Controller for ODE Solvers</td></tr>
<tr><td>

<a href="odegear.xml" target="_top">OdeGear</a></td><td>
An Arbitrary Order Gear Method</td></tr>
<tr><td>

<a href="odegearcontrol.xml" target="_top">OdeGearControl</a></td><td>
An Error Controller for Gear's Ode Solvers</td></tr>
<tr><td>

</td></tr>
</table>
<br/>
<b><big><a name="General Purpose Utilities" id="General Purpose Utilities">General Purpose Utilities</a></big></b>
<br/>
The classes and routines below are of general use 
(not necessarily AD related).
<table><tr><td align='left'  valign='top'>

<a href="cppad_vector.xml" target="_top">CppAD_vector</a></td><td>
The CppAD::vector Template Class</td></tr>
<tr><td>

<a href="thread_alloc.xml" target="_top">thread_alloc</a></td><td>
A Fast Multi-Threading Memory Allocator</td></tr>
<tr><td>

<a href="index_sort.xml" target="_top">index_sort</a></td><td>
Returns Indices that Sort a Vector</td></tr>
<tr><td>

</td></tr>
</table>
<br/>
<b><big><a name="Numerical AD Library" id="Numerical AD Library">Numerical AD Library</a></big></b>
<br/>
The routines listed below are numerical routines that are specially
designed to work with CppAD in particular.
<table><tr><td align='left'  valign='top'>

<a href="benderquad.xml" target="_top">BenderQuad</a></td><td>
Computing Jacobian and Hessian of Bender's Reduced Objective</td></tr>
<tr><td>

<a href="opt_val_hes.xml" target="_top">opt_val_hes</a></td><td>
Jacobian and Hessian of Optimal Values</td></tr>
<tr><td>

<a href="luratio.xml" target="_top">LuRatio</a></td><td>
LU Factorization of A Square Matrix and Stability Calculation</td></tr>
<tr><td>

</td></tr>
</table>

<hr/>Input File: omh/library.omh

</body>
</html>
