Jeśli funkcja dobrze się zachowuje, wtedy metoda Brenta postępuje za pomocą odwrotnie kwadratowej bądź liniowej interpolacji, co będzie powodować zbieżność ponadliniową. Co więcej, metoda Brenta używa odwrotnej interpolacji kwadratowej zamiast liniowej interpolacji (która jest użyta w metodzie siecznych). Jeśli i będą różne, to wydajność zostanie nieznacznie zwiększona. W konsekwencji następuje zmiana warunku do zaakceptowania s (wartość proponowana zarówno przez liniową interpolację, jak i odwrotną interpolację kwadratową): s powinno leżeć pomiędzy i

Algorytm Według oryginalnego programu Brenta w AlgoluAn algorithm with guaranteed convergence for finding a zero a function R.P. Brent. z poprawkami.

Brent(a, b, t) //t = zadana tolerancja, która będzie powiększana o błąd maszynowy

wylicz fa = f(a); wylicz fb = f(b); c = a; fc = fa; d = e = b - a; while (true)

if (|fc| < |fb|)

SWAP(b,c); SWAP(fb,fc);

tol = 2 * delta(b) + t; m = 0.5*(c - b); if (|m| > tol && fb != 0)

if (|e| < tol || |fa| <= |fb|) d = e = m; //bisekcja else

s = fb / fa; if (a == c) { // metoda siecznych p = 2 * m * s; q = 1 - s;

else { // odwrotna interpolacja kwadratowa q = fa / fc; r = fb / fc; p = s*(2 * m*q*(q - r) - (b - a)*(r - 1)); q = (q - 1)*(r - 1)*(s - 1);