15#include "gpu_complex.hpp"
21#define _complex_re(a) creal(a)
22#define _complex_im(a) cimag(a)
23#define _complex_0(a) (a) = 0
24#define _complex_1(a) (a) = 1
25#define _complex_add_1(a) (a) += 1
26#define _complex_i(a) (a) = I
27#define _complex_star(a, b) (a) = conj(b)
28#define _complex_star_minus(a, b) (a) = -conj(b)
29#define _complex_star_assign(a) (a) = conj(a)
30#define _complex_mul(a, b, c) (a) = (b) * (c)
31#define _complex_mulr(a, r, b) (a) = (r) * (b)
32#define _complex_add(a, b, c) (a) = (b) + (c)
33#define _complex_sub(a, b, c) (a) = (b) - (c)
34#define _complex_add_star(a, b, c) (a) = (b) + conj(c)
35#define _complex_sub_star(a, b, c) (a) = (b)-conj(c)
36#define _complex_div(a, b, c) (a) = (b) / (c)
37#define _complex_inv(a, b) (a) = 1 / (b)
38#define _complex_prod(a, b) conj(a) * b
39#define _complex_prod_re(a, b) creal(conj(a) * (b))
40#define _complex_prod_m1_re(a, b) creal(conj(1 - a) * (1 - b))
41#define _complex_prod_im(a, b) cimag(conj(a) * b)
42#define _complex_prod_assign(c, a, b) (c) += conj(a) * (b)
43#define _complex_mul_star_star_assign(c, a, b) (c) += conj((a) * (b))
44#define _complex_minus(a, b) (a) = -(b)
45#define _complex_i_minus(a, b) (a) = -I * (b)
46#define _complex_i_plus(a, b) (a) = I * (b)
47#define _complex_i_add(a, b, c) (a) = (b) + I * (c)
48#define _complex_i_sub(a, b, c) (a) = (b)-I * (c)
49#define _complex_add_assign(a, b) (a) += (b)
50#define _complex_sub_assign(a, b) (a) -= (b)
51#define _complex_add_star_assign(a, b, c) (a) += (b) + conj(c)
52#define _complex_i_add_assign(a, b) (a) += I * (b)
53#define _complex_i_sub_assign(a, b) (a) -= I * (b)
54#define _complex_mul_assign(a, b, c) (a) += (b) * (c)
55#define _complex_mulcr_assign(a, r, b, c) (a) += (r) * (b) * (c)
56#define _complex_mul_star(a, b, c) (a) = (b) * conj(c)
57#define _complex_mul_star_assign(a, b, c) (a) += (b) * conj(c)
58#define _complex_mul_star_assign_re(a, b, c) (a) += creal((b) * conj(c))
59#define _complex_mul_sub_assign(a, b, c) (a) -= (b) * (c)
60#define _complex_mulr_assign(a, r, b) (a) += (r) * (b)
61#define _complex_rlc(a, r1, c1, r2, c2) (a) = (r1) * (c1) + (r2) * (c2)
62#define _complex_rlc_assign(a, r1, c1, r2, c2) (a) += (r1) * (c1) + (r2) * (c2)
63#define _complex_clc(a, z1, c1, z2, c2) (a) = (z1) * (c1) + (z2) * (c2)
64#define _complex_clc_assign(a, z1, c1, z2, c2) (a) += (z1) * (c1) + (z2) * (c2)
Type definitions and macros for complex numbers used in C.