FLINT3.7.0-dev

d1c_neg, d2c_neg, d3c_neg, d4c_neg, d1c_conj, d2c_conj, d3c_conj, d4c_conj, d1c_add, d2c_add, d3c_add, d4c_add, d1c_sub, d2c_sub, d3c_sub, d4c_sub, d1c_mul, d2c_mul, d3c_mul, d4c_mul, d1c_sqr, d2c_sqr, d3c_sqr, d4c_sqr, d1c_mul_re, d2c_mul_re, d3c_mul_re, d4c_mul_re, d1c_mul_onei, d2c_mul_onei, d3c_mul_onei, d4c_mul_onei, d1c_mul_2exp_si, d2c_mul_2exp_si, d3c_mul_2exp_si, d4c_mul_2exp_si, d1c_div, d2c_div, d3c_div, d4c_div, d1c_inv, d2c_inv, d3c_inv, d4c_inv, d1c_sqrt, d2c_sqrt, d3c_sqrt, d4c_sqrt, d1c_rsqrt, d2c_rsqrt, d3c_rsqrt, d4c_rsqrt, d1c_abs, d2c_abs, d3c_abs, d4c_abs, d1c_arg, d2c_arg, d3c_arg, d4c_arg, d1cb_neg, d2cb_neg, d3cb_neg, d4cb_neg, d1cb_conj, d2cb_conj, d3cb_conj, d4cb_conj, d1cb_add, d2cb_add, d3cb_add, d4cb_add, d1cb_sub, d2cb_sub, d3cb_sub, d4cb_sub, d1cb_mul, d2cb_mul, d3cb_mul, d4cb_mul, d1cb_sqr, d2cb_sqr, d3cb_sqr, d4cb_sqr, d1cb_mul_re, d2cb_mul_re, d3cb_mul_re, d4cb_mul_re, d1cb_mul_onei, d2cb_mul_onei, d3cb_mul_onei, d4cb_mul_onei, d1cb_mul_2exp_si, d2cb_mul_2exp_si, d3cb_mul_2exp_si, d4cb_mul_2exp_si, d1cb_div, d2cb_div, d3cb_div, d4cb_div, d1cb_inv, d2cb_inv, d3cb_inv, d4cb_inv, d1cb_sqrt, d2cb_sqrt, d3cb_sqrt, d4cb_sqrt, d1cb_rsqrt, d2cb_rsqrt, d3cb_rsqrt, d4cb_rsqrt, d1cb_abs, d2cb_abs, d3cb_abs, d4cb_abs, d1cb_arg, d2cb_arg, d3cb_arg, d4cb_arg

Synopsis#include <flint/dfloat.h>
void d1c_neg(d1c_t res, d1c_srcptr x)
void d2c_neg(d2c_t res, d2c_srcptr x)
void d3c_neg(d3c_t res, d3c_srcptr x)
void d4c_neg(d4c_t res, d4c_srcptr x)
void d1c_conj(d1c_t res, d1c_srcptr x)
void d2c_conj(d2c_t res, d2c_srcptr x)
void d3c_conj(d3c_t res, d3c_srcptr x)
void d4c_conj(d4c_t res, d4c_srcptr x)
void d1c_add(d1c_t res, d1c_srcptr x, d1c_srcptr y)
void d2c_add(d2c_t res, d2c_srcptr x, d2c_srcptr y)
void d3c_add(d3c_t res, d3c_srcptr x, d3c_srcptr y)
void d4c_add(d4c_t res, d4c_srcptr x, d4c_srcptr y)
void d1c_sub(d1c_t res, d1c_srcptr x, d1c_srcptr y)
void d2c_sub(d2c_t res, d2c_srcptr x, d2c_srcptr y)
void d3c_sub(d3c_t res, d3c_srcptr x, d3c_srcptr y)
void d4c_sub(d4c_t res, d4c_srcptr x, d4c_srcptr y)
void d1c_mul(d1c_t res, d1c_srcptr x, d1c_srcptr y)
void d2c_mul(d2c_t res, d2c_srcptr x, d2c_srcptr y)
void d3c_mul(d3c_t res, d3c_srcptr x, d3c_srcptr y)
void d4c_mul(d4c_t res, d4c_srcptr x, d4c_srcptr y)
void d1c_sqr(d1c_t res, d1c_srcptr x)
void d2c_sqr(d2c_t res, d2c_srcptr x)
void d3c_sqr(d3c_t res, d3c_srcptr x)
void d4c_sqr(d4c_t res, d4c_srcptr x)
void d1c_mul_re(d1c_t res, d1c_srcptr x, d1_srcptr y)
void d2c_mul_re(d2c_t res, d2c_srcptr x, d2_srcptr y)
void d3c_mul_re(d3c_t res, d3c_srcptr x, d3_srcptr y)
void d4c_mul_re(d4c_t res, d4c_srcptr x, d4_srcptr y)
void d1c_mul_onei(d1c_t res, d1c_srcptr x)
void d2c_mul_onei(d2c_t res, d2c_srcptr x)
void d3c_mul_onei(d3c_t res, d3c_srcptr x)
void d4c_mul_onei(d4c_t res, d4c_srcptr x)
void d1c_mul_2exp_si(d1c_t res, d1c_srcptr x, slong e)
void d2c_mul_2exp_si(d2c_t res, d2c_srcptr x, slong e)
void d3c_mul_2exp_si(d3c_t res, d3c_srcptr x, slong e)
void d4c_mul_2exp_si(d4c_t res, d4c_srcptr x, slong e)
void d1c_div(d1c_t res, d1c_srcptr x, d1c_srcptr y)
void d2c_div(d2c_t res, d2c_srcptr x, d2c_srcptr y)
void d3c_div(d3c_t res, d3c_srcptr x, d3c_srcptr y)
void d4c_div(d4c_t res, d4c_srcptr x, d4c_srcptr y)
void d1c_inv(d1c_t res, d1c_srcptr x)
void d2c_inv(d2c_t res, d2c_srcptr x)
void d3c_inv(d3c_t res, d3c_srcptr x)
void d4c_inv(d4c_t res, d4c_srcptr x)
void d1c_sqrt(d1c_t res, d1c_srcptr x)
void d2c_sqrt(d2c_t res, d2c_srcptr x)
void d3c_sqrt(d3c_t res, d3c_srcptr x)
void d4c_sqrt(d4c_t res, d4c_srcptr x)
void d1c_rsqrt(d1c_t res, d1c_srcptr x)
void d2c_rsqrt(d2c_t res, d2c_srcptr x)
void d3c_rsqrt(d3c_t res, d3c_srcptr x)
void d4c_rsqrt(d4c_t res, d4c_srcptr x)
void d1c_abs(d1_t res, d1c_srcptr x)
void d2c_abs(d2_t res, d2c_srcptr x)
void d3c_abs(d3_t res, d3c_srcptr x)
void d4c_abs(d4_t res, d4c_srcptr x)
void d1c_arg(d1_t res, d1c_srcptr x)
void d2c_arg(d2_t res, d2c_srcptr x)
void d3c_arg(d3_t res, d3c_srcptr x)
void d4c_arg(d4_t res, d4c_srcptr x)
void d1cb_neg(d1cb_t res, d1cb_srcptr x)
void d2cb_neg(d2cb_t res, d2cb_srcptr x)
void d3cb_neg(d3cb_t res, d3cb_srcptr x)
void d4cb_neg(d4cb_t res, d4cb_srcptr x)
void d1cb_conj(d1cb_t res, d1cb_srcptr x)
void d2cb_conj(d2cb_t res, d2cb_srcptr x)
void d3cb_conj(d3cb_t res, d3cb_srcptr x)
void d4cb_conj(d4cb_t res, d4cb_srcptr x)
void d1cb_add(d1cb_t res, d1cb_srcptr x, d1cb_srcptr y)
void d2cb_add(d2cb_t res, d2cb_srcptr x, d2cb_srcptr y)
void d3cb_add(d3cb_t res, d3cb_srcptr x, d3cb_srcptr y)
void d4cb_add(d4cb_t res, d4cb_srcptr x, d4cb_srcptr y)
void d1cb_sub(d1cb_t res, d1cb_srcptr x, d1cb_srcptr y)
void d2cb_sub(d2cb_t res, d2cb_srcptr x, d2cb_srcptr y)
void d3cb_sub(d3cb_t res, d3cb_srcptr x, d3cb_srcptr y)
void d4cb_sub(d4cb_t res, d4cb_srcptr x, d4cb_srcptr y)
void d1cb_mul(d1cb_t res, d1cb_srcptr x, d1cb_srcptr y)
void d2cb_mul(d2cb_t res, d2cb_srcptr x, d2cb_srcptr y)
void d3cb_mul(d3cb_t res, d3cb_srcptr x, d3cb_srcptr y)
void d4cb_mul(d4cb_t res, d4cb_srcptr x, d4cb_srcptr y)
void d1cb_sqr(d1cb_t res, d1cb_srcptr x)
void d2cb_sqr(d2cb_t res, d2cb_srcptr x)
void d3cb_sqr(d3cb_t res, d3cb_srcptr x)
void d4cb_sqr(d4cb_t res, d4cb_srcptr x)
void d1cb_mul_re(d1cb_t res, d1cb_srcptr x, d1b_srcptr y)
void d2cb_mul_re(d2cb_t res, d2cb_srcptr x, d2b_srcptr y)
void d3cb_mul_re(d3cb_t res, d3cb_srcptr x, d3b_srcptr y)
void d4cb_mul_re(d4cb_t res, d4cb_srcptr x, d4b_srcptr y)
void d1cb_mul_onei(d1cb_t res, d1cb_srcptr x)
void d2cb_mul_onei(d2cb_t res, d2cb_srcptr x)
void d3cb_mul_onei(d3cb_t res, d3cb_srcptr x)
void d4cb_mul_onei(d4cb_t res, d4cb_srcptr x)
void d1cb_mul_2exp_si(d1cb_t res, d1cb_srcptr x, slong e)
void d2cb_mul_2exp_si(d2cb_t res, d2cb_srcptr x, slong e)
void d3cb_mul_2exp_si(d3cb_t res, d3cb_srcptr x, slong e)
void d4cb_mul_2exp_si(d4cb_t res, d4cb_srcptr x, slong e)
int d1cb_div(d1cb_t res, d1cb_srcptr x, d1cb_srcptr y)
int d2cb_div(d2cb_t res, d2cb_srcptr x, d2cb_srcptr y)
int d3cb_div(d3cb_t res, d3cb_srcptr x, d3cb_srcptr y)
int d4cb_div(d4cb_t res, d4cb_srcptr x, d4cb_srcptr y)
int d1cb_inv(d1cb_t res, d1cb_srcptr x)
int d2cb_inv(d2cb_t res, d2cb_srcptr x)
int d3cb_inv(d3cb_t res, d3cb_srcptr x)
int d4cb_inv(d4cb_t res, d4cb_srcptr x)
void d1cb_sqrt(d1cb_t res, d1cb_srcptr x)
void d2cb_sqrt(d2cb_t res, d2cb_srcptr x)
void d3cb_sqrt(d3cb_t res, d3cb_srcptr x)
void d4cb_sqrt(d4cb_t res, d4cb_srcptr x)
int d1cb_rsqrt(d1cb_t res, d1cb_srcptr x)
int d2cb_rsqrt(d2cb_t res, d2cb_srcptr x)
int d3cb_rsqrt(d3cb_t res, d3cb_srcptr x)
int d4cb_rsqrt(d4cb_t res, d4cb_srcptr x)
void d1cb_abs(d1b_t res, d1cb_srcptr x)
void d2cb_abs(d2b_t res, d2cb_srcptr x)
void d3cb_abs(d3b_t res, d3cb_srcptr x)
void d4cb_abs(d4b_t res, d4cb_srcptr x)
void d1cb_arg(d1b_t res, d1cb_srcptr x)
void d2cb_arg(d2b_t res, d2cb_srcptr x)
void d3cb_arg(d3b_t res, d3cb_srcptr x)
void d4cb_arg(d4b_t res, d4cb_srcptr x)

Arithmetic: negation, conjugate, sum, difference, product, square, product with a real number (mul_re) or with i (mul_onei), multiplication by 2^e, quotient, inverse, principal square root and reciprocal square root, absolute value and argument \operatorname{atan2}(b, a) \in (-\pi, \pi] (0 for 0) as real elements. The ball versions of div, inv and rsqrt return a status (GR_DOMAIN only for an exactly zero divisor or argument, GR_UNABLE if it contains zero).

The product is (ac - bd) + (ad + bc)i, or two real products when either factor is exactly real or imaginary (which is also tighter for balls); the square is (a + b)(a - b) + 2abi for the plain formats (a relative real part) and (a^2 - b^2) + 2abi for the balls (a smaller radius). The quotient is x\bar{y}/|y|^2 after scaling y by a power of two; for balls, where this fails for a divisor away from zero (a wide rectangle), the result is the enclosure |x/y| \le \max|x|/\min|y| of both parts. The square root is t + ui with t = \sqrt{(|z| + a)/2} and u = b/(2t) for a \ge 0, and the symmetric form for a < 0, so that neither part cancels. The plain division, inverse, square roots and absolute value have inlined fast paths for operands whose parts have heads in [2^{-250}, 2^{250}].

Cite this page

The FLINT team, “d1c_neg, d2c_neg, d3c_neg, d4c_neg, d1c_conj, d2c_conj, d3c_conj, d4c_conj, d1c_add, d2c_add, d3c_add, d4c_add, d1c_sub, d2c_sub, d3c_sub, d4c_sub, d1c_mul, d2c_mul, d3c_mul, d4c_mul, d1c_sqr, d2c_sqr, d3c_sqr, d4c_sqr, d1c_mul_re, d2c_mul_re, d3c_mul_re, d4c_mul_re, d1c_mul_onei, d2c_mul_onei, d3c_mul_onei, d4c_mul_onei, d1c_mul_2exp_si, d2c_mul_2exp_si, d3c_mul_2exp_si, d4c_mul_2exp_si, d1c_div, d2c_div, d3c_div, d4c_div, d1c_inv, d2c_inv, d3c_inv, d4c_inv, d1c_sqrt, d2c_sqrt, d3c_sqrt, d4c_sqrt, d1c_rsqrt, d2c_rsqrt, d3c_rsqrt, d4c_rsqrt, d1c_abs, d2c_abs, d3c_abs, d4c_abs, d1c_arg, d2c_arg, d3c_arg, d4c_arg, d1cb_neg, d2cb_neg, d3cb_neg, d4cb_neg, d1cb_conj, d2cb_conj, d3cb_conj, d4cb_conj, d1cb_add, d2cb_add, d3cb_add, d4cb_add, d1cb_sub, d2cb_sub, d3cb_sub, d4cb_sub, d1cb_mul, d2cb_mul, d3cb_mul, d4cb_mul, d1cb_sqr, d2cb_sqr, d3cb_sqr, d4cb_sqr, d1cb_mul_re, d2cb_mul_re, d3cb_mul_re, d4cb_mul_re, d1cb_mul_onei, d2cb_mul_onei, d3cb_mul_onei, d4cb_mul_onei, d1cb_mul_2exp_si, d2cb_mul_2exp_si, d3cb_mul_2exp_si, d4cb_mul_2exp_si, d1cb_div, d2cb_div, d3cb_div, d4cb_div, d1cb_inv, d2cb_inv, d3cb_inv, d4cb_inv, d1cb_sqrt, d2cb_sqrt, d3cb_sqrt, d4cb_sqrt, d1cb_rsqrt, d2cb_rsqrt, d3cb_rsqrt, d4cb_rsqrt, d1cb_abs, d2cb_abs, d3cb_abs, d4cb_abs, d1cb_arg, d2cb_arg, d3cb_arg, d4cb_arg (dfloat.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/dfloat/d1c_neg.html (generated 2026-10-20).