From: Brian Inglis <Brian.Inglis@SystematicSw.ab.ca>
To: newlib@sourceware.org
Subject: Re: accuracy of mathematical functions
Date: Fri, 5 Feb 2021 17:40:30 -0700 [thread overview]
Message-ID: <674c2347-c833-150d-3e4a-8e3867ada8a4@SystematicSw.ab.ca> (raw)
In-Reply-To: <CAF9ehCXy_tXOMw1EgN8QfQaPTMahRBNzfi4H77Hc7dKMWLOXtw@mail.gmail.com>
On 2021-02-05 16:46, Joel Sherrill wrote:
> On Fri, Feb 5, 2021 at 5:01 PM Brian Inglis wrote:
>> On 2021-02-05 03:43, Paul Zimmermann wrote:
>>> I have updated my comparison with the newly released 2.33 version.
>>> No big difference with the previous version, except that I included
>>> the "long double" format (aka ldbl-96), which is not supported by Newlib.
>>>
>>> https://members.loria.fr/PZimmermann/papers/#accuracy
>>
>> Thanks for doing this work and making it available is greatly appreciated.
>>
>> While newlib is mainly targeted to smaller platforms, the Cygwin port math
>> library supports gcc __FLT64X_...__/__FLT128_...__ under
>> .../newlib-cygwin/winsup/cygwin/math/ and related includes.
> Any thoughts on what's required to have long double support on the targets
> where long double != double? Someone was recently cleaning up the warnings
> from the RTEMS tests which check that the headers match POSIX's man page and
> I generated this list of architectures from the RTEMS tools and which have
> long double support in libm.a
>
> no aarch64-rtems6
> yes arm-rtems6
> yes bfin-rtems6
> no i386-rtems6
> yes lm32-rtems6
> no m68k-rtems6
> yes microblaze-rtems6
> yes mips-rtems6
> yes moxie-rtems6
> yes nios2-rtems6
> yes or1k-rtems6
> yes powerpc-rtems6
> no riscv-rtems6
> yes sh-rtems6
> no sparc64-rtems6
> yes sparc-rtems6
> yes v850-rtems6
> no x86_64-rtems6
>
> It probably is a decent GSoC project if upstream sources for long double on
> some of those architectures can be identified for potential incorporation.
ARM aarch64 probably have c and S sources available, maybe recent PowerPC.
Cygwin sources appear to be from mingw-w64 and are PD, ZPL, or unspecified:
$cd ~/src/newlib-cygwin/winsup/cygwin/math/
$ egrep -c 'Zope|PD' *l.* | pr -4th ""
acoshl.c:1 complex_internal. floorl.S:1 nearbyintl.S:1
acosl.c:1 conjl.c:1 fmal.c:1 nextafterl.c:1
asinhl.c:1 copysignl.S:1 fmaxl.c:1 pow10l.c:0
asinl.c:1 coshl.c:1 fminl.c:1 powil.c:1
atan2l.c:1 cosl.c:1 fmodl.c:1 powl.c:1
atanhl.c:1 cosl_internal.S:1 frexpl.S:1 remainderl.S:1
atanl.c:1 cpowl.c:1 ilogbl.S:1 remquol.S:1
cabsl.c:1 cprojl.c:1 internal_logl.S:1 rintl.c:1
cacosl.c:1 creal.def.h:1 ldexpl.c:1 roundl.c:1
cargl.c:1 creall.c:1 lgammal.c:1 scalbl.S:1
casinl.c:1 csinl.c:1 llrintl.c:1 scalbnl.S:1
catanl.c:1 csqrtl.c:1 llroundl.c:1 sinhl.c:1
cbrtl.c:1 ctanl.c:1 log10l.S:1 sinl.c:1
ccosl.c:1 erfl.c:1 log1pl.S:1 sinl_internal.S:1
ceil.S:1 exp10l.c:0 log2l.S:1 sqrtl.c:1
ceill.S:1 exp2l.S:1 logbl.c:1 tanhl.c:1
cexpl.c:1 expl.c:1 logl.c:1 tanl.S:1
cimagl.c:1 expm1l.c:1 lrintl.c:1 tgammal.c:1
clog10l.c:1 fabsl.c:1 lroundl.c:1 truncl.c:1
clogl.c:1 fdiml.c:1 modfl.c:1
$ head ???10l.c
==> exp10l.c <==
#undef exp10l
#include <math.h>
long double
exp10l (long double x)
{
return powl (10.0L, x);
}
==> pow10l.c <==
#undef pow10l
#include <math.h>
long double
pow10l (long double x)
{
return powl (10.0L, x);
}
>> As you may already be aware, clang and gcc have added support for ARM
>> __FLT16/__fp16, AMD and Intel have added it to x86/amd64 as CVT16/FP16C
>> https://en.wikipedia.org/wiki/F16C, and more compiler and library support
>> are likely to follow, as they are already used in graphics and GPGPU
>> areas.
>
> What would this require from newlib, if anything? He asks ignorantly. :)
More of a comment to the OP for future exhaustive testing.
Indication of demand or need; arch and compiler support; adopt/adapt software
library?
--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]
next prev parent reply other threads:[~2021-02-06 0:40 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-05 10:43 Paul Zimmermann
2021-02-05 23:01 ` Brian Inglis
2021-02-05 23:46 ` Joel Sherrill
2021-02-06 0:40 ` Brian Inglis [this message]
2021-02-06 6:23 ` Paul Zimmermann
2021-08-03 7:59 Paul Zimmermann
2021-09-07 15:01 Paul Zimmermann
2022-02-16 8:42 Accuracy of Mathematical Functions Paul Zimmermann
2022-08-29 10:50 Paul Zimmermann
2023-02-14 8:13 Paul Zimmermann
2023-09-21 7:24 Paul Zimmermann
2024-02-15 14:54 Paul Zimmermann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=674c2347-c833-150d-3e4a-8e3867ada8a4@SystematicSw.ab.ca \
--to=brian.inglis@systematicsw.ab.ca \
--cc=newlib@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).