This example Maple file gives a slightly fuller example of Maple use than given in Section 3.1.
# read into maple with > read `maple.ms`:
# Define a 2-d gaussian
gi:=amp*exp(-(aparam^2/sa^2+bparam^2/sb^2)/2):
aparam:=cos(theta)*(xc-x0)+sin(theta)*(yc-y0):
bparam:=-sin(theta)*(xc-x0)+cos(theta)*(yc-y0):
# Declare arrays. We expressed the gaussian in terms of intelligible
# identifiers, but we want these to be output as array references when
# we produce the Fortran at the end
xa := array(1..5):
ca := array(1..1):
x0 := xa[1]:
y0 := xa[2]:
sa := xa[3]:
sb := xa[4]:
theta := xa[5]:
amp := ca[1]:
# aadf are the variables we'll differentiate with respect to
aadf:=[x0,y0,sa,sb,theta]:
# ...and array of differentials.
dyda:=array(1..6):
for i to 5 do
dyda[i]:=diff(gi,aadf[i])
od:
dyda[6] := gi:
# Output the result as Fortran
fortran (dyda, filename=`gaussianab.f`, optimized);