C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:21.  Memory: start 001CF344, length 532260.

 Command line: +1 Last.e Xax


C Last 1.  Left, Right, First and Last option in substitutions.

	F f1,f2,f3,f4,f5,f10
	Z xx=3*f1*aa
L 1	IF aa=f10
L 2	Id,Addfa,f2
L 3	Id,Left,Addfa,f3
L 4	Id,Right,Addfa,f4
L 5	Id,First,Addfa,f5
	ENDIF

	*begin
 
xx = + 3*f3*f1*f10*f2*f4*f5 + 0.
 

Begin. Time 1 sec.
	F f1,f2,f3,f4,f5,ff
	*fix

Begin. Time 1 sec.

	Z xx=f1*f2*f3*f4*f5

L 1	Id,Ainbe,f2*f4=ff
	*begin
 
xx = + f1*f3*ff*f5 + 0.
 

Begin. Time 1 sec.

	Z xx=f1*f2*f3*f4*f5

L 1	Id,Left,Ainbe,f2*f4=ff
	*begin
 
xx = + ff*f1*f3*f5 + 0.
 

Begin. Time 1 sec.

	Z xx=f1*f2*f3*f4*f5

L 1	Id,Right,Ainbe,f2*f4=ff
	*begin
 
xx = + f1*f3*f5*ff + 0.
 

Begin. Time 1 sec.

	Z xx=f1*f2*f3*f4*f5

L 1	Id,First,Ainbe,f2*f4=ff
	*begin
 
xx = + f1*ff*f3*f5 + 0.
 

Begin. Time 1 sec.

	Z xx=f1*f2*f3*f4*f5

L 1	Id,Last,Ainbe,f2*f4=ff

	*end
 
xx = + f1*f3*ff*f5 + 0.
 

End run. Time 1 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:23.  Memory: start 001CF344, length 532260.


C Last 2.  Multiple dummy: string of function arguments as dummy.

	F f1,f2,f3,ff2
	V p,q
	I mu
	A a,b,c,d,e,f,ff,a1,a2,a3
	Z xx = f1(a1,b,c,d,e,f,ff,b,c,d,e,f)* f3(a1,b)
	 + a1*f1(a1,ff)*p(mu)
L 1	Id,f1(a~,b?,ff,b?)*f3(a~,b)=f2(f,b,ff,c)
L 2	Id,f1(a~,b?,ff)=ff2(ff,b)
L 3	Id,p(mu~)=q(mu)
	*begin
 
xx = + f2(f,b,c,d,e,f,ff,c)
 
 + ff2(ff)*q(mu)
  * ( a1 ) + 0.
 

Begin. Time 0 sec.

	F f1,f2,f3,f4,f5,f6,ff2
	V p,q
	I mu
	A a,b,c,d,e,f,ff,a1,a2,a3
	Z xx = f1(a)*f2(b)*f3(c)*f4(d)*f5(e)*f6(f) + f1(a)*a1*p(mu)
L 1	Id,First,Ainbe,f2(b)*f4(d)=ff2(a,b)
L 2	Id,First,a1*p(mu)=ff2(b)
	*end
 
xx = + f1(a)*ff2(a,b)*f3(c)*f5(e)*f6(f)
 
 + ff2(b)*f1(a) + 0.
 

End run. Time 0 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:26.  Memory: start 001CF344, length 532260.


C Last 4.  Use of generated X/D expressions.
C The file XDexpr.e must have been generated by the previous problem.

	Read XDexpr.e
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:24.  Memory: start 001CF344, length 532260.

 Command line: +3 Last.e XDexpr.e


C Last 3.  Production of X/D expressions. Must use name XDexpr.e for output.
C File XDexpr.e is used by the next problem. Therefore:
C Command line: Schip +3 Last.e XDexpr.e

	XX
 
	X AB4(a,b) =  + 4*a*b^3 + 6*a^2*b^2 + 4*a^3*b + a^4 + b^4
	 
	X AB5(a,b) =  + 5*a*b^4 + 10*a^2*b^3 + 10*a^3*b^2 + 5*a^4*b
	  + a^5 + b^5 
	 
	X AB6(a,b) =  + 6*a*b^5 + 15*a^2*b^4 + 20*a^3*b^3 + 15*a^4*b^2
	  + 6*a^5*b + a^6 + b^6 
	 
	D POW(n,a,b,c) = (  + b + c
	 + a)
	 
	 , (  + 2*b*c + b^2 + c^2
	 + a
	  * ( 2*b + 2*c )
	 + a^2)
	 
	 , (  + 3*b*c^2 + 3*b^2*c + b^3 + c^3
	 + a
	  * ( 6*b*c + 3*b^2 + 3*c^2 )
	 + a^2
	  * ( 3*b + 3*c )
	 + a^3)
	 
	 , (  + 4*b*c^3 + 6*b^2*c^2 + 4*b^3*c + b^4 + c^4
	 + a
	  * ( 12*b*c^2 + 12*b^2*c + 4*b^3 + 4*c^3 )
	 + a^2
	  * ( 12*b*c + 6*b^2 + 6*c^2 )
	 + a^3
	  * ( 4*b + 4*c )
	 + a^4)
	 
	 , (  + 5*b*c^4 + 10*b^2*c^3 + 10*b^3*c^2 + 5*b^4*c + b^5
	  + c^5
	 + a
	  * ( 20*b*c^3 + 30*b^2*c^2 + 20*b^3*c + 5*b^4 + 5*c^4 )
	 + a^2
	  * ( 30*b*c^2 + 30*b^2*c + 10*b^3 + 10*c^3 )
	 + a^3
	  * ( 20*b*c + 10*b^2 + 10*c^2 )
	 + a^4
	  * ( 5*b + 5*c )
	 + a^5) 
	 
	X AB7(a,b) =  + 7*a*b^6 + 21*a^2*b^5 + 35*a^3*b^4 + 35*a^4*b^3
	  + 21*a^5*b^2 + 7*a^6*b + a^7 + b^7 

	End
	A c,d,e
	Z xyz=POW(3,c,d,e)

	*end
 
xyz = 
  + 6*c*d*e + 3*c*d^2 + 3*c*e^2 + 3*c^2*d + 3*c^2*e + c^3
  + 3*d*e^2 + 3*d^2*e + d^3 + e^3 + 0.
 

End run. Time 0 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:27.  Memory: start 001CF344, length 532260.


C Last 5.  Superflags.

	Z xx=3

L 1	Id,Flag,Set,4

C Default is Flag 0.
	C
L 2	Id,Flag,set

	DO II=0,8
L 3	IF Flag,on,0
L 4	Al,Addfa,f0on
	ENDIF
L 5	IF Flag,off,0
L 6	Al,Addfa,f0off
	ENDIF
	ENDDO

	*end
 
xx =  + 3*f0on*f1off*f2off*f3off*f4on*f5off*f6off*f7off*f8off + 0.
 

End run. Time 0 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:28.  Memory: start 001CF344, length 532260.


C Last 6.  Inverting terms.

	A a,b,c,d,e
	F f1,f2,f2_,f3,f4
	I i1,i2
	V p,q
	Z xx = 3*a^3*pDq^-3*i1^7*f1(b,c)
	 +  1/7*b^3*pDq^-3*i1^7*f2(d,e)
	 +  1/13*c^3*pDq^-3*i1^7*f2_(a,b)
L 1	Id,Invert

	*end
 
xx = + f1(b,c)
  * ( 1/3*a^-3*i1^-7*pDq^3 )
 
 + f2(a,b)
  * ( 13*c^-3*i1^-7*pDq^3 )
 
 + f2_(d,e)
  * ( 7*b^-3*i1^-7*pDq^3 ) + 0.
 

End run. Time 0 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:29.  Memory: start 001CF344, length 532260.


C Last 7.  Expression in brackets as function arguments crossing * lines.

	Z xx = f1((8.-2E-27),(-3.),(128),(-128))
> P output
	*yep
 
xx = + f1($1,$2,$3,$4) + 0.
 
	*begin
 
xx = + f1(8,-3,$1,$2) + 0.
 

Begin. Time 0 sec.

C Here the expression as function argument contains a dummy.

	A a,b,c,d,e,f
	Z xx = f1(a,b,c)*f1(d,e,f)
L 1	Id,f1(a~,b~,c~)=ff(a,(9*a))
> P output
	*yep
 
xx = + ff(a,$1)*ff(d,$2) + 0.
 
L 1	Id,ff(a~,b~)=b
	*begin
 
xx =  + 81*a*d + 0.
 

Begin. Time 0 sec.

	F f,g,h,xpow
	A x,y,n,n1,n2
	Z xx = f(x,3,y,2) + f(x,y,2) + f(x,y,3)
L 1	Id,f(x,n~,y,n1~) = g(n+n1-3)*f(x,n-3,y,n1+3)
L 3	Id,f(x,0,y,n~)=f(x,y,n)
L 4	Id,g(n1~)*f(x,y,n2~) = xpow(n1+n2)*f(x,y,n2-2*n1)
L 6	Id,f(x~,y~,2)=0
L 7	Id,f(x~,y~,3)=h(x,y)
	*begin
 
xx = + h(x,y)
 
 + xpow(7)*f(x,y,1) + 0.
 

Begin. Time 0 sec.

	Common yy
	F f1,f2,f3,f4
	A a1,a2,a3,a4
	I i1,i2,i3,i4
	Z yy = f4(a,b)
	Z xx = f3(4,5,(1/3))
L 2	Id,f3(a~,b~,c~)=f2(-(2),-(2*aa1),(a+2*b-c))+aa1
L 2	Al,f4(a~,b~)=f2(a,(1.23),b,c)+aa1
> P output
	*yep
 
yy =  + aa1
 
 + f2(a,$1,b,c)
 
xx =  + aa1
 
 + f2(-$2,-$3,$4) + 0.
 
	Keep xx
	*next
 
yy =  + aa1
 
 + f2(a,$1,b,c)
 
xx =  + aa1
 
 + f2(2,$2,$3) + 0.
 

	Z yz=xx
L 2	Id,f2(a~,b~,c~)=a*f3

	*begin
 
yz =  + aa1
 
 + 2*f3 + 0.
 

Begin. Time 1 sec.
	Z yz=yy
L 2	Id,f2(a,a1~,b,c)=a1*f3(a,b)

	*end
 
yz =  + aa1
 
 + 123/100*f3(a,b) + 0.
 

End run. Time 1 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:31.  Memory: start 001CF344, length 532260.


C Last 8.  Chaining functions on the basis of indices.

	I a,b,c,d,a1,b1,c1
	A x1,x2,x3
	F Tr,St,ff
	Z xx=ff(x1)*f1(a,b,A)*f1(b,c,C,D)*ff(x2)*f1(d,a,E)*ff(x3)
	 *f2(c1,b1)*f2(b1,a1)*ff(x4)
L 1	Id,Left,Chain,"S,Tr,St,a,b,c,d,a1,b1,c1
	*begin
 
xx = + St(c1,f2,f2,a1)*St(d,f1,E,f1,A,f1,C,D,c)*ff(x1)*ff(x2)*ff(x3)
  *ff(x4) + 0.
 

Begin. Time 0 sec.

	I s1,s2,s3,s4
	F Tr,St
	Z xx =f1(s1,s2,A)
	 *f1(s3,s4,C)
	 *f1(s2,s3,B)
	Z yy =f1(s1,s2,A)
	 *f1(s3,s1,C)
	 *f1(s2,s3,B)
L 1	Id,Chain,"S,Tr,St,s1,s2,s3,s4
	*end
 
xx = + St(s1,f1,A,f1,B,f1,C,s4)
 
yy = + Tr(f1,A,f1,B,f1,C) + 0.
 

End run. Time 0 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:32.  Memory: start 001CF344, length 532260.


C Last 9.  Reversing order of selected function arguments.
C The order of the arguments ** not ** mentioned is reversed.

	F f1
	A a,b,c,d,e,f
	Z xx=f1(a,b,c,d,e)*f2(a,b,c,d,e)*f1(a,b,c,d,e)
L 1	Id,Revert,f1,2,3,4,f2,1,4

	*end
 
xx = + f1(e,b,c,d,a)*f2(a,e,c,d,b)*f1(e,b,c,d,a) + 0.
 

End run. Time 0 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:33.  Memory: start 001CF344, length 532260.


C Last 10. Options Commu command.

	F f0,f3,f1,f2,f4
	Z xx=f0(a)*f1(a,b,c)*f2(a1,a2)*f3*f4(b1,b2)
L 1	Id,Commu,f1,f3
C xx = + f0(a)*f2(a1,a2)*f4(b1,b2)*f3*f1(a,b,c) + 0.
	*begin
 
xx = + f0(a)*f2(a1,a2)*f4(b1,b2)*f3*f1(a,b,c) + 0.
 

Begin. Time 0 sec.

	F f0,f3,f1,f2,f4
	Z xx=f0(a)*f1(a,b,c)*f2(a1,a2)*f3*f4(b1,b2)
L 1	Id,First,Commu,f1,f3
C xx = + f0(a)*f3*f1(a,b,c)*f2(a1,a2)*f4(b1,b2) + 0.
	*begin
 
xx = + f0(a)*f3*f1(a,b,c)*f2(a1,a2)*f4(b1,b2) + 0.
 

Begin. Time 0 sec.

	F f0,f3,f1,f2,f4
	Z xx=f0(a)*f1(a,b,c)*f2(a1,a2)*f3*f4(b1,b2)
L 1	Id,Last,Commu,f1,f3
C xx = + f0(a)*f2(a1,a2)*f3*f1(a,b,c)*f4(b1,b2) + 0.
	*begin
 
xx = + f0(a)*f2(a1,a2)*f3*f1(a,b,c)*f4(b1,b2) + 0.
 

Begin. Time 0 sec.

	F f0,f3,f1,f2,f4
	Z xx=f0(a)*f1(a,b,c)*f2(a1,a2)*f3*f4(b1,b2)
L 1	Id,Left,Commu,f1,f3
C xx = + f3*f1(a,b,c)*f0(a)*f2(a1,a2)*f4(b1,b2) + 0.
	*begin
 
xx = + f3*f1(a,b,c)*f0(a)*f2(a1,a2)*f4(b1,b2) + 0.
 

Begin. Time 0 sec.

	F f0,f3,f1,f2,f4
	Z xx=f0(a)*f1(a,b,c)*f2(a1,a2)*f3*f4(b1,b2)
L 1	Id,Right,Commu,f1,f3
C xx = + f0(a)*f2(a1,a2)*f4(b1,b2)*f3*f1(a,b,c) + 0.
	*begin
 
xx = + f0(a)*f2(a1,a2)*f4(b1,b2)*f3*f1(a,b,c) + 0.
 

Begin. Time 0 sec.

	F f0,f3,f1,f2,f4
	Z xx=f0(a)*f1(a,b,c)*f2(a1,a2)*f3*f4(b1,b2)
L 1	Id,Commu,"B,f1,f3
C xx = + f3*f1(a,b,c)*f0(a)*f2(a1,a2)*f4(b1,b2) + 0.
	*begin
 
xx = + f3*f1(a,b,c)*f0(a)*f2(a1,a2)*f4(b1,b2) + 0.
 

Begin. Time 0 sec.

	F f0,f3,f1,f2,f4
	Z xx=f0(a)*f1(a,b,c)*f2(a1,a2)*f3*f4(b1,b2)
L 1	Id,Commu,"N,f1,f3
C xx = + f0(a)*f2(a1,a2)*f4(b1,b2)*f1(a,b,c)*f3 + 0.
	*begin
 
xx = + f0(a)*f2(a1,a2)*f4(b1,b2)*f1(a,b,c)*f3 + 0.
 

Begin. Time 0 sec.

	F f0,f3,f1,f2,f4
	Z xx=f0(a)*f1(a,b,c)*f2(a1,a2)*f3*f4(b1,b2)
L 1	Id,Commu,"N,"B,f1,f3
C xx = + f1(a,b,c)*f3*f0(a)*f2(a1,a2)*f4(b1,b2) + 0.
	*end
 
xx = + f1(a,b,c)*f3*f0(a)*f2(a1,a2)*f4(b1,b2) + 0.
 

End run. Time 0 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:34.  Memory: start 001CF344, length 532260.


C Last 11. Options Order command.

	I s1,s2,s3,s4
	*fix

Begin. Time 0 sec.

	Z xx =f1(s1,s2,A)
	 *f1(s3,s4,C)
	 *f1(s2,s3,B)
L 1	Id,Order,"C,f1
	*begin
 
xx = + f1(s1,A,B,C) + 0.
 

Begin. Time 0 sec.

	Z xx =
	 f1(s1,s2,A)
	 *f1(s3,s4,C)
	 *f1(s2,s3,B)
	 *f2(s1,s2,A)
	 *f2(s3,s4,C)
	 *f2(s2,s3,B)
L 1	Id,Order,"C,"L,f1
	*begin
 
xx = + f1(s1,s4,A,B,C)*f2(s1,s2,A)*f2(s3,s4,C)*f2(s2,s3,B) + 0.
 

Begin. Time 1 sec.

	Z xx =
	 f1(s1,s2,A)
	 *f1(s3,s4,C)
	 *f1(s2,s3,B)
	 *f2(s1,s2,A)
	 *f2(s3,s4,C)
	 *f2(s2,s3,B)
L 1	Id,Order,20,"C,"L,f1,f2
	*begin
 
xx = + f1(20,21,A,B,C)*f2(22,23,A,B,C) + 0.
 

Begin. Time 1 sec.

	Z xx =
	 f1(s1,s2,A)
	 *f1(s3,s4,C)
	 *f1(s2,s3,B)
	 *f2(s1,s2,A)
	 *f2(s3,s4,C)
	 *f2(s2,s3,B)
L 1	Id,Order,20,"C,f1,f2
	*end
 
xx = + f1(20,A,B,C)*f2(21,A,B,C) + 0.
 

End run. Time 1 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:36.  Memory: start 001CF344, length 532260.


C Last 12. Groups for cyclic command.

	A m1,m2,m3
	I i1,i2,i3
	F f,f1
	Z xx= f(m2,i2,m1,i1,m3,i3)
L 1	Id,Cyclic,f,1,2,3,4,5,6
	*begin
 
xx = + f(i1,m3,i3,m2,i2,m1) + 0.
 

Begin. Time 0 sec.
	A m1,m2,m3
	I i1,i2,i3
	F f,f1
	Z xx= f(m2,i2,m1,i1,m3,i3)
L 1	Id,Cyclic,f:1,2:3,4:5,6
	*begin
 
xx = + f(m1,i1,m3,i3,m2,i2) + 0.
 

Begin. Time 0 sec.
	A m1,m2,m3
	I i1,i2,i3
	Z xx=f(m3,i3,m1,i1,m2,i2)
L 1	Id,Symme,f:1,2:3,4:5,6:
	*end
 
xx = + f(m1,i1,m2,i2,m3,i3) + 0.
 

End run. Time 0 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:37.  Memory: start 001CF344, length 532260.


C Last 13. Name lists in Cyclic, Symme etc. commands.

	A m1,m2,m3
	F f,f1
	Z xx= f(m2,2,-m1,1,m3,3)
L 1	Id,Cyclic,"L,-m1,m2,f1,"L,f,1,2,3,4,5,6
	*begin
 
xx = + f(-m1,1,m3,3,m2,2) + 0.
 

Begin. Time 0 sec.

	A m1,m2,m3
	Z xx=f(m3,3,m1,1,m2,2)
L 1	Id,Symme,f:1,2:3,4:5,6:
	*end
 
xx = + f(m1,1,m2,2,m3,3) + 0.
 

End run. Time 0 sec.
C       Schoonschip, 68000 version of Jan 1, 1994. Public version.
 Date: Wed Jan  5 1994 22:18:38.  Memory: start 001CF344, length 532260.


C Last 14. Use of rational numbers as function arguments.

	A a,c,d,e
	Z xx=f1(a,-17,85,b,(21),(-3.14))*f3(9,2)
L 2	Id,f3(d~,e~)=f2(b,65,13,b,c,(3*d+e/3),(-511))
	*yep
L 1	Id,Rnum,f1,2,6,f2
	*end
 
xx = + f1(a,-1,5,b,21,-22,7)*f2(b,5,1,b,c,83,3,-1,0) + 0.
 

End run. Time 0 sec.
