Changeset c5607fa in sasview for sansmodels/src/sans/models/c_extensions
- Timestamp:
- Dec 1, 2009 8:39:26 AM (15 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 437a9f0
- Parents:
- ef9ed58
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sansmodels/src/sans/models/c_extensions/schulz.c
reba9885 rc5607fa 12 12 * Function to evaluate 1D Schulz function. 13 13 * The function is normalized to the 'scale' parameter. 14 * 14 * 15 15 * f(x)=scale * math.pow(z+1, z+1)*math.pow((R), z)* 16 16 * math.exp(-R*(z+1))/(center*gamma(z+1) … … 22 22 */ 23 23 double schulz_analytical_1D(SchulzParameters *pars, double x) { 24 double z = pow(pars->center/ pars->sigma, 2)-1; 24 double z = pow(pars->center/ pars->sigma, 2)-1; 25 25 double R= x/pars->center; 26 26 double zz= z+1; 27 return pars->scale * pow(zz,zz) * pow(R,z) * exp(-1*R*zz)/((pars->center) * tgamma(zz)) ; 27 double expo; 28 expo = log(pars->scale)+zz*log(zz)+z*log(R)-R*zz-log(pars->center)-lgamma(zz); 29 30 return exp(expo);//pars->scale * pow(zz,zz) * pow(R,z) * exp(-1*R*zz)/((pars->center) * tgamma(zz)) ; 28 31 } 29 32 … … 31 34 * Function to evaluate 2D schulz function 32 35 * The function is normalized to the 'scale' parameter. 33 * 36 * 34 37 * f(x,y) = Schulz(x) * Schulz(y) 35 * 38 * 36 39 * where both Shulzs share the same parameters. 37 * 40 * 38 41 * @param pars: parameters of the schulz 39 42 * @param x: x-value … … 43 46 double schulz_analytical_2DXY(SchulzParameters *pars, double x, double y) { 44 47 return schulz_analytical_1D(pars, x) * schulz_analytical_1D(pars, y); 45 } 48 } 46 49 47 50 /** 48 51 * Function to evaluate 2D Schulz function 49 52 * The function is normalized to the 'scale' parameter. 50 * 53 * 51 54 * f(x,y) = Schulz(x) * Schulz(y) 52 * 55 * 53 56 * where both Gaussians share the same parameters. 54 * 57 * 55 58 * @param pars: parameters of the gaussian 56 59 * @param length: length of the (x,y) vector … … 60 63 double schulz_analytical_2D(SchulzParameters *pars, double length, double phi) { 61 64 return schulz_analytical_2DXY(pars, length*cos(phi), length*sin(phi)); 62 } 65 }
Note: See TracChangeset
for help on using the changeset viewer.