comp.lang.ada
 help / color / mirror / Atom feed
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.



  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