From 6ec72c25adc5231d9c12672c8da287db234e55c3 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 2 Apr 2007 20:52:18 +0000 Subject: implement carg --- libm/Makefile.in | 4 ++-- libm/carg.c | 33 +++++++++++++++++++++++++++++++++ libm/float_wrappers.c | 12 +++++++++++- 3 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 libm/carg.c 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 , 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 +#include + +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 +#include /* 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) -- cgit v1.2.3