Changeset 994d77f in sasmodels for sasmodels/models/ellipsoid.c


Ignore:
Timestamp:
Oct 30, 2014 10:33:53 AM (9 years ago)
Author:
Paul Kienzle <pkienzle@…>
Branches:
master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
Children:
ef2861b
Parents:
d087487b
Message:

Convert double to float rather than using real

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/models/ellipsoid.c

    r5d4777d r994d77f  
    1 real form_volume(real rpolar, real requatorial); 
    2 real Iq(real q, real sld, real solvent_sld, real rpolar, real requatorial); 
    3 real Iqxy(real qx, real qy, real sld, real solvent_sld, 
    4     real rpolar, real requatorial, real theta, real phi); 
     1double form_volume(double rpolar, double requatorial); 
     2double Iq(double q, double sld, double solvent_sld, double rpolar, double requatorial); 
     3double Iqxy(double qx, double qy, double sld, double solvent_sld, 
     4    double rpolar, double requatorial, double theta, double phi); 
    55 
    6 real _ellipsoid_kernel(real q, real rpolar, real requatorial, real cos_alpha); 
    7 real _ellipsoid_kernel(real q, real rpolar, real requatorial, real cos_alpha) 
     6double _ellipsoid_kernel(double q, double rpolar, double requatorial, double cos_alpha); 
     7double _ellipsoid_kernel(double q, double rpolar, double requatorial, double cos_alpha) 
    88{ 
    9     real sn, cn; 
    10     real ratio = rpolar/requatorial; 
    11     const real u = q*requatorial*sqrt(REAL(1.0) 
    12                    + cos_alpha*cos_alpha*(ratio*ratio - REAL(1.0))); 
     9    double sn, cn; 
     10    double ratio = rpolar/requatorial; 
     11    const double u = q*requatorial*sqrt(1.0 
     12                   + cos_alpha*cos_alpha*(ratio*ratio - 1.0)); 
    1313    SINCOS(u, sn, cn); 
    14     const real f = ( u==REAL(0.0) ? REAL(1.0) : REAL(3.0)*(sn-u*cn)/(u*u*u) ); 
     14    const double f = ( u==0.0 ? 1.0 : 3.0*(sn-u*cn)/(u*u*u) ); 
    1515    return f*f; 
    1616} 
    1717 
    18 real form_volume(real rpolar, real requatorial) 
     18double form_volume(double rpolar, double requatorial) 
    1919{ 
    20     return REAL(1.333333333333333)*M_PI*rpolar*requatorial*requatorial; 
     20    return 1.333333333333333*M_PI*rpolar*requatorial*requatorial; 
    2121} 
    2222 
    23 real Iq(real q, 
    24     real sld, 
    25     real solvent_sld, 
    26     real rpolar, 
    27     real requatorial) 
     23double Iq(double q, 
     24    double sld, 
     25    double solvent_sld, 
     26    double rpolar, 
     27    double requatorial) 
    2828{ 
    29     //const real lower = REAL(0.0); 
    30     //const real upper = REAL(1.0); 
    31     real total = REAL(0.0); 
     29    //const double lower = 0.0; 
     30    //const double upper = 1.0; 
     31    double total = 0.0; 
    3232    for (int i=0;i<76;i++) { 
    33         //const real cos_alpha = (Gauss76Z[i]*(upper-lower) + upper + lower)/2; 
    34         const real cos_alpha = REAL(0.5)*(Gauss76Z[i] + REAL(1.0)); 
     33        //const double cos_alpha = (Gauss76Z[i]*(upper-lower) + upper + lower)/2; 
     34        const double cos_alpha = 0.5*(Gauss76Z[i] + 1.0); 
    3535        total += Gauss76Wt[i] * _ellipsoid_kernel(q, rpolar, requatorial, cos_alpha); 
    3636    } 
    37     //const real form = (upper-lower)/2*total; 
    38     const real form = REAL(0.5)*total; 
    39     const real s = (sld - solvent_sld) * form_volume(rpolar, requatorial); 
    40     return REAL(1.0e-4) * form * s * s; 
     37    //const double form = (upper-lower)/2*total; 
     38    const double form = 0.5*total; 
     39    const double s = (sld - solvent_sld) * form_volume(rpolar, requatorial); 
     40    return 1.0e-4 * form * s * s; 
    4141} 
    4242 
    43 real Iqxy(real qx, real qy, 
    44     real sld, 
    45     real solvent_sld, 
    46     real rpolar, 
    47     real requatorial, 
    48     real theta, 
    49     real phi) 
     43double Iqxy(double qx, double qy, 
     44    double sld, 
     45    double solvent_sld, 
     46    double rpolar, 
     47    double requatorial, 
     48    double theta, 
     49    double phi) 
    5050{ 
    51     real sn, cn; 
     51    double sn, cn; 
    5252 
    53     const real q = sqrt(qx*qx + qy*qy); 
     53    const double q = sqrt(qx*qx + qy*qy); 
    5454    SINCOS(theta*M_PI_180, sn, cn); 
    55     const real cos_alpha = cn*cos(phi*M_PI_180)*(qx/q) + sn*(qy/q); 
    56     const real form = _ellipsoid_kernel(q, rpolar, requatorial, cos_alpha); 
    57     const real s = (sld - solvent_sld) * form_volume(rpolar, requatorial); 
     55    const double cos_alpha = cn*cos(phi*M_PI_180)*(qx/q) + sn*(qy/q); 
     56    const double form = _ellipsoid_kernel(q, rpolar, requatorial, cos_alpha); 
     57    const double s = (sld - solvent_sld) * form_volume(rpolar, requatorial); 
    5858 
    59     return REAL(1.0e-4) * form * s * s; 
     59    return 1.0e-4 * form * s * s; 
    6060} 
    6161 
Note: See TracChangeset for help on using the changeset viewer.