Ignore:
Timestamp:
Dec 1, 2009 10:39:26 AM (15 years ago)
Author:
Jae Cho <jhjcho@…>
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
Message:

Trick applied to the formula of Schulz func to fix having many singularities near small sigmas

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/sans/models/c_models/parameters.cpp

    reba9885 rc5607fa  
    156156 
    157157double lognormal_weight(double mean, double sigma, double x) { 
    158          
    159         double sigma2 = pow(sigma, 2);   
     158 
     159        double sigma2 = pow(sigma, 2); 
    160160        return 1/(x*sigma2) * exp( -pow((log(x) -mean), 2) / (2*sigma2)); 
    161   
     161 
    162162} 
    163163 
     
    217217double schulz_weight(double mean, double sigma, double x) { 
    218218        double vary, expo_value; 
    219     double z = pow(mean/ sigma, 2)-1;    
     219    double z = pow(mean/ sigma, 2)-1; 
    220220        double R= x/mean; 
    221221        double zz= z+1; 
    222         return  pow(zz,zz) * pow(R,z) * exp(-1*R*zz)/((mean) * tgamma(zz)) ; 
     222        double expo; 
     223        expo = zz*log(zz)+z*log(R)-R*zz-log(mean)-lgamma(zz); 
     224        return  exp(expo); 
    223225} 
    224226 
Note: See TracChangeset for help on using the changeset viewer.