File: intsce.mac

package info (click to toggle)
maxima 5.9.1-9
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 32,272 kB
  • ctags: 14,123
  • sloc: lisp: 145,126; fortran: 14,031; tcl: 10,052; sh: 3,313; perl: 1,766; makefile: 1,748; ansic: 471; awk: 7
file content (20 lines) | stat: -rw-r--r-- 894 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 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))$