home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 09 / statis / util.inc < prev    next >
Encoding:
Text File  |  1987-07-07  |  2.1 KB  |  71 lines

  1. {***************************************************************************}
  2. {*                              UTIL.INC                                   *}
  3. {*                      diverse  Hilfsfunktionen                           *}
  4. {***************************************************************************}
  5. FUNCTION power (basis,ex : REAL) : REAL;
  6.                                                   { nur fuer basis >=0 !!!! }
  7. BEGIN
  8.  IF basis = 0 THEN
  9.    IF ex = 0 THEN power := 1 ELSE power := 0
  10.  ELSE
  11.    IF ex = 0 THEN power := 1
  12.    ELSE
  13.      IF basis > 0 THEN
  14.        IF ex > 0 THEN power := Exp(ex*Ln(basis))
  15.        ELSE power := 1/Exp(ex*Ln(basis))
  16. END;
  17. {--------------------------------------------------------------------------}
  18. FUNCTION fac (x : REAL ) : REAL;
  19.  
  20. VAR sum : REAL;
  21.     i,j : INTEGER;
  22.  
  23. BEGIN
  24.   IF Trunc (x) = 0 THEN fac := 1
  25.   ELSE
  26.     BEGIN
  27.       sum := 1;
  28.       FOR I := 1 TO Trunc(x) DO sum := sum*I;
  29.       fac := sum
  30.     END
  31. END;
  32. {--------------------------------------------------------------------------}
  33. FUNCTION gamma (x : REAL) : REAL;
  34.  
  35. VAR I : INTEGER;  dummy : REAL;
  36.  
  37. BEGIN
  38.   dummy := Frac(x);
  39.   IF x = 0.5 THEN gamma := Sqrt(Pi)
  40.   ELSE IF (x > 1.0) AND (dummy = 0.0) THEN gamma := fac(Trunc(x-1))
  41.   ELSE IF x = 1.0 THEN gamma := 1.0
  42.   ELSE
  43.   BEGIN
  44.     dummy := 0.5;
  45.     FOR I := 1 TO Trunc(x-1) DO dummy := dummy*(I+0.5);
  46.     gamma := dummy*Sqrt(Pi);
  47.   END;
  48. END;
  49. {--------------------------------------------------------------------------}
  50. FUNCTION binkoeff (a,x : REAL) : REAL;
  51.  
  52. VAR I, b, z       : INTEGER;
  53.     dummy1,dummy2 : REAL;
  54.  
  55. BEGIN
  56.   dummy1 := 1; dummy2 := 1;
  57.   IF x > a/2 THEN
  58.     BEGIN
  59.       FOR I := Trunc(x)+1 TO Trunc(a) DO dummy1 := dummy1*I;
  60.       FOR I := 1 TO Trunc(a)-Trunc(x) DO dummy2 := dummy2*I;
  61.     END
  62.   ELSE
  63.     BEGIN
  64.       FOR I := Trunc(a)-Trunc(x)+1 TO Trunc(a) DO dummy1 := dummy1*I;
  65.       FOR I := 1 TO Trunc(x) DO dummy2 := dummy2*I;
  66.     END;
  67.   binkoeff := dummy1/dummy2;
  68. END;
  69. {--------------------------------------------------------------------------}
  70. {                            Ende UTIL.INC                                 }
  71.