Codebase list cppad / ddc83e1
New upstream version 2017.00.00.3 Barak A. Pearlmutter 7 years ago
20 changed file(s) with 258 addition(s) and 205 deletion(s). Raw diff Collapse all Expand all
1515 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
1616
1717 # cppad_version is used by set_version.sh to get the version number.
18 SET(cppad_version "20170000.2" )
18 SET(cppad_version "20170000.3" )
1919 SET(cppad_url "http://www.coin-or.org/CppAD" )
2020 SET(cppad_description "Differentiation of C++ Algorithms" )
2121
00 #! /bin/sh
11 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.69 for cppad 20170000.2.
2 # Generated by GNU Autoconf 2.69 for cppad 20170000.3.
33 #
44 # Report bugs to <cppad@list.coin-or.org>.
55 #
579579 # Identity of this package.
580580 PACKAGE_NAME='cppad'
581581 PACKAGE_TARNAME='cppad'
582 PACKAGE_VERSION='20170000.2'
583 PACKAGE_STRING='cppad 20170000.2'
582 PACKAGE_VERSION='20170000.3'
583 PACKAGE_STRING='cppad 20170000.3'
584584 PACKAGE_BUGREPORT='cppad@list.coin-or.org'
585585 PACKAGE_URL=''
586586
14081408 # Omit some internal or obsolete options to make the list less imposing.
14091409 # This message is too long to be a string in the A/UX 3.1 sh.
14101410 cat <<_ACEOF
1411 \`configure' configures cppad 20170000.2 to adapt to many kinds of systems.
1411 \`configure' configures cppad 20170000.3 to adapt to many kinds of systems.
14121412
14131413 Usage: $0 [OPTION]... [VAR=VALUE]...
14141414
14781478
14791479 if test -n "$ac_init_help"; then
14801480 case $ac_init_help in
1481 short | recursive ) echo "Configuration of cppad 20170000.2:";;
1481 short | recursive ) echo "Configuration of cppad 20170000.3:";;
14821482 esac
14831483 cat <<\_ACEOF
14841484
16121612 test -n "$ac_init_help" && exit $ac_status
16131613 if $ac_init_version; then
16141614 cat <<\_ACEOF
1615 cppad configure 20170000.2
1615 cppad configure 20170000.3
16161616 generated by GNU Autoconf 2.69
16171617
16181618 Copyright (C) 2012 Free Software Foundation, Inc.
22412241 This file contains any messages produced by compilers while
22422242 running configure, to aid debugging if configure makes a mistake.
22432243
2244 It was created by cppad $as_me 20170000.2, which was
2244 It was created by cppad $as_me 20170000.3, which was
22452245 generated by GNU Autoconf 2.69. Invocation command line was
22462246
22472247 $ $0 $@
31313131
31323132 # Define the identity of the package.
31333133 PACKAGE='cppad'
3134 VERSION='20170000.2'
3134 VERSION='20170000.3'
31353135
31363136
31373137 cat >>confdefs.h <<_ACEOF
85718571 # report actual input values of CONFIG_FILES etc. instead of their
85728572 # values after options handling.
85738573 ac_log="
8574 This file was extended by cppad $as_me 20170000.2, which was
8574 This file was extended by cppad $as_me 20170000.3, which was
85758575 generated by GNU Autoconf 2.69. Invocation command line was
85768576
85778577 CONFIG_FILES = $CONFIG_FILES
86288628 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
86298629 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
86308630 ac_cs_version="\\
8631 cppad config.status 20170000.2
8631 cppad config.status 20170000.3
86328632 configured by $0, generated by GNU Autoconf 2.69,
86338633 with options \\"\$ac_cs_config\\"
86348634
1010 dnl
1111 dnl Process this file with autoconf to produce a configure script.
1212 dnl package version bug-report
13 AC_INIT([cppad], [20170000.2], [cppad@list.coin-or.org])
13 AC_INIT([cppad], [20170000.3], [cppad@list.coin-or.org])
1414 AM_SILENT_RULES([yes])
1515
1616 dnl By defalut disable maintainer mode when running configure;
0 # ifndef CPPAD_LOCAL_OPTIMIZE_CEXP_INFO_HPP
1 # define CPPAD_LOCAL_OPTIMIZE_CEXP_INFO_HPP
2 /* --------------------------------------------------------------------------
3 CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-17 Bradley M. Bell
4
5 CppAD is distributed under multiple licenses. This distribution is under
6 the terms of the
7 GNU General Public License Version 3.
8
9 A copy of this license is included in the COPYING file of this distribution.
10 Please visit http://www.coin-or.org/CppAD/ for information on other licenses.
11 -------------------------------------------------------------------------- */
12 # include <cppad/local/declare_ad.hpp> // defines CompareOp
13 # include <cppad/utility/vector.hpp>
14
15 /*!
16 \file cexp_info.hpp
17 Information about one conditional expression.
18 */
19
20 // BEGIN_CPPAD_LOCAL_OPTIMIZE_NAMESPACE
21 namespace CppAD { namespace local { namespace optimize {
22 /*!
23 Information about one conditional expression.
24 */
25 struct struct_cexp_info {
26 /// The operator index for this conditional expression operation
27 size_t i_op;
28
29 /// (flag & 1) is true if and only if left is a variable
30 /// (flag & 2) is true if and only if right is a variable
31 size_t flag;
32
33 /// variable or parameter index for left comparison operand
34 size_t left;
35
36 /// variable or parameter index for right comparison operand
37 size_t right;
38
39 /// maximum variable index between left and right (ignoring parameters).
40 size_t max_left_right;
41
42 /// set of operator that are not used when comparison result is true
43 /// Note that UsrapOp, UsravOp, UsrrpOp, and UsrrvOp, are not in this
44 /// vector and should be skipped when the corresponding UserOp are skipped.
45 CppAD::vector<size_t> skip_op_true;
46
47 /// set of variables that are not used when comparison result is false
48 /// Note that UsrapOp, UsravOp, UsrrpOp, and UsrrvOp, are not in this
49 /// vector and should be skipped when the corresponding UserOp are skipped.
50 CppAD::vector<size_t> skip_op_false;
51
52 /// comparision operator for this conditional expression
53 CompareOp cop;
54 };
55
56 // Information about the conditional skip in the new operation sequence
57 struct struct_cskip_new {
58 /// new variable or parameter index for left comparison operand
59 size_t left;
60 /// new variable or parameter index for right comparison operand
61 size_t right;
62 /// maximum variable index between left and right (ignoring parameters).
63 size_t max_left_right;
64 /// index where this conditional skips arguments start
65 size_t i_arg;
66 };
67
68 } } } // END_CPPAD_LOCAL_OPTIMIZE_NAMESPACE
69
70 # endif
+0
-72
cppad/local/optimize/cskip_info.hpp less more
0 // $Id$
1 # ifndef CPPAD_LOCAL_OPTIMIZE_CSKIP_INFO_HPP
2 # define CPPAD_LOCAL_OPTIMIZE_CSKIP_INFO_HPP
3 /* --------------------------------------------------------------------------
4 CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-16 Bradley M. Bell
5
6 CppAD is distributed under multiple licenses. This distribution is under
7 the terms of the
8 GNU General Public License Version 3.
9
10 A copy of this license is included in the COPYING file of this distribution.
11 Please visit http://www.coin-or.org/CppAD/ for information on other licenses.
12 -------------------------------------------------------------------------- */
13 # include <cppad/local/declare_ad.hpp> // defines CompareOp
14 # include <cppad/utility/vector.hpp>
15
16 /*!
17 \file cskip_info.hpp
18 Information about one conditional expression.
19 */
20
21 // BEGIN_CPPAD_LOCAL_OPTIMIZE_NAMESPACE
22 namespace CppAD { namespace local { namespace optimize {
23 /*!
24 Information about one conditional expression.
25 */
26 struct struct_cskip_info {
27 /// The operator index for this conditional expression operation
28 size_t i_op;
29
30 /// (flag & 1) is true if and only if left is a variable
31 /// (flag & 2) is true if and only if right is a variable
32 size_t flag;
33
34 /// variable or parameter index for left comparison operand
35 size_t left;
36
37 /// variable or parameter index for right comparison operand
38 size_t right;
39
40 /// maximum variable index between left and right (ignoring parameters).
41 size_t max_left_right;
42
43 /// set of operator that are not used when comparison result is true
44 /// Note that UsrapOp, UsravOp, UsrrpOp, and UsrrvOp, are not in this
45 /// vector and should be skipped when the corresponding UserOp are skipped.
46 CppAD::vector<size_t> skip_op_true;
47
48 /// set of variables that are not used when comparison result is false
49 /// Note that UsrapOp, UsravOp, UsrrpOp, and UsrrvOp, are not in this
50 /// vector and should be skipped when the corresponding UserOp are skipped.
51 CppAD::vector<size_t> skip_op_false;
52
53 /// comparision operator for this conditional expression
54 CompareOp cop;
55 };
56
57 // Information about the conditional skip in the new operation sequence
58 struct struct_cskip_new {
59 /// new variable or parameter index for left comparison operand
60 size_t left;
61 /// new variable or parameter index for right comparison operand
62 size_t right;
63 /// maximum variable index between left and right (ignoring parameters).
64 size_t max_left_right;
65 /// index where this conditional skips arguments start
66 size_t i_arg;
67 };
68
69 } } } // END_CPPAD_LOCAL_OPTIMIZE_NAMESPACE
70
71 # endif
0 // $Id$
10 # ifndef CPPAD_LOCAL_OPTIMIZE_GET_OP_INFO_HPP
21 # define CPPAD_LOCAL_OPTIMIZE_GET_OP_INFO_HPP
32
43 /* --------------------------------------------------------------------------
5 CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-16 Bradley M. Bell
4 CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-17 Bradley M. Bell
65
76 CppAD is distributed under multiple licenses. This distribution is under
87 the terms of the
1817
1918 # include <cppad/local/optimize/op_info.hpp>
2019 # include <cppad/local/optimize/match_op.hpp>
21 # include <cppad/local/optimize/cskip_info.hpp>
20 # include <cppad/local/optimize/cexp_info.hpp>
2221 # include <cppad/local/optimize/usage.hpp>
2322
2423 // BEGIN_CPPAD_LOCAL_OPTIMIZE_NAMESPACE
123122 \a Base.
124123
125124 \param conditional_skip
126 If conditional_skip this is true, the conditional skip information
127 cskip_info will be calculated.
125 If conditional_skip this is true, the conditional expression information
126 cexp_info will be calculated.
128127 This may be time intensive and may not have much benefit in the optimized
129128 recording.
130129
156155 If the index i_var corresponds to an auxillary variable, var2op[i_var]
157156 is equalt to num_op (which is not a valid operator index).
158157
159 \param cskip_info
158 \param cexp_info
160159 The input size of this vector must be zero.
161 If conditional_skip is false, cskip_info is not changed.
160 If conditional_skip is false, cexp_info is not changed.
162161 Otherwise,
163 upon return cskip_info has size equal to the number of conditional expressions
162 upon return cexp_info has size equal to the number of conditional expressions
164163 in the operation sequence; i.e., the number of CExpOp operators.
165 The value cskip_info[j] is the information corresponding to the j-th
164 The value cexp_info[j] is the information corresponding to the j-th
166165 conditional expression in the operation sequence.
167166 This vector is in the same order as the operation sequence; i.e.
168 if j1 > j2, cskip_info[j1].i_op > cskip_info[j2].i_op.
167 if j1 > j2, cexp_info[j1].i_op > cexp_info[j2].i_op.
169168
170169 \param vecad_used
171170 The input size of this vector must be zero.
191190 player<Base>* play ,
192191 const vector<size_t>& dep_taddr ,
193192 vector<addr_t>& var2op ,
194 vector<struct_cskip_info>& cskip_info ,
193 vector<struct_cexp_info>& cexp_info ,
195194 vector<bool>& vecad_used ,
196195 vector<struct_op_info>& op_info )
197196 {
198197 CPPAD_ASSERT_UNKNOWN( var2op.size() == 0 );
199 CPPAD_ASSERT_UNKNOWN( cskip_info.size() == 0 );
198 CPPAD_ASSERT_UNKNOWN( cexp_info.size() == 0 );
200199 CPPAD_ASSERT_UNKNOWN( vecad_used.size() == 0 );
201200 CPPAD_ASSERT_UNKNOWN( op_info.size() == 0 );
202201
983982 }
984983 }
985984 // ----------------------------------------------------------------------
986 // compute cskip_info
985 // compute cexp_info
987986 // ----------------------------------------------------------------------
988987 if( cexp_set.n_set() == 0 )
989988 return;
990989 //
991990 // initialize information for each conditional expression
992 cskip_info.resize(num_cexp_op);
991 cexp_info.resize(num_cexp_op);
993992 for(size_t i = 0; i < num_cexp_op; i++)
994993 { CPPAD_ASSERT_UNKNOWN(
995994 op_info[i].previous == 0 || op_info[i].usage == yes_usage
998997 arg = op_info[i_op].arg;
999998 CPPAD_ASSERT_UNKNOWN( op_info[i_op].op == CExpOp );
1000999 //
1001 struct_cskip_info info;
1000 struct_cexp_info info;
10021001 info.i_op = i_op;
10031002 info.cop = CompareOp( arg[0] );
10041003 info.flag = arg[1];
10141013 CPPAD_ASSERT_UNKNOWN( index > 0 );
10151014 info.max_left_right = index;
10161015 //
1017 cskip_info[i] = info;
1016 cexp_info[i] = info;
10181017 };
10191018 // Determine which operators can be conditionally skipped
10201019 i_op = 0;
10501049 size_t index = element / 2;
10511050 bool compare = bool( element % 2 );
10521051 if( compare == false )
1053 { cskip_info[index].skip_op_false.push_back(i_op);
1052 { cexp_info[index].skip_op_false.push_back(i_op);
10541053 if( j_op != i_op )
1055 cskip_info[index].skip_op_false.push_back(j_op);
1054 cexp_info[index].skip_op_false.push_back(j_op);
10561055 }
10571056 else
1058 { cskip_info[index].skip_op_true.push_back(i_op);
1057 { cexp_info[index].skip_op_true.push_back(i_op);
10591058 if( j_op != i_op )
1060 cskip_info[index].skip_op_true.push_back(j_op);
1059 cexp_info[index].skip_op_true.push_back(j_op);
10611060 }
10621061 ++itr;
10631062 }
0 // $Id$
10
21 # ifndef CPPAD_LOCAL_OPTIMIZE_OPTIMIZE_RUN_HPP
32 # define CPPAD_LOCAL_OPTIMIZE_OPTIMIZE_RUN_HPP
43
54 /* --------------------------------------------------------------------------
6 CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-16 Bradley M. Bell
5 CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-17 Bradley M. Bell
76
87 CppAD is distributed under multiple licenses. This distribution is under
98 the terms of the
2120 # include <cppad/local/optimize/size_pair.hpp>
2221 # include <cppad/local/optimize/csum_variable.hpp>
2322 # include <cppad/local/optimize/csum_stacks.hpp>
24 # include <cppad/local/optimize/cskip_info.hpp>
23 # include <cppad/local/optimize/cexp_info.hpp>
2524 # include <cppad/local/optimize/match_op.hpp>
2625 # include <cppad/local/optimize/record_pv.hpp>
2726 # include <cppad/local/optimize/record_vp.hpp>
130129
131130 // operator information
132131 vector<addr_t> var2op;
133 vector<struct_cskip_info> cskip_info;
132 vector<struct_cexp_info> cexp_info;
134133 vector<bool> vecad_used;
135134 vector<struct_op_info> op_info;
136135 get_op_info(
140139 play,
141140 dep_taddr,
142141 var2op,
143 cskip_info,
142 cexp_info,
144143 vecad_used,
145144 op_info
146145 );
157156
158157 enum_user_state user_state;
159158 // -------------------------------------------------------------
160 // conditional skip information
159 // conditional expression information
161160 //
162 // size of the conditional cskip information structure
163 // (This is equal to the number of conditional expressions when
164 // conditional_skip is true.)
165 size_t num_cskip = cskip_info.size();
166 CPPAD_ASSERT_UNKNOWN( conditional_skip || num_cskip == 0 );
167
168 // sort the conditional skip information by max_left_right
169 vector<size_t> cskip_info_order(num_cskip);
170 if( num_cskip > 0 )
171 { CppAD::vector<size_t> keys(num_cskip);
172 for(size_t i = 0; i < num_cskip; i++)
173 keys[i] = cskip_info[i].max_left_right;
174 CppAD::index_sort(keys, cskip_info_order);
161 // Size of the conditional expression information structure.
162 // This is equal to the number of conditional expressions when
163 // conditional_skip is true, otherwise it is zero.
164 size_t num_cexp = cexp_info.size();
165 CPPAD_ASSERT_UNKNOWN( conditional_skip || num_cexp == 0 );
166 //
167 // sort the conditional expression information by max_left_right
168 // this is the conditional skip order
169 vector<size_t> cskip_order(num_cexp);
170 if( num_cexp > 0 )
171 { CppAD::vector<size_t> keys(num_cexp);
172 for(size_t i = 0; i < num_cexp; i++)
173 keys[i] = cexp_info[i].max_left_right;
174 CppAD::index_sort(keys, cskip_order);
175175 }
176
177 // index in sorted order
176 // initial index in conditional skip order
178177 size_t cskip_order_next = 0;
179
180 // index in order during reverse sweep
181 size_t cskip_info_index = num_cskip;
182 vector<struct_cskip_new> cskip_new(num_cskip);
183 // flag used to indicate that this conditional expression is skipped
184 for(size_t i = 0; i < num_cskip; i++)
178 //
179 // initialize index in conditional expression order
180 size_t cexp_next = 0;
181
182 // mapping from conditional expression index to conditional skip
183 // information on new tape
184 vector<struct_cskip_new> cskip_new(num_cexp);
185 //
186 // flag used to indicate that there is no conditional skip
187 // for this conditional expression
188 for(size_t i = 0; i < num_cexp; i++)
185189 cskip_new[i].i_arg = 0;
186190 // -------------------------------------------------------------
187191
244248 //
245249 // determine if we should insert a conditional skip here
246250 bool skip = conditional_skip;
247 skip &= cskip_order_next < num_cskip;
251 skip &= cskip_order_next < num_cexp;
248252 skip &= op != BeginOp;
249253 skip &= op != InvOp;
250254 skip &= user_state == start_user;
251255 if( skip )
252 { size_t j = cskip_info_order[cskip_order_next];
256 { size_t j = cskip_order[cskip_order_next];
253257 if( NumRes(op) > 0 )
254 skip &= cskip_info[j].max_left_right < i_var;
255 else
256 skip &= cskip_info[j].max_left_right <= i_var;
258 skip &= cexp_info[j].max_left_right < i_var;
259 else
260 skip &= cexp_info[j].max_left_right <= i_var;
257261 }
258262 if( skip )
259 { size_t j = cskip_info_order[cskip_order_next];
263 { size_t j = cskip_order[cskip_order_next];
260264 cskip_order_next++;
261 struct_cskip_info info = cskip_info[j];
265 struct_cexp_info info = cexp_info[j];
262266 size_t n_true = info.skip_op_true.size();
263267 size_t n_false = info.skip_op_false.size();
264268 skip &= n_true > 0 || n_false > 0;
285289 }
286290 size_t previous;
287291 //
288 if( op_info[i_op].usage == yes_usage ) switch( op )
292 if( op_info[i_op].usage != yes_usage )
293 { if( op == CExpOp )
294 ++cexp_next;
295 }
296 else switch( op )
289297 {
290298 case BeginOp:
291299 CPPAD_ASSERT_NARG_NRES(op, 1, 1);
557565 // fill in the arguments for the CSkip operations. This does not
558566 // affect max_left_right which is used during this sweep.
559567 if( conditional_skip )
560 { CPPAD_ASSERT_UNKNOWN( cskip_info_index > 0 );
561 cskip_info_index--;
562 cskip_new[ cskip_info_index ].left = new_arg[2];
563 cskip_new[ cskip_info_index ].right = new_arg[3];
568 { CPPAD_ASSERT_UNKNOWN( cexp_next < num_cexp );
569 CPPAD_ASSERT_UNKNOWN( cexp_info[cexp_next].i_op == i_op );
570 cskip_new[ cexp_next ].left = new_arg[2];
571 cskip_new[ cexp_next ].right = new_arg[3];
572 ++cexp_next;
564573 }
565574 break;
566575 // ---------------------------------------------------
842851 # endif
843852 // make sure that all the conditional expressions have been
844853 // checked to see if they are still present
845 CPPAD_ASSERT_UNKNOWN( cskip_order_next == num_cskip );
854 CPPAD_ASSERT_UNKNOWN( cskip_order_next == num_cexp );
846855 // fill in the arguments for the CSkip operations
847 for(size_t i = 0; i < num_cskip; i++)
856 for(size_t i = 0; i < num_cexp; i++)
848857 { // if cskip_new[i].i_arg == 0, this conditional expression was skipped
849858 if( cskip_new[i].i_arg > 0 )
850 { struct_cskip_info info = cskip_info[i];
859 { struct_cexp_info info = cexp_info[i];
851860 size_t n_true = info.skip_op_true.size();
852861 size_t n_false = info.skip_op_false.size();
853862 size_t i_arg = cskip_new[i].i_arg;
863 size_t left = cskip_new[i].left;
864 size_t right = cskip_new[i].right;
854865 rec->ReplaceArg(i_arg++, info.cop );
855866 rec->ReplaceArg(i_arg++, info.flag );
856 rec->ReplaceArg(i_arg++, info.left );
857 rec->ReplaceArg(i_arg++, info.right );
867 rec->ReplaceArg(i_arg++, left );
868 rec->ReplaceArg(i_arg++, right );
858869 rec->ReplaceArg(i_arg++, n_true );
859870 rec->ReplaceArg(i_arg++, n_false );
860871 for(size_t j = 0; j < info.skip_op_true.size(); j++)
861 { i_op = cskip_info[i].skip_op_true[j];
872 { i_op = cexp_info[i].skip_op_true[j];
862873 // op_info[i_op].usage == yes_usage
863874 CPPAD_ASSERT_UNKNOWN( old2new[i_op].new_op != 0 );
864875 rec->ReplaceArg(i_arg++, old2new[i_op].new_op );
865876 }
866877 for(size_t j = 0; j < info.skip_op_false.size(); j++)
867 { i_op = cskip_info[i].skip_op_false[j];
878 { i_op = cexp_info[i].skip_op_false[j];
868879 // op_info[i_op].usage == yes_usage
869880 CPPAD_ASSERT_UNKNOWN( old2new[i_op].new_op != 0 );
870881 rec->ReplaceArg(i_arg++, old2new[i_op].new_op );
0 // $Id: sparse_list.hpp 3853 2016-12-14 14:40:11Z bradbell $
10 # ifndef CPPAD_LOCAL_SPARSE_LIST_HPP
21 # define CPPAD_LOCAL_SPARSE_LIST_HPP
32
43 /* --------------------------------------------------------------------------
5 CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-16 Bradley M. Bell
4 CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-17 Bradley M. Bell
65
76 CppAD is distributed under multiple licenses. This distribution is under
87 the terms of the
484483 //
485484 CPPAD_ASSERT_UNKNOWN( reference_count(index) == 1 );
486485 size_t previous = start_[index];
487 size_t next = data_[start].next;
486 size_t next = data_[previous].next;
488487 size_t value = data_[next].value;
489488 CPPAD_ASSERT_UNKNOWN( value < end_ );
490489 while( value < element )
6363 onmouseover='MouseOver(1)'
6464 onmouseout='MouseOut(1)'
6565 ><img src='_close.gif' name='folder1' align='middle' />
66 <u>cppad-20170000.2: A Package for Differentiation of C++ Algorithms</u></a>
66 <u>cppad-20170000.3: A Package for Differentiation of C++ Algorithms</u></a>
6767
6868 <span id='children1'>
69 <br/><a href="cppad.xml" target="_top">cppad-20170000.2: A Package for Differentiation of C++ Algorithms</a>
69 <br/><a href="cppad.xml" target="_top">cppad-20170000.3: A Package for Differentiation of C++ Algorithms</a>
7070
7171 <br/>&#xA0;&#xA0;&#xA0;&#xA0;<a href="_contents_xml.htm" target="_top">Table of Contents</a>
7272
171171
172172 <tr valign="top"><td><a href="http://www.coin-or.org/download/source/CppAD/" target="_top">http://www.coin-or.org/download/source/CppAD/</a></td><td><a href="whats_new_09.xml#06-25" target="_top">whats_new_09#06-25</a></td></tr>
173173
174 <tr valign="top"><td><a href="http://www.coin-or.org/download/source/CppAD/cppad-20170000.2.epl.tgz" target="_top">http://www.coin-or.org/download/source/CppAD/cppad-20170000.2.epl.tgz</a></td><td><a href="download.xml#Current Version.Compressed Archives" target="_top">download#Current Version.Compressed Archives</a></td></tr>
175
176 <tr valign="top"><td><a href="http://www.coin-or.org/download/source/CppAD/cppad-20170000.2.gpl.tgz" target="_top">http://www.coin-or.org/download/source/CppAD/cppad-20170000.2.gpl.tgz</a></td><td><a href="download.xml#Current Version.Compressed Archives" target="_top">download#Current Version.Compressed Archives</a></td></tr>
174 <tr valign="top"><td><a href="http://www.coin-or.org/download/source/CppAD/cppad-20170000.3.epl.tgz" target="_top">http://www.coin-or.org/download/source/CppAD/cppad-20170000.3.epl.tgz</a></td><td><a href="download.xml#Current Version.Compressed Archives" target="_top">download#Current Version.Compressed Archives</a></td></tr>
175
176 <tr valign="top"><td><a href="http://www.coin-or.org/download/source/CppAD/cppad-20170000.3.gpl.tgz" target="_top">http://www.coin-or.org/download/source/CppAD/cppad-20170000.3.gpl.tgz</a></td><td><a href="download.xml#Current Version.Compressed Archives" target="_top">download#Current Version.Compressed Archives</a></td></tr>
177177
178178 <tr valign="top"><td><a href="http://www.coin-or.org/foundation.html" target="_top">http://www.coin-or.org/foundation.html</a></td><td><a href="cppad.xml#Introduction" target="_top">CppAD#Introduction</a></td></tr>
179179
11821182 &#160;&#160;&#160;<a href="simple_ad_bthread.cpp.xml" target="_top">A&#xA0;Simple&#xA0;Boost&#xA0;Threading&#xA0;AD:&#xA0;Example&#xA0;and&#xA0;Test</a><br/>
11831183 &#160;&#160;&#160;<a href="simple_ad_openmp.cpp.xml" target="_top">A&#xA0;Simple&#xA0;OpenMP&#xA0;AD:&#xA0;Example&#xA0;and&#xA0;Test</a><br/>
11841184 &#160;&#160;&#160;<a href="introduction.xml" target="_top">An&#xA0;Introduction&#xA0;by&#xA0;Example&#xA0;to&#xA0;Algorithmic&#xA0;Differentiation</a><br/>
1185 &#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
1185 &#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
11861186 ADFun&#160;<a href="comparechange.xml" target="_top">Comparison&#xA0;Changes&#xA0;During&#xA0;Zero&#xA0;Order&#xA0;Forward&#xA0;Mode</a><br/>
11871187 &#160;&#160;&#160;&#160;&#160;&#160;<a href="compare_change.xml" target="_top">Comparison&#xA0;Changes&#xA0;Between&#xA0;Taping&#xA0;and&#xA0;Zero&#xA0;Order&#xA0;Forward</a><br/>
11881188 &#160;&#160;&#160;&#160;&#160;&#160;<a href="dependent.xml" target="_top">Stop&#xA0;Recording&#xA0;and&#xA0;Store&#xA0;Operation&#xA0;Sequence</a><br/>
14361436 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="forsparsehes.xml#Algorithm" target="_top">Hessian&#xA0;Sparsity&#xA0;Pattern:&#xA0;Forward&#xA0;Mode:&#160;Algorithm</a><br/>
14371437 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="exp_eps.xml" target="_top">An&#xA0;Epsilon&#xA0;Accurate&#xA0;Exponential&#xA0;Approximation</a><br/>
14381438 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="exp_2.xml" target="_top">Second&#xA0;Order&#xA0;Exponential&#xA0;Approximation</a><br/>
1439 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
1439 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
14401440 algorithm<b>:</b>&#160;<a href="conj_grad.cpp.xml" target="_top">Differentiate&#xA0;Conjugate&#xA0;Gradient&#xA0;Algorithm:&#xA0;Example&#xA0;and&#xA0;Test</a><br/>
14411441 algorithmic&#160;<a href="ad_in_c.cpp.xml" target="_top">Example&#xA0;and&#xA0;Test&#xA0;Linking&#xA0;CppAD&#xA0;to&#xA0;Languages&#xA0;Other&#xA0;than&#xA0;C++</a><br/>
14421442 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="introduction.xml#Preface.Algorithmic Differentiation" target="_top">An&#xA0;Introduction&#xA0;by&#xA0;Example&#xA0;to&#xA0;Algorithmic&#xA0;Differentiation:&#160;Preface.Algorithmic&#xA0;Differentiation</a><br/>
14431443 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="introduction.xml" target="_top">An&#xA0;Introduction&#xA0;by&#xA0;Example&#xA0;to&#xA0;Algorithmic&#xA0;Differentiation</a><br/>
1444 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
1445 algorithms&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
1444 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
1445 algorithms&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
14461446 alignment&#160;<a href="ta_create_array.xml#Alignment" target="_top">Allocate&#xA0;An&#xA0;Array&#xA0;and&#xA0;Call&#xA0;Default&#xA0;Constructor&#xA0;for&#xA0;its&#xA0;Elements:&#160;Alignment</a><br/>
14471447 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="ta_get_memory.xml#Alignment" target="_top">Get&#xA0;At&#xA0;Least&#xA0;A&#xA0;Specified&#xA0;Amount&#xA0;of&#xA0;Memory:&#160;Alignment</a><br/>
14481448 all&#160;<a href="listallexamples.xml" target="_top">List&#xA0;of&#xA0;All&#xA0;the&#xA0;CppAD&#xA0;Examples</a><br/>
16931693 atomic<b>_</b>user&#160;<a href="atomic_ctor.xml#atomic_user" target="_top">Atomic&#xA0;Function&#xA0;Constructor:&#160;atomic_user</a><br/>
16941694 auto&#160;<a href="auto_tools.xml" target="_top">Auto&#xA0;Tools&#xA0;Unix&#xA0;Test&#xA0;and&#xA0;Installation</a><br/>
16951695 automatic&#160;<a href="ad_in_c.cpp.xml" target="_top">Example&#xA0;and&#xA0;Test&#xA0;Linking&#xA0;CppAD&#xA0;to&#xA0;Languages&#xA0;Other&#xA0;than&#xA0;C++</a><br/>
1696 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
1696 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
16971697 available&#160;<a href="memory_leak.xml#available" target="_top">Memory&#xA0;Leak&#xA0;Detection:&#160;available</a><br/>
16981698 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="omp_delete_array.xml" target="_top">Return&#xA0;A&#xA0;Raw&#xA0;Array&#xA0;to&#xA0;The&#xA0;Available&#xA0;Memory&#xA0;for&#xA0;a&#xA0;Thread</a><br/>
16991699 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="omp_available.xml" target="_top">Amount&#xA0;of&#xA0;Memory&#xA0;Available&#xA0;for&#xA0;Quick&#xA0;Use&#xA0;by&#xA0;a&#xA0;Thread</a><br/>
18401840 C&#160;<a href="interface2c.cpp.xml" target="_top">Interfacing&#xA0;to&#xA0;C:&#xA0;Example&#xA0;and&#xA0;Test</a><br/>
18411841 &#160;&#160;<a href="ad_in_c.cpp.xml" target="_top">Example&#xA0;and&#xA0;Test&#xA0;Linking&#xA0;CppAD&#xA0;to&#xA0;Languages&#xA0;Other&#xA0;than&#xA0;C++</a><br/>
18421842 &#160;&#160;&#160;&#160;&#160;compare<b>&#xA0;</b>speed<b>&#xA0;</b>with<b>&#xA0;</b>C<b>++</b>&#160;<a href="compare_c.xml" target="_top">Compare&#xA0;Speed&#xA0;of&#xA0;C&#xA0;and&#xA0;C++</a><br/>
1843 C<b>++</b>&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
1843 C<b>++</b>&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
18441844 &#160;&#160;&#160;&#160;&#160;compare<b>&#xA0;</b>speed<b>&#xA0;</b>with<b>&#xA0;</b>C&#160;<a href="compare_c.xml" target="_top">Compare&#xA0;Speed&#xA0;of&#xA0;C&#xA0;and&#xA0;C++</a><br/>
18451845 CheckNumericType&#160;<a href="checknumerictype.xml" target="_top">Check&#xA0;NumericType&#xA0;Class&#xA0;Concept</a><br/>
18461846 CheckSimpleVector&#160;<a href="checksimplevector.xml" target="_top">Check&#xA0;Simple&#xA0;Vector&#xA0;Concept</a><br/>
18631863 CppAD&#160;<a href="vector_bool.cpp.xml" target="_top">CppAD::vectorBool&#xA0;Class:&#xA0;Example&#xA0;and&#xA0;Test</a><br/>
18641864 &#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad_vector.cpp.xml" target="_top">CppAD::vector&#xA0;Template&#xA0;Class:&#xA0;Example&#xA0;and&#xA0;Test</a><br/>
18651865 &#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad_vector.xml" target="_top">The&#xA0;CppAD::vector&#xA0;Template&#xA0;Class</a><br/>
1866 &#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
1866 &#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
18671867 CppADTrackDelVec&#160;<a href="tracknewdel.xml" target="_top">Routines&#xA0;That&#xA0;Track&#xA0;Use&#xA0;of&#xA0;New&#xA0;and&#xA0;Delete</a><br/>
18681868 CppADTrackExtend&#160;<a href="tracknewdel.xml" target="_top">Routines&#xA0;That&#xA0;Track&#xA0;Use&#xA0;of&#xA0;New&#xA0;and&#xA0;Delete</a><br/>
18691869 CppADTrackNewVec&#160;<a href="tracknewdel.xml" target="_top">Routines&#xA0;That&#xA0;Track&#xA0;Use&#xA0;of&#xA0;New&#xA0;and&#xA0;Delete</a><br/>
18781878 &#160;&#160;&#160;&#160;<a href="bib.xml#The C++ Programming Language" target="_top">Bibliography:&#160;The&#xA0;C++&#xA0;Programming&#xA0;Language</a><br/>
18791879 &#160;&#160;&#160;&#160;<a href="ad_in_c.cpp.xml" target="_top">Example&#xA0;and&#xA0;Test&#xA0;Linking&#xA0;CppAD&#xA0;to&#xA0;Languages&#xA0;Other&#xA0;than&#xA0;C++</a><br/>
18801880 &#160;&#160;&#160;&#160;<a href="utility.xml#C++ Concepts" target="_top">Some&#xA0;General&#xA0;Purpose&#xA0;Utilities:&#160;C++&#xA0;Concepts</a><br/>
1881 &#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
1881 &#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
18821882 c<b>++</b>11&#160;<a href="cmake.xml#cppad_cxx_flags.C++11" target="_top">Using&#xA0;CMake&#xA0;to&#xA0;Configure&#xA0;CppAD:&#160;cppad_cxx_flags.C++11</a><br/>
18831883 c<b>:</b>&#160;<a href="interface2c.cpp.xml" target="_top">Interfacing&#xA0;to&#xA0;C:&#xA0;Example&#xA0;and&#xA0;Test</a><br/>
18841884 calculating&#160;<a href="sparse.xml" target="_top">Calculating&#xA0;Sparsity&#xA0;Patterns</a><br/>
23632363 &#160;&#160;&#160;&#160;&#160;&#160;<a href="cmake.xml" target="_top">Using&#xA0;CMake&#xA0;to&#xA0;Configure&#xA0;CppAD</a><br/>
23642364 &#160;&#160;&#160;&#160;&#160;&#160;<a href="download.xml" target="_top">Download&#xA0;The&#xA0;CppAD&#xA0;Source&#xA0;Code</a><br/>
23652365 &#160;&#160;&#160;&#160;&#160;&#160;<a href="install.xml" target="_top">CppAD&#xA0;Download,&#xA0;Test,&#xA0;and&#xA0;Install&#xA0;Instructions</a><br/>
2366 cppad<b>-</b>20170000<b>.</b>2<b>:</b>&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
2367 cppad<b>.</b>hpp&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
2366 cppad<b>-</b>20170000<b>.</b>3<b>:</b>&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
2367 cppad<b>.</b>hpp&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
23682368 cppad<b>::</b>numeric<b>_</b>limits&#160;<a href="base_limits.xml#CppAD::numeric_limits" target="_top">Base&#xA0;Type&#xA0;Requirements&#xA0;for&#xA0;Numeric&#xA0;Limits:&#160;CppAD::numeric_limits</a><br/>
23692369 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="numeric_limits.xml#CppAD::numeric_limits" target="_top">Numeric&#xA0;Limits&#xA0;For&#xA0;an&#xA0;AD&#xA0;and&#xA0;Base&#xA0;Types:&#160;CppAD::numeric_limits</a><br/>
23702370 cppad<b>::</b>vector&#160;<a href="test_vector.xml#CppAD::vector" target="_top">Choosing&#xA0;The&#xA0;Vector&#xA0;Testing&#xA0;Template&#xA0;Class:&#160;CppAD::vector</a><br/>
26202620 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="exp_2_for2.xml#Operation Sequence.Derivative" target="_top">exp_2:&#xA0;Second&#xA0;Order&#xA0;Forward&#xA0;Mode:&#160;Operation&#xA0;Sequence.Derivative</a><br/>
26212621 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="exp_2_for1.xml#Operation Sequence.Derivative" target="_top">exp_2:&#xA0;First&#xA0;Order&#xA0;Forward&#xA0;Mode:&#160;Operation&#xA0;Sequence.Derivative</a><br/>
26222622 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="get_started.cpp.xml#Derivative" target="_top">Getting&#xA0;Started&#xA0;Using&#xA0;CppAD&#xA0;to&#xA0;Compute&#xA0;Derivatives:&#160;Derivative</a><br/>
2623 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
2623 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
26242624 derivative<b>:</b>&#160;<a href="revone.xml" target="_top">First&#xA0;Order&#xA0;Derivative:&#xA0;Driver&#xA0;Routine</a><br/>
26252625 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="forone.xml" target="_top">First&#xA0;Order&#xA0;Partial&#xA0;Derivative:&#xA0;Driver&#xA0;Routine</a><br/>
26262626 derivatives&#160;<a href="old_usead_2.cpp.xml" target="_top">Using&#xA0;AD&#xA0;to&#xA0;Compute&#xA0;Atomic&#xA0;Function&#xA0;Derivatives</a><br/>
27362736 differentiation&#160;<a href="ad_in_c.cpp.xml" target="_top">Example&#xA0;and&#xA0;Test&#xA0;Linking&#xA0;CppAD&#xA0;to&#xA0;Languages&#xA0;Other&#xA0;than&#xA0;C++</a><br/>
27372737 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="introduction.xml#Preface.Algorithmic Differentiation" target="_top">An&#xA0;Introduction&#xA0;by&#xA0;Example&#xA0;to&#xA0;Algorithmic&#xA0;Differentiation:&#160;Preface.Algorithmic&#xA0;Differentiation</a><br/>
27382738 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="introduction.xml" target="_top">An&#xA0;Introduction&#xA0;by&#xA0;Example&#xA0;to&#xA0;Algorithmic&#xA0;Differentiation</a><br/>
2739 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
2740 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
2739 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
2740 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
27412741 dimension&#160;<a href="rombergmul.xml" target="_top">Multi-dimensional&#xA0;Romberg&#xA0;Integration</a><br/>
27422742 dimensional&#160;<a href="rombergmul.cpp.xml" target="_top">One&#xA0;Dimensional&#xA0;Romberg&#xA0;Integration:&#xA0;Example&#xA0;and&#xA0;Test</a><br/>
27432743 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="rombergmul.xml" target="_top">Multi-dimensional&#xA0;Romberg&#xA0;Integration</a><br/>
34083408 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="colpack_hes.cpp.xml" target="_top">Using&#xA0;ColPack:&#xA0;Example&#xA0;and&#xA0;Test</a><br/>
34093409 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="colpack_jac.cpp.xml" target="_top">Using&#xA0;ColPack:&#xA0;Example&#xA0;and&#xA0;Test</a><br/>
34103410 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="colpack_prefix.xml#Example" target="_top">Including&#xA0;the&#xA0;ColPack&#xA0;Sparsity&#xA0;Calculations:&#160;Example</a><br/>
3411 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Example" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Example</a><br/>
3411 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Example" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Example</a><br/>
34123412 examples&#160;<a href="speed_example.cpp.xml" target="_top">Run&#xA0;the&#xA0;Speed&#xA0;Examples</a><br/>
34133413 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="example.cpp.xml" target="_top">CppAD&#xA0;Examples&#xA0;and&#xA0;Tests</a><br/>
34143414 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="listallexamples.xml" target="_top">List&#xA0;of&#xA0;All&#xA0;the&#xA0;CppAD&#xA0;Examples</a><br/>
36933693 &#160;&#160;&#160;&#160;&#160;<a href="check_for_nan.xml#get_check_for_nan.file" target="_top">Check&#xA0;an&#xA0;ADFun&#xA0;Object&#xA0;For&#xA0;Nan&#xA0;Results:&#160;get_check_for_nan.file</a><br/>
36943694 &#160;&#160;&#160;&#160;&#160;<a href="base_alloc.hpp.xml#Include File" target="_top">Example&#xA0;AD&lt;Base&gt;&#xA0;Where&#xA0;Base&#xA0;Constructor&#xA0;Allocates&#xA0;Memory:&#160;Include&#xA0;File</a><br/>
36953695 &#160;&#160;&#160;&#160;&#160;<a href="download.xml#Windows File Extraction and Testing" target="_top">Download&#xA0;The&#xA0;CppAD&#xA0;Source&#xA0;Code:&#160;Windows&#xA0;File&#xA0;Extraction&#xA0;and&#xA0;Testing</a><br/>
3696 &#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Include File" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Include&#xA0;File</a><br/>
3696 &#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Include File" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Include&#xA0;File</a><br/>
36973697 file<b>_</b>name&#160;<a href="check_for_nan.xml#Error Message.file_name" target="_top">Check&#xA0;an&#xA0;ADFun&#xA0;Object&#xA0;For&#xA0;Nan&#xA0;Results:&#160;Error&#xA0;Message.file_name</a><br/>
36983698 files&#160;<a href="addon.xml#Library Files" target="_top">CppAD&#xA0;Addons:&#160;Library&#xA0;Files</a><br/>
36993699 &#160;&#160;&#160;&#160;&#160;&#160;<a href="addon.xml#Include Files" target="_top">CppAD&#xA0;Addons:&#160;Include&#xA0;Files</a><br/>
43484348 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="exp_eps.xml#include" target="_top">An&#xA0;Epsilon&#xA0;Accurate&#xA0;Exponential&#xA0;Approximation:&#160;include</a><br/>
43494349 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="exp_2.xml#include" target="_top">Second&#xA0;Order&#xA0;Exponential&#xA0;Approximation:&#160;include</a><br/>
43504350 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cmake.xml" target="_top">Using&#xA0;CMake&#xA0;to&#xA0;Configure&#xA0;CppAD</a><br/>
4351 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Include File" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Include&#xA0;File</a><br/>
4351 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Include File" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Include&#xA0;File</a><br/>
43524352 including&#160;<a href="sacado_prefix.xml" target="_top">Including&#xA0;the&#xA0;Sacado&#xA0;Speed&#xA0;Tests</a><br/>
43534353 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="ipopt_prefix.xml" target="_top">Including&#xA0;the&#xA0;cppad_ipopt&#xA0;Library&#xA0;and&#xA0;Tests</a><br/>
43544354 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="fadbad_prefix.xml" target="_top">Including&#xA0;the&#xA0;FADBAD&#xA0;Speed&#xA0;Tests</a><br/>
45074507 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="example.xml#Introduction" target="_top">Examples:&#160;Introduction</a><br/>
45084508 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="exp_apx_main.cpp.xml" target="_top">Correctness&#xA0;Tests&#xA0;For&#xA0;Exponential&#xA0;Approximation&#xA0;in&#xA0;Introduction</a><br/>
45094509 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="introduction.xml" target="_top">An&#xA0;Introduction&#xA0;by&#xA0;Example&#xA0;to&#xA0;Algorithmic&#xA0;Differentiation</a><br/>
4510 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Introduction" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Introduction</a><br/>
4510 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Introduction" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Introduction</a><br/>
45114511 inuse&#160;<a href="memory_leak.xml#inuse" target="_top">Memory&#xA0;Leak&#xA0;Detection:&#160;inuse</a><br/>
45124512 &#160;&#160;&#160;&#160;&#160;&#160;<a href="omp_inuse.xml" target="_top">Amount&#xA0;of&#xA0;Memory&#xA0;a&#xA0;Thread&#xA0;is&#xA0;Currently&#xA0;Using</a><br/>
45134513 &#160;&#160;&#160;&#160;&#160;&#160;<a href="ta_inuse.xml" target="_top">Amount&#xA0;of&#xA0;Memory&#xA0;a&#xA0;Thread&#xA0;is&#xA0;Currently&#xA0;Using</a><br/>
52255225 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad_ipopt_nlp.xml#cppad_ipopt namespace" target="_top">Nonlinear&#xA0;Programming&#xA0;Using&#xA0;the&#xA0;CppAD&#xA0;Interface&#xA0;to&#xA0;Ipopt:&#160;cppad_ipopt&#xA0;namespace</a><br/>
52265226 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="faq.xml#Namespace" target="_top">Frequently&#xA0;Asked&#xA0;Questions&#xA0;and&#xA0;Answers:&#160;Namespace</a><br/>
52275227 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad_eigen.hpp.xml#CppAD Namespace" target="_top">Enable&#xA0;Use&#xA0;of&#xA0;Eigen&#xA0;Linear&#xA0;Algebra&#xA0;Package&#xA0;with&#xA0;CppAD:&#160;CppAD&#xA0;Namespace</a><br/>
5228 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Namespace" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Namespace</a><br/>
5228 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Namespace" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Namespace</a><br/>
52295229 nan&#160;<a href="zdouble.xml#Syntax.Nan" target="_top">zdouble:&#xA0;An&#xA0;AD&#xA0;Base&#xA0;Type&#xA0;With&#xA0;Absolute&#xA0;Zero:&#160;Syntax.Nan</a><br/>
52305230 &#160;&#160;&#160;&#160;<a href="ode_err_control.cpp.xml#Nan" target="_top">OdeErrControl:&#xA0;Example&#xA0;and&#xA0;Test:&#160;Nan</a><br/>
52315231 &#160;&#160;&#160;&#160;<a href="odeerrcontrol.xml#Method.Nan" target="_top">An&#xA0;Error&#xA0;Controller&#xA0;for&#xA0;ODE&#xA0;Solvers:&#160;Method.Nan</a><br/>
57515751 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="speed.xml" target="_top">Speed&#xA0;Test&#xA0;an&#xA0;Operator&#xA0;Overloading&#xA0;AD&#xA0;Package</a><br/>
57525752 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad_eigen.hpp.xml" target="_top">Enable&#xA0;Use&#xA0;of&#xA0;Eigen&#xA0;Linear&#xA0;Algebra&#xA0;Package&#xA0;with&#xA0;CppAD</a><br/>
57535753 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cmake.xml" target="_top">Using&#xA0;CMake&#xA0;to&#xA0;Configure&#xA0;CppAD</a><br/>
5754 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
5754 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
57555755 package<b>_</b>prefix&#160;<a href="cmake.xml#package_prefix" target="_top">Using&#xA0;CMake&#xA0;to&#xA0;Configure&#xA0;CppAD:&#160;package_prefix</a><br/>
57565756 parallel&#160;<a href="old_atomic.xml#afun.Parallel Mode" target="_top">User&#xA0;Defined&#xA0;Atomic&#xA0;AD&#xA0;Functions:&#160;afun.Parallel&#xA0;Mode</a><br/>
57575757 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="omp_in_parallel.xml" target="_top">Is&#xA0;The&#xA0;Current&#xA0;Execution&#xA0;in&#xA0;OpenMP&#xA0;Parallel&#xA0;Mode</a><br/>
58895889 preprocessor&#160;<a href="addon.xml#Preprocessor Symbols" target="_top">CppAD&#xA0;Addons:&#160;Preprocessor&#xA0;Symbols</a><br/>
58905890 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="faq.xml#Namespace.Test Vector Preprocessor Symbol" target="_top">Frequently&#xA0;Asked&#xA0;Questions&#xA0;and&#xA0;Answers:&#160;Namespace.Test&#xA0;Vector&#xA0;Preprocessor&#xA0;Symbol</a><br/>
58915891 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="preprocessor.xml" target="_top">CppAD&#xA0;API&#xA0;Preprocessor&#xA0;Symbols</a><br/>
5892 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Preprocessor Symbols" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Preprocessor&#xA0;Symbols</a><br/>
5892 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Preprocessor Symbols" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Preprocessor&#xA0;Symbols</a><br/>
58935893 previous&#160;<a href="whats_new.xml#Previous Years" target="_top">Changes&#xA0;and&#xA0;Additions&#xA0;to&#xA0;CppAD:&#160;Previous&#xA0;Years</a><br/>
58945894 previously&#160;<a href="tracknewdel.xml#TrackCount.Previously Deprecated" target="_top">Routines&#xA0;That&#xA0;Track&#xA0;Use&#xA0;of&#xA0;New&#xA0;and&#xA0;Delete:&#160;TrackCount.Previously&#xA0;Deprecated</a><br/>
58955895 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="tracknewdel.xml#TrackExtend.Previously Deprecated" target="_top">Routines&#xA0;That&#xA0;Track&#xA0;Use&#xA0;of&#xA0;New&#xA0;and&#xA0;Delete:&#160;TrackExtend.Previously&#xA0;Deprecated</a><br/>
73657365 symbol&#160;<a href="faq.xml#Namespace.Test Vector Preprocessor Symbol" target="_top">Frequently&#xA0;Asked&#xA0;Questions&#xA0;and&#xA0;Answers:&#160;Namespace.Test&#xA0;Vector&#xA0;Preprocessor&#xA0;Symbol</a><br/>
73667366 symbols&#160;<a href="addon.xml#Preprocessor Symbols" target="_top">CppAD&#xA0;Addons:&#160;Preprocessor&#xA0;Symbols</a><br/>
73677367 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="preprocessor.xml" target="_top">CppAD&#xA0;API&#xA0;Preprocessor&#xA0;Symbols</a><br/>
7368 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Preprocessor Symbols" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Preprocessor&#xA0;Symbols</a><br/>
7368 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Preprocessor Symbols" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Preprocessor&#xA0;Symbols</a><br/>
73697369 syntax&#160;<a href="luratio.xml#Syntax" target="_top">LU&#xA0;Factorization&#xA0;of&#xA0;A&#xA0;Square&#xA0;Matrix&#xA0;and&#xA0;Stability&#xA0;Calculation:&#160;Syntax</a><br/>
73707370 &#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="opt_val_hes.xml#Syntax" target="_top">Jacobian&#xA0;and&#xA0;Hessian&#xA0;of&#xA0;Optimal&#xA0;Values:&#160;Syntax</a><br/>
73717371 &#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="benderquad.xml#Syntax" target="_top">Computing&#xA0;Jacobian&#xA0;and&#xA0;Hessian&#xA0;of&#xA0;Bender's&#xA0;Reduced&#xA0;Objective:&#160;Syntax</a><br/>
75707570 &#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="get_eigen.sh.xml#Syntax" target="_top">Download&#xA0;and&#xA0;Install&#xA0;Eigen&#xA0;in&#xA0;Build&#xA0;Directory:&#160;Syntax</a><br/>
75717571 &#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="get_colpack.sh.xml#Syntax" target="_top">Download&#xA0;and&#xA0;Install&#xA0;ColPack&#xA0;in&#xA0;Build&#xA0;Directory:&#160;Syntax</a><br/>
75727572 &#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="get_adolc.sh.xml#Syntax" target="_top">Download&#xA0;and&#xA0;Install&#xA0;Adolc&#xA0;in&#xA0;Build&#xA0;Directory:&#160;Syntax</a><br/>
7573 &#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Syntax" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Syntax</a><br/>
7573 &#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml#Syntax" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms:&#160;Syntax</a><br/>
75747574 systems&#160;<a href="elapsed_seconds.xml#Microsoft Systems" target="_top">Returns&#xA0;Elapsed&#xA0;Number&#xA0;of&#xA0;Seconds:&#160;Microsoft&#xA0;Systems</a><br/>
75757575
75767576 <b><big><a name="T">T</a></big></b>
86348634 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="atomic_afun.xml" target="_top">Using&#xA0;AD&#xA0;Version&#xA0;of&#xA0;Atomic&#xA0;Function</a><br/>
86358635 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="discrete.xml#Create AD Version" target="_top">Discrete&#xA0;AD&#xA0;Functions:&#160;Create&#xA0;AD&#xA0;Version</a><br/>
86368636 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="download.xml#Current Version" target="_top">Download&#xA0;The&#xA0;CppAD&#xA0;Source&#xA0;Code:&#160;Current&#xA0;Version</a><br/>
8637 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.2:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
8637 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="cppad.xml" target="_top">cppad-20170000.3:&#xA0;A&#xA0;Package&#xA0;for&#xA0;Differentiation&#xA0;of&#xA0;C++&#xA0;Algorithms</a><br/>
86388638 version<b>)</b>&#160;<a href="double_mat_mul.cpp.xml" target="_top">CppAD&#xA0;Speed:&#xA0;Matrix&#xA0;Multiplication&#xA0;(Double&#xA0;Version)</a><br/>
86398639 versions&#160;<a href="download.xml#Daily Versions" target="_top">Download&#xA0;The&#xA0;CppAD&#xA0;Source&#xA0;Code:&#160;Daily&#xA0;Versions</a><br/>
86408640 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="download.xml#Monthly Versions" target="_top">Download&#xA0;The&#xA0;CppAD&#xA0;Source&#xA0;Code:&#160;Monthly&#xA0;Versions</a><br/>
244244 <a href="cos.cpp.xml" target="_top">cos.cpp</a><br/> </td><td> The AD cos Function: Example and Test </td></tr><tr valign="top"><td>
245245 <a href="cosh.xml" target="_top">cosh</a><br/> </td><td> The Hyperbolic Cosine Function: cosh </td></tr><tr valign="top"><td>
246246 <a href="cosh.cpp.xml" target="_top">cosh.cpp</a><br/> </td><td> The AD cosh Function: Example and Test </td></tr><tr valign="top"><td>
247 <a href="cppad.xml" target="_top">CppAD</a><br/> </td><td> cppad-20170000.2: A Package for Differentiation of C++ Algorithms </td></tr><tr valign="top"><td>
247 <a href="cppad.xml" target="_top">CppAD</a><br/> </td><td> cppad-20170000.3: A Package for Differentiation of C++ Algorithms </td></tr><tr valign="top"><td>
248248 <a href="cppad_assert.xml" target="_top">cppad_assert</a><br/> </td><td> CppAD Assertions During Execution </td></tr><tr valign="top"><td>
249249 <a href="cppad_det_lu.cpp.xml" target="_top">cppad_det_lu.cpp</a><br/> </td><td> CppAD Speed: Gradient of Determinant Using Lu Factorization </td></tr><tr valign="top"><td>
250250 <a href="cppad_det_minor.cpp.xml" target="_top">cppad_det_minor.cpp</a><br/> </td><td> CppAD Speed: Gradient of Determinant by Minor Expansion </td></tr><tr valign="top"><td>
22 // ------------------------------------------------------------
33 Keyword =
44 [
5 'CppAD cppad-20170000.2: A Package for Differentiation of C++ Algorithms ',' algorithmic automatic derivative version cppad.hpp syntax introduction example include file preprocessor symbols namespace ',
5 'CppAD cppad-20170000.3: A Package for Differentiation of C++ Algorithms ',' algorithmic automatic derivative version cppad.hpp syntax introduction example include file preprocessor symbols namespace ',
66 'Install CppAD Download, Test, and Install Instructions ',' step 1: 2: cmake 3: check 4: installation ',
77 'download Download The CppAD Source Code ',' purpose distribution directory compressed archives current version subversion git release versions coin github monthly daily windows file extraction testing install instructions no documentation building ',
88 'cmake Using CMake to Configure CppAD ',' makefile install prefix postfix include directories lib datadir documentation package compile flags profile maximum number threads sparsity internal structure vector sets memory usage tape implicit explicit the program command build directory check cmake_verbose_makefile generator cppad_prefix cppad_postfix cmake_install_includedirs cmake_install_libdirs cmake_install_datadir cmake_install_docdir package_prefix cppad_cxx_flags c++11 cppad_profile_flag eigen fadbad cppad_testvector cppad_max_num_threads cppad_tape_id_type cstdint cppad_tape_addr_type cppad_deprecated ',
22 xmlns:math='http://www.w3.org/1998/Math/MathML'
33 >
44 <head>
5 <title>cppad-20170000.2: A Package for Differentiation of C++ Algorithms</title>
5 <title>cppad-20170000.3: A Package for Differentiation of C++ Algorithms</title>
66 <meta http-equiv='Content-Type' content='text/html' charset='utf-8'/>
7 <meta name="description" id="description" content="cppad-20170000.2: A Package for Differentiation of C++ Algorithms"/>
8 <meta name="keywords" id="keywords" content=" cppad-20170000.2: package differentiation c++ algorithms Ad algorithmic automatic C++ algorithm derivative Cppad version cppad.hpp syntax introduction example include file preprocessor symbols namespace "/>
7 <meta name="description" id="description" content="cppad-20170000.3: A Package for Differentiation of C++ Algorithms"/>
8 <meta name="keywords" id="keywords" content=" cppad-20170000.3: package differentiation c++ algorithms Ad algorithmic automatic C++ algorithm derivative Cppad version cppad.hpp syntax introduction example include file preprocessor symbols namespace "/>
99 <style type='text/css'>
1010 body { color : black }
1111 body { background-color : white }
7070 ,
7171
7272
73 <center><b><big><big>cppad-20170000.2: A Package for Differentiation of C++ Algorithms</big></big></b></center>
73 <center><b><big><big>cppad-20170000.3: A Package for Differentiation of C++ Algorithms</big></big></b></center>
7474 <br/>
7575 <b><big><a name="Syntax" id="Syntax">Syntax</a></big></b>
7676
168168
169169 current </td><td align='left' valign='top'>
170170 EPL </td><td align='left' valign='top'>
171 <a href="http://www.coin-or.org/download/source/CppAD/cppad-20170000.2.epl.tgz" target="_top"><span style='white-space: nowrap'>cppad-20170000.2.epl.tgz</span></a>
171 <a href="http://www.coin-or.org/download/source/CppAD/cppad-20170000.3.epl.tgz" target="_top"><span style='white-space: nowrap'>cppad-20170000.3.epl.tgz</span></a>
172172
173173 </td></tr><tr><td align='left' valign='top'>
174174
175175 current </td><td align='left' valign='top'>
176176 GPL </td><td align='left' valign='top'>
177 <a href="http://www.coin-or.org/download/source/CppAD/cppad-20170000.2.gpl.tgz" target="_top"><span style='white-space: nowrap'>cppad-20170000.2.gpl.tgz</span></a>
177 <a href="http://www.coin-or.org/download/source/CppAD/cppad-20170000.3.gpl.tgz" target="_top"><span style='white-space: nowrap'>cppad-20170000.3.gpl.tgz</span></a>
178178
179179 </td></tr>
180180 </table>
8989
9090 $comment bin/version assumes that : follows cppad version number here$$
9191 $section
92 cppad-20170000.2: A Package for Differentiation of C++ Algorithms
92 cppad-20170000.3: A Package for Differentiation of C++ Algorithms
9393 $$
9494 $mindex AD algorithmic differentiation automatic C++ algorithm derivative CppAD version cppad.hpp$$
9595
0 # $Id: makefile.am 3854 2016-12-14 17:36:26Z bradbell $
10 # -----------------------------------------------------------------------------
2 # CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-16 Bradley M. Bell
1 # CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-17 Bradley M. Bell
32 #
43 # CppAD is distributed under multiple licenses. This distribution is under
54 # the terms of the
238237 cppad/local/op_code.hpp \
239238 cppad/local/op.hpp \
240239 cppad/local/optimize/match_op.hpp \
241 cppad/local/optimize/cskip_info.hpp \
240 cppad/local/optimize/cexp_info.hpp \
242241 cppad/local/optimize/csum_stacks.hpp \
243242 cppad/local/optimize/csum_variable.hpp \
244243 cppad/local/optimize/get_op_info.hpp \
407407 top_builddir = @top_builddir@
408408 top_srcdir = @top_srcdir@
409409
410 # $Id: makefile.in 3867 2017-01-19 13:02:09Z bradbell $
411410 # -----------------------------------------------------------------------------
412 # CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-16 Bradley M. Bell
411 # CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-17 Bradley M. Bell
413412 #
414413 # CppAD is distributed under multiple licenses. This distribution is under
415414 # the terms of the
632631 cppad/local/op_code.hpp \
633632 cppad/local/op.hpp \
634633 cppad/local/optimize/match_op.hpp \
635 cppad/local/optimize/cskip_info.hpp \
634 cppad/local/optimize/cexp_info.hpp \
636635 cppad/local/optimize/csum_stacks.hpp \
637636 cppad/local/optimize/csum_variable.hpp \
638637 cppad/local/optimize/get_op_info.hpp \
9494 $bold version$$ $pre $$ $cnext $bold license$$ $pre $$ $cnext $bold link$$
9595 $rnext
9696 current $cnext EPL $cnext $href%
97 http://www.coin-or.org/download/source/CppAD/cppad-20170000.2.epl.tgz%
98 cppad-20170000.2.epl.tgz%$$
97 http://www.coin-or.org/download/source/CppAD/cppad-20170000.3.epl.tgz%
98 cppad-20170000.3.epl.tgz%$$
9999 $rnext
100100 current $cnext GPL $cnext $href%
101 http://www.coin-or.org/download/source/CppAD/cppad-20170000.2.gpl.tgz%
102 cppad-20170000.2.gpl.tgz%$$
101 http://www.coin-or.org/download/source/CppAD/cppad-20170000.3.gpl.tgz%
102 cppad-20170000.3.gpl.tgz%$$
103103 $tend
104104
105105 $subhead Subversion$$
0 // $Id: optimize.cpp 3856 2016-12-21 05:51:22Z bradbell $
10 /* --------------------------------------------------------------------------
2 CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-16 Bradley M. Bell
1 CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-17 Bradley M. Bell
32
43 CppAD is distributed under multiple licenses. This distribution is under
54 the terms of the
423422
424423 // unary operator where operand is arg[0]
425424 // (note that sin corresponds to two tape variables)
426 not_used = CppAD::abs(x[0]);
425 not_used = fabs(x[0]);
427426 y[0] = sin(x[0]);
428427 original += 3;
429428 opt += 2;
986985 );
987986 Y[0] = X[0];
988987 for(j = 0; j < n_operations; j++)
989 Y[0] = abs(Y[0]);
988 Y[0] = fabs(Y[0]);
990989
991990 // create f: X -> Y and stop tape recording
992991 CppAD::ADFun<double> F;
18741873 ok &= NearEqual(y[0], x[0] + x[1], eps10, eps10);
18751874 ok &= NearEqual(y[1], x[0] - x[1], eps10, eps10);
18761875 ok &= NearEqual(y[2], exp(x[0]), eps10, eps10);
1876
1877 return ok;
1878 }
1879
1880 // Test case where a variable is removed during optimization
1881 // (bug fixed 2017-03-04)
1882 bool cond_exp_skip_remove_var(void)
1883 { bool ok = true;
1884 using CppAD::vector;
1885 using CppAD::AD;
1886 using CppAD::NearEqual;
1887 double eps10 = 10.0 * std::numeric_limits<double>::epsilon();
1888
1889 vector< AD<double> > ax(2), ay(2);
1890 ax[0] = 1.0;
1891 ax[1] = 2.0;
1892 Independent(ax);
1893 //
1894 AD<double> var_1 = ax[0] + ax[1];
1895 AD<double> var_2 = ax[0] + ax[1]; // gets removed during optimization
1896 AD<double> var_3 = ax[0] + ax[1]; // gets removed during optimization
1897 AD<double> var_4 = ax[0] - ax[1];
1898 AD<double> par_1 = 1.0;
1899 //
1900 // first conditional expression depends on var_1
1901 // 6 * x_0 if x_0 + x_1 >= 1.0, 7 * x_1 otherwise
1902 ay[0] = CppAD::CondExpGe(var_1, par_1, 6.0 * ax[0], 7.0 * ax[1]);
1903 //
1904 // second conditional expression depends on var_4
1905 // 8 * x_0 if x_0 - x_1 >= x_0 + x_1, 9 * x_1 otherwise
1906 ay[1] = CppAD::CondExpGe(var_4, par_1, 8.0 * ax[0], 9.0 * ax[1]);
1907 CppAD::ADFun<double> f(ax, ay);
1908 //
1909 if( conditional_skip_ )
1910 f.optimize();
1911 else
1912 f.optimize("no_conditional_skip");
1913
1914 // check case where x[0] = 2, x[1] = 4
1915 vector<double> x(2), y(2);
1916 x[0] = 2.0;
1917 x[1] = 4.0;
1918 y = f.Forward(0, x);
1919 ok &= NearEqual(y[0], 6.0 * x[0], eps10, eps10);
1920 ok &= NearEqual(y[1], 9.0 * x[1], eps10, eps10);
18771921
18781922 return ok;
18791923 }
19491993 // check reverse mode conditional skipping
19501994 ok &= cond_exp_reverse();
19511995 // check case where an expresion needed by both true and false case
1952 ok &= cond_exp_both_true_and_false();
1996 ok &= cond_exp_both_true_and_false();
1997 // check case were a variable in left or right expressions
1998 // is removed during the optimization
1999 ok &= cond_exp_skip_remove_var();
19532000 }
19542001 //
19552002 CppAD::user_atomic<double>::clear();