00001
00007
00008 double mgaussian_area(double x, double *a, \
00009 unsigned int dataset, unsigned int function)
00010 {
00011 double tmp1, tmp2;
00012
00013
00014
00015
00016
00017 tmp1 = ((x-a[1])/a[2])*((x-a[1])/a[2]);
00018 tmp2 = a[0] * exp(-tmp1/2.0) / (sqrt(2.0*M_PI) * a[2]);
00019
00020
00021
00022
00023
00024
00025 tmp2 *= d[dataset][function];
00026 return tmp2;
00027 }
00028 double mlorentzian_area(double x, double *a, \
00029 unsigned int dataset, unsigned int function)
00030 {
00031 double tmp1, tmp2;
00032
00033
00034
00035
00036
00037 tmp1 = ((x - a[1]) / a[2]);
00038 tmp2 = a[0] / (M_PI * a[2] * (1.0 + (tmp1*tmp1)));
00039
00040
00041
00042
00043
00044
00045 tmp2 *= d[dataset][function];
00046 return tmp2;
00047 }
00048 double mpearson_area(double x, double *a, \
00049 unsigned int dataset, unsigned int function)
00050 {
00051 double tmp1, tmp2, tmp3, tmp4;
00052
00053
00054
00055
00056
00057
00058 if ((a[3] < 0.0) || (a[3] >= GSL_SF_GAMMA_XMAX))
00059 {
00060 return 0.0;
00061 }
00062
00063 tmp1 = pow(2.0, (1.0/a[3]))-1.0;
00064 tmp2 = a[0] * a[3] * gsl_sf_gamma(a[3]) * sqrt(tmp1/a[3]);
00065 tmp3 = 1.0+(4.0*((x-a[1])/a[2])*((x-a[1])/a[2])*tmp1);
00066 tmp3 = pow(tmp3, a[3]);
00067 tmp4 = a[2] * sqrt(M_PI*a[3]) * gsl_sf_gamma(a[3]-0.5) * tmp3;
00068 tmp1 = tmp2/tmp4;
00069
00070
00071
00072
00073
00074
00075 tmp1 *= d[dataset][function];
00076 return tmp1;
00077 }
00078 double mline(double x, double *a, \
00079 unsigned int dataset, unsigned int function)
00080 {
00081 double tmp;
00082
00083
00084
00085
00086 tmp = a[0] * x + a[1];
00087 return tmp;
00088 }
00089 double sgaussian_area(double x, double *a)
00090 {
00091 double tmp1, tmp2;
00092
00093
00094
00095
00096
00097 tmp1 = ((x-a[1])/a[2])*((x-a[1])/a[2]);
00098 tmp2 = a[0] * exp(-tmp1/2.0) / (sqrt(2.0*M_PI) * a[2]);
00099 return tmp2;
00100 }
00101 double slorentzian_area(double x, double *a)
00102 {
00103 double tmp1, tmp2;
00104
00105
00106
00107
00108
00109 tmp1 = ((x - a[1]) / a[2]);
00110 tmp2 = a[0] / (M_PI * a[2] * (1.0 + (tmp1*tmp1)));
00111 return tmp2;
00112 }
00113 double spearson_area(double x, double *a)
00114 {
00115 double tmp1, tmp2, tmp3, tmp4;
00116
00117
00118
00119
00120
00121
00122 if ((a[3] < 0.0) || (a[3] >= GSL_SF_GAMMA_XMAX))
00123 {
00124 return 0.0;
00125 }
00126
00127 tmp1 = pow(2.0, (1.0/a[3]))-1.0;
00128 tmp2 = a[0] * a[3] * gsl_sf_gamma(a[3]) * sqrt(tmp1/a[3]);
00129 tmp3 = 1.0+(4.0*((x-a[1])/a[2])*((x-a[1])/a[2])*tmp1);
00130 tmp3 = pow(tmp3, a[3]);
00131 tmp4 = a[2] * sqrt(M_PI*a[3]) * gsl_sf_gamma(a[3]-0.5) * tmp3;
00132 tmp1 = tmp2/tmp4;
00133 return tmp1;
00134 }
00135 double sline(double x, double *a)
00136 {
00137 double tmp;
00138
00139
00140
00141
00142 tmp = a[0] * x + a[1];
00143 return tmp;
00144 }