Example #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));
}
Example #2
0
File: analyticAB.c Project: apik/mr
TSIL_COMPLEX TSIL_B00 (TSIL_COMPLEX S, TSIL_REAL QQ)
{
  if (TSIL_CABS (S) < TSIL_TOL) {
    TSIL_Warn("TSIL_B00", "B(0,0) is undefined when s=0."); 
    return TSIL_Infinity;
  }

  S = TSIL_AddIeps(S);    
  return (2.0L - TSIL_CLOG(-S/QQ));
}
Example #3
0
File: analyticAB.c Project: apik/mr
TSIL_COMPLEX TSIL_B0x (TSIL_REAL X, TSIL_COMPLEX S, TSIL_REAL QQ)
{
  if (TSIL_FABS (X) < TSIL_TOL)
    return TSIL_B00(S,QQ);

  if (TSIL_CABS (S) < TSIL_TOL)
    return (1.0L - TSIL_LOG (X/QQ));

  if (TSIL_CABS (1.0L - S/X) < 10.0L*TSIL_TOL)
    return 2.0L - TSIL_LOG(X/QQ);

  S = TSIL_AddIeps(S);  
  return 2.0L + ((X - S)*TSIL_CLOG((X - S)/QQ) - X*TSIL_LOG(X/QQ))/S;
}
Example #4
0
File: analyticAB.c Project: 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)));
}
Example #5
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);
}
Example #6
0
File: analyticAB.c Project: apik/mr
TSIL_COMPLEX TSIL_B (TSIL_REAL X, TSIL_REAL Y, TSIL_COMPLEX S, TSIL_REAL QQ)
{
  TSIL_REAL    temp;
  TSIL_COMPLEX sqDeltaSXY, lnbarX, lnbarY;

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

  if (TSIL_FABS (X) < TSIL_TOL)
    return TSIL_B00(S,QQ);

  if (TSIL_FABS (Y) < TSIL_TOL)
    return TSIL_B0x(X,S,QQ);

  if (TSIL_CABS (S) < TSIL_TOL) {
    if (TSIL_FABS (1.0L - Y/X) > 0.0L)
      return (1.0L + (Y*TSIL_LOG(Y/QQ) - X*TSIL_LOG(X/QQ))/(X-Y));
    else 
      return (-TSIL_LOG (X/QQ));
  }

  S = TSIL_AddIeps(S);   
  sqDeltaSXY = TSIL_CSQRT(TSIL_Delta(S, X, Y));
  lnbarX = TSIL_LOG (X/QQ);
  lnbarY = TSIL_LOG (Y/QQ);

  /* Following avoids roundoff error for very negative s. */
  if ((TSIL_CREAL(S) < -10.0L*(X+Y)) && (TSIL_CIMAG(S) < TSIL_TOL)) {   
    return (2.0L - 0.5L * (lnbarX + lnbarY) +
	  (sqDeltaSXY * TSIL_CLOG(0.5L*(X + Y - S + sqDeltaSXY)/Y) +
	   0.5L * (Y - X - sqDeltaSXY) * (lnbarX - lnbarY))/S);
  }

  return (2.0L - 0.5L * (lnbarX + lnbarY) +
	  (-sqDeltaSXY * TSIL_CLOG(0.5L*(X + Y - S - sqDeltaSXY)/X) +
	   0.5L * (Y - X - sqDeltaSXY) * (lnbarX - lnbarY))/S);
}
Example #7
0
File: analyticAB.c Project: 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;
}