This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: patch to add C99 complex - 1/3


--- Mer 6/10/10, Dave Korn ha scritto:

> On 06/10/2010 12:50, Marco Atzeri
> wrote:
> 
> > one further question, should I include also the new
> > Makefile.in in addition to the Makefile.am ?
> 
> ? No, just include a line in the ChangeLog that says:
> 
> ??? * Makefile.in: Regenerate.
> 
<cut>
> 
> ? ? cheers,
> ? ? ? DaveK


OK,
patch 1/3  everything outside the complex subdir

Changelog

--------------------------------------------------
2010-10-06  Marco Atzeri  <marco_atzeri@yahoo.it>

       * libc/include/complex.h: New complex header 
       * libm/common/fdlibm.h: added ifdef  _COMPLEX_H
       * libm/complex/*: new complex functions from NETBSD
       * libm/Makefile.am: added complex subdir
       * libm/configure.in: added complex subdir
       * Makefile.in: Regenerate.
---------------------------------------------------

Regards 

Marco




      
diff -uNr -x Makefile.in -x '*~' -x '*.m4' -x autom4te.cache -x configure src/newlib/libc/include/complex.h src_new/newlib/libc/include/complex.h
--- src/newlib/libc/include/complex.h	1970-01-01 01:00:00.000000000 +0100
+++ src_new/newlib/libc/include/complex.h	2010-10-06 12:20:45.385187300 +0200
@@ -0,0 +1,124 @@
+/* $NetBSD: complex.h,v 1.3 2010/09/15 16:11:30 christos Exp $ */
+
+/*
+ * Written by Matthias Drochner.
+ * Public domain.
+ */
+
+#ifndef	_COMPLEX_H
+#define	_COMPLEX_H
+
+#define complex _Complex
+#define _Complex_I 1.0fi
+#define I _Complex_I
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+/* 7.3.5 Trigonometric functions */
+/* 7.3.5.1 The cacos functions */
+double complex cacos(double complex);
+float complex cacosf(float complex);
+
+/* 7.3.5.2 The casin functions */
+double complex casin(double complex);
+float complex casinf(float complex);
+
+/* 7.3.5.1 The catan functions */
+double complex catan(double complex);
+float complex catanf(float complex);
+
+/* 7.3.5.1 The ccos functions */
+double complex ccos(double complex);
+float complex ccosf(float complex);
+
+/* 7.3.5.1 The csin functions */
+double complex csin(double complex);
+float complex csinf(float complex);
+
+/* 7.3.5.1 The ctan functions */
+double complex ctan(double complex);
+float complex ctanf(float complex);
+
+/* 7.3.6 Hyperbolic functions */
+/* 7.3.6.1 The cacosh functions */
+double complex cacosh(double complex);
+float complex cacoshf(float complex);
+
+/* 7.3.6.2 The casinh functions */
+double complex casinh(double complex);
+float complex casinhf(float complex);
+
+/* 7.3.6.3 The catanh functions */
+double complex catanh(double complex);
+float complex catanhf(float complex);
+
+/* 7.3.6.4 The ccosh functions */
+double complex ccosh(double complex);
+float complex ccoshf(float complex);
+
+/* 7.3.6.5 The csinh functions */
+double complex csinh(double complex);
+float complex csinhf(float complex);
+
+/* 7.3.6.6 The ctanh functions */
+double complex ctanh(double complex);
+float complex ctanhf(float complex);
+
+/* 7.3.7 Exponential and logarithmic functions */
+/* 7.3.7.1 The cexp functions */
+double complex cexp(double complex);
+float complex cexpf(float complex);
+
+/* 7.3.7.2 The clog functions */
+double complex clog(double complex);
+float complex clogf(float complex);
+
+/* 7.3.8 Power and absolute-value functions */
+/* 7.3.8.1 The cabs functions */
+/*#ifndef __LIBM0_SOURCE__
+/* avoid conflict with historical cabs(struct complex) */
+/* double cabs(double complex) __RENAME(__c99_cabs);
+   float cabsf(float complex) __RENAME(__c99_cabsf);
+   #endif
+*/
+double cabs(double complex) ;
+float cabsf(float complex) ;
+
+/* 7.3.8.2 The cpow functions */
+double complex cpow(double complex, double complex);
+float complex cpowf(float complex, float complex);
+
+/* 7.3.8.3 The csqrt functions */
+double complex csqrt(double complex);
+float complex csqrtf(float complex);
+
+/* 7.3.9 Manipulation functions */
+/* 7.3.9.1 The carg functions */ 
+double carg(double complex);
+float cargf(float complex);
+
+/* 7.3.9.2 The cimag functions */
+double cimag(double complex);
+float cimagf(float complex);
+/*long double cimagl(long double complex); */
+
+/* 7.3.9.3 The conj functions */
+double complex conj(double complex);
+float complex conjf(float complex);
+/*long double complex conjl(long double complex); */
+
+/* 7.3.9.4 The cproj functions */
+double complex cproj(double complex);
+float complex cprojf(float complex);
+/*long double complex cprojl(long double complex); */
+
+/* 7.3.9.5 The creal functions */
+double creal(double complex);
+float crealf(float complex);
+/*long double creall(long double complex); */
+
+__END_DECLS
+
+#endif	/* ! _COMPLEX_H */
diff -uNr -x Makefile.in -x '*~' -x '*.m4' -x autom4te.cache -x configure src/newlib/libm/Makefile.am src_new/newlib/libm/Makefile.am
--- src/newlib/libm/Makefile.am	2007-05-24 19:33:41.000000000 +0200
+++ src_new/newlib/libm/Makefile.am	2010-10-06 12:20:45.400812900 +0200
@@ -8,17 +8,17 @@
 MATHDIR = math
 endif
 
-SUBDIRS = $(MATHDIR) common machine
+SUBDIRS = $(MATHDIR) common complex machine 
 
 libm_la_LDFLAGS = -Xcompiler -nostdlib
 
 if USE_LIBTOOL
-SUBLIBS = $(MATHDIR)/lib$(MATHDIR).$(aext) common/libcommon.$(aext) $(LIBM_MACHINE_LIB)
+SUBLIBS = $(MATHDIR)/lib$(MATHDIR).$(aext) common/libcommon.$(aext)complex/libcomplex.$(aext)  $(LIBM_MACHINE_LIB)
 noinst_LTLIBRARIES = libm.la
 libm_la_SOURCES =
 libm_la_LIBADD = $(SUBLIBS)
 else
-SUBLIBS = $(MATHDIR)/lib.$(aext) common/lib.$(aext) $(LIBM_MACHINE_LIB)
+SUBLIBS = $(MATHDIR)/lib.$(aext) common/lib.$(aext) complex/lib.$(aext) $(LIBM_MACHINE_LIB)
 noinst_LIBRARIES = libm.a
 libm.a: $(SUBLIBS)
 	rm -f $@
diff -uNr -x Makefile.in -x '*~' -x '*.m4' -x autom4te.cache -x configure src/newlib/libm/common/fdlibm.h src_new/newlib/libm/common/fdlibm.h
--- src/newlib/libm/common/fdlibm.h	2010-07-20 03:33:05.000000000 +0200
+++ src_new/newlib/libm/common/fdlibm.h	2010-10-06 12:20:45.463315300 +0200
@@ -371,3 +371,34 @@
 #define SAFE_RIGHT_SHIFT(op,amt)				\
   (((amt) < 8 * sizeof(op)) ? ((op) >> (amt)) : 0)
 
+#ifdef  _COMPLEX_H
+
+/*
+ * Quoting from ISO/IEC 9899:TC2:
+ *
+ * 6.2.5.13 Types
+ * Each complex type has the same representation and alignment requirements as
+ * an array type containing exactly two elements of the corresponding real type;
+ * the first element is equal to the real part, and the second element to the
+ * imaginary part, of the complex number.
+ */
+typedef union {
+        float complex z;
+        float parts[2];
+} float_complex;
+
+typedef union {
+        double complex z;
+        double parts[2];
+} double_complex;
+
+typedef union {
+        long double complex z;
+        long double parts[2];
+} long_double_complex;
+
+#define REAL_PART(z)    ((z).parts[0])
+#define IMAG_PART(z)    ((z).parts[1])
+
+#endif  /* _COMPLEX_H */
+
diff -uNr -x Makefile.in -x '*~' -x '*.m4' -x autom4te.cache -x configure src/newlib/libm/configure.in src_new/newlib/libm/configure.in
--- src/newlib/libm/configure.in	2010-02-24 22:00:05.000000000 +0100
+++ src_new/newlib/libm/configure.in	2010-10-06 12:20:46.916496100 +0200
@@ -62,5 +62,5 @@
 
 AC_SUBST(LIBM_MACHINE_LIB)
 
-AC_CONFIG_FILES([Makefile math/Makefile mathfp/Makefile common/Makefile])
+AC_CONFIG_FILES([Makefile math/Makefile mathfp/Makefile common/Makefile complex/Makefile])
 AC_OUTPUT

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]