[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: comparing numbers using WHERE doesn't work

In article <9fbduu$ojm$1@uni00nw.unity.ncsu.edu>,
 "Miklos Z. Kiss" <mzkiss@unity.ncsu.edu> wrote:

>     I have noticed a strange occurence when I try to compare a number with
> all the elements of an array.  I'll show my situation in an example.
> Consider the following array:
> a = [2.0000, 2.1000, 2.2000, 2.3000, 2.4000, 2.5000, 2.6000].
> Let, x = 2.2000, y = 2.4000
>     So, I want to find which elements of a match up with x and y.
> Naturally, I do the following:
> index0 = WHERE(a EQ x)

I don't know if this is the problem, but using EQ to compare floating 
point numbers is generally not a good idea.  A better way to compare 
would be WHERE(abs(a-x) LT 2*epsilon), where epsilon is the floating 
point precision returned by machar().