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