code 41522;
real procedure FISHERINV(PROB, DF1, DF2);
    value PROB, DF1, DF2; real PROB, DF1, DF2;
begin
    if PROB < 10-10 ∨ PROB > 1 - 10-10
    then STATAL3 ERROR(“FISHERINV”, 1, PROB)
    else if DF1 ≤ 0
    then STATAL3 ERROR(“FISHERINV”, 2, DF1)
    else if DF2 ≤ 0
    then STATAL3 ERROR(“FISHERINV”, 3, DF2)
    else
    begin real X;
          X:= if PROB ≤ .5 then .5 else
              if DF2 ≤ 4 then 1 else
              DF2 / (DF2 - 2) + PHINV(PROB) ×
              SQRT(2 × DF2 × DF2 × (DF1 + DF2 - 2) /
                   (DF1 × (DF2 - 4) × (DF2- 2) × (DF2 - 2)));
          FISHERINV:=
              INVERSE(X, FISHER(X, DF1, DF2), PROB, 10-10)
    end
end FISHERINV;
eop