Show tools for a specific language:
- Show all
- Fortran 77/90
- Language independent
Alphabetical List of Tools
- AD Model Builder (C/C++)
AD Model Builder (ADMB) was specifically designed for complex highly-parameterized nonlinear models. ADMB uses automatic differentiation to provide the function optimizer with exact derivatives.
- AD4CL (C/C++,OpenCL)
Automatic Differentiation for GPU computing
- ADC (C/C++)
The vivlabs ADC Automatic Differentiation Software for C/C++ delivers rapid integration of automatic differentiation capability to your new and existing applications on all operating system platforms. ADC automatically exploits the sparsity within your equation matrices, which leads to winning performance for both small, large and extremely large applications.
- ADEL (C/C++)
ADEL is an open-source C++ template library for Automatic Differentiation in forward mode. Works with CUDA out of the box.
- Adept (C/C++)
Adept is an operator-overloading implementation of first-order forward- and reverse-mode automatic differentiation. It is very fast thanks to its use of expression templates and a very efficient tape structure: in reverse mode it is typically only 2.5-4 times slower than the original undifferentiated algorithm. It is released under the Apache License, Version 2.0.
- ADIC (C/C++)
ADIC is a tool for the automatic differentiation (AD) of programs written in ANSI C. First derivatives are computed using forward mode with statement level preaccumulation. Second derivatives are computed using one of several forward mode strategies.
- ADNumber (C/C++)
Automatic differentiation of arbitrary order to machine precision. Uses templates and expression trees.
- ADOL-C (C/C++,R,python)
The package ADOL-C facilitates the evaluation of first and higher derivatives of vector functions that are defined by computer programs written in C or C++. The resulting derivative evaluation routines may be called from C/C++, Fortran, or any other language that can be linked with C. ADOL-C is distributed by the COIN-OR Foundation with the Common Public License CPL or the GNU General Public License GPL.
- AuDi (C/C++,python)
AuDI is an open source, header only, C++ library that allows for AUtomated DIfferentiation implementing a Taylor truncated polynomial algebra (aka differential algebra). Its core is also exposed as a python module called pyaudi.
- AUTODIF (C/C++)
A C++ library for automatic differentiation used as the building block for AD Model Builder
- autodiff (C/C++)
autodiff is a C++17 library that uses modern and advanced programming techniques to enable automatic computation of derivatives in an efficient and extremely easy way.
- AutoDiff_Library (C/C++)
This standalone AD library builds the computational graph and performs reverse gradient as well as reverse Hessian and Hessian-vector product algorithms on the graph. It is currently used in the parallel implementation of the Structured Modelling Language (http://www.maths.ed.ac.uk/ERGO/sml).
- CasADi (C/C++,MATLAB,python)
CasADi is a symbolic framework for numeric optimization implementing automatic differentiation in forward and reverse modes on sparse matrix-valued computational graphs.
- Clad (C/C++)
Clad is an autodiff tool for C/C++ implemented as a plugin to the Clang compiler
- CoDiPack (C/C++)
CoDiPack is a C++-library that enables the computation of gradients in computer programs using Algorithmic Differentiation. It is based on the Operator Overloading approach and uses static polymorphism and expression templates, resulting in an extremely fast evaluation of adjoints or forward derivatives. It is specifically designed with HPC applications in mind.
- ColPack (C/C++)
ColPack is a package consisting of implementations of various graph coloring and related algorithms for compression-based computation of sparse Jacobian and Hessian matrices using an Automatic Differentiation tool. ColPack is currently interfaced with ADOL-C. The coloring capabilities can be used for purposes other than derivative matrix computation.
- COSY INFINITY (Fortran77,Fortran95,C/C++)
COSY is an open platform to support automatic differentiation, in particular to high order and in many variables. It also supports validated computation of Taylor models. The tools can be used as objects in F95 and C++ and through direct calls in F77 and C, as well as in the COSY scripting language which supports dynamic typing.
- CppAD (C/C++)
CppAD uses operator overloading to compute derivatives of algorithms defined in C++. It is distributed by the COIN-OR Foundation with the Common Public License CPL or the GNU General Public License GPL. Installation procedures are provided for both Unix and Windows operating systems. The CppAD subversion repository can be used to view the source code. Extensive user and developer documentation is included.
- CppADCodeGen (C/C++)
CppADCodeGen aims to extend the CppAD library in order to perform hybrid automatic differentiation, that is, to use operator overloading and generate/compile source code. Provides easy to use drivers for the generation and use of dynamic libraries under Linux. It also allows JIT compilation through Clang/LLVM. It is distributed under the Eclipse Public License 1.0 or the GNU General Public License 3 GPL.
- CTaylor (C/C++)
High performance library to calculate with truncated taylor series. Can use multiple independent variables. Stores only potentially nonzero derivatives. Order of derivatives increases when using nonlinear operations until maximum (parameter) is reached. Based on googles libtaylor and heavily using boost::mpl.
- dco/c++ (C/C++)
dco/c++ implements first- and higher-order tangent and adjoint Algorithmic Differentiation (AD) by operator overloading in C++. It combines a cache-optimized internal representation generated with the help of C++ expression templates with an intuitive application programmer interface (API). dco/c++ has been applied successfully to a growing number of numerical simulations in the context of computational science, engineering and finance, for example, large-scale parameter calibration and shape optimization.
- dco/map (C/C++)
dco/map is a C++11 tape-free operator overloading AD tool designed specifically to handle accelerators (GPUs, Xeon Phi, etc.). It uses template metaprogramming techniques to generate adjoint code at compile time; we call this meta adjoint programming.
- Enzyme (C/C++,Fortran 77/90,Fortran2003,Fortran2008,Fortran77,Fortran95,Julia,LLVM,Language independent)
Enzyme is a plugin that performs automatic differentiation (AD) of statically analyzable LLVM. By operating on the LLVM level Enzyme is able to perform AD across a variety of languages and perform optimization prior to AD
- FAD (C/C++)
An implementation of automatic differentiation for programs written in C++ using operator overloading and expression templates.
- FADBAD/TADIFF (C/C++)
FADBAD is a C++ library implementing the forward and reverse mode of automatic differentiation by operator overloading for C++ programs. TADIFF is a C++ program package for performing Taylor expansions on functions implemented as C++ programs.
- FastAD (C/C++)
FastAD is a C++ template library of automatic differentiation supporting both forward and reverse mode to compute gradients and Hessians. It utilizes the latest features in C++17 and expression templates for efficient computation.
- FFADLib (C/C++)
FFADLib implements overloaded C++ arithmetic operators and elementary function that employ fast automatic differentiation algorithms. Such algorithms use precomputed addresses of the derivatives in the data structure.
- FunG (C/C++)
A library for simple and efficient generation of nonlinear functions and its first-, second-, and third-order derivatives. The focus is on invariant-based models, such as in nonlinear elasticity, and functions that pass the assembly process in FE-computations. Supports scalars, vectors, matrices and more general types satisfying a (relaxed) vector space structure.
- OpenAD (C/C++,Fortran77,Fortran95)
OpenAD is a source transformation tool that provides a language independent framework for the development and use of AD algorithms. It interfaces with language specific front-ends via an XML representation of the numerical core. Currently, Open64 is the front-end for FORTRAN and EDG/Sage3 the front-end for C/C++.
- QuantAD (.NET,C#,C/C++)
QuantAD® is an Automatic Differentiation tool targeted at Quantitative Finance and industries with similar requirements. It offers a robust and efficient alternative to finite difference (“bumping”) for computing sensitivities. With minor changes to the existing program in C++ or C#, the user is able to AD-enable the whole code base and automatically compute a large number of sensitivities with dramatic performance speedups compared to the traditional bumping approach. QuantAD has been designed from the ground up to cope with large code bases found in Quantitative libraries using numerical methods such as Monte-Carlo, Finite Difference, and Lattice-Based Schemes.
- Rapsodia (C/C++,Fortran95)
Rapsodia is Python based code generator the creates C++ or Fortran libraries to efficiently compute higher order derivatives via operator overloading.
- Sacado (C/C++)
The Sacado package provides automatic differentiation tools for C++ applications and is part of the larger Trilinos framework. It provides both forward and reverse modes, and leverages expression templates in the forward mode and a simplified tape data structure in the reverse mode for improved efficiency.
- Stan Math Library (C/C++)
Forward- and reverse-mode implementations for probability, linear algebra, and ODE applications.
- TAPENADE (C/C++,Fortran77,Fortran95)
TAPENADE is a source-to-source AD tool. Given a FORTRAN77, FORTRAN95, or C source program, it generates its derivative in forward (tangent) or reverse (adjoint) mode. TAPENADE is the successor of ODYSSEE. TAPENADE is directly accessible through a web servlet, or can be downloaded locally.
- Treeverse / Revolve (C/C++,Fortran77,Fortran95)
Revolve implements an efficient checkpointing algorithm for the exact computation of a gradient of a functional consisting of a (pseudo) time-stepping procedure.
- YAO (C/C++)
YAO is dedicated to the programming of numerical models and data assimilation. It is based on a modulus graph methodology. Each modulus represents a function. YAO facilitates and generates the coding of the linear tangent and the adjoint of the model.