--- Comment #1 from pinskia at gcc dot gnu dot org 2006-01-04 15:17 ---
Hmm, actually there is no rounding from TF to DF except for the fact that upper
potion of the TF mode is taken only.
I am thinking this testcase is invalid for 128bit IBM long double format.
IBM 128bit long double
--- Comment #2 from joseph at codesourcery dot com 2006-01-04 16:47 ---
Subject: Re: Wrong long double to float conversion
On Wed, 4 Jan 2006, pinskia at gcc dot gnu dot org wrote:
> Hmm, actually there is no rounding from TF to DF except for the fact that
> upper
> potion of the TF
--- Comment #3 from pinskia at gcc dot gnu dot org 2006-01-04 17:04 ---
http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/128bit_long_double_floating-point_datatype.htm
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25661
--- Comment #4 from pinskia at gcc dot gnu dot org 2006-01-04 17:13 ---
>From that page:
The 128-bit implementation differs from the IEEE standard for long double in
the following ways:
Supports only round-to-nearest mode. If the application changes the rounding
mode, results are undefi
--- Comment #5 from dje at gcc dot gnu dot org 2006-01-05 18:26 ---
Andrew, you are confusing the issue by quoting the AIX documentation. Darwin
and Linux implement different semantics from AIX. On Darwin and Linux, the
most significant doubleword always is correctly rounded, so it con
--- Comment #6 from amodra at bigpond dot net dot au 2006-01-06 09:31
---
In answer to comment #1, using just the upper double of the TFmode long double
*is* rounding to double. As David says in #5, the upper double is the value of
the long double rounded to double..
--
http://gcc
--- Comment #7 from pinskia at gcc dot gnu dot org 2006-01-27 18:03 ---
But this is by design and not a bug in GCC.
--
pinskia at gcc dot gnu dot org changed:
What|Removed |Added
-
--- Comment #8 from amodra at bigpond dot net dot au 2006-01-28 00:17
---
There is no reason to say that wrong long double -> float conversion code
emitted by gcc is some fault of the long double design. It is relatively easy
to convert correctly:
float long_double_to_float (long doub