summaryrefslogtreecommitdiff
path: root/libm
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2007-04-02 20:52:18 +0000
committerMike Frysinger <vapier@gentoo.org>2007-04-02 20:52:18 +0000
commit6ec72c25adc5231d9c12672c8da287db234e55c3 (patch)
tree860a5b5481b034529861be763c035b5a155a9d76 /libm
parentbecdcc75f97d3d4480b9317633f0a59334a15a94 (diff)
implement carg
Diffstat (limited to 'libm')
-rw-r--r--libm/Makefile.in4
-rw-r--r--libm/carg.c33
-rw-r--r--libm/float_wrappers.c12
3 files changed, 46 insertions, 3 deletions
diff --git a/libm/Makefile.in b/libm/Makefile.in
index a972530cf..2122fabc4 100644
--- a/libm/Makefile.in
+++ b/libm/Makefile.in
@@ -72,7 +72,7 @@ libm_CSRC := \
w_cosh.c w_drem.c w_exp.c w_fmod.c w_gamma.c w_gamma_r.c \
w_hypot.c w_j0.c w_j1.c w_jn.c w_lgamma.c w_lgamma_r.c \
w_log.c w_log10.c w_pow.c w_remainder.c w_scalb.c w_sinh.c \
- w_sqrt.c fpmacros.c nan.c
+ w_sqrt.c fpmacros.c nan.c carg.c
FL_MOBJ := \
acosf.o acoshf.o asinf.o asinhf.o atan2f.o atanf.o atanhf.o cbrtf.o \
ceilf.o copysignf.o cosf.o coshf.o erfcf.o erff.o exp2f.o expf.o \
@@ -81,7 +81,7 @@ FL_MOBJ := \
log1pf.o log2f.o logbf.o logf.o lrintf.o lroundf.o modff.o nearbyintf.o \
nextafterf.o powf.o remainderf.o remquof.o rintf.o roundf.o \
scalblnf.o scalbnf.o sinf.o sinhf.o sqrtf.o tanf.o tanhf.o \
- tgammaf.o truncf.o
+ tgammaf.o truncf.o cargf.o
else
# This list of math functions was taken from POSIX/IEEE 1003.1b-1993
libm_CSRC := \
diff --git a/libm/carg.c b/libm/carg.c
new file mode 100644
index 000000000..7641d5dfe
--- /dev/null
+++ b/libm/carg.c
@@ -0,0 +1,33 @@
+/* Compute argument of complex double value.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <complex.h>
+#include <math.h>
+
+libm_hidden_proto(atan2)
+libm_hidden_proto(carg)
+
+double
+carg (__complex__ double x)
+{
+ return atan2 (__imag__ x, __real__ x);
+}
+
+libm_hidden_def(carg)
diff --git a/libm/float_wrappers.c b/libm/float_wrappers.c
index ab424d300..ffcf252ee 100644
--- a/libm/float_wrappers.c
+++ b/libm/float_wrappers.c
@@ -10,7 +10,8 @@
* GNU Lesser General Public License version 2.1 or later.
*/
-#include "math.h"
+#include <math.h>
+#include <complex.h>
/* For the time being, do _NOT_ implement these functions
* that are defined by SuSv3 */
@@ -138,6 +139,15 @@ float atanhf (float x)
#endif
+#ifdef L_cargf
+libm_hidden_proto(carg)
+float cargf (float complex x)
+{
+ return (float) carg( (double)x );
+}
+#endif
+
+
#ifdef L_cbrtf
libm_hidden_proto(cbrt)
float cbrtf (float x)