Example #1
0
static double integralExpFunction(double k, double xmin, double xmax, double ymin, double ymax, double umin, double umax, double vmin, double vmax) {
    double e=2.7182818284590451;
    double j=xmin;
    double l=xmax;
    double m=ymin;
    double n=ymax;
    double p=umin;
    double q=umax;
    double r=vmin;
    double s=vmax;
    double pi=3.1415926535897931;
    double sqrtloge=1;
    double loge=1;
    return (1./(4*k*log(e)))
        *pi*(  ( j - p)*myerf(sqrt(k)*(j - p)*sqrtloge)
             + (-l + p)*myerf(sqrt(k)*(l - p)*sqrtloge)
             + (-j + q)*myerf(sqrt(k)*(j - q)*sqrtloge)
             + ( l - q)*myerf(sqrt(k)*(l - q)*sqrtloge)
               + (exp(-k*square(j - p))
                  - exp(-k*square(j - q)))/(sqrt(k)*sqrt(pi)*sqrtloge) +
               (-exp(-k*square(l - p)) + exp(-k*square(l - q)))/(sqrt(k)*sqrt(pi)*sqrtloge))
        *(  ( m - r)*myerf(sqrt(k)*(m - r)*sqrtloge)
            + (-n + r)*myerf(sqrt(k)*(n - r)*sqrtloge)
            + (-m + s)*myerf(sqrt(k)*(m - s)*sqrtloge)
            + ( n - s)*myerf(sqrt(k)*(n - s)*sqrtloge)
            + (exp(-k*square(m - r)) - exp(-k*square(m - s)))/(sqrt(k)*sqrt(pi)*sqrtloge)
            + (-exp(-k*square(n - r)) + exp(-k*square(n - s)))/(sqrt(k)*sqrt(pi)*sqrtloge));
}
 //! The input is Eb/N0 (dB). This should be converted to std in AWGN or crossover probability in BSC
 void mTranslateEbN0()
 {
     mSTD           = (double)sqrt(1.0 / pow(10.0, EbN0/10) / 2.0 / mRateOfCode);
     double temp    = sqrt(2 * mRateOfCode * pow(10.0 , EbN0/10));
     mCrossOverProb = 0.5 - 0.5 * myerf(temp/sqrt(2.0));
     if(mChannelName == "AWGN")
         mChannelParameter = mSTD;
     else
         mChannelParameter = mCrossOverProb;
 }