On 2017/12/17 15:25, Martin Storsjö wrote:
> Since long double just is normal double on arm and arm64, just
> call the normal ldexp function.
>
> Signed-off-by: Martin Storsjö <[email protected]>
> ---
> mingw-w64-crt/Makefile.am | 3 ++-
> mingw-w64-crt/math/arm/ldexpl.c | 16 ++++++++++++++++
> mingw-w64-crt/math/arm64/ldexpl.c | 16 ++++++++++++++++
> 3 files changed, 34 insertions(+), 1 deletion(-)
> create mode 100644 mingw-w64-crt/math/arm/ldexpl.c
> create mode 100644 mingw-w64-crt/math/arm64/ldexpl.c
>
> diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
> index 6812a5e..7d6c395 100644
> --- a/mingw-w64-crt/Makefile.am
> +++ b/mingw-w64-crt/Makefile.am
> @@ -390,13 +390,14 @@ src_libmingwexarm32+=\
> math/softmath/sinf.c math/softmath/sinl.c math/softmath/tanf.c
> math/softmath/tanl.c
> else
> src_libmingwexarm32+=\
> - math/arm/exp2.c math/arm/log2.c math/arm/scalbn.c
> math/arm/sincos.c
> + math/arm/exp2.c math/arm/ldexpl.c math/arm/log2.c
> math/arm/scalbn.c math/arm/sincos.c
> endif
>
> # these only go into the ARM64 version:
> src_libmingwexarm64=\
> math/arm64/_chgsignl.S math/arm64/ceil.S math/arm64/ceilf.S
> math/arm64/ceill.S math/arm64/copysignl.c \
> math/arm64/exp2.S math/arm64/exp2f.S math/arm64/floor.S
> math/arm64/floorf.S math/arm64/floorl.S \
> + math/arm64/ldexpl.c \
> math/arm64/log2.c math/arm64/nearbyint.S
> math/arm64/nearbyintf.S math/arm64/nearbyintl.S math/arm64/scalbn.c
> \
> math/arm64/sincos.c math/arm64/trunc.S math/arm64/truncf.S
>
> diff --git a/mingw-w64-crt/math/arm/ldexpl.c b/mingw-w64-crt/math/arm/ldexpl.c
> new file mode 100644
> index 0000000..cdccb7f
> --- /dev/null
> +++ b/mingw-w64-crt/math/arm/ldexpl.c
> @@ -0,0 +1,16 @@
> +/**
> + * This file has no copyright assigned and is placed in the Public Domain.
> + * This file is part of the mingw-w64 runtime package.
> + * No warranty is given; refer to the file DISCLAIMER.PD within this package.
> + */
> +
> +#include <math.h>
> +
> +long double ldexpl(long double x, int n)
> +{
> +#if defined(__arm__) || defined(_ARM_)
> + return ldexp(x, exp);
Shouldn't `exp` be `n` here?
> +#else
> +#error Not supported on your platform yet
> +#endif
> +}
> diff --git a/mingw-w64-crt/math/arm64/ldexpl.c
> b/mingw-w64-crt/math/arm64/ldexpl.c
> new file mode 100644
> index 0000000..8f37d8e
> --- /dev/null
> +++ b/mingw-w64-crt/math/arm64/ldexpl.c
> @@ -0,0 +1,16 @@
> +/**
> + * This file has no copyright assigned and is placed in the Public Domain.
> + * This file is part of the mingw-w64 runtime package.
> + * No warranty is given; refer to the file DISCLAIMER.PD within this package.
> + */
> +
> +#include <math.h>
> +
> +long double ldexpl(long double x, int n)
> +{
> +#if defined(__aarch64__) || defined(_ARM64_)
> + return ldexp(x, exp);
Ditto.
> +#else
> +#error Not supported on your platform yet
> +#endif
> +}
>
--
Best regards,
LH_Mouse
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public