From: Ludovic Brenta <ludovic@ludovic-brenta.org>
Subject: Re: Comparing Floating Point Values
Date: Wed, 13 Dec 2006 17:51:05 +0100
Date: 2006-12-13T17:51:05+01:00 [thread overview]
Message-ID: <87ejr368p2.fsf@ludovic-brenta.org> (raw)
In-Reply-To: 1166026474.277616.267400@f1g2000cwa.googlegroups.com
markp writes:
> I was wondering if there was a convention for comparing 2 floats
> dealing with significant digits. For example, if I had 2 variables (x
> and y) and wanted to see if they were equal in an if statement, is
> there a standard way to do a compare based on "x" significant digits?
The way we usually do this is by defining our own floating-point types
and redefine the "=" operator to deal with the precision appropriate
for the type and the application. For example:
type Kilograms is digits 6 range 0.0 .. 600_000.0;
function "=" (L, R : Kilograms) is
Epsilon : constant Kilograms := 0.1;
begin
if L < R then
return R - L < Epsilon;
else
return L - R < Epsilon;
end if;
end "=";
The above uses an absolute precision; it would be trivial to use a
relative precision instead.
HTH
--
Ludovic Brenta.
next prev parent reply other threads:[~2006-12-13 16:51 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-13 16:14 Comparing Floating Point Values markp
2006-12-13 16:45 ` Adam Beneschan
2006-12-13 16:51 ` Ludovic Brenta [this message]
2006-12-13 20:02 ` Jeffrey R. Carter
2006-12-13 20:13 ` Gautier
2006-12-14 2:21 ` Steve
2006-12-14 22:22 ` Martin
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox