Thread Links Date Links
Thread Prev Thread Next Thread Index Date Prev Date Next Date Index

Re: Table 4 proposal version 0.2...



John Pryce wrote:
> How does double-double work?  Must the two pieces have
> disjoint exponent ranges, so there is only one way to
> represent a nonzero number?

On systems that use double+double arithmetic (e.g. AIX with
ldbl128 support) it could be onerous to require every result
to be canonical, i.e. non-overlapping significant bits -- but
even with that restriction there are often two representations,
differing in the sign of the less-significant part.  You would
need the additional rule of same-sign for top and bottom to
get a unique representation.  The AIX documentation states
that the magnitude of the low-order part is "typically" less
than 0.5 ulp of the high-order part, which suggests that the
signs could indeed frequently mismatch.  (The rule that the
bottom must not exceed .5 ulp of the top would almost lead to
canonical results, but would have to be combined with a rule
for breaking ties, e.g. to an even upper part.)

Btw, I would still characterize double+double as a floating-point
type, albeit not an IEEE 754 type.

The issue does become significant when we consider "tightest"
enclosures, because that could dramatically expose the variable
precision of the double+double representation.  Consider the
product [1-ulp,1]*[1+ulp,1+2ulp].  In double+double arithmetic
the lower bound 1-ulp¬2 is typically representable, whereas
in a normal format it would have to be rounded down to 1-ulp.
What should we say about this?

(I should note in passing that AIX long double arithmetic is not
directly usable for interval arithmetic because it does not support
directed rounding -- only round-to-nearest.  I actually broke that
rule in my recent support of new radix conversions for AIX, which do
honour all four rounding directions -- but that nice property goes
away as soon as arithmetic is performed on the long double results.)

Michel.
---Sent: 2012-03-17 23:02:35 UTC