1 /* Copyright (c) 2016 Yaakov Selkowitz <yselkowi@redhat.com> */
2 /*
3 FUNCTION
4 <<clog10>>, <<clog10f>>---complex base-10 logarithm
5
6 INDEX
7 clog10
8 INDEX
9 clog10f
10
11 SYNOPSIS
12 #define _DEFAULT_SOURCE
13 #include <complex.h>
14 double complex clog10(double complex <[z]>);
15 float complex clog10f(float complex <[z]>);
16
17
18 DESCRIPTION
19 These functions compute the complex base-10 logarithm of <[z]>.
20 <<clog10>> is equivalent to <<clog>>(<[z]>)/<<log>>(10).
21
22 <<clog10f>> is identical to <<clog10>>, except that it performs
23 its calculations on <<floats complex>>.
24
25 RETURNS
26 The clog10 functions return the complex base-10 logarithm value.
27
28 PORTABILITY
29 <<clog10>> and <<clog10f>> are GNU extensions.
30
31 */
32
33 #define _DEFAULT_SOURCE
34 #include <complex.h>
35 #include <math.h>
36
37 double complex
clog10(double complex z)38 clog10(double complex z)
39 {
40 double p, rr;
41
42 rr = cabs(z);
43 p = log10(rr);
44 rr = atan2(cimag(z), creal(z)) * M_IVLN10;
45 return (double complex) p + rr * (double complex) I;
46 }
47