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

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

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

commit f77cd2e443b8d14f354f97efc4c26369227dfe81
Author: Brad Bell <bradbell@…>
Date: Sat Mar 26 06:47:33 2016 -0700

  1. Add reverse mode to atomic_eigen_mat_inv.
  2. Advance version to cppad-20160326.


eigen_mat_mul.cpp: impove reverse mode comments.

commit 94c81399191d06ae9cef81c271f520b0e78f079d
Author: Brad Bell <bradbell@…>
Date: Fri Mar 25 12:16:03 2016 -0700

whats_new_16.omh: add comment about changes to eigen_mat_mul.

commit d647288c9e022f16ef94229db612a774808a5de3
Author: Brad Bell <bradbell@…>
Date: Fri Mar 25 11:59:45 2016 -0700

Replace pack and unpack by member function that inverts matrices.

commit 6fba95d90e50590abd438946f47025e0a6e34c2c
Author: Brad Bell <bradbell@…>
Date: Fri Mar 25 11:45:43 2016 -0700

Replace pack and unpack by member function that multiplies matrices.

commit cac97c115abad9fba0d0c3706f4bc0e5a7f617f0
Author: Brad Bell <bradbell@…>
Date: Fri Mar 25 11:11:16 2016 -0700

Change atomic_eigen_mat_div -> atomic_eigen_mat_inv.

commit 1f7e52a4d96986f7be2ad2d6abeafc086c4f7622
Author: Brad Bell <bradbell@…>
Date: Fri Mar 25 08:09:39 2016 -0700

  1. Implement and test forward for atomic_eigen_mat_div.
  2. Advance version to 20160325.


eigen_mat_mul.hpp: edit comments and documentation.

commit e953f669d8e9e122dc2f182c28c051c9ba75c705
Author: Brad Bell <bradbell@…>
Date: Fri Mar 25 04:32:45 2016 -0700

eigen_mat_mul.cpp: No longer under construction.

commit 3a62044eaebb6393676276e5b843fbe5db4f45a2
Author: Brad Bell <bradbell@…>
Date: Fri Mar 25 04:07:18 2016 -0700

eigen_mat_mul.hpp: add assert for f_left_ and f_right_ in reverse.

commit 721d64783547487fe69100c7190628efab7149c3
Author: Brad Bell <bradbell@…>
Date: Fri Mar 25 03:59:05 2016 -0700

eigen_mat_mul.hpp: typo Publice -> Public.

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