code 34435;
    real procedure MININDER(X, Y, FX, DFX, TOLX);
    real X, Y, FX, DFX, TOLX;
    begin comment THE FUNCTION IS APPROXIMATED BY A CUBIC AS
        GIVEN BY DAVIDON, 1958, THE STRUCTURE IS SIMILAR TO THE
        STRUCTURE OF THE PROGRAM GIVEN BY BRENT, 1973, THIS IS
        A REVISION OF 760407;

        integer SGN;
        real A, B, C, FA, FB, FU, DFA, DFB, DFU, E, D, TOL, BA,
        Z, P, Q, S;

        if X <= Y then 
        begin A:= X; FA:= FX; DFA:= DFX;
            B:= X:= Y; FB:= FX; DFB:= DFX
        end else 
        begin B:= X; FB:= FX; DFB:= DFX;
            A:= X:= Y; FA:= FX; DFA:= DFX
        end;
        C:= (3 - SQRT(5)) / 2; D:= B - A; E:= D * 2; Z:= E * 2;
    LOOP: BA:= B - A; TOL:= TOLX; if BA >= TOL * 3 then 
        begin if ABS(DFA) <= ABS(DFB) then 
            begin X:=A; SGN:= 1 end else 
            begin X:= B; SGN:= -1 end;
            if DFA <= 0 and DFB >= 0 then 
            begin Z:= (FA - FB) * 3 / BA + DFA + DFB;
                S:= SQRT(Z ** 2 - DFA * DFB);
                P:= if SGN = 1 then DFA - S - Z else 
                DFB + S - Z; P:= P * BA;
                Q:= DFB - DFA + S * 2; Z:= E; E:= D;
                D:= if ABS(P) <= ABS(Q) * TOL then TOL * SGN
                else -P / Q
            end else D:= BA;
            if ABS(D) >= ABS(Z * 0.5) or ABS(D) > BA * 0.5 then 
            begin E:= BA; D:= C * BA * SGN end;
            X:= X + D; FU:= FX; DFU:= DFX;
            if DFU >= 0 or (FU >= FA and DFA <= 0) then 
            begin B:= X; FB:= FU; DFB:= DFU end else 
            begin A:= X; FA:= FU; DFA:= DFU end;
            goto LOOP
        end; if FA <= FB then 
        begin X:= A; Y:= B; MININDER:= FA end else 
        begin X:= B; Y:= A; MININDER:= FB end 
    end MININDER;
        eop