lines 6-440 of file: appendix/whats_new/14.xrst {xrst_begin whats_new_14 app} {xrst_spell autoconf automake autotools auxillary bthread cmath complier cstdint datadir docdir doxygen extern forwardany forwardone forwardzero notational omhelp postfix uj } CppAD Changes and Additions During 2014 ####################################### mm-dd ***** 12-30 ===== There was a bug in the :ref:`cmake-name` whereby it would sometimes mistakenly exit with the error message :: cppad_max_num_threads is not an integer greater than or equal 4 This has been fixed. 12-29 ===== The example ``not_complex_ad.cpp`` was using the type ``std::complex< CppAD::AD >`` and was failing to compile with the ``clang`` complier. This example has been removed because it is not consistent with the C++ standard; see :ref:`complex FAQ` . 12-28 ===== #. Fix some warnings generated by clang 3.5 about local functions that were not being used; e.g., sub-tests that were not being executed. #. Fix ``cmake`` setting ``cppad_implicit_ctor_from_any_type`` Note that this cmake option has since been replaced by ``cppad_deprecated`` option. #. The ``clang++`` compiler was optimizing out the calculations in the :ref:`time_test.cpp-name` and :ref:`speed_test.cpp-name` examples. This caused these tests to hang while trying to determine how many times to repeat the test. This has been fixed. 12-27 ===== More work on the bug in :ref:`optimizing` conditional expressions. 12-26 ===== A minimal example for computing cross terms in atomic operation Hessian sparsity patterns ``atomic_two_rev_sparse_hes.cpp`` was added. 12-25 ===== More work on the bug in :ref:`optimizing` conditional expressions. 12-23 ===== The c++11 standard includes the error function :ref:`erf-name` in ``cmath`` . If the c++ compiler has the error function defined in ``cmath`` , the complier version of the error function is used and it corresponds to an atomic operation. Fix typo in tangent reverse mode theory for :ref:`Positive Orders` . 12-22 ===== There was a bug related to :ref:`optimizing` conditional expressions. This has been fixed. 12-17 ===== Fix some compiler warnings and :ref:`speed-name` program names when using the deprecated :ref:`configure-name` install procedure. 12-16 ===== If the ``c++11`` include file ```` defines all the standard types, they can be used by to specify :ref:`cppad_tape_addr_type` and :ref:`cppad_tape_id_type` . 12-15 ===== Correct the title and index entries for :ref:`forward_two-name` from first to second order. 11-28 ===== Improve the index and ``search`` using a new version of the ``omhelp`` documentation tool. 11-27 ===== #. Add alignment to the :ref:`get_memory` and :ref:`create_array` specifications and :ref:`thread_alloc example` . #. Advance the deprecated :ref:`unix install` utilities to autoconf-2.69 and automake-1.13.4. 09-28 ===== Fix more bugs related to optimizing condition conditional expressions. #. Using old instead of new operator indices. #. Not properly following dependence back through atomic operations. #. Aborting during forward order zero, when skipping computation for a variable that was already completed (the skip is still useful for higher orders and for reverse mode). #. Reverse mode not properly handling the variable number of arguments in the conditional skip operation. #. Reverse mode tracing not properly handling the variable number of argument operations; i.e., conditional skip and cumulative summation. 09-27 ===== Fix a bug that occurred when :ref:`f.optimize` was used with a function *f* that contained calls to user defined :ref:`atomic-name` operations and :ref:`conditional expressions` . 09-25 ===== Fix a bug that occurred when :ref:`f.optimize` was used with a function *f* that contained :ref:`discrete-name` functions. 09-21 ===== Fix a typo in documentation for :ref:`any order reverse` . To be specific, :math:`x^{(k)}` was changed to be :math:`u^{(k)}`. 05-28 ===== #. Change the :ref:`speed_main@Sparsity Options@boolsparsity` so that it only affects the sparsity speed tests :ref:`sparse_jacobian` and :ref:`sparse_hessian` ; i.e., it is now ignored by the other tests. #. Improve the :ref:`speed-name` documentation page. 05-27 ===== #. The ``cppad_colpack.cpp`` file was not being copied to the specified directory. In addition, the specified directory was changed from an include directory to data directory because ``cppad_colpack.cpp`` is not an include file. #. If :ref:`colpack_prefix-name` was specified, the CppAD :ref:`pkgconfig-name` file was missing some information. This has been fixed. 05-23 ===== The :ref:`speed-name` test instructions were converted from using the old autotools :ref:`unix install` instructions to use the :ref:`cmake-name` install instructions. These instructions should work on any system, not just unix. 05-22 ===== #. Add multiple direction for mode :ref:`forward_dir-name` and use it to speed up the forward version of :ref:`sparse_jacobian-name` . Below is an example run of :ref:`cppad_sparse_jacobian.cpp-name` results before this change: :: cppad_sparse_jacobian_size = [ 100, 400, 900, 1600, 2500 ] cppad_sparse_jacobian_rate = [ 2973, 431.94, 142.25, 78.64, 26.87 ] and after this change: :: cppad_sparse_jacobian_size = [ 100, 400, 900, 1600, 2500 ] cppad_sparse_jacobian_rate = [ 6389, 954.26, 314.04, 180.06, 56.95 ] Due to the success of this change, ``multiple direction`` items were added to the wish list (they were later removed). #. Improve the forward mode tracing of arguments to, and results from, user defined :ref:`atomic-name` operations. 05-20 ===== #. Move ``speed/adolc/alloc_mat.hpp`` to ``speed/adolc/adolc_alloc_mat.hpp`` so it has the same name is its ``# ifndef`` command. #. Fix ``# ifndef`` command in ``cppad/ipopt/solve_callback.hpp`` . #. Add ``# ifndef`` command to ``test_more/extern_value.hpp`` . 05-19 ===== In the files ``cppad/local/asin_op.hpp`` and ``cppad/local/acos_op.hpp`` there were assignments of the form ``uj = 0.`` where ``u_j`` has type :ref:`Base` . These may have not be defined operations in certain cases and have been converted to ``uj = Base(0)`` . 05-16 ===== There was a mistake in printing the arguments for ``CSumOp`` and ``CSkipOp`` when using the undocumented ``TRACE`` option during forward mode (available in files of the form ``include/cppad/local/`` * ``sweep.hpp/`` ). This has been fixed. 05-14 ===== #. There were some global variables in the file ``cppad/local/op_code.hpp`` that might have caused multiple definitions during link time for CppAD applications. These variables have been changed to be local so that this cannot happen. #. There was a mistaken assert that the number of arguments for the ``BeginOp`` was zero that caused an abort when using the undocumented ``TRACE`` option available in files of the form ``include/cppad/local/`` * ``sweep.hpp/`` . This has been fixed. 03-18 ===== #. The :ref:`fun_deprecated@size_taylor` and :ref:`fun_deprecated@capacity_taylor` functions were deprecated; use :ref:`size_order-name` and :ref:`capacity_order-name` instead. #. The documentation for :ref:`forward-name` and the examples :ref:`forward.cpp-name` , :ref:`forward_order.cpp-name` , have been improved. To be more specific, :ref:`forward_order-name` now references the special cases :ref:`forward_zero-name` , :ref:`forward_one-name` and the new case :ref:`forward_two-name` . 03-17 ===== The :ref:`CppAD_vector@Assignment@Move Semantics` version of the ``CppAD::vector`` assignment statement was not checking vector sizes. This has been fixed so that things work the same with compilers that do not have move semantics. (Note that with move semantics, no extra memory allocation is done even if the target vector has a different size.) 03-09 ===== The documentation links ``forwardzero`` , ``forwardone`` , and ``forwardany`` have been changed to :ref:`forward_zero-name` , :ref:`forward_one-name` , and :ref:`forward_order-name` respectively. This may affect links from other web pages to the CppAD documentation. 03-05 ===== The names *p* and *q* in the :ref:`forward` , :ref:`reverse` , :ref:`atomic_two_forward-name` , and :ref:`atomic_two_reverse-name` functions were reverse so that *p* <= *q* . This is only a notational change to make the arguments easier to remember. 03-02 ===== #. In the output for the speed :ref:`speed_main@test@correct` test, mention which tests are not available. Note that the set of available tests can depend on the :ref:`list of options` . #. In the documentation for :ref:`sparse_jacobian@n_sweep` , mention that it is equal to the number of colors determined by the :ref:`sparse_jacobian@work@color_method` . #. The :ref:`speed_cppad-name` tests were simplified by removing the printing of auxillary information related to the :ref:`speed_main@Global Options@optimize` option. Future auxillary information will be passed back in a manner similar to :ref:`link_sparse_jacobian@n_color` for the sparse jacobian test. #. :ref:`CppAD_vector@Assignment@Move Semantics` were added to the ``CppAD::vector`` assignment operator. 03-01 ===== #. Change the prototype for *row* and *col* in the :ref:`link_sparse_jacobian-name` speed test to be ``const`` ; i.e., they are not changed. #. Move *x* near end of :ref:`link_sparse_hessian-name` speed test parameter list, (as is the case for :ref:`link_sparse_jacobian-name` ). 02-28 ===== The :ref:`CppAD_vector@data` function was added to the ``CppAD::vector`` template class. 02-27 ===== The CppAD developer documentation for the subdirectory ``cppad/ipopt`` was not being built by the command ``bin/run_doxygen.sh`` . This has been fixed. 02-26 ===== #. The :ref:`adolc` and :ref:`cppad` sparse jacobian speed tests now print out :ref:`sparse_jacobian@n_sweep` . #. The size of some of the :ref:`speed-name` test cases has been increased to test behavior for larger problems. #. A link to :ref:`ode_evaluate-name` was missing in the :ref:`speed_utility@Speed Utility Routines` table. This has been fixed. 02-23 ===== The :ref:`sparse_jacobian@work@color_method` option was added to the sparse Jacobian calculations. This enables one to use :ref:`ColPack` do color the rows or columns. The speed test :ref:`speed_main@Sparsity Options@colpack` option was also added (but not yet implemented for :ref:`sparse_hessian` speed tests). 02-22 ===== The program names in :ref:`thread_test.cpp-name` where changes from *threading* _ ``test`` to ``multi_thread_`` *threading* where *threading* is ``openmp`` , ``pthread`` or ``bthread`` . 02-17 ===== Fix ambiguous call to :ref:`nan@isnan` during MS Visual Studio 2012 compilation. 02-15 ===== #. The :ref:`speed_main@Sparsity Options@boolsparsity` option was added to the :ref:`speed_main-name` program. #. The ``retape`` option what changed to :ref:`speed_main@Global Options@onetape` so that the default is to retape (option not present). This was done because :ref:`fadbad` and :ref:`sacado` always retape. #. The documentation, and example source code, for all the speed :ref:`options` was improved (made clearer). #. Improve the success rate for :ref:`speed_test.cpp-name` and :ref:`time_test.cpp-name` . 01-26 ===== The destination directory for the :ref:`cppad documentation` is now set separately from the data directory using the ``cmake`` option ``-D cmake_install_docdir`` = *cmake_install_docdir* This has increased the flexibility of the documentation installation and removed the need for the option ``-D cppad_documentation`` = *yes_or_no* which has been removed. 01-21 ===== The destination directory for the cppad documentation used to be one of the following: | |tab| *prefix* / *datadir* / ``doc/cppad-`` *version* | |tab| *prefix* / *datadir* / ``doc/`` *postfix* ``cppad-`` *version* This has been changed by dropping the *version* number at the end of the directory name. 01-10 ===== The change on :ref:`2013-12-27` caused a conversion error in :ref:`atan2-name` when it was used with ``AD< AD >`` arguments (and other similar cases). This has been fixed. {xrst_end whats_new_14}