source: trunk/omh/whats_new/whats_new_15.omh @ 3680

Last change on this file since 3680 was 3680, checked in by bradbell, 5 years ago

merge to branch: trunk
from repository:
start hash code: 071875a4beba3363e5fa9752426aec4762cd1caa
end hash code: 0bef506513a519e1073c6279d5c4cba9e5c3b180

commit 0bef506513a519e1073c6279d5c4cba9e5c3b180
Author: Brad Bell <bradbell@…>
Date: Thu May 7 12:14:32 2015 -0700

Add the acosh function (as an atomic operation when defined by compiler).

commit b3264fa17b2f65b65800423a0e243c9c3ccfe06a
Author: Brad Bell <bradbell@…>
Date: Wed May 6 20:25:38 2015 -0700

CMakeLists.txt: Change so test only check for compliation.

commit dcbac4d4f20cc383f2bd9edb02036659df40b791
Author: Brad Bell <bradbell@…>
Date: Wed May 6 15:06:28 2015 -0700

asinh.cpp: check higher orders, relax accuracy on test.

commit 5f8881993fedd18cccc3c74831133a8f8a9d17b0
Author: Brad Bell <bradbell@…>
Date: Wed May 6 14:36:18 2015 -0700

Change Acos to acos.
acos.cpp: remove trailing white space.

commit e828fa1f7c4c3848c727f14b1b7a8030071ee705
Author: Brad Bell <bradbell@…>
Date: Wed May 6 12:07:35 2015 -0700

Change Acos to acos.
acos.cpp: remove redundant index commands, remove trailing with space.

commit 3d16e5b9fe1bdafa4ad01d1d466bb72b792650fa
Author: Brad Bell <bradbell@…>
Date: Wed May 6 11:30:49 2015 -0700

op_code.hpp: Minor edits to AcosOp? commnets.

commit 58beaaad149b4ac29fae44589d7f8900bf8f4c40
Author: Brad Bell <bradbell@…>
Date: Wed May 6 10:51:43 2015 -0700

for_jac_sweep.hpp: Add missing AsinhOp? case.

commit 623c134870c522ae5e80bcf0f89d230902594c80
Author: Brad Bell <bradbell@…>
Date: Wed May 6 10:27:39 2015 -0700

Fix comment about AsinhOp? operator.

commit 226b14f6f4810f5abf1ca247aae541963efaf4d6
Author: Brad Bell <bradbell@…>
Date: Wed May 6 10:14:08 2015 -0700

Add derivative of F to make order zero case clearer.
acos_reverse.omh: Fix some sign errors.
asin_reverse.omh: Fix typo.
acos_forward.omh: Simplify by distributing minus sign.

commit 4682f4ee73e33b600b180086576e986f636a24dc
Author: Brad Bell <bradbell@…>
Date: Wed May 6 08:15:50 2015 -0700

acos_forward.omh: fix sign that depends on acos versus acosh.

commit 906ae10adf019ddda7f57dd165aab08fc55289c4
Author: Brad Bell <bradbell@…>
Date: Wed May 6 07:09:47 2015 -0700

  1. Fix inclusion of some temporary files in package (e.g.,
  2. Simplify and improve using git ls-files and ls bin/check_*.
  3. Remove trailing white space.

commit 5096f4706a547bd76caa3766aa2c62802ef7f0bf
Author: Brad Bell <bradbell@…>
Date: Wed May 6 06:41:20 2015 -0700

Combine base type documentation for erf, asinh
(will add more functions to this list list).

commit b3535db5ad95bee90672abcaa686032d23bce2fc
Author: Brad Bell <bradbell@…>
Date: Tue May 5 18:01:11 2015 -0700

  1. Change Arc Cosine/Sine? to Inverse Cosine/Sine?.
  2. Change arcsin-> asin and arccos->acos.
  3. Remove index commands that are duplicates of words in titles.

acos_reverse.omh: Add acosh case to this page.

File size: 10.5 KB
2/* --------------------------------------------------------------------------
3CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-15 Bradley M. Bell
5CppAD is distributed under multiple licenses. This distribution is under
6the terms of the
7                    Eclipse Public License Version 1.0.
9A copy of this license is included in the COPYING file of this distribution.
10Please visit for information on other licenses.
11-------------------------------------------------------------------------- */
13$begin whats_new_15$$
14$dollar @$$
16        acosh
17        asinh
18        src
19        op
20        onetape
21        CppAD
22        colpack
23        hes
24        cppad
25        Jacobian
26        gettimeofday
27        cmake
28        hpp
29        dir
30        includedirs
31        libdirs
32        datadir
33        docdir
34        std
35        cxx
36        erf
37        var
38        NumRes
39        chrono
40        aeps
41        CondExpGt
42        hasnan
45$section CppAD Changes and Additions During 2015$$
47$head Introduction$$
48This section contains a list of the changes to CppAD during 2015
49(in reverse order by date).
50The purpose of this section is to
51assist you in learning about changes between various versions of CppAD.
53$head 05-07$$
54Add the inverse hyperbolic sine function $cref acosh$$.
55If you are defining your own base type,
56note that $cref/acosh/base_std_math/erf, asinh, acosh/$$
57was added to the base type requirements.
59$head 05-05$$
60Add the inverse hyperbolic sine function $cref asinh$$.
61If you are defining your own base type,
62note that $cref/asinh/base_std_math/erf, asinh, acosh/$$
63was added to the base type requirements.
65$head 04-18$$
66In the sparse jacobian and sparse hessian calculations,
67If $icode work$$ is present, and has already been computed,
68the sparsity pattern $icode p$$ is not used.
69This has been added to the documentation; see
70$cref/sparse jacobian/sparse_jacobian/work/p/$$ and
71$cref/sparse hessian/sparse_hessian/work/p/$$ documentation
72for $icode work$$ and $icode p$$.
74$head 03-13$$
75Remove the syntax
77        AD<%Base%> %y% = %x%
79for the $cref/AD constructor/ad_ctor/$$ documentation because it does not
80work when the constructor is $cref/explicit/ad_ctor/x/explicit/$$.
81Also document the restriction that the constructor in the
82$cref/assignment/ad_assign/$$ must be implicit.
84$head 03-06$$
85The developers of the
86$href%$$ package reported that
87for large $cref ADFun$$ tapes, the $cref optimize$$ routine uses
88a large amount of memory because it allocates a standard set for
89each variable on the tape. These sets are only necessary for variables in
90$cref/conditional expressions/condexp/$$ that can be skipped once
91the independent variables have a set value.
92The problem has been reduced by using a NULL pointer for the empty set
93and similar changes. It still needs more work.
95$head 02-28$$
96It used to be the case that the
97$cref/Reverse mode/reverse/$$ would propagate $cref nan$$
98through the $cref/conditional expression/condexp/$$
99case that is not used.
100For example, if
102        Independent(ax);
103        AD<double> aeps = 1e-10;
104        ay[0] = CondExpGt( ax[0], aeps, 1.0/ax[0], 1.0/aeps );
105        ADFun<double> f(ax, ay);
107The corresponding reverse mode calculation,
108at $code x[0] = 0.0$$, would result in
110        Error detected by false result for
111        ! ( hasnan(value) && check_for_nan_ )
113This has been fixed so that only the conditional expression case that is used
114affects the reverse mode results.
115The example $cref cond_exp.cpp$$ was changed to reflect this
116(a check for $code nan$$ was changed to a check for zero).
117Note that this fix only works when
118$cref/IdenticalPar/base_identical/Identical/IdenticalPar/$$ is true for the
119base type of the result in the conditional expression; e.g.,
120one can still get a $code nan$$ effect from the case that is not selected
121when using $code AD< AD<double> >$$ conditional expressions.
123$head 02-18$$
124If the compiler supports the c++11 feature
125$code std::chrono:high_resolution_clock$$ then use it for
126the $cref elapsed_seconds$$ function.
128$head 02-16$$
129The new example $cref sub_sparse_hes.cpp$$ shows one way to
130compute a Hessian for a subset of variables without having to compute
131the sparsity pattern for the entire functions.
133$head 02-14$$
134Fix another bug in the derivative calculations for the
135c++11 version of the error function; see
138$head 02-11$$
139Fix a bug in the optimization of conditional expressions. To be specific,
140if $cref/NDEBUG/faq/Speed/NDEBUG/$$ is not defined, one could get
141an assert with the message:
143        Error detected by false result for
144                var_index_ >= NumRes(op_)
147$head 02-10$$
148The change on $cref/2014-12-23/whats_new_14/12-23/$$ introduced a
149bug when the c++11 version of the error function was used with
150an $cref/optimized/optimize/$$ function. see
152There was also a bug in the sparsity calculations for when
153this erf function was included.
154These bugs have been fixed.
156$head 02-09$$
157The test $code test_more/optimize.cpp$$ was failing on some systems
158because an exactly equality check should have been a near equal check.
159This has been fixed.
161$head 02-07$$
162On some systems, the library
163corresponding to $code speed/src$$ could not be found.
164This library is only used for testing and so has been changed to always be
165static (hence does not need to be found at run time).
167$head 02-06$$
168There was a bug in the coloring method change on
170To be specific, $icode%work%.color_method%$$ was not being set
171to $code "cppad.symmetric"$$ after $icode%work%.color_method.clear()%$$.
172This has been fixed.
174$head 02-04$$
175$list number$$
176Enable the same install of CppAD to be used both with and without C++11
177features; e.g., with both $code g++ --std=c++11$$ and with
178$code g++ --std=c++98$$. Previously if the
179$cref/cppad_cxx_flags/cmake/cppad_cxx_flags/$$ specified C++11,
180then it could only be used in that way.
182The $cref/cmake command/cmake/CMake Command/$$ now requires the version
183of $code cmake$$ to be greater than or equal 2.8
184(due a bug in $code cmake$$ version 2.6).
187$head 02-03$$
188Improved the searching for the boost multi-threading library
189which is used for by the $cref team_bthread.cpp$$ case of the
190$cref thread_test.cpp$$ example and test.
192$head 02-02$$
193Improve the documentation for the
194$cref/cmake command/cmake/CMake Command/$$ line options
196        cmake_install_%dir%
198for $icode dir$$ equal to
199$code prefix$$, $code postfix$$, $code includedirs$$, $code libdirs$$,
200$code datadir$$, and $code docdir$$.
202$head 01-30$$
203Fix bug in $cref link_sparse_hessian$$ speed test introduced on
204$cref/01-09/whats_new_15/01-09/$$ below.
206$head 01-29$$
207Fix some warnings generated by $code g++ 4.9.2$$.
209$head 01-26$$
210The change of global variables to local in
211$code cppad/local/op_code.hpp$$ on $cref/2014-50-14/whats_new_14/05-14/$$
212created a bug in $cref parallel_ad$$ (some local statics needed to
213be initialized). This has been fixed.
215$head 01-23$$
216There was a bug in the $cref cmake$$ install detection of compiler features.
217One symptom of this bug was that on systems that had the $code gettimeofday$$
218function, the cmake install would sometimes report
220        cppad_has_gettimeofday = 0
222This has been fixed.
224$head 01-21$$
225The deprecated $cref auto_tools$$ procedure had a bug in the
226detection of when the size of an $code unsigned int$$
227was the same as the size of a $code size_t$$. This has been fixed.
229$head 01-20$$
230$list number$$
231The new $cref compare_change$$ interface has been created
232and the old $cref CompareChange$$ function has been deprecated;
233see the $cref compare_change.cpp$$ example.
234This enables one to determine the source code during taping
235that corresponds to changes in the comparisons during
236$cref/zero order forward/forward_zero/$$ operations; see
240This new $cref compare_change$$ interface can detect comparison changes
241even if $cref/NDEBUG/Faq/Speed/NDEBUG/$$ is defined and
242even if $cref/f.optimize()/optimize/$$ has been called.
243The deprecated function $code CompareChange$$ used to always return zero after
245        %f%.optimize()
247and was not even defined when $code NDEBUG$$ was defined.
248There was a resulting speed effect for this; see the wish list
249$cref/compare change/WishList/Optimization/Comparison Changes/$$ entry.
252The date when some features where deprecated has been added to the
253documentation. For example, see
254$cref/Deprecated 2006-12-17/include_deprecated/Deprecated 2006-12-17/$$.
257$head 01-09$$
258$list number$$
259The change 01-07 below included (but did not mention) using
260a sparse, instead of full, structure for the Hessian in the test.
261This has also been done for the
262$cref/sparse Jacobian/link_sparse_jacobian/$$ test.
264For both the
265$cref/sparse_jacobian/link_sparse_jacobian/$$ and
266$cref/sparse_hessian/link_sparse_hessian/$$ tests,
267the sparse function is only chosen once
268(it used to be different for every repeat).
269This reduced the amount of computation not connected what is being tested.
270It also make the $cref/onetape/speed_main/option_list/onetape/$$ a valid
271option for these tests.
273There was a bug in the
274$cref/multiple direction forward/forward_dir/$$ routine.
275Results for function values that are
276$cref/parameter/parvar/$$ were not being computed properly
277(all the derivatives are zero in this case).
278This has been fixed.
282$head 01-07$$
283The following changes were merged in from the $code color_hes$$ branch:
284$list number$$
285Specify the type of
287for the sparse hessian calculations.
288To be specific, instead of $code "cppad"$$ and $code "colpack"$$,
289the choices are $code "cppad.symmetric"$$, $code "cppad.general"$$,
290and $code ""$$.
291This is not compatible with the change on
292$cref/01-02/whats_new_15/01-02/$$, which was so recent
293that this should not be a problem.
295The $cref/n_sweep/link_sparse_hessian/n_sweep/$$ values were
296not being returned properly by
297$cref cppad_sparse_hessian.cpp$$ and
298$cref adolc_sparse_hessian.cpp$$.
299The CppAD version has been fixed and the ADOL-C version
300has been set to zero.
302The $cref link_sparse_hessian$$ example case was to sparse for good
303testing (by mistake).
304This has been fixed.
306Add $icode n_sweep$$ to
307$cref/link_sparse_hessian/link_sparse_hessian/n_sweep/$$ and
308$cref/speed_main/speed_main/Speed Results/n_sweep/$$.
310Change the $code cppad$$ sparse Hessian
312to take advantage of the symmetry of the Hessian
313(in a similar fashion to the $code colpack$$ coloring method).
316$head 01-02$$
317Added to option to uses
318$cref/colpack/colpack_prefix/$$ for the sparse Hessian
319$cref/coloring method/sparse_hessian/work/color_method/$$;
320see the example $cref colpack_hes.cpp$$.
Note: See TracBrowser for help on using the repository browser.