Hello, using g++ 4.3.4 (on Debian testing) I discovered the following problem. I compile the program ################################################################ #include <iostream> #include <iomanip> #include <cmath> using namespace std; double length = 0.00106722283403500495; double angle = 0.60066412215710574; struct Vec { double x[2]; }; int main() { cout << setprecision(18); Vec vec = { cos(angle) * length, sin(angle) * length }; cout << vec.x[0] << ' ' << vec.x[1] << endl; cout << cos(angle) * length << endl; cout << vec.x[0] - cos(angle) * length << endl; } ################################################################ with g++ -O0 -static test.cc and it produces 0.000880416620183556821 0.000603184177834822054 0.000880416620183556821 0 However, with g++ -O1 -static test.cc it produces 0.00088041662018355693 0.000603184177834822054 0.000880416620183556821 1.08420217248550443e-19 This is on a computer with an Intel Core 2 CPU (I tried several different variants). If I take the second (-O1) binary and execute it on an Opteron it produces the _first_ result. Thus, the same static binary produces different results on different processors! I observe this problem also with g++ 4.4.2. It seems only a tiny difference, but this inconsistency makes my Montecarlo simulation produce different results on different machines. Any help with this would be greatly appreciated. Christoph