Los dos métodos clásicos tiene problemas con el cálculo de derivadas de mayor grado, donde la complejidad y los errores se ven incrementados.
DA se basa en el hecho de que cualquier programa de computación que implemente una función vectorial y = F(x) (generalmente) se puede descomponer en una secuencia de asignaciones elementales, siendo cada una trivialmente diferenciable utilizando una LUT (LookUp Table o tabla para búsquedas).
Estas derivadas parciales básicas, evaluadas utilizando los argumentos, se combinan de acuerdo a regla de la cadena del cálculo de derivadas para formar información derivada para F (como gradientes, tangentes, la matriz Jacobiana, etc.).
Este proceso obtiene derivadas exactas (según la precisión numérica).
Debido a que la transformación simbólica ocurre sólo en el nivel más básico, DA evita los problemas computacionales inherentes al cálculo simbólico complejo.
para el resto se aplica los siguientes resultados: La DA hacia adelante se implementa mediante una interpretación no estándar del programa en el cual los números reales son sustituidos por números duales, las constantes se convierten en números duales con un coeficiente epsilon igual a cero, y las primitivas numéricas se modifican para que operen con números duales.
Esta interpretación no estándar se implementa generalmente mediante dos estrategias: modificación del código fuente o sobrecargando operadores.
El código fuente de una función se reemplaza por un código generado automáticamente que incluye instrucciones para el cálculo de las derivadas intercaladas con las instrucciones originales.
La modificación del código fuente se puede implementar para cualquier lenguaje de programación, y es más fácil de optimizar para el compilador.
Ejemplos: La sobrecarga de operadores es una posibilidad para el código fuente escrito en un lenguaje que lo soporte.
Los objetos para los números reales y las operaciones matemáticas básicas se deben sobrecargar para corresponder con la aritmética aumentada descrita arriba.
Sin embargo, los compiladores actuales no optimizan tanto el código como en el caso de acumulación hacia adelante.