ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Floating point number comparison (https://www.excelbanter.com/excel-programming/356852-floating-point-number-comparison.html)

Edward Ulle

Floating point number comparison
 
I know this is the subject of many prior threads, but, I'm having
trouble comparing floatinp point numbers. Values in registers and
values in memory are not exactly equal, even though they were calculated
identically.

I was wondering if there is a library of functions to compare floating
point numbers, equal, less than, greater than, positive numbers and
negative numbers.

So far I only have one that I have confidence in.

x=y is Abs(x-y)<EPSILON.

Any leads would be appreciated.



*** Sent via Developersdex http://www.developersdex.com ***

Bernard Liengme

Floating point number comparison
 
One should never compare two real numbers (aka floating point) for EXACT
equality.
Your approach =ABS(x-y)<=EPSILON is the way to go.
best wishes
--
Bernard V Liengme
www.stfx.ca/people/bliengme
remove caps from email

"Edward Ulle" wrote in message
...
I know this is the subject of many prior threads, but, I'm having
trouble comparing floatinp point numbers. Values in registers and
values in memory are not exactly equal, even though they were calculated
identically.

I was wondering if there is a library of functions to compare floating
point numbers, equal, less than, greater than, positive numbers and
negative numbers.

So far I only have one that I have confidence in.

x=y is Abs(x-y)<EPSILON.

Any leads would be appreciated.



*** Sent via Developersdex http://www.developersdex.com ***




Edward Ulle

Floating point number comparison
 
Yes, but what about other operations <, <, , <= and =? Has anyone
developed efficient routines to do this? Any floating point number can
be x +/- EPSILON.

*** Sent via Developersdex http://www.developersdex.com ***

Bernard Liengme

Floating point number comparison
 
Not sure what you mean.
Case 1, I want to know if x=y
=IF(ABS(x-y)<=1E-6, "equal", "unequal")
Of course, by "equal" I mean that x is within y +- epsilon, and "unequal"
means x is at least epsilon larger/smaller than y

Case 2 I want to know if x is 10 units larger than y
Without worrying about IEEE precision =IF(x-y=10, "true", "false")
Would I have need to worry about IEEE here?
Suppose x=20 and y = 10.000000000009
Would I want the test to pas or fail?
If I think this should pass: =IF(ROUND(x-y,5)=10, "true", "false")
I have decided that any difference that round to 10 at 5 place precision is
OK.

Any help?
--
Bernard V Liengme
www.stfx.ca/people/bliengme
remove caps from email

"Edward Ulle" wrote in message
...
Yes, but what about other operations <, <, , <= and =? Has anyone
developed efficient routines to do this? Any floating point number can
be x +/- EPSILON.

*** Sent via Developersdex http://www.developersdex.com ***




Edward Ulle

Floating point number comparison
 
Basically what I mean is are there any efficient replacements for =, <,
<, , <= and = for floating point number comparison that take into
account EPSILON.

I have developed 6 functions FPEqual, FPNotEqual, etc. that do this but
they may not be the most efficient.

FYI, the macro I've developed is used for an engineering application in
which floating point numbers are the norm and there are thousands of
floating point number comparison performed.



*** Sent via Developersdex http://www.developersdex.com ***


All times are GMT +1. The time now is 12:21 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com