Exemplo n.º 1
0
TSIL_COMPLEX TSIL_Trilogoutofunitdisk (TSIL_COMPLEX z)
{
  TSIL_COMPLEX result;
  TSIL_COMPLEX logminusz = TSIL_CLOG(-z);

  if (TSIL_CREAL(z) > 1.0L && TSIL_CIMAG((complex double) z) == 0.0)
    logminusz = I * PI_longdouble + TSIL_CLOG(TSIL_CREAL (z));

  result = TSIL_Trilogunitdisk (1.0L/z) -
    logminusz*(cZeta2 + logminusz*logminusz/6.0L);

  return result;
}
Exemplo n.º 2
0
TSIL_COMPLEX TSIL_Trilogunitdisk (TSIL_COMPLEX z)
{
  TSIL_COMPLEX result;
  TSIL_REAL rez = TSIL_CREAL (z);
  TSIL_REAL absz = TSIL_CABS (z);
  TSIL_REAL absimz = TSIL_FABS (TSIL_CIMAG (z));

  if (TSIL_CABS(z - 1.0L) < 2.0L * TSIL_TOL)
    result = cZeta3;
  else if (TSIL_CABS(z) < 2.0L * TSIL_TOL)
    result = 0.0L;
  else if (TSIL_CABS(TSIL_CLOG(z)) < trilog_CLZseries_radius)
    result = TSIL_TrilogCLZseries (z);
  else if (absz <= trilog_powerseries_radius)
    result = TSIL_Trilogseries (z);
  else if (rez <= 0.0L)
    result = TSIL_TrilogregionA (z);
  else if (rez <= absimz)
    result = TSIL_TrilogregionB (z);
  else {
    TSIL_Warn("TSIL_Trilogunitdisk", "trilog function yielding undefined result.");
    result = TSIL_Infinity;
  }

  return result;
}
Exemplo n.º 3
0
int SUMO_Update ()
{
  TSIL_COMPLEX bphase;

  if (TSIL_CABS(b) > TSIL_TOL)
    bphase = (b)/TSIL_CABS(b);
  else
    bphase = 1.0;

  b = SUMO_CABS(b);
  mu = mu/bphase;

  Q2 = Q*Q;

  g2 = g*g;
  gp2 = gp*gp;
  g2plusgp2 = g2 + gp2;

  if (g2plusgp2 < TSIL_TOL) e2 = 0.0;
  else e2 = g2*gp2/g2plusgp2;

  e = SUMO_SQRT(e2);

  vu2 = vu*vu;
  vd2 = vd*vd;
  v2 = vu2 + vd2;
  vuvd = vu*vd;

  if (vd > TSIL_TOL) tanbeta = vu/vd; else tanbeta = 666;

  if (v2 > TSIL_TOL) {
    sinbeta = vu/TSIL_SQRT(v2);
    cosbeta = vd/TSIL_SQRT(v2);
  } else{
    sinbeta = 0;
    cosbeta = 0;
  }

  ytop2 = ytop*ytop;
  ybot2 = ybot*ybot;
  ytau2 = ytau*ytau;

  muc = SUMO_CONJ(mu);
  mu2 = TSIL_CREAL(mu*muc);
  atopc = SUMO_CONJ(atop);
  abotc = SUMO_CONJ(abot);
  atauc = SUMO_CONJ(atau);

  is_updated = 1;
  return 0;
}
Exemplo n.º 4
0
Arquivo: analyticAB.c Projeto: 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);
}
Exemplo n.º 5
0
void TSIL_Compare (const char   *name,
                   TSIL_COMPLEX actual,
                   TSIL_COMPLEX computed,
                   TSIL_REAL    allow_pass,
                   TSIL_REAL    allow_warn,
                   int          *result)
{
    TSIL_REAL a_re, a_im, c_re, c_im, magnitude, err;
    int foo;

    a_re = TSIL_CREAL (actual);
    a_im = TSIL_CIMAG (actual);
    c_re = TSIL_CREAL (computed);
    c_im = TSIL_CIMAG (computed);
    magnitude = TSIL_CABS (actual) + TSIL_TOL;

    /* DGR */
    if (TSIL_IsInfinite (actual))
    {
        if (TSIL_IsInfinite (computed))
            foo = PASS * PASS;
        else
            foo = FAIL;
    }
    else
    {
        /* Check Real part */
        err = TSIL_FABS (a_re - c_re) / magnitude;

        if (err < allow_pass)
            foo = PASS;
        else if (err < allow_warn)
            foo = WARN;
        else {
            /* 	printf("\nFailure in re part: err = %Le\n", (long double) err); */
            foo = FAIL;
        }

        /* Check Imaginary part */
        err = TSIL_FABS (a_im - c_im) / magnitude;

        if (err < allow_pass)
            foo *= PASS;
        else if (err < allow_warn)
            foo *= WARN;
        else {
            /* 	printf("\nFailure in im part: err = %Le\n", (long double) err); */
            foo *= FAIL;
        }
    }

    if (foo == 4)
        *result = PASS;
    else if (foo == 1 || foo == 2)
    {
        *result = WARN;
        printf ("\nWARN\n");
        printf ("Expected for %s: ", name);
        TSIL_cprintfM (actual);
        printf ("\n");
        printf ("Obtained for %s: ", name);
        TSIL_cprintfM (computed);
        printf ("\n");
    }
    else if (foo == 0)
    {
        *result = FAIL;
        printf ("\nFAIL\n");
        printf ("Expected for %s: ", name);
        TSIL_cprintfM (actual);
        printf ("\n");
        printf ("Obtained for %s: ", name);
        TSIL_cprintfM (computed);
        printf ("\n");
    }
    else
        printf ("NOPE! Can't EVER get here in TSIL_Compare!!!\n");

    return;
}
Exemplo n.º 6
0
SUMO_COMPLEX SUMO_V2_strong (void)
{ 
  int i,j;
  TSIL_REAL g3sq = g3*g3;
  TSIL_REAL qq = Q2;
  TSIL_COMPLEX V2_strong_sqsq = 0.0L;
  TSIL_COMPLEX V2_strong_qgluinosq = 0.0L;
  TSIL_COMPLEX V2_strong_sqsqg = 0.0L;
  TSIL_COMPLEX V2_strong_qqg;
  
  /* ------------------------------------------------------------------- */
  /* hep-ph/0206136 eq. (3.14) */

  for (i=0; i<2; i++) {
    V2_strong_sqsq += SUMO_Fvac_SS (m2_suL[i], m2_suL[i], qq);
    V2_strong_sqsq += SUMO_Fvac_SS (m2_sdL[i], m2_sdL[i], qq);
    V2_strong_sqsq += SUMO_Fvac_SS (m2_suR[i], m2_suR[i], qq);
    V2_strong_sqsq += SUMO_Fvac_SS (m2_sdR[i], m2_sdR[i], qq);
  }

  for (i=0; i<2; i++) {
    for (j=0; j<2; j++) {
      V2_strong_sqsq +=
	SUMO_Fvac_SS (m2_stop[i], m2_stop[j], qq) *
	TSIL_POW(TSIL_CABS((Lstop[i]) * (Lstopc[j])
			   -(Rstop[i]) * (Rstopc[j])),2);

      V2_strong_sqsq +=
	SUMO_Fvac_SS (m2_sbot[i], m2_sbot[j], qq) *
	TSIL_POW(TSIL_CABS((Lsbot[i]) * (Lsbotc[j])
			   -(Rsbot[i]) * (Rsbotc[j])),2);
    }}

  V2_strong_sqsq *= 2.0L * g3sq;

  /* ------------------------------------------------------------------- */
  /* equation (3.25) */

  for (i=0; i<2; i++) {
    V2_strong_qgluinosq +=
      SUMO_Fvac_FFS (0.L, m2_gluino, m2_suL[i], qq);
    V2_strong_qgluinosq +=
      SUMO_Fvac_FFS (0.L, m2_gluino, m2_sdL[i], qq);
    V2_strong_qgluinosq +=
      SUMO_Fvac_FFS (0.L, m2_gluino, m2_suR[i], qq);
    V2_strong_qgluinosq +=
      SUMO_Fvac_FFS (0.L, m2_gluino, m2_sdR[i], qq);
    V2_strong_qgluinosq +=
      SUMO_Fvac_FFS (m2_bot, m2_gluino, m2_sbot[i], qq);
    V2_strong_qgluinosq +=
      SUMO_Fvac_FFS (m2_top, m2_gluino, m2_stop[i], qq);
    V2_strong_qgluinosq +=
      - 2.0L * TSIL_CREAL((Lsbot[i]) * (Rsbotc[i])) *
      SUMO_Fvac_ffS (m2_bot, m2_gluino, m2_sbot[i], qq);
    V2_strong_qgluinosq +=
      - 2.0L * TSIL_CREAL((Lstop[i]) * (Rstopc[i])) *
      SUMO_Fvac_ffS (m2_top, m2_gluino, m2_stop[i], qq);
  }

  V2_strong_qgluinosq *= 8.0L*g3sq;

  /* ------------------------------------------------------------------- */
  /* equation (3.48) */

  for (i=0; i<2; i++) {
    V2_strong_sqsqg +=
      SUMO_Fvac_SSV (m2_suL[i], m2_suL[i], 0.0L, qq);
    V2_strong_sqsqg +=
      SUMO_Fvac_SSV (m2_sdL[i], m2_sdL[i], 0.0L, qq);
    V2_strong_sqsqg +=
      SUMO_Fvac_SSV (m2_suR[i], m2_suR[i], 0.0L, qq);
    V2_strong_sqsqg +=
      SUMO_Fvac_SSV (m2_sdR[i], m2_sdR[i], 0.0L, qq);
    V2_strong_sqsqg +=
      SUMO_Fvac_SSV (m2_stop[i], m2_stop[i], 0.0L, qq);
    V2_strong_sqsqg +=
      SUMO_Fvac_SSV (m2_sbot[i], m2_sbot[i], 0.0L, qq);
  }

  V2_strong_sqsqg *= 2.0L*g3sq;

  /* ------------------------------------------------------------------- */
  /* equation (3.61) */

  V2_strong_qqg = 4.0L*g3sq*(
      SUMO_Fvac_FFV (m2_top, m2_top, 0.0L, qq)
    + SUMO_Fvac_FFV (m2_bot, m2_bot, 0.0L, qq)
    - SUMO_Fvac_ffV (m2_top, m2_top, 0.0L, qq)
    - SUMO_Fvac_ffV (m2_bot, m2_bot, 0.0L, qq)
      );

  /* ------------------------------------------------------------------- */

  return (SUMO_twoloopfactor * 
    (V2_strong_sqsq + V2_strong_qgluinosq + V2_strong_sqsqg + V2_strong_qqg));
}