! This Fortran 90 module provides a template for automatic ! differentiation. PROGRAM TEST_AUTOMATIC_DIFFERENTIATION USE AUTOMATIC_DIFFERENTIATION IMPLICIT NONE TYPE(AUTODIFF) :: X, Y X%VALUE = 2 X%DERIV = 1 Y = X**2 + X WRITE(*,'(A,2(1X,E12.4))') 'X = ', X%VALUE WRITE(*,'(A,2(1X,E12.4))') 'X**2 + X = ', Y%VALUE WRITE(*,'(A,2(1X,E12.4))') 'DERIVATIVE OF X**2 + X = ', Y%DERIV END PROGRAM TEST_AUTOMATIC_DIFFERENTIATION