NAME
    root - root of a number

SYNOPSIS
    root(x, n, [, eps])

TYPES
    x		number
    n		positive integer
    eps		nonzero real, defaults to epsilon()

    return	real number

DESCRIPTION
    For real x and positive integer n, n being odd if x is negative,
    root(x,n,eps) returns a multiple of eps differing from the
    real n-th root of x (nonnegative if x is positive) by less than
    0.75 eps, usually by less than 0.5 eps.  If the n-th root of
    x is a multiple of eps, it will be returned exactly.

    For complex x and positive integer n, or negative x with positive even
    n, root(x, n, eps) returns a real or complex numbers whose real
    and imaginary parts are multiples of eps differing from the real
    and imaginary parts of the principal n-th root of x by less than
    0.75 eps, usually by less than 0.5 eps.

    For negative x and odd n, the principal n-th root of x may be
    obtained by using power(x, 1/n, eps).

EXAMPLE
    > print root(7, 4, 1e-5), root(7, 4, 1e-10), root(7, 4, 1e-15)
    1.62658 1.6265765617 1.626576561697786

    > print root(1+3i, 3, 1e-5), root(1 + 3i, 3, 1e-10)
    1.34241+.59361i 1.3424077452+.5936127825i

    > print root(-8, 3, 1e-5), root(-8, 34, 1e-5)
    -2 ~1.05853505050032399594+~.09807874962631613016i

    > print root(1i, 100, 1e-20)
    .99987663248166059864+.01570731731182067575i

LIMITS
    n >= 0
    eps > 0

LIBRARY
    void rootvalue(VALUE *x, VALUE *n, VALUE *eps, VALUE *result)
    NUMBER *qroot(NUMBER *x, NUMBER *n, NUMBER *eps)
    COMPLEX *qroot(COMPLEX *x, NUMBER *n, NUMBER *eps)

SEE ALSO
    power
