Short question: is the behavior of comparison operators defined at max precision? Meaning, if I have two numbers (x and y) that are identical up to precision, should I always expect the same answer when I do x < y?
I realize this might seem like a dumb question, but let me elaborate.
I am working with double
and I have an array of numbers like:
0: 62536.5477752959
1: 62536.4840613718
2: 62536.4576412381
3: 62522.8487197062
4: 62536.5473896233
5: 62536.5467941254
6: 62527.3508907998
7: 62536.5477752959
8: 62517.5900098039
9: 62536.5477752959
Notice that entries 0, 7 and 9 have the same value.
When I do (something like this) :
int low = 0, high = 0;
for(int i = 0; i < N; ++i) {
if(x[i] < x[low])
low = i;
if(x[i] > x[high])
high = i;
}
cout << "low: " << low << " high: " << high << endl;
I sometimes get: low: 8 high: 0
, sometimes: low: 8 high: 7
I would have expected always the lowest index value.
Any ideas?
[edit missing braces.]