Allow to run precision checks also with fast-math enabled

Minuit and Minuit2 perform this test (simplified version):

void mntiny(double epsp1, double &epsbak){
   epsbak = epsp1 - 1;
}

int main(){

double epstry = .5;
double epsp1=0., epsbak= 0.;
for (int i = 1; i <= 100; ++i) {
   epstry *= .5;
   epsp1 = epstry + 1;
   mntiny(epsp1, epsbak);
   std::cout << epsp1 << " " << epsbak << std::endl;
   if (epsbak < epstry) {
      std::cout << "Success!\n";
      break;
   }
}
}

here gcc and clang are so good at optimising that they avoid to add
and subtract one. Adding volatile the compiler cannot optimise this
loop.