114 return atan2 (z.i, z.r);
162 return cmplx (r, -i);
172 return cmplx (z.r, -z.i);
186 return cmplx (-r, -i);
247 return cmplx (z1.r + z2.r, z1.i + z2.i);
254 return cmplx (r1 + z2.r, z2.i);
261 return cmplx (z1.r + r2, z1.i);
268 return cmplx (z1.r - z2.r, z1.i - z2.i);
275 return cmplx (r1 - z2.r, -z2.i);
282 return cmplx (z1.r - r2, z1.i);
289 return cmplx (z1.r * r2, z1.i * r2);
296 return cmplx (z2.r * r1, z2.i * r1);
303 return cmplx (z1.r * z2.r - z1.i * z2.i, z1.i * z2.r + z1.r * z2.i);
311 return cmplx (z1.r / r2, z1.i / r2);
319 nr_double_t
n =
norm (z2);
320 return cmplx ((z1.r * z2.r + z1.i * z2.i) / n,
321 (z1.i * z2.r - z1.r * z2.i) / n);
323 nr_double_t r,
i,
n, d;
324 if (fabs (z2.r) > fabs (z2.i)) {
327 r = (z1.r + z1.i *
n) / d;
328 i = (z1.i - z1.r *
n) / d;
333 r = (z1.r * n + z1.i) / d;
334 i = (z1.i * n - z1.r) / d;
347 n2 = (r * z.r + i * z.i) / n1;
348 i = (i * z.r - r * z.i) / n1;
352 if (fabs (z.r) > fabs (z.i)) {
375 nr_double_t
n =
norm (z2);
376 return cmplx (r1 * z2.r / n, -r1 * z2.i / n);
378 nr_double_t r,
i,
n, d;
379 if (fabs (z2.r) > fabs (z2.i)) {
418 n = r * z.r - i * z.i;
419 i = i * z.r + r * z.i;
431 fprintf (stderr,
"%+.2e,%+.2e ", (
double) r, (
double) i);