00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "Minuit2/MnMachinePrecision.h"
00011 #include "Minuit2/MnTiny.h"
00012
00013 namespace ROOT {
00014
00015 namespace Minuit2 {
00016
00017
00018 MnMachinePrecision::MnMachinePrecision() :
00019 fEpsMac(4.0E-7),
00020 fEpsMa2(2.*sqrt(4.0E-7)) {
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 MnTiny mytiny;
00032
00033
00034 double epstry = 0.5;
00035 double epsbak = 0.;
00036 double epsp1 = 0.;
00037 double one = 1.0;
00038 for(int i = 0; i < 100; i++) {
00039 epstry *= 0.5;
00040 epsp1 = one + epstry;
00041 epsbak = mytiny(epsp1);
00042 if(epsbak < epstry) {
00043 fEpsMac = 8.*epstry;
00044 fEpsMa2 = 2.*sqrt(fEpsMac);
00045 break;
00046 }
00047 }
00048
00049 }
00050
00051 }
00052
00053 }