source: trunk/doc.omh @ 3811

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

merge to branch: trunk
from repository: https://github.com/coin-or/CppAD
start hash code: f77cd2e443b8d14f354f97efc4c26369227dfe81
end hash code: 33d1f5b8d837d83c8baf656045d85d8b45f0b297

commit 33d1f5b8d837d83c8baf656045d85d8b45f0b297
Author: Brad Bell <bradbell@…>
Date: Sun Mar 27 04:01:14 2016 -0700

  1. Test non-symmetric reverse mode in eigen_mat_inv (and fix this example).
  2. Advance version to cppad-20160327.

commit 238e214ff36ca835efca615c609576dc8bf5038d
Author: Brad Bell <bradbell@…>
Date: Sat Mar 26 18:10:59 2016 -0700

eigen_mat_inv.hpp: use inverse matrix (since we are computing it).
eigen_mat_mul.hpp: comment seperator.
eigen_mat_inv.cpp: matrix during recording is non-singular.
eigen_mat_inv.cpp: test first and second order forward.

commit fc918b0476cc8ea66abdf2904a71fc93472d279d
Author: Brad Bell <bradbell@…>
Date: Sat Mar 26 16:26:51 2016 -0700

Add test_more/eigen_mat_inv.cpp.


eigen_mat_inv.hpp: fix calculation of vy.
eigen_mat_inv.cpp: fix section title.
CMakeLists.txt: no longer necessary to have special library for eigen tests.
eigen_mat_inv.cpp: Test with non-symmetric matrix.

  • Property svn:keywords set to Id
File size: 7.4 KB
Line 
1$Id: doc.omh 3811 2016-03-27 13:00:39Z 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-20160327: 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.