#                                        Ren-Cang Li, June 1, 1996
#                                        na.rcli@na-net.ornl.gov

with(linalg):
m:=7: nstep:=2*m+1: c:=vector(m,[]): cs:=vector(m+1,[]):
for i from 1 to m do
    cs[i]:=c[i]:
od:
cs[m+1]:=1-cs[m]:

delta[m]:=cs[1]:
for i from m-1 to 0 by -1 do delta[i]:=cs[m+1-i]-cs[m-i]: od:

a1:=delta[0]:
a3:=delta[0]^3: 
a5:=delta[0]^5: b5:=0:
a7:=delta[0]^7: b7:=0: c7:=0: d7:=0:

for i from 1 to m do
    Newa1 := a1 + 2*delta[i];
    Newa3 := a3 + 2*delta[i]^3;
    Newa5 := a5 + 2*delta[i]^5;
    Newb5 := b5 - (a1*a3*delta[i])/6 - (a3*delta[i]^2)/6 
		+ (a1^2*delta[i]^3)/6 + (a1*delta[i]^4)/6;
    Newa7 := a7 + 2*delta[i]^7;
    Newb7 := b7 - (a1*a5*delta[i])/6 - (a5*delta[i]^2)/6 
	        + (a1^2*delta[i]^5)/6 + (a1*delta[i]^6)/6;
    Newc7 := c7 + (a1^3*a3*delta[i])/360 - (a1*b5*delta[i])/6 
		+ (a1^2*a3*delta[i]^2)/45 - (b5*delta[i]^2)/6 
		- (a1^4*delta[i]^3)/360 + (7*a1*a3*delta[i]^3)/180 
		- (a1^3*delta[i]^4)/45 + (7*a3*delta[i]^4)/360 
		- (7*a1^2*delta[i]^5)/180 - (7*a1*delta[i]^6)/360;
    Newd7 := d7 - (a3^2*delta[i])/6 + (a1*a3*delta[i]^3)/6 
		- (a3*delta[i]^4)/6 + (a1*delta[i]^6)/6;

    a1:=simplify(expand( Newa1 ));
    a3:=simplify(expand( Newa3 )); 
    a5:=simplify(expand( Newa5 )); b5:=simplify(expand( Newb5 ));
    a7:=simplify(expand( Newa7 )); b7:=simplify(expand( Newb7 )); 
    c7:=simplify(expand( Newc7 )); d7:=simplify(expand( Newd7 ));
od:

f[1]:=a3: 
f[2]:=a5: f[3]:=b5:
f[4]:=a7: f[5]:=b7: f[6]:=c7: f[7]:=d7:

for i from 1 to m do
    for j from 1 to m do
        g[i][j]:=diff(f[i],c[j]);
    od:
od:
