/* THIS IS THE INTEGRATION PART OF INTSCE.  IT CAN BE ALTERED,
TRANSLATED, AND INCORPORATED IN INTSCE LISP WHICH CONTAINS
THE TOP-LEVEL ROUTINE THAT DOES THE PATTERN MATCHING. */

SCEINT(M,N):=BLOCK([DEN,NUM],MODEDECLARE([M,N],INTEGER),
  DEN:D^2+B^2*(M+N)^2,
  NUM: IF M=0 THEN (IF N=0 THEN RETURN(RET) ELSE
	 	    IF N=1 THEN (D*CO+B*SI)*EX ELSE
			(D*CO+N*B*SI)*EX*CO^(N-1)+N*(N-1)*B^2*SCEINT(0,N-2)) ELSE
       IF M=1 THEN (IF N=0 THEN (D*SI-B*CO)*EX ELSE
	 	    IF N=1 THEN (D*SI*CO+B*SI^2-B*CO^2)*EX ELSE
		     (D*SI*CO+N*B*SI^2-B*CO^2)*CO^(N-1)*EX+
			 N*(N-1)*B^2*SCEINT(1,N-2)) ELSE
  
		   (IF N=0 THEN (D*SI-M*B*CO)*EX*SI^(M-1)+M*(M-1)*B^2*SCEINT(M-2,0) ELSE
		    IF N=1 THEN (D*CO*SI+B*SI^2-M*B*CO^2)*SI^(M-1)*EX+M*(M-1)*B^2*SCEINT(M-2,1) ELSE
		     (D*SI*CO+N*B*SI^2-M*B*CO^2)*SI^(M-1)*CO^(N-1)*EX+
			N*(N-1)*B^2*SCEINT(M,N-2)+M*(M-1)*B^2*SCEINT(M-2,N)),
  RETURN(NUM/DEN))$

