mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Szabolcs Nagy <nsz@port70.net>
To: musl@lists.openwall.com
Subject: Re: [PATCH] Make musl math depend less on libgcc builtins
Date: Thu, 11 Sep 2014 14:26:51 +0200	[thread overview]
Message-ID: <20140911122651.GH21835@port70.net> (raw)
In-Reply-To: <20140911114207.GA5041@zx-spectrum>

* Sergey Dmitrouk <sdmitrouk@accesssoftek.com> [2014-09-11 14:42:07 +0300]:
> > gcc just happens to work usually with -frounding-math, clang makes no attempt
> > to undo its optimizations with any compiler flags (except -O0 which is not
> > what most ppl want) like constant folding 1/0.0 into INFINITY
> 
> I though that lack of -frounding-math flag support in Clang might be the
> reason of errors, but I didn't realize optimizations can harm floating
> point operations.
> 

note that constant folding 1/0.0 is valid if FENV_ACCESS is OFF
(it is off by default), however if FENV_ACCESS ON is not supported
then ON should be always assumed and then constant folding is not ok
(this is where both gcc and clang are wrong when -std=c99 is specified
however they don't claim complete annex f support so it is hard to
argue this point)

http://port70.net/~nsz/c/c11/n1570.html#F.8.4p1

> > this should not be needed, overflowing float to int conversion
> > raises the invalid flag implicitly, if it does not then clang/llvm
> > generates wrong code for the conversion
> 
> Well, it doesn't, will need to figure out why.  Because of strange
> results I interpreted the whole thing in a wrong way, as if exceptions
> were semi automatic and libc implementation had to raise some exceptions
> manually in places where things defined by C standard differ from what
> IEEE754 implementation gives us.  You helpful comments sorted that out
> for me.
> 
> > > diff --git a/src/math/sqrtl.c b/src/math/sqrtl.c
> > > index 83a8f80..0872e15 100644
> > > --- a/src/math/sqrtl.c
> > > +++ b/src/math/sqrtl.c
> > > @@ -3,5 +3,5 @@
> > >  long double sqrtl(long double x)
> > >  {
> > >  	/* FIXME: implement in C, this is for LDBL_MANT_DIG == 64 only */
> > > -	return sqrt(x);
> > > +	return isnan(x) ? 0.0l/0.0l : sqrt(x);
> > >  }
> >
> > why?
> 
> sqrt(NAN) raises INVALID exception, 0.0l/0.0l doesn't for me (well,
> optimization must've prevented that).
> 
> > nan is also sticky (passes through any arithmetics and
> > comes out as nan) so if sqrt(NAN) is not nan now then
> > that's a bug somewhere
> 
> sqrt(NAN) == NAN, I just wanted to silent the exception.

now that you mention i got reports of spurious invalid
exceptions for nan inputs on arm, but i don't have hardfloat
arm toolchain

if you have further info on this that would be helpful

(from the arm docs it seems to me that vfp sqrt should work
according to ieee so either that is wrong or our fenv
exception test is not ok on arm)


  reply	other threads:[~2014-09-11 12:26 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-11  7:35 Sergey Dmitrouk
2014-09-11  9:47 ` Szabolcs Nagy
2014-09-11 11:42   ` Sergey Dmitrouk
2014-09-11 12:26     ` Szabolcs Nagy [this message]
2014-09-11 13:22       ` Sergey Dmitrouk
2014-09-11 14:11         ` Szabolcs Nagy
2014-09-11 15:04           ` Sergey Dmitrouk
2014-09-11 15:14           ` Alexander Monakov
2014-09-11 15:34             ` Szabolcs Nagy
2014-09-18 14:28           ` Sergey Dmitrouk
2014-09-18 17:55             ` Szabolcs Nagy
2014-09-18 19:21               ` Sergey Dmitrouk

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=20140911122651.GH21835@port70.net \
    --to=nsz@port70.net \
    --cc=musl@lists.openwall.com \
    /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.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

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 NNTP newsgroup(s).