source: trunk/doc.omh @ 3805

Last change on this file since 3805 was 3805, checked in by bradbell, 4 years ago

merge to branch: trunk
from repository: https://github.com/coin-or/CppAD
start hash code: 624601e5e709d2872b5873f628fae76d5f575a9b
end hash code: 256147abd1ffb46688686cc6cd53908c9a64d957

commit 256147abd1ffb46688686cc6cd53908c9a64d957
Author: Brad Bell <bradbell@…>
Date: Tue Mar 22 12:56:16 2016 -0700

Change atomic_ode.cpp -> checkpoint_ode.cpp,
and atomic_extended_ode.cpp -> checkpoint_extended_ode.cpp.

commit 42eb37c2c38a377bf165ea2dcdd9721d251da800
Author: Brad Bell <bradbell@…>
Date: Tue Mar 22 09:05:32 2016 -0700

Add the eigen_mat_mul.cpp example (still under construction).


ode.cpp: minor corrections to typos in documentation.

commit 6126e82c2a9b3f10d15ee792bf9d32796eb9561c
Author: Brad Bell <bradbell@…>
Date: Tue Mar 22 04:57:55 2016 -0700

Reduce level of indent on public and private commands in atomic examples.

commit 50b8a65b81a0d4e3b0d9d03b188966eb5b366bec
Author: Brad Bell <bradbell@…>
Date: Tue Mar 22 04:46:22 2016 -0700

  1. Advance version to 20160322.
  2. Move atomic_mat_mul_xam.cpp -> atomic_mat_mul.cpp.

commit bb5a5300f882891dafff643ab6899a131fa477b0
Author: Brad Bell <bradbell@…>
Date: Mon Mar 21 05:40:28 2016 -0700

test_one.sh.in: use path to file instead of dir file.
mat_mul.hpp: add missing virtual (did not matter).

commit 955919bc43857a7f9b953af96be30f0cf524ae1c
Merge: ceb9087 3eece08
Author: Brad Bell <bradbell@…>
Date: Sun Mar 20 12:52:01 2016 -0700

Do not know how master got out of sync with local copy, but this merge
does not see to have any changes.

commit ceb9087c686d99279687134dc0af4da0150a0bc5
Author: Brad Bell <bradbell@…>
Date: Sun Mar 20 11:23:46 2016 -0700

Use utility/set_union to simplify atomic examples and tests.

commit 60e9db895ee11bddfb02b1e2f8a96b9dd8a01e49
Author: Brad Bell <bradbell@…>
Date: Sun Mar 20 11:02:21 2016 -0700

  1. Sort some lists.
  2. Add some references to set_union (missing in previous commit).

commit 3eece08b8e9af5f9cf2633bc300c4e5477acd2b1
Author: Brad Bell <bradbell@…>
Date: Sun Mar 20 10:00:56 2016 -0700

  1. Sort some lists.
  2. Add some references to set_union (missing in previous commit).

commit 309e461bf32d95b9330f65bbffaf4fa24d5f11d6
Author: Brad Bell <bradbell@…>
Date: Sun Mar 20 09:34:14 2016 -0700

Add utility/set_union.hpp.

  • Property svn:keywords set to Id
File size: 7.4 KB
Line 
1$Id: doc.omh 3805 2016-03-22 20:01:22Z bradbell $
2/* --------------------------------------------------------------------------
3CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-16 Bradley M. Bell
4
5CppAD is distributed under multiple licenses. This distribution is under
6the terms of the
7                    Eclipse Public License Version 1.0.
8
9A copy of this license is included in the COPYING file of this distribution.
10Please visit http://www.coin-or.org/CppAD/ for information on other licenses.
11-------------------------------------------------------------------------- */
12$begin CppAD$$
13$comment default navigate command for all of CppAD documentation$$
14$navigate%
15        Prev%Prev%
16        Next%Next%
17        Across%Index%
18        Up%Up%
19        Down_up_3%_up_3%
20        Down_up_2%_up_2%
21        Down_up_1%_up_1%
22        Down_up_0%_up_0%
23        Current%Headings
24%$$
25$comment -------------------------------------------------------------
26default automatic indexing command for all CppAD documentaiton
27$$
28$aindex section head subhead$$
29$comment -------------------------------------------------------------
30Latex used throughout the CppAD documentation
31$$
32$latex
33\newcommand{\W}[1]{ \; #1 \; }
34\newcommand{\R}[1]{ {\rm #1} }
35\newcommand{\B}[1]{ {\bf #1} }
36\newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} }
37\newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} }
38\newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial  {#2}^{#1}} }
39\newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }
40$$
41$comment -------------------------------------------------------------
42hilite commands used throughout the CppAD documentation
43$$
44$hilitecmd%
45        verbatim%
46        codep
47%$$
48$hiliteseq%
49
50 CppAD::%AD%<%                AD
51%       %AD%<%                AD
52
53%CppAD::%ADFun%<%             FunConstruct
54%       %ADFun%<%             FunConstruct
55
56%       %CPPAD_TESTVECTOR%(% testvector
57
58      %.%Forward%(%           Forward
59
60%CppAD::%Independent%(%       Independent
61%       %Independent%(%       Independent
62
63      %.%Jacobian%(%          Jacobian
64
65%CppAD::%NearEqual%(%         NearEqual
66%       %NearEqual%(%         NearEqual
67
68      %.%Reverse%(%           Reverse
69%$$
70$spell
71        Jax
72        cppad.hpp
73        cppad
74        namespaces
75        std
76        templated
77        const
78        CppADvector
79        multiplicative
80        Microsoft
81        bool
82        Det
83        namespace
84        Cpp
85        Var
86        Diff
87        initializes
88$$
89
90,
91
92$comment bin/version assumes that : follows cppad version number here$$
93$section
94cppad-20160322: A Package for Differentiation of C++ Algorithms
95$$
96$mindex AD algorithmic differentiation automatic C++ algorithm derivative CppAD version cppad.hpp$$
97
98$comment This comment is used to remove the table below$$
99$table
100$cnext
101        One section per web page $pre  $$ $cnext
102        All sections in one web page
103$rnext
104$cnext
105        (fast to load) $pre  $$ $cnext
106        (slow to load)
107$rnext
108Math displayed using MathJax $pre  $$ $cnext
109$href%cppad.htm%$$
110$pre  $$ $cnext
111$href%_printable.htm%$$
112$rnext
113Math displayed using MathML $pre  $$ $cnext
114$href%cppad.xml%$$ $pre  $$ $cnext
115$href%_printable.xml%$$
116$tend
117
118
119$head Syntax$$
120$code # include <cppad/cppad.hpp>$$
121
122$head Introduction$$
123We refer to the
124step by step conversion from an algorithm that computes function values
125to an algorithm that computes derivative values
126as $italic Algorithmic Differentiation$$
127(often referred to as $italic Automatic Differentiation$$.)
128Given a C++ algorithm that computes function values,
129CppAD generates an algorithm that computes its derivative values.
130A brief introduction to Algorithmic Differentiation can be found in
131$href%http://en.wikipedia.org/wiki/Automatic_differentiation%wikipedia%$$.
132The web site
133$href%http://www.autodiff.org%autodiff.org%$$
134is dedicated to research about, and promoting the use of, AD.
135
136$list number$$
137$href%http://www.coin-or.org/CppAD/%CppAD%$$
138uses operator overloading to compute derivatives of algorithms defined in C++.
139It is distributed by the
140$href%http://www.coin-or.org/foundation.html%COIN-OR Foundation%$$
141with the Eclipse Public License
142$href%http://www.opensource.org/licenses/EPL-1.0%EPL-1.0%$$
143or the GNU General Public License
144$href%http://www.opensource.org/licenses/AGPL-3.0%GPL-3.0%$$.
145Testing and installation is supported for Unix, Microsoft, and Apple
146operating systems.
147Extensive user and developer documentation is included.
148
149$lnext
150An AD of $italic Base$$
151$xref/glossary/Operation/Sequence/operation sequence/1/$$
152is stored as an
153$xref/ADFun//AD function object/$$
154which can evaluate function values and derivatives.
155Arbitrary order
156$xref/Forward//forward/$$ and $xref/Reverse//reverse/$$
157mode derivative calculations
158can be preformed on the operation sequence.
159Logical comparisons can be included in an operation sequence
160using AD $xref/CondExp//conditional expressions/$$.
161Evaluation of user defined unary
162$xref/Discrete//discrete functions/$$ can also be included
163in the sequence of operations; i.e.,
164functions that depend on the
165$cref/independent variables/glossary/Tape/Independent Variable/$$
166but which have identically zero derivatives
167(e.g., a step function).
168
169$lnext
170Derivatives of functions that are defined in terms of other derivatives
171can be computed using multiple levels of AD;
172see $cref/mul_level.cpp/$$ for a simple example
173and $cref/mul_level_ode.cpp/$$ for a more realistic example.
174To this end, CppAD can also be used with other AD types; for example see
175$cref/mul_level_adolc_ode.cpp/$$.
176
177$lnext
178A set of programs for doing $cref/speed/$$ comparisons between
179$href%https://projects.coin-or.org/ADOL-C%Adolc%$$,
180CppAD,
181$href%http://www.fadbad.com/%Fadbad%$$,
182and
183$href%http://trilinos.sandia.gov/packages/sacado/%Sacado%$$
184are included.
185
186
187$lnext
188Includes a set of C++ $cref/utilities/utility/$$ that are useful
189for general operator overloaded numerical method.
190Allows for replacement of the
191$cref/testvector/$$
192template vector class which is used for extensive testing;
193for example, you can do your testing with the
194$href%http://www.boost.org/libs/numeric/ublas/doc/index.htm%uBlas%$$
195template vector class.
196
197$lnext
198See $xref/whats_new/$$ for a list of recent extensions and bug fixes.
199
200$lend
201
202You can find out about other algorithmic differentiation tools
203and about algorithmic differentiation in general at the following web sites:
204$href%http://en.wikipedia.org/wiki/Automatic_differentiation%wikipedia%$$,
205$href%http://www.autodiff.org%autodiff.org%$$.
206
207$head Example$$
208The file
209$xref/get_started.cpp/$$
210contains an example and test of using CppAD to compute
211the derivative of a polynomial.
212There are many other
213$xref/Example//examples/$$.
214
215$head Include File$$
216The following include directive
217$syntax%
218        # include <cppad/cppad.hpp>
219%$$
220includes the CppAD package for the rest of the current compilation unit.
221
222$head Preprocessor Symbols$$
223All the $cref preprocessor$$ symbols used by CppAD begin with eight
224$code CppAD$$ or $code CPPAD_$$.
225
226$head Namespace$$
227All of the functions and objects defined by CppAD are in the
228$code CppAD$$ namespace; for example, you can access the $xref/AD/$$ types as
229$syntax%
230        size_t n = 2;
231        CppAD::vector< CppAD::AD<%Base%> > %x%(%n%)
232%$$
233You can abbreviate access to one object or function a $code using$$
234command of the form
235$syntax%
236        using CppAD::AD
237        CppAD::vector< AD<%Base%> > %x%(%n%)
238%$$
239You can abbreviate access to all CppAD objects and functions
240with a command of the form
241$syntax%
242        using namespace CppAD
243        vector< AD<%Base%> > %x%(%n%)
244%$$
245If you include other namespaces in a similar manner,
246this can cause naming conflicts.
247
248
249$childtable%
250        omh/install/install.omh%
251        omh/introduction.omh%
252        cppad/local/user_ad.hpp%
253        cppad/local/ad_fun.hpp%
254        omh/preprocessor.omh%
255        omh/multi_thread.omh%
256        omh/utility.omh%
257        cppad/ipopt/solve.hpp%
258        omh/example.omh%
259        omh/speed/speed.omh%
260        omh/appendix.omh
261%$$
262
263$end
Note: See TracBrowser for help on using the repository browser.