comp.lang.ada
 help / color / mirror / Atom feed
From: Nick Roberts <nick.roberts@acm.org>
Subject: Re: Why no 'Floor for fixed point types
Date: Tue, 28 Oct 2003 18:23:31 +0000
Date: 2003-10-28T18:23:31+00:00	[thread overview]
Message-ID: <bnmc74$137bsk$1@ID-25716.news.uni-berlin.de> (raw)
In-Reply-To: <3F9DC3D6.4010106@comcast.net>

Robert I. Eachus wrote:

> ...  Trying to test even a small 
> subset of all possible reasonable values of 'Small and fixed-point 
> numbers just isn't reasonably possible without trillions of machines 
> crunching for millions of years.   So your compiler probably has 
> millions of errors in the low order bit that are just not practical to 
> find, and of no real interest to anyone anyway.

So possibly a question we should ask is "If nobody cares, does it count as 
an error (or bug)?" I admit, there might be a few Intel customers who'd 
like to know the answer to that one. :-)

> From experience with 
> fixed-point, the tough cases are of the form A := Fixed(B*C); where B 
> and C are of two other types than Fixed, and there is no easy 
> representation of Fixed'Small/(B_type'Small * C_type'Small).

What do you mean when you say these are tough cases? The RM95 essentially 
says that the result is either of the representable values (of the type 
Fixed here) which bound the precise result.

> In practice those cases are of little or no interest to anyone.  If your 
> compiler correctly implements A := A * I; where I is an Integer, or A := 
> B + C; where all three are of the same fixed-point type, then I and most 
> other fixed-point users won't care about those painful cases.  Other 
> than, of course, to note that they exist so that we can avoid them.

But why are the cases you refer to painful? Do they really need to be avoided?

I can certainly see that if a calculation causes a missile to hit someone's 
house (instead of the next door embassy), it might be quite painful for the 
occupants of the house. Are you saying that these cases are capable of 
being sources of nasty accidents, or are you saying that they are merely an 
academic curiosity, of no possible practical consequence? (And I realise 
this may be a slightly unfair question.)

> If you do use the three type multiplication operator, you should check 
> whether it is an easy or hard case, and avoid the hard cases.  (Any 
> conversion where the target type is the same as one of the multiplicand 
> types counts as easy, since it can be done with a single division.)

Would you please provide an example, to illustrate this point.

> I'm not trying to scare anyone here.  In fact one of the differences 
> between Ada 83 and Ada 95 is that the error bounds on the hard cases 
> were changed to make them easier to implement.  The hard cases do come 
> up, and for example, one of the harder parts of the Euro conversion was 
> to specify rules and error bounds for some of these three type 
> conversions.  (Say from Marks to Kronar, using today's market rates for 
> Marks to Euros and Euros to Kronar.)

I seem to dimly recall you mentioning this before, Robert. Was it in 
comp.lang.ada? I would like to review it on Google, if possible.

-- 
Nick Roberts




  reply	other threads:[~2003-10-28 18:23 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-23 20:09 Why no 'Floor for fixed point types Duncan Sands
2003-10-23 22:06 ` Robert I. Eachus
2003-10-24 16:00   ` Stephen Leake
2003-10-24 18:13     ` Duncan Sands
2003-10-23 23:10 ` Martin Dowie
2003-10-24 21:46 ` Nick Roberts
2003-10-25  4:29   ` Robert I. Eachus
2003-10-25 20:42     ` Nick Roberts
2003-10-25 22:40       ` Robert I. Eachus
2003-10-27 18:59         ` Randy Brukardt
2003-10-28  1:19           ` Robert I. Eachus
2003-10-28 18:23             ` Nick Roberts [this message]
2003-10-28 18:34               ` Stephane Richard
2003-10-29 19:26               ` Randy Brukardt
2003-10-30  4:55                 ` Robert I. Eachus
2003-10-28 18:10         ` Nick Roberts
2003-10-27 18:49       ` Randy Brukardt
2003-10-28 18:32         ` Nick Roberts
2003-10-29 19:29           ` Randy Brukardt
2003-10-30 23:41             ` Nick Roberts
2003-10-31 22:25               ` Randy Brukardt
2003-11-06  2:41                 ` Nick Roberts
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox