A combined automatic differentiation and array library for C++
Adept has been developed on Linux using the GNU C++ compiler, and
tested with the Clang, Intel and (on Windows) Microsoft
compilers. Since most of the difficulty in compiling on other
platforms (particularly Windows) arises from building and linking to a
dynamic library, there is a "library-free" option described in
the User Guide.
Version 2: Automatic differentiation and array capability
- Latest snapshot: Available
- Version 2.0.5 (latest stable
(6 February 2018)
- Fixed compile problem with older versions of Clang
- More control of the format of arrays written to a stream
- Version 2.0.4: adept-2.0.4.tar.gz
(8 January 2018)
- Fixed several bugs and memory leaks
- Version 2.0.3: adept-2.0.3.tar.gz (30
- Works with Clang, Intel and Microsoft compilers, in addition to
- Vectorized passive sqrt, min, max and reduce
operations (sum, mean etc.)
- Version 2.0: adept-2.0.gz (1
October 2017) - User Guide (PDF)
- Fixed pausable recording and library-free compilation to provide
full backwards compatibility with version 1.1
- C++11 features such as initializer lists
- Automatic vectorization of passive array statements if possible
- Additional mathematical
functions: round, trunc, rint, nearbyint,
atan2, fmin, fmax
- Additional array
operations: spread, outer_product, count, maxval,
- Many more test programs
- Version 1.9.8: adept-1.9.8.tar.gz
(10 April 2016)
- Added FixedArray class for arrays whose dimensions are
known at compile time.
- Added bounds checking option by
- Any BLAS and LAPACK library may be used, rather than just OpenBLAS.
- Version 1.9.4: adept-1.9.4.tar.gz (27
- First release after major rewrite to combine automatic
differentiation and array functionality into a single library.
Version 1: Automatic differentiation capability only
If you are not interested in array features then version 1.1 may be
a preferable option to version 2.0 since it has virtually the same
automatic differentiation capability and is more lightweight.
- Latest snapshot: Available
- Version 1.1 (latest stable
(3 June 2015)
- Changed license from GNU General Public License to the more
License, Version 2.0. Users are permitted to use instead the
ESA Software Community License Type 1, if they prefer.
- Build system now uses
an autotools-generated configure
- Support for additional mathematical functions: asinh,
acosh, atanh, expm1, log1p, cbrt,
erf, erfc, exp2 and log2.
- Jacobian calculation can use OpenMP parallelization.
- Windows support via the capability to compile code to be
differentiated without the need to link to an external library.
- More test programs and a benchmarking tool.
- Version 1.0: adept-1.0.tar.gz (3
- LIFO requirement removed in allocation of active objects in
memory: more efficient for codes that don't deallocate objects in
the reverse order from their allocation.
- Interface change: independent variables no longer need to be
initialized using set_value; they can now be initialized
using the ordinary assignment operator (=) provided that
the new_recording function is called immediately after
they are initialized (see section 5.2 of the User Guide).
- Ability to interface to code components that compute their own
Jacobian (e.g. those written in Fortran).
- More test programs, including one that interfaces to
the GNU Scientific
Library to perform a real minimization.
- C++ exceptions are thrown when an error occurs.
- Recording of derivative information can be "paused" so that the
same function can be called from within the program both with and
without automatic differentiation.
- Source code can be compiled twice to produce two versions of a
function, one with automatic differentiation and one without.
- Version 0.9: adept-0.9.tar.gz
(2 May 2012).