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.]
 
     
    