Browse Source

implement carg

Mike Frysinger 17 years ago
parent
commit
6ec72c25ad
3 changed files with 46 additions and 3 deletions
  1. 2 2
      libm/Makefile.in
  2. 33 0
      libm/carg.c
  3. 11 1
      libm/float_wrappers.c

+ 2 - 2
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 := \

+ 33 - 0
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)

+ 11 - 1
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)