10 PRINT "INPUT X. TO END PROGRAM INPUT 0."
20 INPUT X 
30 IF X=0 THEN 999 
40 IF INT(X)/ABS(X)<>-1 THEN 70 
50 PRINT "GAMMA(X) UNDEFINED" 
60 GOTO 910 
70 IF X<2 THEN 200 
100 P=INT(X)-1  
110 X=X-P 
120 GOSUB 500
130 GOSUB 600
140 X=S*T 
150 GOTO 900  
200 IF X<1 THEN 300
210 GOSUB 600
220 X=T
230 GOTO 900  
300 IF X<0 THEN 400
310 Y=X
320 X=X+1
330 GOSUB 600
340 X=T/Y 
350 GOTO 900  
400 P=ABS(INT(X))+1
410 GOSUB 500
420 X=X+P 
430 Y=X
440 X=X+1
450 GOSUB 600
460 X=T/Y/S
470 GOTO 900  
500 S=1 
510 FOR I=0 TO P-1  
520 S=S*(X+I)
530 NEXT I  
540 RETURN 
600 T,W=1
610 X=X-1
620 FOR I=1 TO 8 
630 W=W*X 
640 READ B  
650 T=T+W*B
660 NEXT I  
670 RETURN 
680 DATA -.57719165,.98820589,-.89705694 
690 DATA .91820686,-.75670408,.48219939
700 DATA -.19352782,.03586834
900 PRINT "GAMMA(X)=";X
910 PRINT 
920 PRINT "X";
930 RESTORE 
940 GOTO 20 
999 END 

