00001
00002
00011 #ifndef _Erfc_H_
00012 #define _Erfc_H_
00013
00014 #include "FunctionBase.h"
00015
00016
00043 class MDL_HIPPOPLOT_API Erfc : public FunctionBase
00044 {
00045 private:
00046 enum{MEAN,SIGMA,NORM};
00047
00048 protected:
00050 virtual void initialize();
00051
00052 public:
00054 Erfc ();
00055
00057 Erfc ( double mean, double sigma, double norm );
00058
00059 virtual FunctionBase * clone () const;
00060
00062 virtual double operator () ( double x ) const;
00063
00064 virtual void initialParameters ( const FunctionHelper * helper );
00065
00066
00067 double calcErfc(double x) const;
00068
00069 protected:
00070 virtual double derivByParm ( int i, double x ) const;
00071
00072 double Erfc::derivByRed(const double value) const;
00073
00074 private:
00076 inline double calcRed(double value) const
00077 {
00078 if(m_parms[SIGMA] == 0.0) {
00079 Erfc * p = const_cast < Erfc * > ( this );
00080 p->m_parms[SIGMA] = 0.0001;
00081 }
00082
00083 return (value - m_parms[MEAN])/m_parms[SIGMA];
00084 }
00085
00086
00087
00088 };
00089
00090 #endif// _Erfc_H_