Performs one-dimensional root-finding using the ITP algorithm of Oliveira and Takahashi (2021). This function is equivalent to itp but calculations are performed entirely using C++, and the arguments differ slightly: itp_c has a named required argument pars rather than ... and it does not have the arguments interval, f.a or f.b.

itp_c(f, pars, a, b, epsilon = 1e-10, k1 = -1, k2 = 2, n0 = 1)

## Arguments

f

An external pointer to a C++ function that evaluates the function $$f$$.

pars

A list of additional arguments to the function. This may be an empty list.

a, b

Numeric scalars. Lower (a) and upper b limits of the interval to be searched for a root.

epsilon

A positive numeric scalar. The desired accuracy of the root. The algorithm continues until the width of the bracketing interval for the root is less than or equal to 2 * epsilon.

k1, k2, n0

Numeric scalars. The values of the tuning parameters $$\kappa$$1, $$\kappa$$2, $$n$$0. See the Details section of itp.

The default value for k1 in itp_c is set as the inadmissible value of -1 (in reality $$\kappa$$1 must be positive) as a device to set the same default value for k1 as itp, that is, k1 = 0.2 / (b - a). If the input value of k1 is less than or equal to 0 then, inside itp_c, k1 = 0.2 / (b - a) is set.

## Value

An object (a list) of class "itp" with the same structure as detailed in the Value section of itp, except that the attribute f_name is empty (equal to "").

## Details

For details see itp.

print.itp and plot.itp for print and plot methods for objects of class "itp" returned from itp_c or itp.

## Examples

wiki_ptr <- xptr_create("wiki")
wres <- itp_c(f = wiki_ptr, pars = list(), a = 1, b = 2, epsilon = 0.0005)
wres
#> function:
#>       root     f(root)  iterations
#>      1.521   0.0001315           4
plot(wres, main = "Wiki") 