home *** CD-ROM | disk | FTP | other *** search
- {***************************************************************************}
- {* UTIL.INC *}
- {* diverse Hilfsfunktionen *}
- {***************************************************************************}
- FUNCTION power (basis,ex : REAL) : REAL;
- { nur fuer basis >=0 !!!! }
- BEGIN
- IF basis = 0 THEN
- IF ex = 0 THEN power := 1 ELSE power := 0
- ELSE
- IF ex = 0 THEN power := 1
- ELSE
- IF basis > 0 THEN
- IF ex > 0 THEN power := Exp(ex*Ln(basis))
- ELSE power := 1/Exp(ex*Ln(basis))
- END;
- {--------------------------------------------------------------------------}
- FUNCTION fac (x : REAL ) : REAL;
-
- VAR sum : REAL;
- i,j : INTEGER;
-
- BEGIN
- IF Trunc (x) = 0 THEN fac := 1
- ELSE
- BEGIN
- sum := 1;
- FOR I := 1 TO Trunc(x) DO sum := sum*I;
- fac := sum
- END
- END;
- {--------------------------------------------------------------------------}
- FUNCTION gamma (x : REAL) : REAL;
-
- VAR I : INTEGER; dummy : REAL;
-
- BEGIN
- dummy := Frac(x);
- IF x = 0.5 THEN gamma := Sqrt(Pi)
- ELSE IF (x > 1.0) AND (dummy = 0.0) THEN gamma := fac(Trunc(x-1))
- ELSE IF x = 1.0 THEN gamma := 1.0
- ELSE
- BEGIN
- dummy := 0.5;
- FOR I := 1 TO Trunc(x-1) DO dummy := dummy*(I+0.5);
- gamma := dummy*Sqrt(Pi);
- END;
- END;
- {--------------------------------------------------------------------------}
- FUNCTION binkoeff (a,x : REAL) : REAL;
-
- VAR I, b, z : INTEGER;
- dummy1,dummy2 : REAL;
-
- BEGIN
- dummy1 := 1; dummy2 := 1;
- IF x > a/2 THEN
- BEGIN
- FOR I := Trunc(x)+1 TO Trunc(a) DO dummy1 := dummy1*I;
- FOR I := 1 TO Trunc(a)-Trunc(x) DO dummy2 := dummy2*I;
- END
- ELSE
- BEGIN
- FOR I := Trunc(a)-Trunc(x)+1 TO Trunc(a) DO dummy1 := dummy1*I;
- FOR I := 1 TO Trunc(x) DO dummy2 := dummy2*I;
- END;
- binkoeff := dummy1/dummy2;
- END;
- {--------------------------------------------------------------------------}
- { Ende UTIL.INC }