public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "joseph at codesourcery dot com" <sourceware-bugzilla@sourceware.org>
To: glibc-bugs@sourceware.org
Subject: [Bug math/14412] Removal of sysdeps/x86_64/fpu/s_sincos.S causes regressions
Date: Mon, 29 Apr 2013 20:58:00 -0000	[thread overview]
Message-ID: <bug-14412-131-WA20MBzZDG@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-14412-131@http.sourceware.org/bugzilla/>

http://sourceware.org/bugzilla/show_bug.cgi?id=14412

--- Comment #44 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2013-04-29 20:58:15 UTC ---
On Mon, 29 Apr 2013, bugdal at aerifal dot cx wrote:

> I don't have a copy of the latest IEEE 754 on hand (there's no free online
> version), but the consensus among implementors seems to be that a few special
> functions (such as sqrt) require correct rounding, and that the remaining
> functions (mostly transcendental) are required to give results with less than
> 1ulp of error. If sin(0x1p1000) is computed with incorrect argument reduction,
> it may have up to approximately 1e16 ulp error.

IEEE 754-2008, subclause 5.4 "formatOf general-computational operations", 
specifies squareRoot and fusedMultiplyAdd on the same basis as addition, 
subtraction, multiplication, division, convertFromInt, various operations 
converting to integer formats and a range of other operations.  As the 
2008 revision, these are "formatOf" operations (so including e.g. fused 
multiply-add of long double values, rounded once to float as the 
destination format), which do not necessarily have C bindings as of C11 - 
for the formatOf bindings you need DTS 18661-1.

Those operations are fully defined.  C11 Annex F for sqrt says "sqrt is 
fully specified as a basic arithmetic operation in IEC 60559. The returned 
value is dependent on the current rounding direction mode." (F.10.4.5) and 
similarly for fma (F.10.10.1) says "fma(x, y, z) computes xy + z, 
correctly rounded once.".

For most functions, not fully defined in IEEE 754 or C11, no specific 
accuracy requirements are imposed, although there are requirements on 
particular special cases in Annex F.  That is, Annex F leaves the 
implementation-defined accuracy from 5.2.4.2.2 paragraph 6 for most of the 
functions.

IEEE 754-2008 clause 9 "Recommended operations" lists a range of other 
functions with the requirement "A conforming function shall return results 
correctly rounded for the applicable rounding direction for all operands 
in its domain.".  These include, for example, both sin and sinPi (sine of 
pi times the argument).  There are no ISO C bindings for these operations 
at present.  I believe the intent is that TS 18661-4 will specify bindings 
to them, using names such as crsin for the correctly rounding functions 
(while probably adding names such as sinpi for non-correctly-rounding 
versions).  I believe the intent is that the correctly-rounding versions 
will be optional for implementations of TS 18661-4.  (The exhaustive 
searches required to prove correctly-rounding, bounded-resource-use 
implementations of various functions are as far as I know still not 
feasible for binary128, for example, and correct rounding without 
arbitrary-precision computation is particularly hard for functions of 
multiple arguments.)

I don't know where the idea of a 1ulp limit on errors being some sort of 
IEEE requirement came from.  As far as I'm concerned, sin(0x1p1000) giving 
a result that is "reasonably close" (say a few ulp) to the actual sine of 
0x1p1000 is a matter of quality of implementation, and giving a result 
that isn't wildly different is a matter of meeting the requirement that 
sin implements the sine function rather than some other function that 
returns random numbers for large inputs.

(For some of the additional functions in ISO 24747, the results for large 
values of certain inputs are specified as implementation-defined because 
of perceived difficulty of implementing the functions accurately for large 
inputs.  But none of the functions in C11 itself have such latitude to do 
something arbitrary for large inputs.)

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


  parent reply	other threads:[~2013-04-29 20:58 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-26 21:08 [Bug math/14412] New: Removal of sysdeps/x86_64/fpu/s_sincos.S causes pdf rendering time regression markus at trippelsdorf dot de
2012-07-26 21:09 ` [Bug math/14412] " markus at trippelsdorf dot de
2012-07-26 21:14 ` markus at trippelsdorf dot de
2012-07-27  6:44 ` aj at suse dot de
2012-07-27  7:18 ` markus at trippelsdorf dot de
2012-07-27 12:33 ` markus at trippelsdorf dot de
2012-07-28 22:15 ` bugdal at aerifal dot cx
2012-08-03  3:51 ` carlos_odonell at mentor dot com
2012-08-09 10:14 ` markus at trippelsdorf dot de
2012-08-19  9:31 ` markus at trippelsdorf dot de
2012-08-19  9:37 ` [Bug math/14412] Removal of sysdeps/x86_64/fpu/s_sincos.S causes regressions markus at trippelsdorf dot de
2012-12-03 22:13 ` davem at davemloft dot net
2012-12-04  0:00 ` carlos at systemhalted dot org
2013-04-25 21:48 ` wbrana at gmail dot com
2013-04-25 23:35 ` carlos at redhat dot com
2013-04-25 23:58 ` bugdal at aerifal dot cx
2013-04-26  0:14 ` bugdal at aerifal dot cx
2013-04-26  2:55 ` siddhesh at redhat dot com
2013-04-26  3:08 ` bugdal at aerifal dot cx
2013-04-26  3:50 ` siddhesh at redhat dot com
2013-04-26  6:29 ` markus at trippelsdorf dot de
2013-04-26  6:40 ` jakub at redhat dot com
2013-04-26 10:00 ` siddhesh at redhat dot com
2013-04-26 11:31 ` joseph at codesourcery dot com
2013-04-26 11:33 ` joseph at codesourcery dot com
2013-04-26 11:42 ` siddhesh at redhat dot com
2013-04-26 13:52 ` bugdal at aerifal dot cx
2013-04-26 13:55 ` bugdal at aerifal dot cx
2013-04-26 15:07 ` joseph at codesourcery dot com
2013-04-26 15:20 ` wbrana at gmail dot com
2013-04-29 10:29 ` siddhesh at redhat dot com
2013-04-29 10:50 ` wbrana at gmail dot com
2013-04-29 11:55 ` bugdal at aerifal dot cx
2013-04-29 12:32 ` wbrana at gmail dot com
2013-04-29 13:21   ` Ondřej Bílka
2013-04-29 13:21 ` neleai at seznam dot cz
2013-04-29 13:28 ` bugdal at aerifal dot cx
2013-04-29 14:04   ` Ondřej Bílka
2013-04-29 13:32 ` bugdal at aerifal dot cx
2013-04-29 13:36 ` wbrana at gmail dot com
2013-04-29 13:44 ` siddhesh at redhat dot com
2013-04-29 13:51 ` bugdal at aerifal dot cx
2013-04-29 14:04 ` neleai at seznam dot cz
2013-04-29 14:19 ` siddhesh at redhat dot com
2013-04-29 14:29 ` markus at trippelsdorf dot de
2013-04-29 14:48 ` bugdal at aerifal dot cx
2013-04-29 16:29   ` Ondřej Bílka
2013-04-29 16:29 ` neleai at seznam dot cz
2013-04-29 17:30 ` bugdal at aerifal dot cx
2013-04-29 20:58 ` joseph at codesourcery dot com [this message]
2013-04-30  5:41 ` siddhesh at redhat dot com
2013-04-30 21:37 ` bugdal at aerifal dot cx
2013-05-01 22:25 ` bugdal at aerifal dot cx
2013-07-16 20:08 ` nshmyrev at yandex dot ru
2013-09-07  6:55 ` carlos at redhat dot com
2014-02-06 18:31 ` jsm28 at gcc dot gnu.org
2014-06-17 18:55 ` fweimer at redhat dot com

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=bug-14412-131-WA20MBzZDG@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=glibc-bugs@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).