On my CentOS 5 box, in a C++ program that does much arithmetic, including numerous matrix multiplications, I have a situation in in which the result depends on the nature of nearby I/O. Thus, with all arithmetic done with type double, and where values are mostly in the range [-1.0e0,+1.0e0] or nearby, I do:
cerr << "some stuff" << endl; mat3 = matmult(mat1,mat2);
I get a difference of the order 1.0e-15 depending on whether the cerr line does or does not end in "endl" as shown.
I am imagining that there is some "randomness" in the roundoff that depends on the I/O situation. Is this credible? Any other suggestions?
Thanks for your help, Mike.