Algorithms for Minimization Without Derivatives

BRENT, a C library which contains algorithms for finding zeros or minima of a scalar function of a scalar variable, by Richard Brent.

The methods do not require the use of derivatives, and do not assume that the function is differentiable.


The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.


BRENT is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version and a Python version.

Related Data and Programs:

ASA047, a C library which minimizes a scalar function of several variables using the Nelder-Mead algorithm.

BISECTION_RC, a C library which seeks a solution to the equation F(X)=0 using bisection within a user-supplied change of sign interval [A,B]. The procedure is written using reverse communication (RC).


COMPASS_SEARCH, a C library which seeks the minimizer of a scalar function of several variables using compass search, a direct search algorithm that does not use derivatives.

TEST_ZERO, a C library which implements test problems for the solution of a single nonlinear equation in one variable.

TOMS178, a C library which optimizes a scalar functional of multiple variables using the Hooke-Jeeves method.

ZERO_RC, a C library which seeks solutions of a scalar nonlinear equation f(x) = 0, or a system of nonlinear equations, using reverse communication.


Original FORTRAN77 version by Richard Brent; C version by John Burkardt.


  1. Richard Brent,
    Algorithms for Minimization without Derivatives,
    Dover, 2002,
    ISBN: 0-486-41998-3,
    LC: QA402.5.B74.

Source Code:

List of Routines:

Last revised on 22 January 2019.