All those functions, except explicitly stated, return zero for an exact return value, a positive value for a return value larger than the exact result, and a negative value otherwise.
Important note: in some domains, computing special functions (either with correct or incorrect rounding) is expensive, even for small precision, for example the trigonometric and Bessel functions for large argument.
Set rop to the natural logarithm of op, log2(op) or log10(op), respectively, rounded in the direction rnd. Return −Inf if op is −0 (i.e. the sign of the zero has no influence on the result).
Set rop to the exponential of op, to 2 power of op or to 10 power of op, respectively, rounded in the direction rnd.
Set rop to the cosine of op, sine of op, tangent of op, rounded in the direction rnd.
Set rop to the secant of op, cosecant of op, cotangent of op, rounded in the direction rnd.
Set simultaneously sop to the sine of op and cop to the cosine of op, rounded in the direction rnd with the corresponding precisions of sop and cop, which must be different variables. Return 0 iff both results are exact.
Set rop to the arc-cosine, arc-sine or arc-tangent of op, rounded in the direction rnd. Note that since
acos(-1)
returns the floating-point number closest to Pi according to the given rounding mode, this number might not be in the output range 0 <= rop < \pi of the arc-cosine function; still, the result lies in the image of the output range by the rounding function. The same holds forasin(-1)
,asin(1)
,atan(-Inf)
,atan(+Inf)
.
Set rop to the arc-tangent2 of y and x, rounded in the direction rnd: if
x > 0
,atan2(y, x) = atan (y/x)
; ifx < 0
,atan2(y, x) = sign(y)*(Pi - atan (abs(y/x)))
. As foratan
, in case the exact mathematical result is +Pi or -Pi, its rounded result might be outside the function output range.
atan2(y, 0)
does not raise any floating-point exception. Special values are currently handled as described in the ISO C99 standard for theatan2
function (note this may change in future versions):
atan2(+0, -0)
returns +Pi.atan2(-0, -0)
returns -Pi.atan2(+0, +0)
returns +0.atan2(-0, +0)
returns −0.atan2(+0, x)
returns +Pi for x < 0.atan2(-0, x)
returns -Pi for x < 0.atan2(+0, x)
returns +0 for x > 0.atan2(-0, x)
returns −0 for x > 0.atan2(y, 0)
returns -Pi/2 for y < 0.atan2(y, 0)
returns +Pi/2 for y > 0.atan2(+Inf, -Inf)
returns +3*Pi/4.atan2(-Inf, -Inf)
returns -3*Pi/4.atan2(+Inf, +Inf)
returns +Pi/4.atan2(-Inf, +Inf)
returns -Pi/4.atan2(+Inf, x)
returns +Pi/2 for finite x.atan2(-Inf, x)
returns -Pi/2 for finite x.atan2(y, -Inf)
returns +Pi for finite y > 0.atan2(y, -Inf)
returns -Pi for finite y < 0.atan2(y, +Inf)
returns +0 for finite y > 0.atan2(y, +Inf)
returns −0 for finite y < 0.
Set rop to the hyperbolic cosine, sine or tangent of op, rounded in the direction rnd.
Set simultaneously sop to the hyperbolic sine of op and cop to the hyperbolic cosine of op, rounded in the direction rnd with the corresponding precision of sop and cop which must be different variables. Return 0 iff both results are exact.
Set rop to the hyperbolic secant of op, cosecant of op, cotangent of op, rounded in the direction rnd.
Set rop to the inverse hyperbolic cosine, sine or tangent of op, rounded in the direction rnd.
Set rop to the factorial of the
unsigned long int
op, rounded in the direction rnd.
Set rop to the logarithm of one plus op, rounded in the direction rnd.
Set rop to the exponential of op minus one, rounded in the direction rnd.
Set y to the exponential integral of x, rounded in the direction rnd. For positive x, the exponential integral is the sum of Euler's constant, of the logarithm of x, and of the sum for k from 1 to infinity of x to the power k, divided by k and factorial(k). For negative x, the returned value is NaN.
Set rop to real part of the dilogarithm of op, rounded in the direction rnd_mode. The dilogarithm function is defined here as the integral of -log(1-t)/t from 0 to x.
Set rop to the value of the Gamma function on op, rounded in the direction rnd. When op is a negative integer, NaN is returned.
Set rop to the value of the logarithm of the Gamma function on op, rounded in the direction rnd. When −2k−1 <= x <= −2k, k being a non-negative integer, NaN is returned. See also
mpfr_lgamma
.
Set rop to the value of the logarithm of the absolute value of the Gamma function on op, rounded in the direction rnd. The sign (1 or −1) of Gamma(op) is returned in the object pointed to by signp. When op is an infinity or a non-positive integer, +Inf is returned. When op is NaN, −Inf or a negative integer, *signp is undefined, and when op is ±0, *signp is the sign of the zero.
Set rop to the value of the Riemann Zeta function on op, rounded in the direction rnd.
Set rop to the value of the error function on op, rounded in the direction rnd.
Set rop to the value of the complementary error function on op, rounded in the direction rnd.
Set rop to the value of the first kind Bessel function of order 0, 1 and n on op, rounded in the direction rnd. When op is NaN, rop is always set to NaN. When op is plus or minus Infinity, rop is set to +0. When op is zero, and n is not zero, rop is +0 or −0 depending on the parity and sign of n, and the sign of op.
Set rop to the value of the second kind Bessel function of order 0, 1 and n on op, rounded in the direction rnd. When op is NaN or negative, rop is always set to NaN. When op is +Inf, rop is +0. When op is zero, rop is +Inf or −Inf depending on the parity and sign of n.
Set rop to (op1 times op2) + op3, rounded in the direction rnd.
Set rop to (op1 times op2) - op3, rounded in the direction rnd.
Set rop to the arithmetic-geometric mean of op1 and op2, rounded in the direction rnd. The arithmetic-geometric mean is the common limit of the sequences u[n] and v[n], where u[0]=op1, v[0]=op2, u[n+1] is the arithmetic mean of u[n] and v[n], and v[n+1] is the geometric mean of u[n] and v[n]. If any operand is negative, the return value is NaN.
Set rop to the Euclidean norm of x and y, i.e. the square root of the sum of the squares of x and y, rounded in the direction rnd. Special values are currently handled as described in Section F.9.4.3 of the ISO C99 standard, for the
hypot
function (note this may change in future versions): If x or y is an infinity, then plus infinity is returned in rop, even if the other number is NaN.
Set rop to the logarithm of 2, the value of Pi, of Euler's constant 0.577..., of Catalan's constant 0.915..., respectively, rounded in the direction rnd. These functions cache the computed values to avoid other calculations if a lower or equal precision is requested. To free these caches, use
mpfr_free_cache
.
Free various caches used by MPFR internally, in particular the caches used by the functions computing constants (currently
mpfr_const_log2
,mpfr_const_pi
,mpfr_const_euler
andmpfr_const_catalan
). You should call this function before terminating a thread, even if you did not call these functions directly (they could have been called internally).
Set ret to the sum of all elements of tab whose size is n, rounded in the direction rnd. Warning, tab is a table of pointers to mpfr_t, not a table of mpfr_t (preliminary interface). The returned
int
value is zero when the computed value is the exact value, and non-zero when this cannot be guaranteed, without giving the direction of the error as the other functions do.