13 #include "msdevstudio/MSconfig.h"
24 #ifdef ITERATOR_MEMBER_DEFECT
32 Exponential::Exponential ( )
37 Exponential::Exponential (
double prefactor,
double scale )
41 m_parms[0] = prefactor;
45 void Exponential::initialize ()
47 m_name =
"Exponential";
48 m_parm_names.push_back (
"Prefactor" );
49 m_parm_names.push_back (
"Scale" );
59 double Exponential::operator () (
double x )
const
61 return m_parms[0]*exp( -x/m_parms[1] );
71 max_x = (min_x + max_x)/2.;
74 double min_y = helper->
valueAt (min_x);
75 double max_y = helper->
valueAt (max_x);
76 if (min_y != 0 && max_y != 0) {
77 m_parms[1] = ( min_x - max_x ) / log( max_y/min_y );
78 m_parms[0] = max_y / exp( -max_x/m_parms[1] );
81 }
catch (std::string &message) {
82 std::cerr << message << std::endl;
90 double Exponential::derivByParm (
int i,
double x )
const
94 return exp( -x/m_parms[1] );
98 return operator()(x)*(x/m_parms[1]/m_parms[1]);