示例#1
0
文件: analyticAB.c 项目: apik/mr
TSIL_COMPLEX TSIL_BprimeAtZero (TSIL_REAL x, TSIL_REAL y, TSIL_REAL qq)
{
  TSIL_REAL xoy, onemxoy, onemxoy2, onemxoy3, onemxoy4, temp;
              
  if (x < y) {temp = y; y = x; x = temp;}

  xoy = x/y;
  onemxoy = 1.0L - xoy;
 
  if (TSIL_FABS(onemxoy) > 0.005) 
    return (x*x - 2.L*TSIL_A(x,qq)*y - y*y + 2.L*x*TSIL_A(y,qq))/(2.L*TSIL_POW(x - y,3));
  else {
    onemxoy2 = onemxoy * onemxoy;
    onemxoy3 = onemxoy2 * onemxoy;
    onemxoy4 = onemxoy3 * onemxoy;

    return (1.0L - onemxoy/2.0L - onemxoy2/5.0L - onemxoy3/10.0L
              - 2.0L*onemxoy4/35.0L - onemxoy2*onemxoy3/28.0L
              - onemxoy3*onemxoy3/42.0L - onemxoy4*onemxoy3/60.0L
              - 2.0L*onemxoy4*onemxoy4/165.0L
              - onemxoy3*onemxoy3*onemxoy3/110.0L
              - onemxoy3*onemxoy3*onemxoy4/143.0L
              - onemxoy3*onemxoy4*onemxoy4/182.0L
              - 2.0L*onemxoy4*onemxoy4*onemxoy4/455.0L)/(6.0L * x);
  }
}
示例#2
0
文件: analyticAB.c 项目: apik/mr
TSIL_COMPLEX TSIL_BAtZero (TSIL_REAL x, TSIL_REAL y, TSIL_REAL qq)
{
  if (TSIL_FABS(x - y) > TSIL_TOL)
    return (TSIL_A(y,qq) - TSIL_A(x,qq))/(x - y);
  else  
    return -TSIL_A(x,qq)/x - 1.0L;
}
示例#3
0
文件: analyticAB.c 项目: apik/mr
TSIL_COMPLEX TSIL_Bp (TSIL_REAL X, TSIL_REAL Y, TSIL_COMPLEX S, TSIL_REAL QQ)
{
  if (X < TSIL_TOL) {
    TSIL_Warn("Bp", "B(x',y) is undefined for x=0.");
    return TSIL_Infinity;
  }

  if (TSIL_CABS(1.0L - S/(X+Y+2.0L*TSIL_SQRT(X*Y))) < TSIL_TOL) {
    TSIL_Warn("Bp", "B(x',y) is undefined at s = (sqrt(x) + sqrt(y))^2.");
    return TSIL_Infinity;
  }

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

  if (TSIL_CABS(1.0L - (X + Y - 2.0L*TSIL_SQRT(X*Y))/S) < TSIL_TOL) 
    return (1.0L - TSIL_SQRT(Y/X) +0.5L*TSIL_LOG(Y/X))/(X + Y - 2.0L*TSIL_SQRT(X*Y));
  else
    return ((X-Y-S)*TSIL_B(X,Y,S,QQ) + (X+Y-S)*TSIL_LOG(X/QQ) 
	    -2.0L*TSIL_A(Y,QQ) + 2.0L*(S-X))/TSIL_Delta(S,X,Y);
}
示例#4
0
int main (int argc, char *argv[])
{
  TSIL_DATA    result; /* Top-level TSIL data object */
  TSIL_REAL    qq;     /* Ensures correct basic type; see also TSIL_COMPLEX */ 
  TSIL_REAL    x, g, lambda;
  TSIL_COMPLEX pi1, pi1prime, pi2, s1, s2;
  TSIL_REAL    factor = 1.0L/(16.0L*PI*PI);

  /* If incorrect number of args, print message on stderr and exit: */
  if (argc != 5)
    TSIL_Error("main", "Expected 4 arguments: m^2, g, lambda, and Q^2", 1);

  /* Note cast to appropriate floating-point type for safety */
  x      = (TSIL_REAL) strtold(argv[1], (char **) NULL); 
  g      = (TSIL_REAL) strtold(argv[2], (char **) NULL);
  lambda = (TSIL_REAL) strtold(argv[3], (char **) NULL); 
  qq     = (TSIL_REAL) strtold(argv[4], (char **) NULL); 

  /* All loop integrals have a common squared-mass argument x: */
  TSIL_SetParameters (&result, x, x, x, x, x, qq); 

  /* For the pole mass calculation, evaluate two-loop integrals at s = x: */
  TSIL_Evaluate (&result, x);

  /* Assemble one- and two-loop mass squared results: */
  pi1 = 0.5L*lambda*TSIL_A(x,qq) - 0.5L*g*g*TSIL_B(x,x,x,qq);

  pi1prime = -0.5L*g*g*TSIL_dBds(x, x, x, qq); 

  pi2 = - 0.5L*g*g*g*g*TSIL_GetFunction(&result, "M")
        - 0.5L*g*g*g*g*TSIL_GetFunction(&result, "Vzxyv")
               + g*g*g*TSIL_GetFunction(&result, "Uzxyv")
    - (1.0L/6.0L)*lambda*lambda*TSIL_GetFunction(&result, "Svyz")
    + 0.25L*lambda*g*g*TSIL_POW(TSIL_GetFunction(&result, "Bxz"), 2)
    + 0.25L*lambda*lambda*TSIL_A(x,qq)*(TSIL_A(x,qq)/x + 1.0L)   
    - 0.5L*lambda*g*g*TSIL_A(x,qq)*TSIL_Bp(x, x, x, qq)      
    - 0.25L*lambda*g*g*TSIL_I2p(x,x,x,qq);               

  s1 = x + factor*pi1;
  s2 = x + factor*pi1 + factor*factor*(pi2 + pi1*pi1prime);

  printf("Tree-level squared mass:    %lf\n", (double) x); 
  printf("One-loop pole squared mass: %lf\n", (double) s1); 
  printf("Two-loop pole squared mass: %lf\n", (double) s2); 

  return 0;
}