public static function solve(callable $function, $p₀, $p₁, $tol)
{
// Validate input arguments
self::validate($p₀, $p₁, $tol);
do {
$q₀ = $function($p₀);
$q₁ = $function($p₁);
$slope = ($q₁ - $q₀) / ($p₁ - $p₀);
$p = $p₁ - $q₁ / $slope;
$dif = abs($p - $p₁);
$p₀ = $p₁;
$p₁ = $p;
} while ($dif > $tol);
return $p;
}