comp.lang.ada
 help / color / mirror / Atom feed
From: seas.gwu.edu!mfeldman@uunet.uu.net  (Michael Feldman)
Subject: Re: Ada Readability, Book Reference
Date: 4 Jan 93 17:44:24 GMT	[thread overview]
Message-ID: <1993Jan4.174424.5699@seas.gwu.edu> (raw)

In article <1993Jan4.093155.11894@nobeltech.se> leeu@nobeltech.se (Leif Euren) 
writes:
>
[stuff deleted]
>>
>>In the specific case, (6.0 * 1.0)/3.0 can yield a different result from 
>>6.0 * (1.0 / 3.0) because 1.0/3.0 cannot be exactly represented.
>>Therefore an expression like
>>  6.0 * (1.0 / 3.0) = (6.0 * 1.0) / 3.0
>>may not evaluate to True. Traditional floating-point gotcha.
>
>Er... This is not a very good example. The constants used are of
>universal_real type, and according to LRM 4.10(4) "... if a universal
>expression is a static expression, then the evaluation must be exact."
>
>But if I write
>
>	B := 1.0;
>
>	if 6.0 * (B / 3.0) = (6.0 * B) / 3.0 then
>
>	else
>
>	end if;
>
>your arguments hold true.

Hmmm. How on earth could 1.0/3.0 be exact? What would the value be?

I checked my Annotated LRM (thanks to Karl Nyberg!) and found AI-00209:
"An implementation can refuse to evaluate a static universal real expression
only if there are insufficient resources to evaluate the expression exactly,
e.g., if there is insufficient memory available. Inexact results must not
be delivered."

This is interesting. I take it, then, that 1.0/3.0 will be flagged by
the compiler, because - unless a rational representation is being
used, which is always possible, I suppose - there aren't enough bits
in a megabyte to evaluate it exactly. Do compilers use rationals
for this?  I'll be back later, after a test or two of this!

Mike Feldman
------------------------------------------------------------------------
Michael B. Feldman
co-chair, SIGAda Education Committee

Professor, Dept. of Electrical Engineering and Computer Science
School of Engineering and Applied Science
The George Washington University
Washington, DC 20052 USA
(202) 994-5253 (voice)
(202) 994-5296 (fax)
mfeldman@seas.gwu.edu (Internet)

"Americans want the fruits of patience -- and they want them now."
------------------------------------------------------------------------

             reply	other threads:[~1993-01-04 17:44 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-01-04 17:44 Michael Feldman [this message]
  -- strict thread matches above, loose matches on Subject: below --
1993-01-05 16:50 Ada Readability, Book Reference agate!spool.mu.edu!sdd.hp.com!zaphod.mps.ohio-state.edu!cis.ohio-state.ed
1993-01-05 12:55 Robert Firth
1993-01-04 23:19 Tucker Taft
1993-01-04  9:31 agate!spool.mu.edu!enterpoop.mit.edu!eru.mt.luth.se!lunic!sunic!nobeltech
1993-01-03 15:28 Orville R. Weyrich
1992-12-30  3:51 Michael Feldman
1992-12-29 19:35 Alex Blakemore
replies disabled

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