IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 19, 2007, 2:31:43 PM (19 years ago)
Author:
magnier
Message:

fixed minor bugs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/models/pmModel_SERSIC.c

    r14324 r14325  
    5151
    5252    psF32 f2 = pow(z,PAR[PM_PAR_7]);
    53     psF32 f1 = exp(-z);
     53    psF32 f1 = exp(-f2);
    5454    psF32 z0 = PAR[PM_PAR_I0]*f1;
    5555    psF32 f0 = PAR[PM_PAR_SKY] + z0;
    5656
     57    assert (isfinite(f2));
     58    assert (isfinite(f1));
     59    assert (isfinite(z0));
     60    assert (isfinite(f0));
     61
    5762    if (deriv != NULL) {
    5863        psF32 *dPAR = deriv->data.F32;
    5964
    60         // note difference from a pure gaussian: q = params->data.F32[PM_PAR_I0]*r
    61         psF32 z1 = z0*PAR[PM_PAR_7]*pow(z,PAR[PM_PAR_7] - 1.0);
     65        // gradient is infinite for z = 0; saturate at z = 0.01
     66        psF32 z1 = (z < 0.01) ? z0*PAR[PM_PAR_7]*pow(0.01,PAR[PM_PAR_7] - 1.0) : z0*PAR[PM_PAR_7]*pow(z,PAR[PM_PAR_7] - 1.0);
    6267
    6368        dPAR[PM_PAR_SKY]  = +1.0;
    6469        dPAR[PM_PAR_I0]   = +f1;
    6570        dPAR[PM_PAR_7]    = (z == 0.0) ? 0.0 : -z0*f2*log(z);
     71
     72        assert (isfinite(z1));
     73        assert (isfinite(dPAR[PM_PAR_7]));
    6674
    6775        dPAR[PM_PAR_XPOS] = +1.0*z1*(2.0*px/PAR[PM_PAR_SXX] + Y*PAR[PM_PAR_SXY]);
     
    7078        dPAR[PM_PAR_SYY]  = +2.0*z1*py*py/PAR[PM_PAR_SYY];
    7179        dPAR[PM_PAR_SXY]  = -1.0*z1*X*Y;
    72     }
    73     return(f);
     80        dPAR[PM_PAR_SXY]  = -1.0*z1*X*Y;
     81    }
     82    return (f0);
    7483}
    7584
     
    156165            break;
    157166        case PM_PAR_7:
    158             params_min =   0.1;
     167            params_min =   0.25;
    159168            break;
    160169        default:
     
    244253    PAR[PM_PAR_SYY]  = PS_MAX(0.5, M_SQRT2*shape.sy);
    245254    PAR[PM_PAR_SXY]  = shape.sxy;
    246     PAR[PM_PAR_7]    = 1.0;
     255    PAR[PM_PAR_7]    = 0.5;
    247256
    248257    return(true);
Note: See TracChangeset for help on using the changeset viewer.