[PATCH] libc/include/complex.h: Add CMPLX, CMPLXF, and CMPLXL
Andrew Pinski
pinskia@gmail.com
Mon Jul 1 21:56:48 GMT 2024
On Mon, Jul 1, 2024 at 2:51 PM Joel Sherrill <joel@rtems.org> wrote:
>
>
>
> On Mon, Jul 1, 2024 at 3:58 PM Andrew Pinski <pinskia@gmail.com> wrote:
>>
>> On Mon, Jul 1, 2024 at 1:53 PM Joel Sherrill <joel@rtems.org> 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
>> >
More information about the Newlib
mailing list