Hyper-Dual Numbers

Jeffrey Fike
Aerospace Design Lab
Department of Aeronautics and Astronautics
Stanford University



NOTE: This page is in the process of being updated, so some links fixed, but others still may not work (7/5/14).

Papers and Presentations
Source Code


Papers and Presentations
J. A. Fike and J. J. Alonso. The Development of Hyper-Dual Numbers for Exact Second Derivative Calculations. AIAA paper 2011-886, 49th AIAA Aerospace Sciences Meeting, January 4-7, 2011. paper bibtex presentation

J. A. Fike, S. Jongsma, J. J. Alonso, and E. van der Weide. Optimization with Gradient and Hessian Information Calculated Using Hyper-Dual Numbers. AIAA paper 2011-3807, 29th AIAA Applied Aerodynamics Conference, June 27-30, 2011. paper bibtex presentation

J. A. Fike and J. J. Alonso. Automatic Differentiation through the use of Hyper-Dual Numbers for Second Derivatives. 6th International Conference on Automatic Differentiation, July 23-27, 2012. paper bibtex presentation

J. A. Fike. Multi-Objective Optimization Using Hyper-Dual Numbers. Ph.D. Dissertation, Stanford University, 2013. paper bibtex presentation

M. R. Brake, J. A. Fike and S. D. Topping. Using Hyper-Dual Numbers to Construct Parameterized Reduced-Order Models. ASME IMECE Conference, November 14-20, 2014. presentation

Source Code
The software directly linked on this page is released under the MIT open source license: LICENSE.txt

Hyper-Dual Numbers:
hyperdual.h    : Implementation of Hyper-Dual Numbers as a C++ class for calculating numerically exact second derivatives. This is the latest version.
hyperdual2.tgz    : Implementation of Hyper-Dual Numbers as a MATLAB class for calculating numerically exact second derivatives. Note: This implementation is not as complete as the C++ version.
compare2cuda.cu    : CUDA implementation and sample code. The implementation will eventually be separated from the sample code.
hyperdual_vector.h    : Vectorized version of the Hyper-Dual Number implementation so that the gradient and Hessian are computed at one time with no redundant calculations.

Dual Numbers:
dualnumber.h  : Implementation of Dual Numbers as a C++ class for calculating numerically exact first derivatives. Note: Not as complete as the Hyper-Dual implementation.
dualnumber.tgz    : Implementation of Dual Numbers as a MATLAB class for calculating numerically exact first derivatives.
Fortran    : Implementation of Dual Numbers in Fortran by Edwin van der Weide.

Complex Hyper-Dual Numbers:
hyperdualcplx.h    : A partial implementation of Hyper-Dual Numbers as a C++ class using complex numbers instead of real numbers, for calculating numerically exact first and second derivatives of complex valued functions.
complexHD.cpp    : C++ code for testing hyperdualcplx.h.

Third Derivatives:
hyperdual3.tgz    : Implementation of Hyper-Dual Numbers as a MATLAB class for calculating numerically exact third derivatives.

Recursive Formulation of Dual Numbers for arbitrary derivatives:
dualnumberR.h    : C++ implementation (Not Available Yet)
dualnumberR.tgz    : MATLAB implementation (Not Available Yet)