コード例 #1
0
ファイル: VelocityLayer.cpp プロジェクト: arkottke/strata
void VelocityLayer::vary(double randVar)
{
    if (m_isVaried) {
        // Randomize the velocity
        switch (m_type) {
        case Normal:
            setVaried(m_avg + gsl_cdf_gaussian_Pinv(randVar, m_stdev));
            break;
        case LogNormal:
            setVaried(m_avg * exp(gsl_cdf_gaussian_Pinv(randVar, m_stdev)));
            break;
        case Uniform:
            m_varied = gsl_cdf_flat_Pinv(randVar, m_min, m_max);
            break;
        }
    } else {
        m_varied = m_avg;
    }
}
コード例 #2
0
ファイル: likelihood.cpp プロジェクト: jaydenn/DarkSearch
//scales by prior and returns ranPar
double scale(double *ranPar, double x, double y, int prior)
{ 
	if( prior == 0 ) //log prior
        *ranPar = pow( 10, *ranPar * ( log10(y) - log10(x) ) + log10(x) );    
    else if( prior == 1 ) //linear prior
        *ranPar = *ranPar * (y - x) +  x; 
    else if( prior == 2 ) //gaussian prior
        *ranPar = x + gsl_cdf_gaussian_Pinv(*ranPar, y);  
    else if( prior == 3 ) //no prior
        return x;

    return *ranPar;
}
コード例 #3
0
ファイル: sa.c プロジェクト: BackupTheBerlios/tsp-renorm-sa
double
neighbour_rot(double temp, double temp_end, double temp_init, double bm_sigma)
{
   const double BM_start = 2 * M_PI;

    double BM = BM_start *
       (bm_sigma * (temp - temp_end) /
           (temp_init - temp_end)) *
           gsl_cdf_gaussian_Pinv(gsl_rng_uniform(_bm_rng), 1);
   if (isinf(BM))
        BM = MAXFLOAT;

   rotation = fmod(fabs(rotation + BM), 2 * M_PI);

   return BM;
}