21ncomplex Minor5::I2mDstu(
int ep,
int s,
int t,
int u,
int m,
int n)
24 const double dstustu=
M3(
s,
t,u,
s,
t,u);
25 const double msq1=kinem.
mass(m);
26 const double msq2=kinem.
mass(
n);
28 const double s_cutoff=
seps1*pmaxM2[
im2(m,
n)-5];
30 if (fabs(dstustu) <= s_cutoff) {
31 const double mm12=msq1-msq2;
32 if (fabs(mm12) <
meps) {
62 if (fabs(msq1) <
meps) {
63 if (fabs(msq2) <
meps) {
64 if (fabs(dstustu) >
meps) {
65 sum1=2./(-0.5*dstustu);
70 sum1=1./((-0.5*dstustu)-msq2);
72 }
else if (fabs(msq2) <
meps) {
73 sum1=1./((-0.5*dstustu)-msq1);
83ncomplex Minor5::I2stui(
int ep,
int s,
int t,
int u,
int i,
int ip)
86 const double dstustu=
M3(
s,
t,u,
s,
t,u);
87 const double msq1=kinem.
mass(i);
88 const double msq2=kinem.
mass(ip);
90 const double s_cutoff=
seps1*pmaxM2[
im2(i,ip)-5];
92 if (fabs(dstustu) <= s_cutoff) {
93 const double mm12=msq1-msq2;
94 if (fabs(mm12) <
meps) {
103 sum1=-1/(msq1 - msq2)
119 if (fabs(msq1) <
meps) {
120 if (fabs(dstustu) >
meps) {
121 if (fabs(msq2) <
meps) {
122 sum1=-1./(-0.5*dstustu);
124 sum1=-1./((-0.5*dstustu)-msq2);
145 assert(
t!=u && u!=
s &&
s!=
t);
147 if (not fEval[E_I2D3stu+
ep]) {
148 I2D3stuEval(0,
ep,1,2,3,4,5,kinem.
p5());
149 I2D3stuEval(1,
ep,1,2,4,3,5,kinem.
s45());
150 I2D3stuEval(2,
ep,1,2,5,3,4,kinem.
p4());
152 I2D3stuEval(3,
ep,1,3,4,2,5,kinem.
s12());
153 I2D3stuEval(4,
ep,1,3,5,2,4,kinem.
s34());
155 I2D3stuEval(5,
ep,1,4,5,2,3,kinem.
p3());
158 I2D3stuEval(6,
ep,2,3,4,1,5,kinem.
p1());
159 I2D3stuEval(7,
ep,2,3,5,1,4,kinem.
s15());
161 I2D3stuEval(8,
ep,2,4,5,1,3,kinem.
s23());
164 I2D3stuEval(9,
ep,3,4,5,1,2,kinem.
p2());
167 fEval[E_I2D3stu+
ep]=
true;
169 int idx=
im3(
s,
t,u)-10;
170 return pI2D3stu[
ep][idx];
173void Minor5::I2D3stuEval(
int idx,
int ep,
int s,
int t,
int u,
int m,
int n,
double qsq)
177 const double dstustu=-2*qsq;
178 const double msq1=kinem.
mass(m);
179 const double msq2=kinem.
mass(
n);
180 const double s_cutoff=
seps1*pmaxM2[
im2(m,
n)-5];
182 if (fabs(dstustu) <= s_cutoff) {
183 const double mm12=msq1-msq2;
184 if (fabs(mm12) <
meps) {
188 sum1= -13*((msq1+msq2)*(msq1*msq1+msq2*msq2))/288
211 else { assert(
ep==1);
212 const double y11=
Cay[
nss(m,m)];
213 const double y12=
Cay[
nss(m,
n)];
215 sum1=-(+ y11*y11*(y22 + 5*(y11 + y12))
216 + y22*y22*(y11 + 5*(y22 + y12))
217 + 2*y12*y12*(y12 + 2*(y11 + y22))
221 pI2D3stu[
ep][idx]=sum1;
232 if (not fEval[E_I3D4st+
ep]) {
235 int idx =
im2(
s,
t)-5;
236 return pI3D4st[
ep][idx];
239void Minor5::I3D4stEval(
int ep)
241 for (
int s=1;
s<=smax;
s++) {
242 for (
int t=
s+1;
t<=5;
t++) {
243 int idx =
im2(
s,
t)-5;
245 const double dstst=
M2(
s,
t,
s,
t);
248 if (pmaxS3[idx] <=
deps) {
249 printf(
"I3D4 - M2({%d,%d}) <= eps\n",
s,
t);
250 ivalue=std::numeric_limits<double>::quiet_NaN();
254 for (
int ei=
ep; ei<=1; ei++) {
256 for (
int u=1; u<=5; u++) {
257 if (
t==u ||
s==u)
continue;
265 pI3D4st[
ep][idx]=ivalue;
268 fEval[E_I3D4st+
ep]=
true;
278 assert(
t!=u && u!=
s &&
s!=
t);
280 if (not fEval[E_I2D4stu+
ep]) {
281 I2D4stuEval(0,
ep,1,2,3,4,5,kinem.
p5());
282 I2D4stuEval(1,
ep,1,2,4,3,5,kinem.
s45());
283 I2D4stuEval(2,
ep,1,2,5,3,4,kinem.
p4());
285 I2D4stuEval(3,
ep,1,3,4,2,5,kinem.
s12());
286 I2D4stuEval(4,
ep,1,3,5,2,4,kinem.
s34());
288 I2D4stuEval(5,
ep,1,4,5,2,3,kinem.
p3());
291 I2D4stuEval(6,
ep,2,3,4,1,5,kinem.
p1());
292 I2D4stuEval(7,
ep,2,3,5,1,4,kinem.
s15());
294 I2D4stuEval(8,
ep,2,4,5,1,3,kinem.
s23());
297 I2D4stuEval(9,
ep,3,4,5,1,2,kinem.
p2());
300 fEval[E_I2D4stu+
ep]=
true;
302 int idx=
im3(
s,
t,u)-10;
303 return pI2D4stu[
ep][idx];
306void Minor5::I2D4stuEval(
int idx,
int ep,
int s,
int t,
int u,
int m,
int n,
double qsq)
310 const double dstustu=-2*qsq;
311 const double msq1=kinem.
mass(m);
312 const double msq2=kinem.
mass(
n);
313 const double s_cutoff=
seps1*pmaxM2[
im2(m,
n)-5];
315 if (fabs(dstustu) <= s_cutoff) {
316 const double mm12=msq1-msq2;
317 if (fabs(mm12) <
meps) {
321 const double msq1p4=(msq1*msq1)*(msq1*msq1);
322 const double msq2p4=(msq2*msq2)*(msq2*msq2);
323 sum1= (77*(msq1*msq1p4-msq2*msq2p4)/7200
348 else { assert(
ep==1);
349 const double y11=
Cay[
nss(m,m)];
350 const double y12=
Cay[
nss(m,
n)];
353 +y11*y11*(y11*(35*(y11+y12)+5*y22)+15*y12*(2*y12+y22))
354 +y22*y22*(y22*(35*(y22+y12)+5*y11)+15*y12*(2*y12+y11))
355 +y12*y12*(y12*(8*y12+20*y11+20*y22)+24*y11*y22)
359 pI2D4stu[
ep][idx]=sum1;
370 if (not fEval[E_I3D5st+
ep]) {
373 int idx =
im2(
s,
t)-5;
374 return pI3D5st[
ep][idx];
377void Minor5::I3D5stEval(
int ep)
379 for (
int s=1;
s<=smax;
s++) {
380 for (
int t=
s+1;
t<=5;
t++) {
381 int idx =
im2(
s,
t)-5;
383 const double dstst=
M2(
s,
t,
s,
t);
386 if (pmaxS3[idx] <=
deps) {
387 printf(
"I3D5 - M2({%d,%d}) <= eps\n",
s,
t);
388 ivalue=std::numeric_limits<double>::quiet_NaN();
392 for (
int ei=
ep; ei<=1; ei++) {
394 for (
int u=1; u<=5; u++) {
395 if (
t==u ||
s==u)
continue;
403 pI3D5st[
ep][idx]=ivalue;
406 fEval[E_I3D5st+
ep]=
true;
415 assert(
t!=u && u!=
s &&
s!=
t);
417 if (not fEval[E_I2D5stu+
ep]) {
418 I2D5stuEval(0,
ep,1,2,3,4,5,kinem.
p5());
419 I2D5stuEval(1,
ep,1,2,4,3,5,kinem.
s45());
420 I2D5stuEval(2,
ep,1,2,5,3,4,kinem.
p4());
422 I2D5stuEval(3,
ep,1,3,4,2,5,kinem.
s12());
423 I2D5stuEval(4,
ep,1,3,5,2,4,kinem.
s34());
425 I2D5stuEval(5,
ep,1,4,5,2,3,kinem.
p3());
428 I2D5stuEval(6,
ep,2,3,4,1,5,kinem.
p1());
429 I2D5stuEval(7,
ep,2,3,5,1,4,kinem.
s15());
431 I2D5stuEval(8,
ep,2,4,5,1,3,kinem.
s23());
434 I2D5stuEval(9,
ep,3,4,5,1,2,kinem.
p2());
437 fEval[E_I2D5stu+
ep]=
true;
439 int idx=
im3(
s,
t,u)-10;
440 return pI2D5stu[
ep][idx];
443void Minor5::I2D5stuEval(
int idx,
int ep,
int s,
int t,
int u,
int m,
int n,
double qsq)
447 const double dstustu=-2*qsq;
448 const double msq1=kinem.
mass(m);
449 const double msq2=kinem.
mass(
n);
450 const double s_cutoff=
seps1*pmaxM2[
im2(m,
n)-5];
452 if (fabs(dstustu) <= s_cutoff) {
453 const double mm12=msq1-msq2;
454 if (fabs(mm12) <
meps) {
458 const double msq1p5=(msq1*msq1)*(msq1*msq1)*msq1;
459 const double msq2p5=(msq2*msq2)*(msq2*msq2)*msq2;
460 sum1=-(29*(msq1*msq1p5-msq2*msq2p5)/14400
483 else { assert(
ep==1);
484 const double y11=
Cay[
nss(m,m)];
485 const double y12=
Cay[
nss(m,
n)];
488 y11*y11*y11*(y11*(63*(y11+y12)+7*y22)+7*y12*(8*y12+3*y22)+3*y22*y22)
489 + y22*y22*y22*(y22*(63*(y22+y12)+7*y11)+7*y12*(8*y12+3*y11)+3*y11*y11)
490 + y12*y12*y12*(8*y12*(y12+3*y11+3*y22)+6*(7*y11*y11+4*y11*y22+7*y22*y22))
491 + y11*y22*y12*(4*y12*(9*(y11+y22)+4*y12)+15*y11*y22)
494 pI2D5stu[
ep][idx]=sum1;
505 if (not fEval[E_I3D6st+
ep]) {
508 int idx =
im2(
s,
t)-5;
509 return pI3D6st[
ep][idx];
512void Minor5::I3D6stEval(
int ep)
514 for (
int s=1;
s<=smax;
s++) {
515 for (
int t=
s+1;
t<=5;
t++) {
516 int idx =
im2(
s,
t)-5;
518 const double dstst=
M2(
s,
t,
s,
t);
521 if (pmaxS3[idx] <=
deps) {
522 printf(
"I3D6 - M2({%d,%d}) <= eps\n",
s,
t);
523 ivalue=std::numeric_limits<double>::quiet_NaN();
527 for (
int ei=
ep; ei<=1; ei++) {
529 for (
int u=1; u<=5; u++) {
530 if (
t==u ||
s==u)
continue;
538 pI3D6st[
ep][idx]=ivalue;
541 fEval[E_I3D6st+
ep]=
true;
550 assert(
t!=u && u!=
s &&
s!=
t);
552 if (not fEval[E_I2D6stu+
ep]) {
553 I2D6stuEval(0,
ep,1,2,3,4,5,kinem.
p5());
554 I2D6stuEval(1,
ep,1,2,4,3,5,kinem.
s45());
555 I2D6stuEval(2,
ep,1,2,5,3,4,kinem.
p4());
557 I2D6stuEval(3,
ep,1,3,4,2,5,kinem.
s12());
558 I2D6stuEval(4,
ep,1,3,5,2,4,kinem.
s34());
560 I2D6stuEval(5,
ep,1,4,5,2,3,kinem.
p3());
563 I2D6stuEval(6,
ep,2,3,4,1,5,kinem.
p1());
564 I2D6stuEval(7,
ep,2,3,5,1,4,kinem.
s15());
566 I2D6stuEval(8,
ep,2,4,5,1,3,kinem.
s23());
569 I2D6stuEval(9,
ep,3,4,5,1,2,kinem.
p2());
572 fEval[E_I2D6stu+
ep]=
true;
574 int idx=
im3(
s,
t,u)-10;
575 return pI2D6stu[
ep][idx];
578void Minor5::I2D6stuEval(
int idx,
int ep,
int s,
int t,
int u,
int m,
int n,
double qsq)
582 const double dstustu=-2*qsq;
583 const double msq1=kinem.
mass(m);
584 const double msq2=kinem.
mass(
n);
585 const double s_cutoff=
seps1*pmaxM2[
im2(m,
n)-5];
587 if (fabs(dstustu) <= s_cutoff) {
588 const double mm12=msq1-msq2;
589 if (fabs(mm12) <
meps) {
593 const double msq1p6=(msq1*msq1)*(msq1*msq1)*(msq1*msq1);
594 const double msq2p6=(msq2*msq2)*(msq2*msq2)*(msq2*msq2);
595 sum1=(223*(msq1*msq1p6-msq2*msq2p6)/705600
618 else { assert(
ep==1);
619 const double y11=
Cay[
nss(m,m)];
620 const double y12=
Cay[
nss(m,
n)];
623 y11*y11*y11*(y11*(21*y11*(11*(y11+y12)+y22)+210*y12*y12+7*y22*y22+63*y22*y12)
624 +y12*y12*(168*y12+112*y22))+y22*y22*y22*(y22*(21*y22*(11*(y22
625 +y12)+y11)+210*y12*y12+7*y11*y11+63*y11*y12)+y12*y12*(168*y12+112*y11))
626 +y12*y12*(y12*y12*(16*y12*y12+112*(y11*y11+y22*y22)+56*y12*(y11+y22)
627 +120*y11*y22)+y11*y22*(90*y11*y22+140*y12*(y22+y11)))+y11*y11*y22*y22*(35*(y11+y22)*y12+5*y11*y22)
630 pI2D6stu[
ep][idx]=sum1;
641 if (not fEval[E_I3D7st+
ep]) {
644 int idx =
im2(
s,
t)-5;
645 return pI3D7st[
ep][idx];
648void Minor5::I3D7stEval(
int ep)
650 for (
int s=1;
s<=smax;
s++) {
651 for (
int t=
s+1;
t<=5;
t++) {
652 int idx =
im2(
s,
t)-5;
654 const double dstst=
M2(
s,
t,
s,
t);
657 if (pmaxS3[idx] <=
deps) {
658 printf(
"I3D7 - M2({%d,%d}) <= eps\n",
s,
t);
659 ivalue=std::numeric_limits<double>::quiet_NaN();
663 for (
int ei=
ep; ei<=1; ei++) {
665 for (
int u=1; u<=5; u++) {
666 if (
t==u ||
s==u)
continue;
674 pI3D7st[
ep][idx]=ivalue;
677 fEval[E_I3D7st+
ep]=
true;
std::complex< double > ncomplex
static ncomplex getI1(int ep, const Kinem1 &k)
ncomplex I2stu(int ep, int s, int t, int u)
double M2(int i, int j, int l, int m) PURE
ncomplex I2D6stu(int ep, int s, int t, int u)
ncomplex I2D3stu(int ep, int s, int t, int u)
ncomplex I3D6st(int ep, int s, int t)
ncomplex I3D3st(int ep, int s, int t)
ncomplex I2D5stu(int ep, int s, int t, int u)
ncomplex I2D2stu(int ep, int s, int t, int u)
ncomplex I3D7st(int ep, int s, int t)
ncomplex I2D4stu(int ep, int s, int t, int u)
ncomplex I3D5st(int ep, int s, int t)
double M3(int i, int j, int k, int l, int m, int n) PURE
ncomplex I3D4st(int ep, int s, int t)
static const double seps1
static int nss(int i, int j) CONST
static int im2(int i, int j) CONST
static int im3(int i, int j, int k) CONST
double Cay[(DCay-1) *(DCay)/2]