1 #define MAIN_(x) A_CAST_2(x, _complex)
6 static void test(a_complex a
, a_complex b
)
10 a_complex_polar(&c
, A_FLOAT_C(1.0), a_float_c(A_PI_2
));
12 x
= a_complex_logabs(a
);
13 debug("logabs(" A_COMPLEX_PRI("", "g", "", "g") ")=" A_FLOAT_PRI("", "g\n"), a
.real
, a
.imag
, x
);
15 x
= a_complex_abs2(a
);
16 debug("abs2(" A_COMPLEX_PRI("", "g", "", "g") ")=" A_FLOAT_PRI("", "g\n"), a
.real
, a
.imag
, x
);
19 debug("abs(" A_COMPLEX_PRI("", "g", "", "g") ")=" A_FLOAT_PRI("", "g\n"), a
.real
, a
.imag
, x
);
22 debug("arg(" A_COMPLEX_PRI("", "g", "", "g") ")=" A_FLOAT_PRI("", "g\n"), a
.real
, a
.imag
, x
);
24 a_complex_proj(&c
, a
);
25 debug("proj(" A_COMPLEX_PRI("", "g", "", "g") ")=" A_COMPLEX_PRI("", "g", "", "g") "\n",
26 a
.real
, a
.imag
, c
.real
, c
.imag
);
28 a_complex_conj(&c
, a
);
29 debug(A_COMPLEX_PRI("", "g", "", "g") "'=" A_COMPLEX_PRI("", "g", "", "g") "\n",
30 a
.real
, a
.imag
, c
.real
, c
.imag
);
33 debug("-" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
34 a
.real
, a
.imag
, c
.real
, c
.imag
);
36 a_complex_add(&c
, a
, b
);
37 debug(A_COMPLEX_PRI("", "g", "", "g") "+" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
38 a
.real
, a
.imag
, b
.real
, b
.imag
, c
.real
, c
.imag
);
40 a_complex_sub(&c
, a
, b
);
41 debug(A_COMPLEX_PRI("", "g", "", "g") "-" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
42 a
.real
, a
.imag
, b
.real
, b
.imag
, c
.real
, c
.imag
);
44 a_complex_mul(&c
, a
, b
);
45 debug(A_COMPLEX_PRI("", "g", "", "g") "*" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
46 a
.real
, a
.imag
, b
.real
, b
.imag
, c
.real
, c
.imag
);
48 a_complex_div(&c
, a
, b
);
49 debug(A_COMPLEX_PRI("", "g", "", "g") "/" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
50 a
.real
, a
.imag
, b
.real
, b
.imag
, c
.real
, c
.imag
);
52 a_complex_add_real(&c
, a
, b
.real
);
53 debug(A_COMPLEX_PRI("", "g", "", "g") "+" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
54 a
.real
, a
.imag
, b
.real
, A_FLOAT_C(0.0), c
.real
, c
.imag
);
56 a_complex_sub_real(&c
, a
, b
.real
);
57 debug(A_COMPLEX_PRI("", "g", "", "g") "-" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
58 a
.real
, a
.imag
, b
.real
, A_FLOAT_C(0.0), c
.real
, c
.imag
);
60 a_complex_mul_real(&c
, a
, b
.real
);
61 debug(A_COMPLEX_PRI("", "g", "", "g") "*" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
62 a
.real
, a
.imag
, b
.real
, A_FLOAT_C(0.0), c
.real
, c
.imag
);
64 a_complex_div_real(&c
, a
, b
.real
);
65 debug(A_COMPLEX_PRI("", "g", "", "g") "/" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
66 a
.real
, a
.imag
, b
.real
, A_FLOAT_C(0.0), c
.real
, c
.imag
);
68 a_complex_add_imag(&c
, a
, b
.real
);
69 debug(A_COMPLEX_PRI("", "g", "", "g") "+" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
70 a
.real
, a
.imag
, A_FLOAT_C(0.0), b
.real
, c
.real
, c
.imag
);
72 a_complex_sub_imag(&c
, a
, b
.real
);
73 debug(A_COMPLEX_PRI("", "g", "", "g") "-" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
74 a
.real
, a
.imag
, A_FLOAT_C(0.0), b
.real
, c
.real
, c
.imag
);
76 a_complex_mul_imag(&c
, a
, b
.real
);
77 debug(A_COMPLEX_PRI("", "g", "", "g") "*" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
78 a
.real
, a
.imag
, A_FLOAT_C(0.0), b
.real
, c
.real
, c
.imag
);
80 a_complex_div_imag(&c
, a
, b
.real
);
81 debug(A_COMPLEX_PRI("", "g", "", "g") "/" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
82 a
.real
, a
.imag
, A_FLOAT_C(0.0), b
.real
, c
.real
, c
.imag
);
85 debug("1/" A_COMPLEX_PRI("", "g", "", "g") "=" A_COMPLEX_PRI("", "g", "", "g") "\n",
86 a
.real
, a
.imag
, c
.real
, c
.imag
);
88 a_complex_sqrt(&c
, a
);
89 debug("sqrt(" A_COMPLEX_PRI("", "g", "", "g") ")=" A_COMPLEX_PRI("", "g", "", "g") "\n",
90 a
.real
, a
.imag
, c
.real
, c
.imag
);
92 a_complex_sqrt_real(&c
, a
.real
);
93 debug("sqrt(" A_FLOAT_PRI("", "g") ")=" A_COMPLEX_PRI("", "g", "", "g") "\n",
94 a
.real
, c
.real
, c
.imag
);
96 a_complex_pow(&c
, a
, b
);
97 debug("pow(" A_COMPLEX_PRI("", "g", "", "g") "," A_COMPLEX_PRI("", "g", "", "g") ")=" A_COMPLEX_PRI("", "g", "", "g") "\n",
98 a
.real
, a
.imag
, b
.real
, b
.imag
, c
.real
, c
.imag
);
100 a_complex_pow_real(&c
, a
, b
.real
);
101 debug("pow(" A_COMPLEX_PRI("", "g", "", "g") "," A_FLOAT_PRI("", "g") ")=" A_COMPLEX_PRI("", "g", "", "g") "\n",
102 a
.real
, a
.imag
, b
.real
, c
.real
, c
.imag
);
104 a_complex_exp(&c
, a
);
105 debug("exp(" A_COMPLEX_PRI("", "g", "", "g") ")=" A_COMPLEX_PRI("", "g", "", "g") "\n",
106 a
.real
, a
.imag
, c
.real
, c
.imag
);
108 a_complex_log(&c
, a
);
109 debug("log(" A_COMPLEX_PRI("", "g", "", "g") ")=" A_COMPLEX_PRI("", "g", "", "g") "\n",
110 a
.real
, a
.imag
, c
.real
, c
.imag
);
112 a_complex_log2(&c
, a
);
113 debug("log2(" A_COMPLEX_PRI("", "g", "", "g") ")=" A_COMPLEX_PRI("", "g", "", "g") "\n",
114 a
.real
, a
.imag
, c
.real
, c
.imag
);
116 a_complex_log10(&c
, a
);
117 debug("log10(" A_COMPLEX_PRI("", "g", "", "g") ")=" A_COMPLEX_PRI("", "g", "", "g") "\n",
118 a
.real
, a
.imag
, c
.real
, c
.imag
);
120 a_complex_logb(&c
, a
, b
);
121 debug("logb(" A_COMPLEX_PRI("", "g", "", "g") "," A_COMPLEX_PRI("", "g", "", "g") ")=" A_COMPLEX_PRI("", "g", "", "g") "\n",
122 a
.real
, a
.imag
, b
.real
, b
.imag
, c
.real
, c
.imag
);
125 static void test_tri(a_complex x
)
129 debug("sin(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
130 a_complex_sin(&z
, x
);
131 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
133 debug("cos(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
134 a_complex_cos(&z
, x
);
135 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
137 debug("tan(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
138 a_complex_tan(&z
, x
);
139 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
141 debug("sec(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
142 a_complex_sec(&z
, x
);
143 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
145 debug("csc(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
146 a_complex_csc(&z
, x
);
147 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
149 debug("cot(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
150 a_complex_cot(&z
, x
);
151 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
154 static void test_trih(a_complex x
)
158 debug("sinh(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
159 a_complex_sinh(&z
, x
);
160 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
162 debug("cosh(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
163 a_complex_cosh(&z
, x
);
164 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
166 debug("tanh(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
167 a_complex_tanh(&z
, x
);
168 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
170 debug("sech(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
171 a_complex_sech(&z
, x
);
172 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
174 debug("csch(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
175 a_complex_csch(&z
, x
);
176 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
178 debug("coth(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
179 a_complex_coth(&z
, x
);
180 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
183 static void test_atri(a_complex x
)
187 debug("asin(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
188 a_complex_asin(&z
, x
);
189 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
191 debug("acos(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
192 a_complex_acos(&z
, x
);
193 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
195 debug("atan(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
196 a_complex_atan(&z
, x
);
197 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
199 debug("asec(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
200 a_complex_asec(&z
, x
);
201 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
203 debug("acsc(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
204 a_complex_acsc(&z
, x
);
205 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
207 debug("acot(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
208 a_complex_acot(&z
, x
);
209 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
212 static void test_atrih(a_complex x
)
216 debug("asinh(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
217 a_complex_asinh(&z
, x
);
218 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
220 debug("acosh(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
221 a_complex_acosh(&z
, x
);
222 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
224 debug("atanh(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
225 a_complex_atanh(&z
, x
);
226 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
228 debug("asech(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
229 a_complex_asech(&z
, x
);
230 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
232 debug("acsch(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
233 a_complex_acsch(&z
, x
);
234 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
236 debug("acoth(" A_COMPLEX_PRI("", "g", "", "g"), x
.real
, x
.imag
);
237 a_complex_acoth(&z
, x
);
238 debug(")=" A_COMPLEX_PRI("", "g", "", "g") "\n", z
.real
, z
.imag
);
241 int MAIN(int argc
, char *argv
[]) // NOLINT(misc-definitions-in-headers)
243 a_complex x
= A_COMPLEX_C(0.0, 0.0);
244 a_complex y
= a_complex_c(0.0, 0.0);
247 a_complex_parse(&x
, argv
[1]);
251 a_complex_parse(&y
, argv
[2]);
260 debug("x=" A_COMPLEX_PRI("", "g", "", "g") " ", x
.real
, x
.imag
);
264 debug("y=" A_COMPLEX_PRI("", "g", "", "g") " ", y
.real
, y
.imag
);
265 if (a_complex_eq(x
, y
)) { debug("x==y"); }
266 if (a_complex_ne(x
, y
)) { debug("x!=y"); }
268 if (argc
> 1) { debug("\n"); }