source: trunk/omh/whats_new/whats_new_16.omh @ 3808

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

merge to branch: trunk
from repository: https://github.com/coin-or/CppAD
start hash code: 9bfb615c9ffa82003a3b9f32f7e15acee5fcc254
end hash code: f8fc499c5720e9bead5d00b92db3d775c10e7043

commit f8fc499c5720e9bead5d00b92db3d775c10e7043
Author: Brad Bell <bradbell@…>
Date: Thu Mar 24 05:05:58 2016 -0700

  1. Fix bug building example/atomic (conditional inclusion of eigen_mat_mul).
  2. Advance version to cppad-20160324.


run_cmake.sh: add conditional inclusion of eigen.
CMakeLists.txt: eigen_libs no longer necessary (using system incldue for eigen).
eigen_prefix.omh: update list of eigen examples.

commit 0021492a9b151fa056a98b1b9cbf16dfae39f6be
Author: Brad Bell <bradbell@…>
Date: Thu Mar 24 03:55:50 2016 -0700

eigen_mat_mul.hpp: move resize in reverse to beginning, fix reverse heading.

commit b6a96073abd0355b7cab1beb18cd3b2720ea08d5
Author: Brad Bell <bradbell@…>
Date: Thu Mar 24 03:47:14 2016 -0700

eigen_mat_mul.hpp: use data() and Zero to simplify reverse.

commit f7ff6b20162d88f39361441c38ab224f3fd2b929
Author: Brad Bell <bradbell@…>
Date: Thu Mar 24 03:38:12 2016 -0700

eigen_mat_mul.hpp: use data() to simplify forward.

commit 13fef46531f8fce5551e678955c0b0c63e564497
Author: Brad Bell <bradbell@…>
Date: Thu Mar 24 03:26:57 2016 -0700

eigen_mat_mul.hpp: use data() to simplify public pack and unpack.

commit 4cbd54b0775431a1b7ab2b4ff907593ad895ab02
Author: Brad Bell <bradbell@…>
Date: Wed Mar 23 18:26:32 2016 -0700

eigen_mat_mul.cpp: implement reverse, test first order.

commit 038c681ad17930e62faff713acf85993fdbd2921
Author: Brad Bell <bradbell@…>
Date: Wed Mar 23 17:08:08 2016 -0700

eigen_mat_mul.hpp: working on reverse mode.

commit b17b981270cab200abab07c55783d3fb02278e70
Author: Brad Bell <bradbell@…>
Date: Wed Mar 23 09:35:30 2016 -0700

eigen_mat_mul.hpp: more preparation for reverse mode.

commit 2f9f4633dde11cd004760aea36f341f45cafff37
Author: Brad Bell <bradbell@…>
Date: Wed Mar 23 08:43:39 2016 -0700

eigen_mat_mul.hpp: more preparation for reverse mode.

commit c75d7be73c89c06286931eb27904ae541415d4a4
Author: Brad Bell <bradbell@…>
Date: Wed Mar 23 08:06:58 2016 -0700

eigen_mat_mul.hpp: prepare for reverse mode.

commit c5321490d8cb8bbd1563e847a97c0813fd631296
Author: Brad Bell <bradbell@…>
Date: Wed Mar 23 07:07:08 2016 -0700

eigen_mat_mul.cpp: improve this example.

File size: 6.8 KB
Line 
1$Id$
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
13$begin whats_new_16$$
14$spell
15        alloc
16        hpp
17        valgrind
18        uninitialized
19        adouble
20        CppAD
21        Eigen
22        std
23        namespace
24        cppad
25        Hes
26        Jac
27        mul
28        ifndef
29        xam
30        makefile
31$$
32
33$section Changes and Additions to CppAD During 2016$$
34
35$head Introduction$$
36The sections listed below contain a list of the changes to CppAD
37in reverse order by date.
38The purpose of these sections is to
39assist you in learning about changes between various versions of CppAD.
40
41$head 03-24$$
42Fix build of $code example/atomic.cpp$$ when
43$cref eigen_prefix$$ is not available
44(bug introduced when $cref atomic_eigen_mat_mul.cpp$$ was added).
45
46$head 03-23$$
47$list number$$
48Fix bug in auto-tools file $code example/atomic/makefile.am$$
49(introduced on 03-22).
50$lnext
51Improve the $cref atomic_eigen_mat_mul.cpp$$ example
52and extend it to include reverse mode.
53$lend
54
55$head 03-22$$
56$list number$$
57Add the $cref atomic_eigen_mat_mul.cpp$$ example; see
58$cref/under construction/atomic_eigen_mat_mul.cpp/Under Construction/$$.
59$lnext
60change $code atomic_ode.cpp$$ to $cref checkpoint_ode.cpp$$ and
61$code atomic_extended_ode.cpp$$ to $cref checkpoint_extended_ode.cpp$$.
62$lend
63
64$head 03-21$$
65Change the $cref atomic_mat_mul.hpp$$ class name from $code mat_mul$$
66to $code atomic_mat_mul$$. This example use of the name $code mat_mul$$
67in the $cref atomic_mat_mul.cpp$$ example / test.
68
69$head 03-20$$
70$list number$$
71Include the sub-directory name to the include guards
72in $icode%*%.hpp%$$ files. For example,
73$codep
74        # ifndef CPPAD_UTILITY_VECTOR_HPP
75        # define CPPAD_UTILITY_VECTOR_HPP
76$$
77appears in the file $code cppad/utility/vector.hpp$$. This makes it
78easier to avoid conflicts when choosing $cref addon$$ names.
79$lnext
80Add the $cref set_union$$ utility and use it to simplify the
81$cref atomic$$ examples that use
82$cref/vector of sets/glossary/Sparsity Pattern/Vector of Sets/$$
83sparsity patterns.
84$lend
85
86
87$head 03-19$$
88$list number$$
89Move $cref atomic_mat_mul.cpp$$ to $code atomic_mat_mul_xam.cpp$$
90(moved back on $cref/03-21/whats_new_16/03-21/$$.
91$lnext
92Move $code atomic_matrix_mul.hpp$$ to $cref atomic_mat_mul.hpp$$.
93$lend
94
95$head 03-17$$
96Add the
97$code atomic_ode.cpp$$ and $code atomic_extended_ode.cpp$$ examples.
98
99$head 03-12$$
100$list number$$
101Move the example $code reverse_any.cpp$$ to $cref reverse_checkpoint.cpp$$.
102$lnext
103Add the $cref atomic_mul_level.cpp$$ example.
104$lend
105
106$head 03-05$$
107The following atomic function examples were added
108These examples are for a specific atomic operation.
109In addition, the domain and range dimensions for these examples
110are not one and not equal to each other:
111$cref atomic_forward.cpp$$,
112$cref atomic_reverse.cpp$$,
113$cref atomic_for_sparse_jac.cpp$$,
114$cref atomic_rev_sparse_jac.cpp$$,
115$cref atomic_for_sparse_hes.cpp$$,
116$cref atomic_rev_sparse_hes.cpp$$.
117
118
119$head 03-01$$
120$list number$$
121Improve documentation of implementation requirements for the atomic
122$cref/rev_sparse_jac/atomic_rev_sparse_jac/Implementation/$$.
123$lnext
124Make some corrections to the $cref atomic_for_sparse_hes$$ documentation.
125and fix a bug in how CppAD used these functions.
126$lend
127
128$head 02-29$$
129$list number$$
130Merged sparse into master branch. This makes the
131$cref ForSparseHes$$ routine available for use.
132$lnext
133Changed the
134$cref/global options/speed_main/Global Options/$$
135in the speed test main program to use one global variable with prototype
136$srccode%cpp%
137        extern std::map<std::string, bool> global_option;
138%$$
139$lend
140
141
142$head 02-28$$
143Fix a mistake in the old atomic
144$code example/sparsity/sparsity.cpp$$ example.
145This example has since been changed to
146$cref atomic_set_sparsity.cpp$$.
147
148
149$head 02-27$$
150The $code --with-sparse_set$$ and $code --with-sparse_set$$ options
151were removed from the $cref auto_tools$$ install procedure.
152
153$head 02-26$$
154The condition that the operation sequence in $icode f$$ is
155$cref/independent/glossary/Operation/Independent/$$ of
156the independent variables was added to the statement about
157the validity of the sparsity patterns; see $icode x$$ in
158$cref/ForSparseJac/ForSparseJac/x/$$,
159$cref/RevSparseJac/RevSparseJac/x/$$, and
160$cref/RevSparseHes/RevSparseHes/x/$$.
161
162$head 02-25$$
163The $cref cmake$$ command line argument $code cppad_sparse_list$$
164has been removed (because it is so much better than the other option).
165
166$head 02-23$$
167A new version of the
168$code cppad_sparse_list$$ class (not part of user API) uses
169reference counters to reduce the number of copies of sets that are equal.
170This improved the speed of sparsity pattern computations that use
171the $cref/vector of sets/glossary/Sparsity Pattern/Vector of Sets/$$
172representation.
173For example, the results for the
174$cref cppad_sparse_hessian.cpp$$ test compare as follows:
175$codep
176        sparse_hessian_size     = [  100,    400,   900,  1600, 2500 ]
177        sparse_hessian_rate_old = [ 1480, 265.21, 93.33, 41.93, 0.86 ]
178        sparse_hessian_rate_new = [ 1328, 241.61, 92.99, 40.51, 3.80 ]
179$$
180Note that the improvement is only for large problems. In fact,
181for large problems, preliminary testing indicates that
182the new vector of sets representation preforms better than
183the $cref/vector of boolean/glossary/Sparsity Pattern/Vector of Boolean/$$
184representation.
185
186
187$head 01-21$$
188Fix a $code valgrind$$ warning about use of uninitialized memory
189in the test $code test_more/checkpoint.cpp$$ (the problem was in the test).
190
191$head 01-20$$
192$list number$$
193Fix a $code valgrind$$ warning about use of uninitialized memory
194when using the $cref/adouble/base_adolc.hpp/$$ base type.
195This required an optional $cref base_hash$$ function and the special
196$cref/adouble hash_code/base_adolc.hpp/hash_code/$$ implementation.
197$lnext
198The $code adouble$$ $cref to_string$$ functions
199required a special implementation; see
200$cref/adouble to_string/base_adolc.hpp/to_string/$$.
201$lnext
202Add the $cref/to_string/base_alloc.hpp/to_string/$$ and
203$cref/hash_code/base_alloc.hpp/hash_code/$$ examples
204to the $code base_alloc.hpp$$ example.
205$lend
206
207$head 01-18$$
208$list number$$
209Fix ambiguity between $code CppAD::sin$$ and $code std::sin$$,
210and other standard math functions,
211when using
212$codep
213        using namespace std;
214        using namespace CppAD;
215$$
216This is OK for simple programs, but not generally recommended.
217See $code double$$ version of base class definitions for
218$cref/Unary Standard Math/base_double.hpp/Unary Standard Math/$$
219for more details.
220$lnext
221Change Eigen array example
222$cref eigen_array.cpp$$
223to use member function version of $code sin$$ function
224(as per Eigen's array class documentation).
225$lend
226
227$end
Note: See TracBrowser for help on using the repository browser.