Astronomical Applications Department, U.S. Naval Observatory Sensitivity Integral  Page 5
  # terms, then restore the temporaries. 
  debug_print(procname,`simplifying...`,0); 
  tmp   := mess: 
  Tlist := []: 
  for i from 1 to nops(arglist) do 
    tmp   := subs( arglist[i]=T.i, tmp ); 
    Tlist := [op(Tlist),T.i]; 
  od; 
  tmp := collect(tmp,[sin,cos,op(Tlist)],factor); 
  for i from 1 to nops(arglist) do 
    tmp := subs( T.i=arglist[i], tmp ); 
  od; 
 
  debug_print( procname, `error check:`, 0, 
               factor(expand(tmp-mess)) ); 
 
  # We're done. 
  tmp; 
end:
Okay, here we go.
(
)
cleanup
,
indef x
cleanup[0]: number of unique sin/cos terms:
26
cleanup[0]: arg list:
 -   + 
2 s
r
r g
 -   - 
2 s
r
r g
 +   + 
2 s
r
r g
 +   - 
2 s
r
r g
 - 
s
r g
 - 
2 s
2 r g
 + 
2 s
2 r g
-  + 
r
r g
 + 
r
r g
,
,
,
,
,
,
,
,
,
[
 + 
s
r g 2 r g
 - 
2 s
2 r
 - 
s
r
 + 
2 s
2 r
 + 
s
r r g 2 s 2 r r s
,
,
,
,
,
,
,
,
, , ]
cleanup[0]: simplifying...
cleanup[2]: error check:
 = 
0
0
;
(
)
cost
(
)
rhs %
(
)
cost
(
)
rhs indef
 + 
 + 
 + 
297 additions
26 functions
764 multiplications
80 divisions
 + 
 + 
 + 
437 additions
26 functions
959 multiplications
240 divisions
Our efforts have paid off.
 := 
indef
%%%
Now we will create a Maple procedure out of this result.  (A Maple procedure is needed in order 
to generate a fortran subroutine.)  We first substitute for the 
a
i
 since the subscript notation will 
cause Maple problems in what comes next.
 := 
tmp
(
)
subs
,
(
)
seq
,
 = 
a
i
.
a i
 = 
i
 .. 
0
4
(
)
rhs indef
readlib(optimize):
sensitivity_expr := 
(
)
optimize/makeproc
,
[
]
(
)
optimize
,
tmp tryhard
 = 
parameters
[
]
,
, , ,
x
(
)
seq
,
.
a i
 = 
i
 .. 
0
4
s r g
The cost of the optimized expression sequence is
Page 5