Re: [PATCH] libc/include/complex.h: Add CMPLX, CMPLXF, and CMPLXL
Joel Sherrill <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CAF9ehCXE9VrMRFsF6oXuis=s9DAgROF==iBichXqvm_ZhXENfg@mail.gmail.com> |
On Mon, Jul 1, 2024 at 3:58 PM Andrew Pinski <[email protected]> wrote: > On Mon, Jul 1, 2024 at 1:53 PM Joel Sherrill <[email protected]> wrote: > > > > --- > > newlib/libc/include/complex.h | 13 +++++++++++++ > > 1 file changed, 13 insertions(+) > > > > diff --git a/newlib/libc/include/complex.h > b/newlib/libc/include/complex.h > > index ad3028e4c..dbabdf67a 100644 > > --- a/newlib/libc/include/complex.h > > +++ b/newlib/libc/include/complex.h > > @@ -16,6 +16,19 @@ > > > > __BEGIN_DECLS > > > > +/* Implementation from FreeBSD */ > > +#if __ISO_C_VISIBLE >= 2011 > > +#ifdef __clang__ > > +#define CMPLX(x, y) ((double complex){ x, y }) > > +#define CMPLXF(x, y) ((float complex){ x, y }) > > +#define CMPLXL(x, y) ((long double complex){ x, y }) > > +#elif __GNUC_PREREQ__(4, 7) > > +#define CMPLX(x, y) __builtin_complex((double)(x), > (double)(y)) > > +#define CMPLXF(x, y) __builtin_complex((float)(x), (float)(y)) > > +#define CMPLXL(x, y) __builtin_complex((long double)(x), > (long double)(y)) > > I only know this because I have been working with complex in the last > few weeks but __builtin_complex does not work with GCC's C++ front-end > (but it is not documented). > I don't know if you care about using this part of the header with C++ > but I am just putting it out there. Will C++ see this since it is in __ISO_C_VISIBLE >= 2011? Do you consider that an issue with GCC? I don't see these in a C++ standard. Technically that means they shouldn't be visible. And I am open to changing this if you think that there is an issue. > > Thanks, > Andrew Pinski > > > +#endif > > +#endif /* __ISO_C_VISIBLE >= 2011 */ > > + > > /* 7.3.5 Trigonometric functions */ > > /* 7.3.5.1 The cacos functions */ > > double complex cacos(double complex); > > -- > > 2.24.4 > > >