code 41534;
real procedure NCSTUDENTINVC(PROB, DF, DELTA);
value PROB, DF, DELTA; real PROB, DF, DELTA;
begin real X, Y, TOL;
procedure CORNISH FISHER EXPANSION;
begin real UA, UA2, UA3, UA4, UA5;
integer DF4, DFDF;
UA:=PHINV(PROB);
UA2:=UA×UA; UA3:=UA2×UA; UA4:=UA2×UA2;
UA5:=UA4×UA; DF4:=DF×4; DFDF:=DF×DF;
X:=-UA/DFDF/32;
X:=X×DELTA - (UA2 - 1)/DFDF/24;
X:=X×DELTA + UA/DF4 + (UA3 + UA×4)/DFDF/16;
X:=X×DELTA + 1 + (UA2×2 + 1)/DF4 +
(UA4×4 + UA2×12 + 1)/DFDF/32;
X:=X×DELTA + UA + (UA3 + UA)/DF4 + (UA5×5 + UA3×16
+ UA×3)/DFDF/96;
end INITIAL APPROXIMATION BY CORNISH-FISHER METHOD;
TOL:= 10-7;
if PROB < TOL ∨ PROB > 1 - TOL then
STATAL3 ERROR(“NCSTUDENTINV”, 1, PROB);
if DF < 1 ∨ ENTIER(DF) ≠ DF then
STATAL3 ERROR(“NCSTUDENTINV”, 2, DF);
CORNISH FISHER EXPANSION;
NCSTUDENTINV:=
INVERSE(X, NCSTUDENT(X, DF, DELTA), PROB, TOL)
end NCSTUDENTINV;
eop