00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifdef ETIRM_NO_DIR_PREFIX
00019 #include "MStepIRT.h"
00020 #else
00021 #include "etirm/MStepIRT.h"
00022 #endif
00023
00024 namespace etirm
00025 {
00026
00027
00028
00029
00030
00031
00032
00033
00034 double MaxRelParamDiff(RealVector &oldParam, RealVector &newParam, Real typicalValue)
00035 {
00036 double reldiff = 0.0;
00037
00038 RealVector::iterator iold = oldParam.begin();
00039 RealVector::iterator inew = newParam.begin();
00040
00041 for (int n = oldParam.size(); n--; ++iold, ++inew)
00042 {
00043 Real d = *iold - *inew;
00044 Real denom = *inew;
00045 denom = (denom < 0.0) ? -denom : denom;
00046 denom = (denom < typicalValue) ? typicalValue : denom;
00047 if (denom != 0.0) d /= denom;
00048 d = (d < 0.0) ? -d : d;
00049 if (reldiff < d) reldiff = d;
00050 }
00051
00052 return reldiff;
00053 }
00054
00055 }