20ncomplex Minor5::I2mDstu(
int ep,
int s,
int t,
int u,
int m,
int n)
23 const double dstustu=
M3(
s,
t,u,
s,
t,u);
24 const double msq1=kinem.
mass(m);
25 const double msq2=kinem.
mass(
n);
27 const double s_cutoff=
seps1*pmaxM2[
im2(m,
n)-5];
29 if (fabs(dstustu) <= s_cutoff) {
30 const double mm12=msq1-msq2;
31 if (fabs(mm12) <
meps) {
61 if (fabs(msq1) <
meps) {
62 if (fabs(msq2) <
meps) {
63 if (fabs(dstustu) >
meps) {
64 sum1=2./(-0.5*dstustu);
69 sum1=1./((-0.5*dstustu)-msq2);
71 }
else if (fabs(msq2) <
meps) {
72 sum1=1./((-0.5*dstustu)-msq1);
82ncomplex Minor5::I2stui(
int ep,
int s,
int t,
int u,
int i,
int ip)
85 const double dstustu=
M3(
s,
t,u,
s,
t,u);
86 const double msq1=kinem.
mass(i);
87 const double msq2=kinem.
mass(ip);
89 const double s_cutoff=
seps1*pmaxM2[
im2(i,ip)-5];
91 if (fabs(dstustu) <= s_cutoff) {
92 const double mm12=msq1-msq2;
93 if (fabs(mm12) <
meps) {
102 sum1=-1/(msq1 - msq2)
112 sum1+=+(
Cay[
nss(ip,ip)]-
Cay[
ns(i,ip)])*I2mDstu(ep,
s,
t,u,i,ip);
118 if (fabs(msq1) <
meps) {
119 if (fabs(dstustu) >
meps) {
120 if (fabs(msq2) <
meps) {
121 sum1=-1./(-0.5*dstustu);
123 sum1=-1./((-0.5*dstustu)-msq2);
144 assert(
t!=u && u!=
s &&
s!=
t);
146 if (not fEval[E_I2D3stu+ep]) {
147 I2D3stuEval(0,ep,1,2,3,4,5,kinem.
p5());
148 I2D3stuEval(1,ep,1,2,4,3,5,kinem.
s45());
149 I2D3stuEval(2,ep,1,2,5,3,4,kinem.
p4());
151 I2D3stuEval(3,ep,1,3,4,2,5,kinem.
s12());
152 I2D3stuEval(4,ep,1,3,5,2,4,kinem.
s34());
154 I2D3stuEval(5,ep,1,4,5,2,3,kinem.
p3());
157 I2D3stuEval(6,ep,2,3,4,1,5,kinem.
p1());
158 I2D3stuEval(7,ep,2,3,5,1,4,kinem.
s15());
160 I2D3stuEval(8,ep,2,4,5,1,3,kinem.
s23());
163 I2D3stuEval(9,ep,3,4,5,1,2,kinem.
p2());
166 fEval[E_I2D3stu+ep]=
true;
168 int idx=
im3(
s,
t,u)-10;
169 return pI2D3stu[ep][idx];
172void Minor5::I2D3stuEval(
int idx,
int ep,
int s,
int t,
int u,
int m,
int n,
double qsq)
176 const double dstustu=-2*qsq;
177 const double msq1=kinem.
mass(m);
178 const double msq2=kinem.
mass(
n);
179 const double s_cutoff=
seps1*pmaxM2[
im2(m,
n)-5];
181 if (fabs(dstustu) <= s_cutoff) {
182 const double mm12=msq1-msq2;
183 if (fabs(mm12) <
meps) {
187 sum1= -13*((msq1+msq2)*(msq1*msq1+msq2*msq2))/288
210 else { assert(ep==1);
211 const double y11=
Cay[
nss(m,m)];
212 const double y12=
Cay[
nss(m,
n)];
214 sum1=-(+ y11*y11*(y22 + 5*(y11 + y12))
215 + y22*y22*(y11 + 5*(y22 + y12))
216 + 2*y12*y12*(y12 + 2*(y11 + y22))
220 pI2D3stu[ep][idx]=sum1;
231 if (not fEval[E_I3D4st+ep]) {
234 int idx =
im2(
s,
t)-5;
235 return pI3D4st[ep][idx];
238void Minor5::I3D4stEval(
int ep)
240 for (
int s=1;
s<=smax;
s++) {
241 for (
int t=
s+1;
t<=5;
t++) {
242 int idx =
im2(
s,
t)-5;
244 const double dstst=
M2(
s,
t,
s,
t);
247 if (pmaxS3[idx] <=
deps) {
248 printf(
"I3D4 - M2({%d,%d}) <= eps\n",
s,
t);
249 ivalue=std::numeric_limits<double>::quiet_NaN();
253 for (
int ei=ep; ei<=1; ei++) {
255 for (
int u=1; u<=5; u++) {
256 if (
t==u ||
s==u)
continue;
264 pI3D4st[ep][idx]=ivalue;
267 fEval[E_I3D4st+ep]=
true;
277 assert(
t!=u && u!=
s &&
s!=
t);
279 if (not fEval[E_I2D4stu+ep]) {
280 I2D4stuEval(0,ep,1,2,3,4,5,kinem.
p5());
281 I2D4stuEval(1,ep,1,2,4,3,5,kinem.
s45());
282 I2D4stuEval(2,ep,1,2,5,3,4,kinem.
p4());
284 I2D4stuEval(3,ep,1,3,4,2,5,kinem.
s12());
285 I2D4stuEval(4,ep,1,3,5,2,4,kinem.
s34());
287 I2D4stuEval(5,ep,1,4,5,2,3,kinem.
p3());
290 I2D4stuEval(6,ep,2,3,4,1,5,kinem.
p1());
291 I2D4stuEval(7,ep,2,3,5,1,4,kinem.
s15());
293 I2D4stuEval(8,ep,2,4,5,1,3,kinem.
s23());
296 I2D4stuEval(9,ep,3,4,5,1,2,kinem.
p2());
299 fEval[E_I2D4stu+ep]=
true;
301 int idx=
im3(
s,
t,u)-10;
302 return pI2D4stu[ep][idx];
305void Minor5::I2D4stuEval(
int idx,
int ep,
int s,
int t,
int u,
int m,
int n,
double qsq)
309 const double dstustu=-2*qsq;
310 const double msq1=kinem.
mass(m);
311 const double msq2=kinem.
mass(
n);
312 const double s_cutoff=
seps1*pmaxM2[
im2(m,
n)-5];
314 if (fabs(dstustu) <= s_cutoff) {
315 const double mm12=msq1-msq2;
316 if (fabs(mm12) <
meps) {
320 const double msq1p4=(msq1*msq1)*(msq1*msq1);
321 const double msq2p4=(msq2*msq2)*(msq2*msq2);
322 sum1= (77*(msq1*msq1p4-msq2*msq2p4)/7200
347 else { assert(ep==1);
348 const double y11=
Cay[
nss(m,m)];
349 const double y12=
Cay[
nss(m,
n)];
352 +y11*y11*(y11*(35*(y11+y12)+5*y22)+15*y12*(2*y12+y22))
353 +y22*y22*(y22*(35*(y22+y12)+5*y11)+15*y12*(2*y12+y11))
354 +y12*y12*(y12*(8*y12+20*y11+20*y22)+24*y11*y22)
358 pI2D4stu[ep][idx]=sum1;
369 if (not fEval[E_I3D5st+ep]) {
372 int idx =
im2(
s,
t)-5;
373 return pI3D5st[ep][idx];
376void Minor5::I3D5stEval(
int ep)
378 for (
int s=1;
s<=smax;
s++) {
379 for (
int t=
s+1;
t<=5;
t++) {
380 int idx =
im2(
s,
t)-5;
382 const double dstst=
M2(
s,
t,
s,
t);
385 if (pmaxS3[idx] <=
deps) {
386 printf(
"I3D5 - M2({%d,%d}) <= eps\n",
s,
t);
387 ivalue=std::numeric_limits<double>::quiet_NaN();
391 for (
int ei=ep; ei<=1; ei++) {
393 for (
int u=1; u<=5; u++) {
394 if (
t==u ||
s==u)
continue;
402 pI3D5st[ep][idx]=ivalue;
405 fEval[E_I3D5st+ep]=
true;
414 assert(
t!=u && u!=
s &&
s!=
t);
416 if (not fEval[E_I2D5stu+ep]) {
417 I2D5stuEval(0,ep,1,2,3,4,5,kinem.
p5());
418 I2D5stuEval(1,ep,1,2,4,3,5,kinem.
s45());
419 I2D5stuEval(2,ep,1,2,5,3,4,kinem.
p4());
421 I2D5stuEval(3,ep,1,3,4,2,5,kinem.
s12());
422 I2D5stuEval(4,ep,1,3,5,2,4,kinem.
s34());
424 I2D5stuEval(5,ep,1,4,5,2,3,kinem.
p3());
427 I2D5stuEval(6,ep,2,3,4,1,5,kinem.
p1());
428 I2D5stuEval(7,ep,2,3,5,1,4,kinem.
s15());
430 I2D5stuEval(8,ep,2,4,5,1,3,kinem.
s23());
433 I2D5stuEval(9,ep,3,4,5,1,2,kinem.
p2());
436 fEval[E_I2D5stu+ep]=
true;
438 int idx=
im3(
s,
t,u)-10;
439 return pI2D5stu[ep][idx];
442void Minor5::I2D5stuEval(
int idx,
int ep,
int s,
int t,
int u,
int m,
int n,
double qsq)
446 const double dstustu=-2*qsq;
447 const double msq1=kinem.
mass(m);
448 const double msq2=kinem.
mass(
n);
449 const double s_cutoff=
seps1*pmaxM2[
im2(m,
n)-5];
451 if (fabs(dstustu) <= s_cutoff) {
452 const double mm12=msq1-msq2;
453 if (fabs(mm12) <
meps) {
457 const double msq1p5=(msq1*msq1)*(msq1*msq1)*msq1;
458 const double msq2p5=(msq2*msq2)*(msq2*msq2)*msq2;
459 sum1=-(29*(msq1*msq1p5-msq2*msq2p5)/14400
482 else { assert(ep==1);
483 const double y11=
Cay[
nss(m,m)];
484 const double y12=
Cay[
nss(m,
n)];
487 y11*y11*y11*(y11*(63*(y11+y12)+7*y22)+7*y12*(8*y12+3*y22)+3*y22*y22)
488 + y22*y22*y22*(y22*(63*(y22+y12)+7*y11)+7*y12*(8*y12+3*y11)+3*y11*y11)
489 + y12*y12*y12*(8*y12*(y12+3*y11+3*y22)+6*(7*y11*y11+4*y11*y22+7*y22*y22))
490 + y11*y22*y12*(4*y12*(9*(y11+y22)+4*y12)+15*y11*y22)
493 pI2D5stu[ep][idx]=sum1;
504 if (not fEval[E_I3D6st+ep]) {
507 int idx =
im2(
s,
t)-5;
508 return pI3D6st[ep][idx];
511void Minor5::I3D6stEval(
int ep)
513 for (
int s=1;
s<=smax;
s++) {
514 for (
int t=
s+1;
t<=5;
t++) {
515 int idx =
im2(
s,
t)-5;
517 const double dstst=
M2(
s,
t,
s,
t);
520 if (pmaxS3[idx] <=
deps) {
521 printf(
"I3D6 - M2({%d,%d}) <= eps\n",
s,
t);
522 ivalue=std::numeric_limits<double>::quiet_NaN();
526 for (
int ei=ep; ei<=1; ei++) {
528 for (
int u=1; u<=5; u++) {
529 if (
t==u ||
s==u)
continue;
537 pI3D6st[ep][idx]=ivalue;
540 fEval[E_I3D6st+ep]=
true;
549 assert(
t!=u && u!=
s &&
s!=
t);
551 if (not fEval[E_I2D6stu+ep]) {
552 I2D6stuEval(0,ep,1,2,3,4,5,kinem.
p5());
553 I2D6stuEval(1,ep,1,2,4,3,5,kinem.
s45());
554 I2D6stuEval(2,ep,1,2,5,3,4,kinem.
p4());
556 I2D6stuEval(3,ep,1,3,4,2,5,kinem.
s12());
557 I2D6stuEval(4,ep,1,3,5,2,4,kinem.
s34());
559 I2D6stuEval(5,ep,1,4,5,2,3,kinem.
p3());
562 I2D6stuEval(6,ep,2,3,4,1,5,kinem.
p1());
563 I2D6stuEval(7,ep,2,3,5,1,4,kinem.
s15());
565 I2D6stuEval(8,ep,2,4,5,1,3,kinem.
s23());
568 I2D6stuEval(9,ep,3,4,5,1,2,kinem.
p2());
571 fEval[E_I2D6stu+ep]=
true;
573 int idx=
im3(
s,
t,u)-10;
574 return pI2D6stu[ep][idx];
577void Minor5::I2D6stuEval(
int idx,
int ep,
int s,
int t,
int u,
int m,
int n,
double qsq)
581 const double dstustu=-2*qsq;
582 const double msq1=kinem.
mass(m);
583 const double msq2=kinem.
mass(
n);
584 const double s_cutoff=
seps1*pmaxM2[
im2(m,
n)-5];
586 if (fabs(dstustu) <= s_cutoff) {
587 const double mm12=msq1-msq2;
588 if (fabs(mm12) <
meps) {
592 const double msq1p6=(msq1*msq1)*(msq1*msq1)*(msq1*msq1);
593 const double msq2p6=(msq2*msq2)*(msq2*msq2)*(msq2*msq2);
594 sum1=(223*(msq1*msq1p6-msq2*msq2p6)/705600
617 else { assert(ep==1);
618 const double y11=
Cay[
nss(m,m)];
619 const double y12=
Cay[
nss(m,
n)];
622 y11*y11*y11*(y11*(21*y11*(11*(y11+y12)+y22)+210*y12*y12+7*y22*y22+63*y22*y12)
623 +y12*y12*(168*y12+112*y22))+y22*y22*y22*(y22*(21*y22*(11*(y22
624 +y12)+y11)+210*y12*y12+7*y11*y11+63*y11*y12)+y12*y12*(168*y12+112*y11))
625 +y12*y12*(y12*y12*(16*y12*y12+112*(y11*y11+y22*y22)+56*y12*(y11+y22)
626 +120*y11*y22)+y11*y22*(90*y11*y22+140*y12*(y22+y11)))+y11*y11*y22*y22*(35*(y11+y22)*y12+5*y11*y22)
629 pI2D6stu[ep][idx]=sum1;
640 if (not fEval[E_I3D7st+ep]) {
643 int idx =
im2(
s,
t)-5;
644 return pI3D7st[ep][idx];
647void Minor5::I3D7stEval(
int ep)
649 for (
int s=1;
s<=smax;
s++) {
650 for (
int t=
s+1;
t<=5;
t++) {
651 int idx =
im2(
s,
t)-5;
653 const double dstst=
M2(
s,
t,
s,
t);
656 if (pmaxS3[idx] <=
deps) {
657 printf(
"I3D7 - M2({%d,%d}) <= eps\n",
s,
t);
658 ivalue=std::numeric_limits<double>::quiet_NaN();
662 for (
int ei=ep; ei<=1; ei++) {
664 for (
int u=1; u<=5; u++) {
665 if (
t==u ||
s==u)
continue;
673 pI3D7st[ep][idx]=ivalue;
676 fEval[E_I3D7st+ep]=
true;
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]
std::complex< double > ncomplex