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