comp.lang.ada
 help / color / mirror / Atom feed
From: Martin Krischik <krischik@users.sourceforge.net>
Subject: Re: Floating-Point Numbers and Internal Representation
Date: Sun, 04 Dec 2005 12:12:45 +0100
Date: 2005-12-04T12:12:45+01:00	[thread overview]
Message-ID: <1843142.NoXPLYbHQs@linux1.krischik.com> (raw)
In-Reply-To: slrndp5hlm.k99.mccratch@thrakhath.kilrathi.lcn

Matthias Kretschmer wrote:

> Hello,
> 
> I had a problem in one of my programs, that was caused by the internal
> representation of floating-point numbers in the fpu. Concrete:
> calculating the value of an optimum for some large number of objects,
> then in a second doing something with all optimal objects. The problem
> was, that when doing the calculation the second time, the compiler left
> the floating-point number in the fpu which had a higher precision than
> the representation I choosed, so comparing for equality returns always
> "False". The problem would be solved by some operation truncating the
> floating-point number to the precision I orginally wanted or used. I
> could of course put all the values in an array or list and then finding
> optimum and optimal objects, but I don't want to go this way. In C iirc
> I could use a volatile variable to ensure the compiler will put the
> value in and read from the variable before comparing, but to achieve
> something similiar (truncating the precision to that of the type used)
> in Ada?

Yes it is called "pragma Volatile".

> My current solution is to enhance precision to compiler maximum which
> seems to be the machine maximum. But I would like to know if there are
> any better solutions?

Comparting Floatingpoing values in equality is an allways tricky. And I
could bet I answered this question before.

Independent of CPU/Language used I would allways suggest to use

abs (X - Y) < epsilon

with a sufficient but not to small epsilon instead.

Martin

-- 
mailto://krischik@users.sourceforge.net
Ada programming at: http://ada.krischik.com



  reply	other threads:[~2005-12-04 11:12 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-12-04 10:33 Floating-Point Numbers and Internal Representation Matthias Kretschmer
2005-12-04 11:12 ` Martin Krischik [this message]
2005-12-04 14:11   ` Martin Dowie
2005-12-04 14:50     ` Dmitry A. Kazakov
2005-12-04 15:15       ` Matthias Kretschmer
2005-12-04 18:14         ` Dmitry A. Kazakov
2005-12-04 21:16           ` Matthias Kretschmer
2005-12-06  2:54     ` Steve
2005-12-05 23:38   ` Randy Brukardt
2005-12-04 11:46 ` Dmitry A. Kazakov
2005-12-04 21:29 ` Gautier Write-only
replies disabled

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