Re: [PATCH] libc/include/complex.h: Add CMPLX, CMPLXF, and CMPLXL
Andrew Pinski <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CA+=Sn1nd6d+8_eVrpY5yv19hmAzGBkOtFaw_BUDyrQErbB_w1A@mail.gmail.com> |
On Mon, Jul 1, 2024 at 2:51 PM Joel Sherrill <[email protected]> wrote: > > > > 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? I am not sure. I was more just warning about __builtin_complex rather than anything else. > > 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. I did file https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107279 for __builtin_complex support in the C++ front-end (a few years back because I was working on the documentation at that point). Thanks, Andrew > > 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 >> >