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.
next prev 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).