home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / TURBOPAS / PAS_ENG.ZIP / TSTGAM.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1985-07-19  |  775 b   |  47 lines

  1.  
  2. program tstgam;  { -> 340 }
  3. { test the gamma function }
  4.  
  5. var x : real;
  6.  
  7.  
  8. function gamma(x: real): real;
  9. const pi = 3.1415926;
  10.  
  11. var i,j : integer;
  12.  y,gam : real;
  13.  
  14. begin  { gamma function }
  15.   if x>=0.0 then
  16.     begin
  17.       y:=x+2.0;
  18.       gam:=sqrt(2*pi/y)*exp(y*ln(y)+(1-1/(30*y*y))/(12*y)-y);
  19.       gamma:=gam/(x*(x+1))
  20.     end
  21.   else  { x<0 }
  22.     begin
  23.       j:=0;
  24.       y:=x;
  25.       repeat
  26.  j:=j+1;
  27.  y:=y+1.0
  28.       until y>0.0;
  29.       gam:=gamma(y);  { recursive call }
  30.       for i:=0 to j-1 do
  31.  gam:=gam/(x+i);
  32.       gamma:=gam
  33.     end { x<0 }
  34. end;  { gamma function }
  35.  
  36. begin
  37.   clrscr;
  38.   writeln;
  39.   repeat
  40.     repeat
  41.       write('X: ');
  42.       read(x)
  43.     until x<>0.0;
  44.     writeln(' Gamma is ',gamma(x))
  45.   until x<-22.0;
  46. end.
  47.