code 34439;
    procedure JACOBNBNDF(N, LW, RW, X, F, JAC, I, DI, FUNCT);
    value N, LW, RW; integer I, N, LW, RW; real DI;
    array X, F, JAC; procedure FUNCT;
    begin integer J, K, L, U, T, B; real AID, STEPI;
        L:= 1; U:= LW + 1; T:= RW + 1; B:= LW + RW;
        for I:= 1 step 1 until N do 
        begin array F1[L:U];
            STEPI:= DI; AID:= X[I]; X[I]:= AID + STEPI;
            FUNCT(N, L, U, X, F1); X[I]:= AID;
            K:= I + (if I <= T then 0 else I - T) * B;
            for J:= L step 1 until U do 
            begin JAC[K]:= (F1[J] - F[J]) / STEPI; K:=K + B end;
            if I >= T then L:= L + 1;
            if U < N then U:= U + 1
        end 
    end JACOBNBNDF;
        eop