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; }
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; }
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; }
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); }
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; }
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)); }