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 #ifdef _HAVE_LONG_DOUBLE_MATH
38 
39 long double complex
clog10l(long double complex z)40 clog10l(long double complex z)
41 {
42 	long double p, rr;
43 
44 	rr = cabsl(z);
45 	p = log10l(rr);
46 	rr = atan2l(cimagl(z), creall(z)) * _M_IVLN10L;
47 	return (long double complex) p + rr * (long double complex) I;
48 }
49 
50 #endif
51