示例#1
0
TSIL_COMPLEX TSIL_Tx0y (TSIL_REAL X, TSIL_REAL Y, TSIL_COMPLEX S,
                        TSIL_REAL QQ)
{
    TSIL_COMPLEX sqDeltaSXY, tp, tm, log1mtp, log1mtm;
    TSIL_REAL    lnbarX, lnbarY;

    if (X < TSIL_TOL) {
        TSIL_Warn("TSIL_Tx0y", "T(x,0,y) is undefined for x = 0.");
        return TSIL_Infinity;
    }

    if (TSIL_CABS(S) < TSIL_TOL) return -TSIL_I2p(X, 0.0L, Y, QQ);
    if (Y < TSIL_TOL) return TSIL_Tx00(X, S, QQ);

    S = TSIL_AddIeps(S);
    sqDeltaSXY = TSIL_CSQRT(X*X + Y*Y + S*S - 2.0L*X*Y - 2.0L*X*S - 2.0L*Y*S);
    lnbarX = TSIL_LOG(X/QQ);
    lnbarY = TSIL_LOG(Y/QQ);
    tp = (Y - X + S + sqDeltaSXY)/(2.0L * Y);
    tm = (Y - X + S - sqDeltaSXY)/(2.0L * Y);
    log1mtp = TSIL_CLOG(1.0L - tp);
    log1mtm = TSIL_CLOG(1.0L - tm);

    return (-TSIL_Dilog (tp) - TSIL_Dilog (tm) + (1.0L - Y/S)*log1mtp*log1mtm
            + sqDeltaSXY * (log1mtp - log1mtm) / (2.0L * S)
            + lnbarX*lnbarY - 0.5L*(lnbarY + 1.0L)*(lnbarY + 1.0L)
            + (3.0L*S + Y - X) *(lnbarY-lnbarX)/(2.0L * S));
}
示例#2
0
TSIL_COMPLEX TSIL_TyyxAtx (TSIL_REAL X, TSIL_REAL Y, TSIL_REAL QQ)
{
    TSIL_REAL lnbarX, lnbarY;

    if (X < TSIL_TOL) return -TSIL_I2p(Y,Y,0,QQ);

    if (Y < TSIL_TOL) {
        TSIL_Warn("TSIL_TyyxAtx", "T(y,y,x) with s = 0 is undefined for x = 0.");
        return TSIL_Infinity;
    }

    lnbarX = TSIL_LOG(X/QQ);
    lnbarY = TSIL_LOG(Y/QQ);
    return -0.5L + (1.0L - Y/X)*(TSIL_Dilog(1.0 -X/Y) -Zeta2)
           + lnbarX - 2.0L*lnbarY + 0.5L*lnbarY*lnbarY;
}
示例#3
0
TSIL_COMPLEX TSIL_TxyyAtx (TSIL_REAL X, TSIL_REAL Y, TSIL_REAL QQ)
{
    TSIL_REAL lnbarX, lnbarY;

    if (X < TSIL_TOL) {
        TSIL_Warn("TSIL_TxyyAtx", "T(x,y,y) is undefined for s = x = 0.");
        return TSIL_Infinity;
    }

    if (Y < TSIL_TOL) return TSIL_Tx00(X,X,QQ);

    lnbarX = TSIL_LOG(X/QQ);
    lnbarY = TSIL_LOG(Y/QQ);

    return (-0.5L + (Y/X-1.0L)*(TSIL_Dilog(1.0 -X/Y) -Zeta2)
            + lnbarX*(lnbarY - 1.0L) - 0.5L*lnbarY*lnbarY);
}
示例#4
0
TSIL_COMPLEX TSIL_Tx00 (TSIL_REAL X, TSIL_COMPLEX S, TSIL_REAL QQ)
{
    TSIL_REAL lnbarX;

    if (X < TSIL_TOL) {
        TSIL_Warn("TSIL_Tx00", "T(x,0,0) is undefined for x = 0.");
        return TSIL_Infinity;
    }

    if (TSIL_CABS(S) < TSIL_TOL) return -TSIL_I2p(X, 0.0L, 0.0L, QQ);

    lnbarX = TSIL_LOG(X/QQ);

    if (TSIL_CABS (1.0L - S/X) < 10.0L*TSIL_TOL)
        return 2.0L*Zeta2 -0.5L -lnbarX + 0.5L*lnbarX*lnbarX;

    S = TSIL_AddIeps(S);

    return Zeta2 - 0.5L + (1.0L - X/S)*TSIL_CLOG(1.0L -S/X)
           -lnbarX + 0.5L*lnbarX*lnbarX + TSIL_Dilog (S/X);
}
示例#5
0
文件: analyticAB.c 项目: apik/mr
TSIL_COMPLEX TSIL_Beps0x (TSIL_REAL x, TSIL_COMPLEX s, TSIL_REAL qq)
{
  TSIL_COMPLEX sqrtx, lnbarx, log1msox, lnbarms;

  if (TSIL_CABS(s) < TSIL_TOL) return TSIL_BepsAtZero (0, x, qq);

  if (x < TSIL_TOL) {
    lnbarms = TSIL_CLOG(-TSIL_AddIeps(s)/qq);
    return 4.0L - Zeta2/2.0L - 2.0L*lnbarms + lnbarms*lnbarms/2.0L;
  }

  sqrtx = TSIL_CSQRT(x);
  lnbarx = TSIL_CLOG(x/qq);

  if (TSIL_CABS(1 - s/x) < 10.0*TSIL_TOL)
    return 4.0L + Zeta2/2.0L + lnbarx*(lnbarx - 4.0L)/2.0L;

  log1msox = TSIL_CLOG(1.0L - TSIL_AddIeps(s)/x);

  return 4.0L + Zeta2/2.0L - 2.0L*lnbarx + lnbarx*lnbarx/2.0L 
         + (1.0L - x/s)*(lnbarx*log1msox - 2.0L*log1msox 
         + log1msox*log1msox/2.0L -TSIL_Dilog(s/(s-x)));
}
示例#6
0
文件: analyticAB.c 项目: apik/mr
TSIL_COMPLEX TSIL_Beps (TSIL_REAL X, TSIL_REAL Y, TSIL_COMPLEX S, TSIL_REAL QQ)
{
  TSIL_COMPLEX sqrtdeltasxy, t1, t2, t3, t4, logt1, logt2, logt3, logt4;
  TSIL_COMPLEX log1mt1, log1mt2, sqrtx, sqrty, lnbarx, lnbary;
  TSIL_REAL temp;

  if (X < Y) {temp = X; X = Y; Y = temp;}

  if (TSIL_CABS(S) < TSIL_TOL) return TSIL_BepsAtZero (X, Y, QQ);

  if (Y < TSIL_TOL) return TSIL_Beps0x (X, S, QQ);
  
  sqrtx = TSIL_CSQRT(X);
  sqrty = TSIL_CSQRT(Y);
  lnbarx = TSIL_CLOG(X/QQ);
  lnbary = TSIL_CLOG(Y/QQ);

  if (TSIL_CABS(S - (sqrtx + sqrty)*(sqrtx + sqrty))/(X+Y) < 10.0*TSIL_TOL) 
    return 4.0L + Zeta2/2.0L 
           + (sqrtx*lnbarx*(lnbarx - 4.0L) + 
	      sqrty*lnbary*(lnbary - 4.0L))/(2.0L*(sqrtx + sqrty)); 

  if (TSIL_CABS(S - (sqrtx - sqrty)*(sqrtx - sqrty))/(X+Y) < 10.0*TSIL_TOL) 
    return 4.0L + Zeta2/2.0L 
           + (sqrtx*lnbarx*(lnbarx - 4.0L) - 
	      sqrty*lnbary*(lnbary - 4.0L))/(2.0L*(sqrtx - sqrty)); 

  S = TSIL_AddIeps(S);

  sqrtdeltasxy = TSIL_CSQRT(TSIL_Delta(S,X,Y));

  t1 = ( S - X + Y + sqrtdeltasxy)/(2.0L*sqrtdeltasxy);
  t2 = (-S - X + Y + sqrtdeltasxy)/(2.0L*sqrtdeltasxy);
  t3 = (-S + X + Y + sqrtdeltasxy)/(2.0L*X);
  t4 = (-S + X + Y - sqrtdeltasxy)/(2.0L*X);

/*   printf("\ns = ");TSIL_cprintf(S);printf("\n"); */
/*   printf("x = %Lf\n", X); */
/*   printf("y = %Lf\n", Y); */
/*   printf("sqrtdeltasxy = ");TSIL_cprintf(sqrtdeltasxy);printf("\n"); */

/*   printf("\nt1    = ");TSIL_cprintf(t1);printf("\n"); */
/*   printf("t2    = ");TSIL_cprintf(t2);printf("\n"); */
/*   printf("t3    = ");TSIL_cprintf(t3);printf("\n"); */
/*   printf("t4    = ");TSIL_cprintf(t4);printf("\n"); */
  
  logt1 = TSIL_CLOG(t1);
  logt2 = TSIL_CLOG(t2);
  logt3 = TSIL_CLOG(t3);
  logt4 = TSIL_CLOG(t4);

/*   printf("\nlogt1 = ");TSIL_cprintf(logt1);printf("\n"); */
/*   printf("logt2 = ");TSIL_cprintf(logt2);printf("\n"); */
/*   printf("logt3 = ");TSIL_cprintf(logt3);printf("\n"); */
/*   printf("logt4 = ");TSIL_cprintf(logt4);printf("\n"); */

  log1mt1 = TSIL_CLOG(1.0L - t1);
  log1mt2 = TSIL_CLOG(1.0L - t2);

  return 4.0L + Zeta2/2.0L + (lnbarx*lnbarx + lnbary*lnbary)/4.0L 
         - lnbarx - lnbary + (sqrtdeltasxy*(TSIL_Dilog(t2) - TSIL_Dilog(t1) 
              + (logt3 - logt4)*(1.0L - lnbarx/4.0L - lnbary/4.0L) 
              + (log1mt1 + log1mt2)*(logt2 - logt1)/2.0L) 
         + (X - Y)*(lnbary - lnbarx)*(1.0L - lnbarx/4.0L - lnbary/4.0L))/S;
}