home *** CD-ROM | disk | FTP | other *** search
- (*--------------------------------------------------------------------------*)
- (* Finv -- Inverse Central F Distribution *)
- (*--------------------------------------------------------------------------*)
-
- FUNCTION Finv( Alpha, Dfn, Dfe: REAL ) : REAL;
-
- (*--------------------------------------------------------------------------*)
- (* *)
- (* Function: Finv *)
- (* *)
- (* Purpose: Calculates central inverse F *)
- (* *)
- (* Calling Sequence: *)
- (* *)
- (* Fval := Finv( Alpha, Dfn, Dfe : REAL ) : REAL; *)
- (* *)
- (* Alpha --- Probability value *)
- (* Dfn --- Numerator Df *)
- (* Dfe --- Denominator Df *)
- (* *)
- (* Fval --- returned F-value corresponding to 'Alpha'. *)
- (* *)
- (* Calls: *)
- (* *)
- (* BetaInv (Inverse Beta Distribution) *)
- (* *)
- (* Remarks: *)
- (* *)
- (* Any error results in '-1.0' as returned F value. *)
- (* *)
- (*--------------------------------------------------------------------------*)
-
- CONST
- MaxIter = 100;
- Dprec = 10;
-
- VAR
- Fin: REAL;
- Iter: INTEGER;
- Cprec: REAL;
- Ierr: INTEGER;
-
- BEGIN (* Finv *)
-
- Fin := -1.0;
-
- IF( ( Dfn > 0.0 ) AND ( Dfe > 0.0 ) ) THEN
-
- IF( ( Alpha >= 0.0 ) AND ( Alpha <= 1.0 ) ) THEN
-
- BEGIN
-
- Fin := BetaInv( 1.0 - Alpha, Dfn/2.0, Dfe/2.0, MaxIter, Dprec,
- Iter, Cprec, Ierr );
-
- IF( ( Fin >= 0.0 ) AND ( Fin < 1.0 ) AND ( Ierr = 0 ) ) THEN
- Fin := Fin * Dfe / ( Dfn * ( 1.0 - Fin ) );
-
- END;
-
- Finv := Fin;
-
- END (* Finv *);