// gives two decimal places
function twod(x) {z=Math.round(100*x)/100; return z}

// function to find a root of.  This function is, approximately speaking, supply - demand in the intermediate market (raised to a convenient power)
function f(ty) {temp1=0.0;temp2=0.0;
for (ig=1; ig<=n; ig=ig+1) {temp1=temp1+(Math.pow(psi(ty,stemp[ig],rtemp[ig]),beta))*k[ig];temp2=temp2+(Math.pow(chi(ty,stemp[ig],rtemp[ig]),eta))*g[ig]};
vf= Math.pow(temp1,1+a*eta)-Math.pow(temp2,1+a*beta);return vf}

// Define psi, chi functions 
// psi and chi are not the same functions from the appendix, have 1-t-psi, t-xi instead
//This prevents a literal zero, which gives conniptions when raised to a power, but doesn't affect actual zeros based on market shares.
function psi(th,st,rt) {
vpsi=Math.max(0.00000001,1-th-(((1-th)/beta)*((th*(st-rt)/eta)+(a*st*(1-rt)))/((a*(1-st)*(1-rt))+((1-th)*(1-rt)/beta)+(th*(1-st)/eta)))); return vpsi}

function chi(th,st,rt) {
vchi=Math.max(0.00000001,th-((th/eta)*(((1-th)*(rt-st)/beta)+(a*rt*(1-st)))/((a*(1-st)*(1-rt))+((1-th)*(1-rt)/beta)+(th*(1-st)/eta)))); return vchi}

// this function reads the inputs
function cal() {
alpha=document.mhi.alpha.value;alpha=alpha*1;
beta=document.mhi.beta.value;beta=beta*1;
eta=document.mhi.eta.value;eta=eta*1;
n=document.mhi.n.value;n=n*1;
k[1]=document.mhi.k1.value; g[1]=document.mhi.g1.value;k[1]=k[1]*1;g[1]=g[1]*1;
k[2]=document.mhi.k2.value; g[2]=document.mhi.g2.value;k[2]=k[2]*1;g[2]=g[2]*1;
k[3]=document.mhi.k3.value; g[3]=document.mhi.g3.value;k[3]=k[3]*1;g[3]=g[3]*1;
k[4]=document.mhi.k4.value; g[4]=document.mhi.g4.value;k[4]=k[4]*1;g[4]=g[4]*1;
k[5]=document.mhi.k5.value; g[5]=document.mhi.g5.value;k[5]=k[5]*1;g[5]=g[5]*1;
k[6]=document.mhi.k6.value; g[6]=document.mhi.g6.value;k[6]=k[6]*1;g[6]=g[6]*1;
k[7]=document.mhi.k7.value; g[7]=document.mhi.g7.value;k[7]=k[7]*1;g[7]=g[7]*1;
k[8]=document.mhi.k8.value; g[8]=document.mhi.g8.value;k[8]=k[8]*1;g[8]=g[8]*1;
k[9]=document.mhi.k9.value; g[9]=document.mhi.g9.value;k[9]=k[9]*1;g[9]=g[9]*1;
k[10]=document.mhi.k10.value; g[10]=document.mhi.g10.value;k[10]=k[10]*1;g[10]=g[10]*1;
}

// this function rewrites the input variables and is called if one of the inputs in inadmissible
function displayfix() {
document.mhi.alpha.value=alpha;
document.mhi.beta.value=beta;
document.mhi.eta.value=eta;
document.mhi.n.value=n;
document.mhi.k1.value=k[1]; document.mhi.g1.value=g[1];
document.mhi.k2.value=k[2]; document.mhi.g2.value=g[2];
document.mhi.k3.value=k[3]; document.mhi.g3.value=g[3];
document.mhi.k4.value=k[4]; document.mhi.g4.value=g[4];
document.mhi.k5.value=k[5]; document.mhi.g5.value=g[5];
document.mhi.k6.value=k[6]; document.mhi.g6.value=g[6];
document.mhi.k7.value=k[7]; document.mhi.g7.value=g[7];
document.mhi.k8.value=k[8]; document.mhi.g8.value=g[8];
document.mhi.k9.value=k[9]; document.mhi.g9.value=g[9];
document.mhi.k10.value=k[10]; document.mhi.g10.value=g[10];
}

// the main computational program
function comput() {

errmessage="Messages:\n";stp=0.5;dfix=0; //errmessage is the messages file, stp is step size, and dfix=1 means some input was illegal
document.mhi.SOC.style.backgroundColor="#FFFFFF";document.mhi.SOC.value="";

// Error checking
if(!(n>=2)){errmessage=errmessage+"\nLow, negative or nonnumeric n reset to 3";n=3;dfix=1;}
n=Math.round(n);
if(!(alpha>=0||alpha<=0)){alpha=3;dfix=1;errmessage=errmessage+"\nError: Nonnumeric alpha encountered"}
if(alpha<=0) {a=0} else {a=1/alpha}
if(alpha<=1&&alpha>0) {errmessage=errmessage+"\nWarning: With inelastic demand, monopoly solution is q=0, and solution may not exist."}
if(alpha<=0) {errmessage=errmessage+"\nDemand elasticity set to infinity.  This produces the special case"}
if(!(beta>0)) {beta=1;dfix=1;errmessage=errmessage+"\nError: Downstream cost elasticities must be positive numbers."}
if(!(eta>0)) {eta=1;dfix=1;errmessage=errmessage+"\nError: Upstream cost elasticities must be positive numbers."}

// calculate capacity totals and put negative input shares to zero
ksum=0.0; gsum=0.0;
for (i=1; i<=n; i=i+1) {if(!(k[i]>=0)) {dfix=1;k[i]=0;errmessage=errmessage+"\nError: Negative or zero downstream market shares."}
  if(!(g[i]>=0)) {dfix=1;errmessage=errmessage+"\nError: Negative or zero upstream market shares.";g[i]=0};
  ksum=ksum+k[i];gsum=gsum+g[i]}

//check for big problems with input capacities
if(ksum<=0) {dfix=1;errmessage=errmessage+"\nError: Negative, zero or non-numeric downstream market shares.";k[1]=20;k[2]=30;k[3]=50;ksum=100;n=Math.max(n,3)}
if(gsum<=0) {dfix=1;errmessage=errmessage+"\nError: Negative, zero or non-numeric upstream market shares.";g[1]=20;g[2]=30;g[3]=50;gsum=100;n=Math.max(n,3)}

//zero out shares for inputs beyond n
overnsum=0;
for (i=n+1; i<=10; i=i+1) {overnsum=overnsum+k[i];overnsum=overnsum+g[i];k[i]=0;g[i]=0;s[i]=0;r[i]=0;stemp[i]=0;rtemp[i]=0;};
if(overnsum>0) {dfix=1};

if(!(dfix==0)) {displayfix();errmessage=errmessage+"\nRewriting input values to eliminate errors and inconsistencies"};

// Begin Computations

for (i=1; i<=n; i=i+1) {s[i]=k[i]/ksum;r[i]=g[i]/gsum;stemp[i]=s[i];rtemp[i]=r[i];}  //estimate market shares with capacity shares

document.mhi.error.value=errmessage;

// end input

// This do loop computes shares, iterate to find a solution 
for (iter=1; iter<=2000; iter=iter+1) {
  
xleft=0;xright=1;
// Find f[x]==0

if(f(xleft)*f(xright)>0) {xstar=Math.random(); errmessage=errmessage+"\nApparently no solution for f==0.  Phooey."}

if(f(xleft)<=0&&f(xright)>=0) {
for (im=1; im<=30; im=im+1) {xtest=(xleft+xright)/2; if(f(xtest)>0) {xright=xtest} else {xleft=xtest} }
xstar=(xleft+xright)/2}

if(f(xleft)>=0&&f(xright)<=0) {
for (im=1; im<=30; im=im+1) {xtest=(xleft+xright)/2; if(f(xtest)>0) {xleft=xtest} else {xright=xtest} }
xstar=(xleft+xright)/2}

thetatemp=xstar;
  
// Now compute shares that should prevail given the new values of q and theta 

sqerror=0;
tempq=0.0;for (iq=1; iq<=n; iq=iq+1) {tempq=tempq+(Math.pow(psi(thetatemp,stemp[iq],rtemp[iq]),beta)*k[iq])}
qtemp=Math.pow(tempq,1/(1+a*beta));

ssum=0;rsum=0;
for (iw=1; iw<=n; iw=iw+1) {
s[iw]=((1-stp)*s[iw])+(stp*Math.pow(qtemp,-a*beta-1)*Math.pow(psi(thetatemp,stemp[iw],rtemp[iw]),beta)*k[iw]);
r[iw]=((1-stp)*r[iw])+(stp*Math.pow(qtemp,-a*eta-1)*Math.pow(chi(thetatemp,stemp[iw],rtemp[iw]),eta)*g[iw]);
ssum=ssum+s[iw];rsum=rsum+r[iw]}
for (iw=1; iw<=n; iw=iw+1) {
s[iw]=s[iw]/ssum;r[iw]=r[iw]/rsum;
sqerror=sqerror+((stemp[iw]-s[iw])*(stemp[iw]-s[iw]))+((rtemp[iw]-r[iw])*(rtemp[iw]-r[iw]));
stemp[iw]=s[iw];rtemp[iw]=r[iw]  }

// if we have a solution, the calculation should give the same shares we started with 
bb=iter;bsq=sqerror;if(Math.sqrt(sqerror)<error) {bb=iter;break}
if(iter%25==0){stp=stp*2/3;errmessage=errmessage+"\nslow convergence, reducing step size"}

 } // End of Iter loop

q=qtemp;
t=thetatemp;

// The efficient quantity and intermediate good price 

ql=0.0;qr=Math.max(1,ksum);
for(iq=1; iq<100; iq=iq+1) {
qq=(ql+qr)/2;
if(((Math.pow(qq,a+(1/beta)))/(Math.pow(ksum,1/beta)))+((Math.pow(qq,a+(1/eta)))/(Math.pow(gsum,1/eta)))<1) {ql=qq} else {qr=qq}  }

qe=qq;

pe=Math.pow(qe,a+(1/eta))/Math.pow(gsum,1/eta);

MHI=0.0;
for(iu=1; iu<=n; iu=iu+1) {
MHI= MHI+((t*(1-t)*((s[iu]-r[iu])*(s[iu]-r[iu]))/(eta*beta))+(a*(1-t)*(1-r[iu])*(s[iu]*s[iu])/beta)+(a*t*(1-s[iu])*(r[iu]*r[iu])/eta))/((a*(1-s[iu])*(1-r[iu]))+((1-t)*(1-r[iu])/beta)+(t*(1-s[iu])/eta))
}

// End computations, start output 

if(!(Math.sqrt(sqerror)<error)) {
errmessage=errmessage+"\nError: Failure to converge.  Iterations= ";errmessage=errmessage+bb;errmessage=errmessage+" Estimated error is ";errmessage=errmessage+sqerror}
else {errmessage=errmessage+"\nConvergence achieved at iteration ";errmessage=errmessage+bb}

document.mhi.q.style.backgroundColor="#FFFFFF";
document.mhi.MHI.style.backgroundColor="#FFFFFF";
if(MHI>=1) {errmessage=errmessage+"\n\nLikely nonsense answer.  MHI>=100%.  Probably non-existence of solution.";document.mhi.MHI.style.backgroundColor="#FF3333"}
if(q<0.0001*qe) {errmessage=errmessage+"\n\nLikely nonsense answer.  Calculated q very near zero.  Probably non-existence of solution.";document.mhi.q.style.backgroundColor="#FF3333"}

// write output

document.mhi.error.value=errmessage;

document.mhi.s1.value=twod(100*s[1]);document.mhi.r1.value=twod(100*r[1]);document.mhi.k1.value=twod(k[1]);document.mhi.g1.value=twod(g[1]);
document.mhi.s2.value=twod(100*s[2]);document.mhi.r2.value=twod(100*r[2]);document.mhi.k2.value=twod(k[2]);document.mhi.g2.value=twod(g[2]);
document.mhi.s3.value=twod(100*s[3]);document.mhi.r3.value=twod(100*r[3]);document.mhi.k3.value=twod(k[3]);document.mhi.g3.value=twod(g[3]);
document.mhi.s4.value=twod(100*s[4]);document.mhi.r4.value=twod(100*r[4]);document.mhi.k4.value=twod(k[4]);document.mhi.g4.value=twod(g[4]);
document.mhi.s5.value=twod(100*s[5]);document.mhi.r5.value=twod(100*r[5]);document.mhi.k5.value=twod(k[5]);document.mhi.g5.value=twod(g[5]);
document.mhi.s6.value=twod(100*s[6]);document.mhi.r6.value=twod(100*r[6]);document.mhi.k6.value=twod(k[6]);document.mhi.g6.value=twod(g[6]);
document.mhi.s7.value=twod(100*s[7]);document.mhi.r7.value=twod(100*r[7]);document.mhi.k7.value=twod(k[7]);document.mhi.g7.value=twod(g[7]);
document.mhi.s8.value=twod(100*s[8]);document.mhi.r8.value=twod(100*r[8]);document.mhi.k8.value=twod(k[8]);document.mhi.g8.value=twod(g[8]);
document.mhi.s9.value=twod(100*s[9]);document.mhi.r9.value=twod(100*r[9]);document.mhi.k9.value=twod(k[9]);document.mhi.g9.value=twod(g[9]);
document.mhi.s10.value=twod(100*s[10]);document.mhi.r10.value=twod(100*r[10]);document.mhi.k10.value=twod(k[10]);document.mhi.g10.value=twod(g[10]);

document.mhi.t.value=twod(100*t);
document.mhi.pe.value=twod(100*pe);
document.mhi.q.value=twod(100.0*q/qe);
document.mhi.MHI.value=twod(100.0*MHI);

//Check second order conditions
soc="Passed";
errmessage=errmessage+"\n \n...Checking Second Order Conditions...";
for (i=1; i<=n; i=i+1)
{term1=d2k(s[i],r[i],a,(1-t)/beta,t/eta,t);
term2=d2g(s[i],r[i],a,(1-t)/beta,t/eta,t);
term3=crossterm(s[i],r[i],a,(1-t)/beta,t/eta,t);

if (term1<=0&&term2<=0&&term3>=0) {errmessage=errmessage+"\nSOCs satisfied for firm ";errmessage=errmessage+i}
else {soc="Failed";errmessage=errmessage+"\nSOCs failed for firm ";errmessage=errmessage+i;
errmessage=errmessage+"\n term 1 = ";errmessage=errmessage+term1;
errmessage=errmessage+"\n term 2 = ";errmessage=errmessage+term2;
errmessage=errmessage+"\n term 3 = ";errmessage=errmessage+term3;}
} //End SOC checking
document.mhi.SOC.value=soc;
document.mhi.error.value=errmessage;
if (soc=="Failed") {document.mhi.SOC.style.backgroundColor="#FF3333"} else {document.mhi.SOC.style.backgroundColor="#33FF33"}

}  //End of computing section

function d2k(si,ri,A,B,C,t) {
A2=A*A;A3=A2*A;A4=A3*A;B2=B*B;B3=B2*B;B4=B3*B;C2=C*C;C3=C2*C;C4=C3*C;
t2=t*t;t3=t2*t;t4=t3*t;si2=si*si;si3=si2*si;ri2=ri*ri;ri3=ri2*ri;
calc=A*B*C2*ri*si;
calc=calc + B2*C2*ri*si;
calc=calc - B2*C2*si2;
calc=calc - A*B*C2*ri*si2;
calc=calc - A3*t;
calc=calc - 3*A2*B*t;
calc=calc - 3*A*B2*t;
calc=calc - B3*t;
calc=calc - 3*A2*C*t;
calc=calc - 6*A*B*C*t;
calc=calc - 3*B2*C*t;
calc=calc - 3*A*C2*t;
calc=calc - 3*B*C2*t;
calc=calc - C3*t;
calc=calc + A3*ri*t;
calc=calc + 3*A2*B*ri*t;
calc=calc + 3*A*B2*ri*t;
calc=calc + B3*ri*t;
calc=calc + 2*A2*C*ri*t;
calc=calc + 4*A*B*C*ri*t;
calc=calc - A2*B*C*ri*t;
calc=calc + 2*B2*C*ri*t;
calc=calc - 2*A*B2*C*ri*t;
calc=calc - B3*C*ri*t;
calc=calc + A*C2*ri*t;
calc=calc + B*C2*ri*t;
calc=calc - 2*A*B*C2*ri*t;
calc=calc - 2*B2*C2*ri*t;
calc=calc - B*C3*ri*t;
calc=calc + A3*si*t;
calc=calc + 2*A2*B*si*t;
calc=calc + A3*B*si*t;
calc=calc + A*B2*si*t;
calc=calc + 2*A2*B2*si*t;
calc=calc + A*B3*si*t;
calc=calc + 3*A2*C*si*t;
calc=calc + 4*A*B*C*si*t;
calc=calc + 3*A2*B*C*si*t;
calc=calc + B2*C*si*t;
calc=calc + 4*A*B2*C*si*t;
calc=calc + B3*C*si*t;
calc=calc + 3*A*C2*si*t;
calc=calc + 2*B*C2*si*t;
calc=calc + 3*A*B*C2*si*t;
calc=calc + 2*B2*C2*si*t;
calc=calc + C3*si*t;
calc=calc + B*C3*si*t;
calc=calc - A3*ri*si*t;
calc=calc - 2*A2*B*ri*si*t;
calc=calc - A3*B*ri*si*t;
calc=calc - A*B2*ri*si*t;
calc=calc - 2*A2*B2*ri*si*t;
calc=calc - A*B3*ri*si*t;
calc=calc - A2*C*ri*si*t;
calc=calc - A*B*C*ri*si*t;
calc=calc + A*C2*ri*si*t;
calc=calc + B*C2*ri*si*t;
calc=calc + B2*C2*ri*si*t;
calc=calc + C3*ri*si*t;
calc=calc + B*C3*ri*si*t;
calc=calc + A2*B*si2*t;
calc=calc - A3*B*si2*t;
calc=calc + A*B2*si2*t;
calc=calc - A2*B2*si2*t;
calc=calc + 2*A*B*C*si2*t;
calc=calc - 3*A2*B*C*si2*t;
calc=calc + B2*C*si2*t;
calc=calc - 4*A*B2*C*si2*t;
calc=calc + B*C2*si2*t;
calc=calc - 3*A*B*C2*si2*t;
calc=calc - B2*C2*si2*t;
calc=calc - B*C3*si2*t;
calc=calc - A2*B*ri*si2*t;
calc=calc + A3*B*ri*si2*t;
calc=calc - A*B2*ri*si2*t;
calc=calc + A2*B2*ri*si2*t;
calc=calc - A2*C*ri*si2*t;
calc=calc - 3*A*B*C*ri*si2*t;
calc=calc + A2*B*C*ri*si2*t;
calc=calc - B2*C*ri*si2*t;
calc=calc + 2*A*B2*C*ri*si2*t;
calc=calc - 2*A*C2*ri*si2*t;
calc=calc - 2*B*C2*ri*si2*t;
calc=calc + 2*A*B*C2*ri*si2*t;
calc=calc - C3*ri*si2*t;
calc=calc + A3*t2;
calc=calc + 3*A2*B*t2;
calc=calc + 3*A*B2*t2;
calc=calc + B3*t2;
calc=calc + 3*A2*C*t2;
calc=calc + 6*A*B*C*t2;
calc=calc + 3*B2*C*t2;
calc=calc + 3*A*C2*t2;
calc=calc + 3*B*C2*t2;
calc=calc + C3*t2;
calc=calc - A3*ri*t2;
calc=calc - 3*A2*B*ri*t2;
calc=calc - 3*A*B2*ri*t2;
calc=calc - B3*ri*t2;
calc=calc - 2*A2*C*ri*t2;
calc=calc - 4*A*B*C*ri*t2;
calc=calc - 2*B2*C*ri*t2;
calc=calc - A*C2*ri*t2;
calc=calc - B*C2*ri*t2;
calc=calc - A3*si*t2;
calc=calc - 2*A2*B*si*t2;
calc=calc - A*B2*si*t2;
calc=calc - 3*A2*C*si*t2;
calc=calc - 4*A*B*C*si*t2;
calc=calc - B2*C*si*t2;
calc=calc - 3*A*C2*si*t2;
calc=calc - 2*B*C2*si*t2;
calc=calc - C3*si*t2;
calc=calc + A3*ri*si*t2;
calc=calc + 2*A2*B*ri*si*t2;
calc=calc + A*B2*ri*si*t2;
calc=calc + A2*C*ri*si*t2;
calc=calc + A*B*C*ri*si*t2;
calc=calc - A2*B*C*ri*si*t2;
calc=calc - A*C2*ri*si*t2;
calc=calc - B*C2*ri*si*t2;
calc=calc - C3*ri*si*t2;
calc=calc - A2*B*si2*t2;
calc=calc - A*B2*si2*t2;
calc=calc - A2*B2*si2*t2;
calc=calc - 2*A*B*C*si2*t2;
calc=calc - B2*C*si2*t2;
calc=calc - B*C2*si2*t2;
calc=calc + A2*B*ri*si2*t2;
calc=calc + A*B2*ri*si2*t2;
calc=calc + A2*B2*ri*si2*t2;
calc=calc + A2*C*ri*si2*t2;
calc=calc + 3*A*B*C*ri*si2*t2;
calc=calc + A2*B*C*ri*si2*t2;
calc=calc + B2*C*ri*si2*t2;
calc=calc + 2*A*C2*ri*si2*t2;
calc=calc + 2*B*C2*ri*si2*t2;
calc=calc + C3*ri*si2*t2; return calc}

function d2g(si,ri,A,B,C,t) {
A2=A*A;A3=A2*A;A4=A3*A;B2=B*B;B3=B2*B;B4=B3*B;C2=C*C;C3=C2*C;C4=C3*C;
t2=t*t;t3=t2*t;t4=t3*t;si2=si*si;si3=si2*si;ri2=ri*ri;ri3=ri2*ri;
calc=A3*C*ri;
calc=calc + 3*A2*B*C*ri;
calc=calc + 3*A*B2*C*ri;
calc=calc + B3*C*ri;
calc=calc + 2*A2*C2*ri;
calc=calc + 4*A*B*C2*ri;
calc=calc + 2*B2*C2*ri;
calc=calc + A*C3*ri;
calc=calc + B*C3*ri;
calc=calc - A3*C*ri2;
calc=calc - 3*A2*B*C*ri2;
calc=calc - 3*A*B2*C*ri2;
calc=calc - B3*C*ri2;
calc=calc - 2*A2*C2*ri2;
calc=calc - 4*A*B*C2*ri2;
calc=calc - 2*B2*C2*ri2;
calc=calc - A2*B*C*si;
calc=calc - 2*A*B2*C*si;
calc=calc - B3*C*si;
calc=calc - 2*A*B*C2*si;
calc=calc - 2*B2*C2*si;
calc=calc - B*C3*si;
calc=calc - A3*C*ri*si;
calc=calc - A2*B*C*ri*si;
calc=calc + A*B2*C*ri*si;
calc=calc + B3*C*ri*si;
calc=calc - 2*A2*C2*ri*si;
calc=calc + 2*B2*C2*ri*si;
calc=calc - A*C3*ri*si;
calc=calc + A3*C*ri2*si;
calc=calc + 2*A2*B*C*ri2*si;
calc=calc + A*B2*C*ri2*si;
calc=calc + 2*A2*C2*ri2*si;
calc=calc + 2*A*B*C2*ri2*si;
calc=calc - A3*t;
calc=calc - 3*A2*B*t;
calc=calc - 3*A*B2*t;
calc=calc - B3*t;
calc=calc - 3*A2*C*t;
calc=calc - 6*A*B*C*t;
calc=calc - 3*B2*C*t;
calc=calc - 3*A*C2*t;
calc=calc - 3*B*C2*t;
calc=calc - C3*t;
calc=calc + A3*ri*t;
calc=calc + 3*A2*B*ri*t;
calc=calc + 3*A*B2*ri*t;
calc=calc + B3*ri*t;
calc=calc + 2*A2*C*ri*t;
calc=calc - A3*C*ri*t;
calc=calc + 4*A*B*C*ri*t;
calc=calc - 3*A2*B*C*ri*t;
calc=calc + 2*B2*C*ri*t;
calc=calc - 3*A*B2*C*ri*t;
calc=calc - B3*C*ri*t;
calc=calc + A*C2*ri*t;
calc=calc - 2*A2*C2*ri*t;
calc=calc + B*C2*ri*t;
calc=calc - 4*A*B*C2*ri*t;
calc=calc - 2*B2*C2*ri*t;
calc=calc - A*C3*ri*t;
calc=calc - B*C3*ri*t;
calc=calc + A2*C*ri2*t;
calc=calc + A3*C*ri2*t;
calc=calc + 2*A*B*C*ri2*t;
calc=calc + 3*A2*B*C*ri2*t;
calc=calc + B2*C*ri2*t;
calc=calc + 3*A*B2*C*ri2*t;
calc=calc + B3*C*ri2*t;
calc=calc + A*C2*ri2*t;
calc=calc + 3*A2*C2*ri2*t;
calc=calc + B*C2*ri2*t;
calc=calc + 4*A*B*C2*ri2*t;
calc=calc + B2*C2*ri2*t;
calc=calc + A3*si*t;
calc=calc + 2*A2*B*si*t;
calc=calc + A*B2*si*t;
calc=calc + 3*A2*C*si*t;
calc=calc + 4*A*B*C*si*t;
calc=calc + A2*B*C*si*t;
calc=calc + B2*C*si*t;
calc=calc + 2*A*B2*C*si*t;
calc=calc + B3*C*si*t;
calc=calc + 3*A*C2*si*t;
calc=calc + 2*B*C2*si*t;
calc=calc + 2*A*B*C2*si*t;
calc=calc + 2*B2*C2*si*t;
calc=calc + C3*si*t;
calc=calc + B*C3*si*t;
calc=calc - A3*ri*si*t;
calc=calc - A2*B*ri*si*t;
calc=calc + A*B2*ri*si*t;
calc=calc + B3*ri*si*t;
calc=calc - 2*A2*C*ri*si*t;
calc=calc + A3*C*ri*si*t;
calc=calc - A*B*C*ri*si*t;
calc=calc + 2*A2*B*C*ri*si*t;
calc=calc + B2*C*ri*si*t;
calc=calc - B3*C*ri*si*t;
calc=calc - A*C2*ri*si*t;
calc=calc + 2*A2*C2*ri*si*t;
calc=calc - B2*C2*ri*si*t;
calc=calc + A*C3*ri*si*t;
calc=calc - A2*B*ri2*si*t;
calc=calc - 2*A*B2*ri2*si*t;
calc=calc - B3*ri2*si*t;
calc=calc - A2*C*ri2*si*t;
calc=calc - A3*C*ri2*si*t;
calc=calc - 3*A*B*C*ri2*si*t;
calc=calc - 3*A2*B*C*ri2*si*t;
calc=calc - 2*B2*C*ri2*si*t;
calc=calc - 2*A*B2*C*ri2*si*t;
calc=calc - A*C2*ri2*si*t;
calc=calc - 3*A2*C2*ri2*si*t;
calc=calc - B*C2*ri2*si*t;
calc=calc - 2*A*B*C2*ri2*si*t;
calc=calc + A3*t2;
calc=calc + 3*A2*B*t2;
calc=calc + 3*A*B2*t2;
calc=calc + B3*t2;
calc=calc + 3*A2*C*t2;
calc=calc + 6*A*B*C*t2;
calc=calc + 3*B2*C*t2;
calc=calc + 3*A*C2*t2;
calc=calc + 3*B*C2*t2;
calc=calc + C3*t2;
calc=calc - A3*ri*t2;
calc=calc - 3*A2*B*ri*t2;
calc=calc - 3*A*B2*ri*t2;
calc=calc - B3*ri*t2;
calc=calc - 2*A2*C*ri*t2;
calc=calc - 4*A*B*C*ri*t2;
calc=calc - 2*B2*C*ri*t2;
calc=calc - A*C2*ri*t2;
calc=calc - B*C2*ri*t2;
calc=calc - A2*C*ri2*t2;
calc=calc - 2*A*B*C*ri2*t2;
calc=calc - B2*C*ri2*t2;
calc=calc - A*C2*ri2*t2;
calc=calc - A2*C2*ri2*t2;
calc=calc - B*C2*ri2*t2;
calc=calc - A3*si*t2;
calc=calc - 2*A2*B*si*t2;
calc=calc - A*B2*si*t2;
calc=calc - 3*A2*C*si*t2;
calc=calc - 4*A*B*C*si*t2;
calc=calc - B2*C*si*t2;
calc=calc - 3*A*C2*si*t2;
calc=calc - 2*B*C2*si*t2;
calc=calc - C3*si*t2;
calc=calc + A3*ri*si*t2;
calc=calc + A2*B*ri*si*t2;
calc=calc - A*B2*ri*si*t2;
calc=calc - B3*ri*si*t2;
calc=calc + 2*A2*C*ri*si*t2;
calc=calc + A*B*C*ri*si*t2;
calc=calc - A2*B*C*ri*si*t2;
calc=calc - B2*C*ri*si*t2;
calc=calc + A*C2*ri*si*t2;
calc=calc + A2*B*ri2*si*t2;
calc=calc + 2*A*B2*ri2*si*t2;
calc=calc + B3*ri2*si*t2;
calc=calc + A2*C*ri2*si*t2;
calc=calc + 3*A*B*C*ri2*si*t2;
calc=calc + A2*B*C*ri2*si*t2;
calc=calc + 2*B2*C*ri2*si*t2;
calc=calc + A*C2*ri2*si*t2;
calc=calc + A2*C2*ri2*si*t2;
calc=calc + B*C2*ri2*si*t2; return calc}

function crossterm(si, ri, A, B, C, t) {
A2=A*A;A3=A2*A;A4=A3*A;B2=B*B;B3=B2*B;B4=B3*B;C2=C*C;C3=C2*C;C4=C3*C;
t2=t*t;t3=t2*t;t4=t3*t;si2=si*si;si3=si2*si;ri2=ri*ri;ri3=ri2*ri;
calc= A2*B*C3*ri2*si;
calc=calc + 2*A*B2*C3*ri2*si;
calc=calc + B3*C3*ri2*si;
calc=calc - A2*B*C3*ri3*si;
calc=calc - 2*A*B2*C3*ri3*si;
calc=calc - B3*C3*ri3*si;
calc=calc - 2*A*B2*C3*ri*si2;
calc=calc - 2*B3*C3*ri*si2;
calc=calc - 2*A2*B*C3*ri2*si2;
calc=calc + 2*B3*C3*ri2*si2;
calc=calc + 2*A2*B*C3*ri3*si2;
calc=calc + 2*A*B2*C3*ri3*si2;
calc=calc + B3*C3*si3;
calc=calc + 2*A*B2*C3*ri*si3;
calc=calc - B3*C3*ri*si3;
calc=calc + A2*B*C3*ri2*si3;
calc=calc - 2*A*B2*C3*ri2*si3;
calc=calc - A2*B*C3*ri3*si3;
calc=calc - A4*C*ri*t;
calc=calc - 4*A3*B*C*ri*t;
calc=calc - 6*A2*B2*C*ri*t;
calc=calc - 4*A*B3*C*ri*t;
calc=calc - B4*C*ri*t;
calc=calc - 3*A3*C2*ri*t;
calc=calc - 9*A2*B*C2*ri*t;
calc=calc - 9*A*B2*C2*ri*t;
calc=calc - 3*B3*C2*ri*t;
calc=calc - 3*A2*C3*ri*t;
calc=calc - 6*A*B*C3*ri*t;
calc=calc - 3*B2*C3*ri*t;
calc=calc - A*C4*ri*t;
calc=calc - B*C4*ri*t;
calc=calc + 2*A4*C*ri2*t;
calc=calc + 8*A3*B*C*ri2*t;
calc=calc + 12*A2*B2*C*ri2*t;
calc=calc + 8*A*B3*C*ri2*t;
calc=calc + 2*B4*C*ri2*t;
calc=calc + 5*A3*C2*ri2*t;
calc=calc + 15*A2*B*C2*ri2*t;
calc=calc - A3*B*C2*ri2*t;
calc=calc + 15*A*B2*C2*ri2*t;
calc=calc - 3*A2*B2*C2*ri2*t;
calc=calc + 5*B3*C2*ri2*t;
calc=calc - 3*A*B3*C2*ri2*t;
calc=calc - B4*C2*ri2*t;
calc=calc + 3*A2*C3*ri2*t;
calc=calc + 6*A*B*C3*ri2*t;
calc=calc - 2*A2*B*C3*ri2*t;
calc=calc + 3*B2*C3*ri2*t;
calc=calc - 4*A*B2*C3*ri2*t;
calc=calc - 2*B3*C3*ri2*t;
calc=calc - A*B*C4*ri2*t;
calc=calc - B2*C4*ri2*t;
calc=calc - A4*C*ri3*t;
calc=calc - 4*A3*B*C*ri3*t;
calc=calc - 6*A2*B2*C*ri3*t;
calc=calc - 4*A*B3*C*ri3*t;
calc=calc - B4*C*ri3*t;
calc=calc - 2*A3*C2*ri3*t;
calc=calc - 6*A2*B*C2*ri3*t;
calc=calc + A3*B*C2*ri3*t;
calc=calc - 6*A*B2*C2*ri3*t;
calc=calc + 3*A2*B2*C2*ri3*t;
calc=calc - 2*B3*C2*ri3*t;
calc=calc + 3*A*B3*C2*ri3*t;
calc=calc + B4*C2*ri3*t;
calc=calc + 2*A2*B*C3*ri3*t;
calc=calc + 4*A*B2*C3*ri3*t;
calc=calc + 2*B3*C3*ri3*t;
calc=calc + A3*B*C*si*t;
calc=calc + 3*A2*B2*C*si*t;
calc=calc + 3*A*B3*C*si*t;
calc=calc + B4*C*si*t;
calc=calc + 3*A2*B*C2*si*t;
calc=calc + 6*A*B2*C2*si*t;
calc=calc + 3*B3*C2*si*t;
calc=calc + 3*A*B*C3*si*t;
calc=calc + 3*B2*C3*si*t;
calc=calc + B*C4*si*t;
calc=calc + 2*A4*C*ri*si*t;
calc=calc + 4*A3*B*C*ri*si*t;
calc=calc + A4*B*C*ri*si*t;
calc=calc + 3*A3*B2*C*ri*si*t;
calc=calc - 4*A*B3*C*ri*si*t;
calc=calc + 3*A2*B3*C*ri*si*t;
calc=calc - 2*B4*C*ri*si*t;
calc=calc + A*B4*C*ri*si*t;
calc=calc + 6*A3*C2*ri*si*t;
calc=calc + 7*A2*B*C2*ri*si*t;
calc=calc + 3*A3*B*C2*ri*si*t;
calc=calc - 4*A*B2*C2*ri*si*t;
calc=calc + 8*A2*B2*C2*ri*si*t;
calc=calc - 5*B3*C2*ri*si*t;
calc=calc + 7*A*B3*C2*ri*si*t;
calc=calc + 2*B4*C2*ri*si*t;
calc=calc + 6*A2*C3*ri*si*t;
calc=calc + 4*A*B*C3*ri*si*t;
calc=calc + 3*A2*B*C3*ri*si*t;
calc=calc - 2*B2*C3*ri*si*t;
calc=calc + 7*A*B2*C3*ri*si*t;
calc=calc + 4*B3*C3*ri*si*t;
calc=calc + 2*A*C4*ri*si*t;
calc=calc + B*C4*ri*si*t;
calc=calc + A*B*C4*ri*si*t;
calc=calc + 2*B2*C4*ri*si*t;
calc=calc - 4*A4*C*ri2*si*t;
calc=calc - 11*A3*B*C*ri2*si*t;
calc=calc - 2*A4*B*C*ri2*si*t;
calc=calc - 9*A2*B2*C*ri2*si*t;
calc=calc - 6*A3*B2*C*ri2*si*t;
calc=calc - A*B3*C*ri2*si*t;
calc=calc - 6*A2*B3*C*ri2*si*t;
calc=calc + B4*C*ri2*si*t;
calc=calc - 2*A*B4*C*ri2*si*t;
calc=calc - 9*A3*C2*ri2*si*t;
calc=calc - 16*A2*B*C2*ri2*si*t;
calc=calc - 2*A3*B*C2*ri2*si*t;
calc=calc - 5*A*B2*C2*ri2*si*t;
calc=calc - 6*A2*B2*C2*ri2*si*t;
calc=calc + 2*B3*C2*ri2*si*t;
calc=calc - 6*A*B3*C2*ri2*si*t;
calc=calc - 2*B4*C2*ri2*si*t;
calc=calc - 4*A2*C3*ri2*si*t;
calc=calc - 5*A*B*C3*ri2*si*t;
calc=calc - A2*B*C3*ri2*si*t;
calc=calc - B2*C3*ri2*si*t;
calc=calc - 5*A*B2*C3*ri2*si*t;
calc=calc - 4*B3*C3*ri2*si*t;
calc=calc + A*C4*ri2*si*t;
calc=calc + B*C4*ri2*si*t;
calc=calc + 2*A*B*C4*ri2*si*t;
calc=calc + B2*C4*ri2*si*t;
calc=calc + 2*A4*C*ri3*si*t;
calc=calc + 6*A3*B*C*ri3*si*t;
calc=calc + A4*B*C*ri3*si*t;
calc=calc + 6*A2*B2*C*ri3*si*t;
calc=calc + 3*A3*B2*C*ri3*si*t;
calc=calc + 2*A*B3*C*ri3*si*t;
calc=calc + 3*A2*B3*C*ri3*si*t;
calc=calc + A*B4*C*ri3*si*t;
calc=calc + 3*A3*C2*ri3*si*t;
calc=calc + 6*A2*B*C2*ri3*si*t;
calc=calc - A3*B*C2*ri3*si*t;
calc=calc + 3*A*B2*C2*ri3*si*t;
calc=calc - 2*A2*B2*C2*ri3*si*t;
calc=calc - A*B3*C2*ri3*si*t;
calc=calc - 2*A2*C3*ri3*si*t;
calc=calc - 2*A*B*C3*ri3*si*t;
calc=calc - 2*A2*B*C3*ri3*si*t;
calc=calc - 2*A*B2*C3*ri3*si*t;
calc=calc - A3*B*C*si2*t;
calc=calc - 2*A2*B2*C*si2*t;
calc=calc - A3*B2*C*si2*t;
calc=calc - A*B3*C*si2*t;
calc=calc - 2*A2*B3*C*si2*t;
calc=calc - A*B4*C*si2*t;
calc=calc - 3*A2*B*C2*si2*t;
calc=calc - 3*A*B2*C2*si2*t;
calc=calc - 3*A2*B2*C2*si2*t;
calc=calc - 4*A*B3*C2*si2*t;
calc=calc - B4*C2*si2*t;
calc=calc - 3*A*B*C3*si2*t;
calc=calc - B2*C3*si2*t;
calc=calc - 3*A*B2*C3*si2*t;
calc=calc - 2*B3*C3*si2*t;
calc=calc - B*C4*si2*t;
calc=calc - B2*C4*si2*t;
calc=calc - A4*C*ri*si2*t;
calc=calc + A3*B*C*ri*si2*t;
calc=calc - 2*A4*B*C*ri*si2*t;
calc=calc + 5*A2*B2*C*ri*si2*t;
calc=calc - 2*A3*B2*C*ri*si2*t;
calc=calc + 3*A*B3*C*ri*si2*t;
calc=calc + 2*A2*B3*C*ri*si2*t;
calc=calc + 2*A*B4*C*ri*si2*t;
calc=calc - 3*A3*C2*ri*si2*t;
calc=calc + 4*A2*B*C2*ri*si2*t;
calc=calc - 6*A3*B*C2*ri*si2*t;
calc=calc + 8*A*B2*C2*ri*si2*t;
calc=calc - 8*A2*B2*C2*ri*si2*t;
calc=calc + B3*C2*ri*si2*t;
calc=calc - A*B3*C2*ri*si2*t;
calc=calc + B4*C2*ri*si2*t;
calc=calc - 3*A2*C3*ri*si2*t;
calc=calc + 2*A*B*C3*ri*si2*t;
calc=calc - 6*A2*B*C3*ri*si2*t;
calc=calc + 3*B2*C3*ri*si2*t;
calc=calc - 2*A*B2*C3*ri*si2*t;
calc=calc + 2*B3*C3*ri*si2*t;
calc=calc - A*C4*ri*si2*t;
calc=calc - B*C4*ri*si2*t;
calc=calc - 2*A*B*C4*ri*si2*t;
calc=calc - 2*B2*C4*ri*si2*t;
calc=calc + 2*A4*C*ri2*si2*t;
calc=calc + A3*B*C*ri2*si2*t;
calc=calc + 4*A4*B*C*ri2*si2*t;
calc=calc - 4*A2*B2*C*ri2*si2*t;
calc=calc + 7*A3*B2*C*ri2*si2*t;
calc=calc - 3*A*B3*C*ri2*si2*t;
calc=calc + 2*A2*B3*C*ri2*si2*t;
calc=calc - A*B4*C*ri2*si2*t;
calc=calc + 3*A3*C2*ri2*si2*t;
calc=calc - 4*A2*B*C2*ri2*si2*t;
calc=calc + 7*A3*B*C2*ri2*si2*t;
calc=calc - 8*A*B2*C2*ri2*si2*t;
calc=calc + 14*A2*B2*C2*ri2*si2*t;
calc=calc - B3*C2*ri2*si2*t;
calc=calc + 7*A*B3*C2*ri2*si2*t;
calc=calc - A2*C3*ri2*si2*t;
calc=calc - A*B*C3*ri2*si2*t;
calc=calc + 8*A2*B*C3*ri2*si2*t;
calc=calc - 2*B2*C3*ri2*si2*t;
calc=calc + 7*A*B2*C3*ri2*si2*t;
calc=calc - 2*A*C4*ri2*si2*t;
calc=calc - B*C4*ri2*si2*t;
calc=calc - A*B*C4*ri2*si2*t;
calc=calc - A4*C*ri3*si2*t;
calc=calc - A3*B*C*ri3*si2*t;
calc=calc - 2*A4*B*C*ri3*si2*t;
calc=calc + A2*B2*C*ri3*si2*t;
calc=calc - 4*A3*B2*C*ri3*si2*t;
calc=calc + A*B3*C*ri3*si2*t;
calc=calc - 2*A2*B3*C*ri3*si2*t;
calc=calc + 3*A2*B*C2*ri3*si2*t;
calc=calc - A3*B*C2*ri3*si2*t;
calc=calc + 3*A*B2*C2*ri3*si2*t;
calc=calc - 3*A2*B2*C2*ri3*si2*t;
calc=calc - 2*A*B3*C2*ri3*si2*t;
calc=calc + 4*A2*C3*ri3*si2*t;
calc=calc + 2*A*B*C3*ri3*si2*t;
calc=calc - 2*A2*B*C3*ri3*si2*t;
calc=calc - 2*A*B2*C3*ri3*si2*t;
calc=calc - A2*B2*C*si3*t;
calc=calc + A3*B2*C*si3*t;
calc=calc - A*B3*C*si3*t;
calc=calc + A2*B3*C*si3*t;
calc=calc - 3*A*B2*C2*si3*t;
calc=calc + 3*A2*B2*C2*si3*t;
calc=calc - B3*C2*si3*t;
calc=calc + 4*A*B3*C2*si3*t;
calc=calc - 2*B2*C3*si3*t;
calc=calc + 3*A*B2*C3*si3*t;
calc=calc + B2*C4*si3*t;
calc=calc - A3*B*C*ri*si3*t;
calc=calc + A4*B*C*ri*si3*t;
calc=calc + A2*B2*C*ri*si3*t;
calc=calc - A3*B2*C*ri*si3*t;
calc=calc + 2*A*B3*C*ri*si3*t;
calc=calc - 2*A2*B3*C*ri*si3*t;
calc=calc - 2*A2*B*C2*ri*si3*t;
calc=calc + 3*A3*B*C2*ri*si3*t;
calc=calc + 5*A*B2*C2*ri*si3*t;
calc=calc + B3*C2*ri*si3*t;
calc=calc - 6*A*B3*C2*ri*si3*t;
calc=calc + 3*A2*B*C3*ri*si3*t;
calc=calc + 2*B2*C3*ri*si3*t;
calc=calc - 5*A*B2*C3*ri*si3*t;
calc=calc + B*C4*ri*si3*t;
calc=calc + A*B*C4*ri*si3*t;
calc=calc + 2*A3*B*C*ri2*si3*t;
calc=calc - 2*A4*B*C*ri2*si3*t;
calc=calc + A2*B2*C*ri2*si3*t;
calc=calc - A3*B2*C*ri2*si3*t;
calc=calc - A*B3*C*ri2*si3*t;
calc=calc + A2*B3*C*ri2*si3*t;
calc=calc + A3*C2*ri2*si3*t;
calc=calc + 5*A2*B*C2*ri2*si3*t;
calc=calc - 4*A3*B*C2*ri2*si3*t;
calc=calc - 2*A*B2*C2*ri2*si3*t;
calc=calc - 5*A2*B2*C2*ri2*si3*t;
calc=calc + 2*A*B3*C2*ri2*si3*t;
calc=calc + 2*A2*C3*ri2*si3*t;
calc=calc - 5*A2*B*C3*ri2*si3*t;
calc=calc + 2*A*B2*C3*ri2*si3*t;
calc=calc + A*C4*ri2*si3*t;
calc=calc - A3*B*C*ri3*si3*t;
calc=calc + A4*B*C*ri3*si3*t;
calc=calc - A2*B2*C*ri3*si3*t;
calc=calc + A3*B2*C*ri3*si3*t;
calc=calc - A3*C2*ri3*si3*t;
calc=calc - 3*A2*B*C2*ri3*si3*t;
calc=calc + A3*B*C2*ri3*si3*t;
calc=calc + 2*A2*B2*C2*ri3*si3*t;
calc=calc - 2*A2*C3*ri3*si3*t;
calc=calc + 2*A2*B*C3*ri3*si3*t;
calc=calc + A4*t2;
calc=calc + 4*A3*B*t2;
calc=calc + 6*A2*B2*t2;
calc=calc + 4*A*B3*t2;
calc=calc + B4*t2;
calc=calc + 4*A3*C*t2;
calc=calc + 12*A2*B*C*t2;
calc=calc + 12*A*B2*C*t2;
calc=calc + 4*B3*C*t2;
calc=calc + 6*A2*C2*t2;
calc=calc + 12*A*B*C2*t2;
calc=calc + 6*B2*C2*t2;
calc=calc + 4*A*C3*t2;
calc=calc + 4*B*C3*t2;
calc=calc + C4*t2;
calc=calc - 2*A4*ri*t2;
calc=calc - 8*A3*B*ri*t2;
calc=calc - 12*A2*B2*ri*t2;
calc=calc - 8*A*B3*ri*t2;
calc=calc - 2*B4*ri*t2;
calc=calc - 6*A3*C*ri*t2;
calc=calc + 2*A4*C*ri*t2;
calc=calc - 18*A2*B*C*ri*t2;
calc=calc + 9*A3*B*C*ri*t2;
calc=calc - 18*A*B2*C*ri*t2;
calc=calc + 15*A2*B2*C*ri*t2;
calc=calc - 6*B3*C*ri*t2;
calc=calc + 11*A*B3*C*ri*t2;
calc=calc + 3*B4*C*ri*t2;
calc=calc - 6*A2*C2*ri*t2;
calc=calc + 6*A3*C2*ri*t2;
calc=calc - 12*A*B*C2*ri*t2;
calc=calc + 21*A2*B*C2*ri*t2;
calc=calc - 6*B2*C2*ri*t2;
calc=calc + 24*A*B2*C2*ri*t2;
calc=calc + 9*B3*C2*ri*t2;
calc=calc - 2*A*C3*ri*t2;
calc=calc + 6*A2*C3*ri*t2;
calc=calc - 2*B*C3*ri*t2;
calc=calc + 15*A*B*C3*ri*t2;
calc=calc + 9*B2*C3*ri*t2;
calc=calc + 2*A*C4*ri*t2;
calc=calc + 3*B*C4*ri*t2;
calc=calc + A4*ri2*t2;
calc=calc + 4*A3*B*ri2*t2;
calc=calc + 6*A2*B2*ri2*t2;
calc=calc + 4*A*B3*ri2*t2;
calc=calc + B4*ri2*t2;
calc=calc + A3*C*ri2*t2;
calc=calc - 4*A4*C*ri2*t2;
calc=calc + 3*A2*B*C*ri2*t2;
calc=calc - 17*A3*B*C*ri2*t2;
calc=calc + 3*A*B2*C*ri2*t2;
calc=calc - 27*A2*B2*C*ri2*t2;
calc=calc + B3*C*ri2*t2;
calc=calc - 19*A*B3*C*ri2*t2;
calc=calc - 5*B4*C*ri2*t2;
calc=calc - A2*C2*ri2*t2;
calc=calc - 11*A3*C2*ri2*t2;
calc=calc - 2*A*B*C2*ri2*t2;
calc=calc - 33*A2*B*C2*ri2*t2;
calc=calc + A3*B*C2*ri2*t2;
calc=calc - B2*C2*ri2*t2;
calc=calc - 33*A*B2*C2*ri2*t2;
calc=calc + 3*A2*B2*C2*ri2*t2;
calc=calc - 11*B3*C2*ri2*t2;
calc=calc + 3*A*B3*C2*ri2*t2;
calc=calc + B4*C2*ri2*t2;
calc=calc - A*C3*ri2*t2;
calc=calc - 7*A2*C3*ri2*t2;
calc=calc - B*C3*ri2*t2;
calc=calc - 13*A*B*C3*ri2*t2;
calc=calc + 2*A2*B*C3*ri2*t2;
calc=calc - 6*B2*C3*ri2*t2;
calc=calc + 4*A*B2*C3*ri2*t2;
calc=calc + 2*B3*C3*ri2*t2;
calc=calc + A*B*C4*ri2*t2;
calc=calc + B2*C4*ri2*t2;
calc=calc + A3*C*ri3*t2;
calc=calc + 2*A4*C*ri3*t2;
calc=calc + 3*A2*B*C*ri3*t2;
calc=calc + 8*A3*B*C*ri3*t2;
calc=calc + 3*A*B2*C*ri3*t2;
calc=calc + 12*A2*B2*C*ri3*t2;
calc=calc + B3*C*ri3*t2;
calc=calc + 8*A*B3*C*ri3*t2;
calc=calc + 2*B4*C*ri3*t2;
calc=calc + A2*C2*ri3*t2;
calc=calc + 5*A3*C2*ri3*t2;
calc=calc + 2*A*B*C2*ri3*t2;
calc=calc + 12*A2*B*C2*ri3*t2;
calc=calc - A3*B*C2*ri3*t2;
calc=calc + B2*C2*ri3*t2;
calc=calc + 9*A*B2*C2*ri3*t2;
calc=calc - 3*A2*B2*C2*ri3*t2;
calc=calc + 2*B3*C2*ri3*t2;
calc=calc - 3*A*B3*C2*ri3*t2;
calc=calc - B4*C2*ri3*t2;
calc=calc - A*B*C3*ri3*t2;
calc=calc - 3*A2*B*C3*ri3*t2;
calc=calc - B2*C3*ri3*t2;
calc=calc - 4*A*B2*C3*ri3*t2;
calc=calc - B3*C3*ri3*t2;
calc=calc - 2*A4*si*t2;
calc=calc - 6*A3*B*si*t2;
calc=calc - A4*B*si*t2;
calc=calc - 6*A2*B2*si*t2;
calc=calc - 3*A3*B2*si*t2;
calc=calc - 2*A*B3*si*t2;
calc=calc - 3*A2*B3*si*t2;
calc=calc - A*B4*si*t2;
calc=calc - 8*A3*C*si*t2;
calc=calc - 18*A2*B*C*si*t2;
calc=calc - 6*A3*B*C*si*t2;
calc=calc - 12*A*B2*C*si*t2;
calc=calc - 15*A2*B2*C*si*t2;
calc=calc - 2*B3*C*si*t2;
calc=calc - 12*A*B3*C*si*t2;
calc=calc - 3*B4*C*si*t2;
calc=calc - 12*A2*C2*si*t2;
calc=calc - 18*A*B*C2*si*t2;
calc=calc - 12*A2*B*C2*si*t2;
calc=calc - 6*B2*C2*si*t2;
calc=calc - 21*A*B2*C2*si*t2;
calc=calc - 9*B3*C2*si*t2;
calc=calc - 8*A*C3*si*t2;
calc=calc - 6*B*C3*si*t2;
calc=calc - 10*A*B*C3*si*t2;
calc=calc - 9*B2*C3*si*t2;
calc=calc - 2*C4*si*t2;
calc=calc - 3*B*C4*si*t2;
calc=calc + 4*A4*ri*si*t2;
calc=calc + 11*A3*B*ri*si*t2;
calc=calc + 2*A4*B*ri*si*t2;
calc=calc + 9*A2*B2*ri*si*t2;
calc=calc + 6*A3*B2*ri*si*t2;
calc=calc + A*B3*ri*si*t2;
calc=calc + 6*A2*B3*ri*si*t2;
calc=calc - B4*ri*si*t2;
calc=calc + 2*A*B4*ri*si*t2;
calc=calc + 11*A3*C*ri*si*t2;
calc=calc - 4*A4*C*ri*si*t2;
calc=calc + 22*A2*B*C*ri*si*t2;
calc=calc - 6*A3*B*C*ri*si*t2;
calc=calc - A4*B*C*ri*si*t2;
calc=calc + 11*A*B2*C*ri*si*t2;
calc=calc + 5*A2*B2*C*ri*si*t2;
calc=calc - 3*A3*B2*C*ri*si*t2;
calc=calc + 12*A*B3*C*ri*si*t2;
calc=calc - 3*A2*B3*C*ri*si*t2;
calc=calc + 5*B4*C*ri*si*t2;
calc=calc - A*B4*C*ri*si*t2;
calc=calc + 9*A2*C2*ri*si*t2;
calc=calc - 12*A3*C2*ri*si*t2;
calc=calc + 11*A*B*C2*ri*si*t2;
calc=calc - 16*A2*B*C2*ri*si*t2;
calc=calc - 3*A3*B*C2*ri*si*t2;
calc=calc + 2*B2*C2*ri*si*t2;
calc=calc + 4*A*B2*C2*ri*si*t2;
calc=calc - 8*A2*B2*C2*ri*si*t2;
calc=calc + 8*B3*C2*ri*si*t2;
calc=calc - 7*A*B3*C2*ri*si*t2;
calc=calc - 2*B4*C2*ri*si*t2;
calc=calc + A*C3*ri*si*t2;
calc=calc - 12*A2*C3*ri*si*t2;
calc=calc - 12*A*B*C3*ri*si*t2;
calc=calc - 3*A2*B*C3*ri*si*t2;
calc=calc - B2*C3*ri*si*t2;
calc=calc - 7*A*B2*C3*ri*si*t2;
calc=calc - 4*B3*C3*ri*si*t2;
calc=calc - C4*ri*si*t2;
calc=calc - 4*A*C4*ri*si*t2;
calc=calc - 4*B*C4*ri*si*t2;
calc=calc - A*B*C4*ri*si*t2;
calc=calc - 2*B2*C4*ri*si*t2;
calc=calc - 2*A4*ri2*si*t2;
calc=calc - 4*A3*B*ri2*si*t2;
calc=calc - A4*B*ri2*si*t2;
calc=calc - 3*A3*B2*ri2*si*t2;
calc=calc + 4*A*B3*ri2*si*t2;
calc=calc - 3*A2*B3*ri2*si*t2;
calc=calc + 2*B4*ri2*si*t2;
calc=calc - A*B4*ri2*si*t2;
calc=calc - A3*C*ri2*si*t2;
calc=calc + 8*A4*C*ri2*si*t2;
calc=calc + 2*A2*B*C*ri2*si*t2;
calc=calc + 26*A3*B*C*ri2*si*t2;
calc=calc + 2*A4*B*C*ri2*si*t2;
calc=calc + 7*A*B2*C*ri2*si*t2;
calc=calc + 25*A2*B2*C*ri2*si*t2;
calc=calc + 6*A3*B2*C*ri2*si*t2;
calc=calc + 4*B3*C*ri2*si*t2;
calc=calc + 4*A*B3*C*ri2*si*t2;
calc=calc + 6*A2*B3*C*ri2*si*t2;
calc=calc - 3*B4*C*ri2*si*t2;
calc=calc + 2*A*B4*C*ri2*si*t2;
calc=calc + 4*A2*C2*ri2*si*t2;
calc=calc + 20*A3*C2*ri2*si*t2;
calc=calc + 9*A*B*C2*ri2*si*t2;
calc=calc + 39*A2*B*C2*ri2*si*t2;
calc=calc + 2*A3*B*C2*ri2*si*t2;
calc=calc + 5*B2*C2*ri2*si*t2;
calc=calc + 18*A*B2*C2*ri2*si*t2;
calc=calc + 4*A2*B2*C2*ri2*si*t2;
calc=calc - B3*C2*ri2*si*t2;
calc=calc + 4*A*B3*C2*ri2*si*t2;
calc=calc + 2*B4*C2*ri2*si*t2;
calc=calc + 3*A*C3*ri2*si*t2;
calc=calc + 10*A2*C3*ri2*si*t2;
calc=calc + 3*B*C3*ri2*si*t2;
calc=calc + 13*A*B*C3*ri2*si*t2;
calc=calc + A2*B*C3*ri2*si*t2;
calc=calc + 3*B2*C3*ri2*si*t2;
calc=calc + 3*A*B2*C3*ri2*si*t2;
calc=calc + B3*C3*ri2*si*t2;
calc=calc - 2*A*C4*ri2*si*t2;
calc=calc - 2*B*C4*ri2*si*t2;
calc=calc - 2*A*B*C4*ri2*si*t2;
calc=calc - B2*C4*ri2*si*t2;
calc=calc - A3*B*ri3*si*t2;
calc=calc - 3*A2*B2*ri3*si*t2;
calc=calc - 3*A*B3*ri3*si*t2;
calc=calc - B4*ri3*si*t2;
calc=calc - 2*A3*C*ri3*si*t2;
calc=calc - 4*A4*C*ri3*si*t2;
calc=calc - 6*A2*B*C*ri3*si*t2;
calc=calc - 14*A3*B*C*ri3*si*t2;
calc=calc - A4*B*C*ri3*si*t2;
calc=calc - 6*A*B2*C*ri3*si*t2;
calc=calc - 15*A2*B2*C*ri3*si*t2;
calc=calc - 3*A3*B2*C*ri3*si*t2;
calc=calc - 2*B3*C*ri3*si*t2;
calc=calc - 4*A*B3*C*ri3*si*t2;
calc=calc - 3*A2*B3*C*ri3*si*t2;
calc=calc + B4*C*ri3*si*t2;
calc=calc - A*B4*C*ri3*si*t2;
calc=calc - A2*C2*ri3*si*t2;
calc=calc - 8*A3*C2*ri3*si*t2;
calc=calc - 2*A*B*C2*ri3*si*t2;
calc=calc - 11*A2*B*C2*ri3*si*t2;
calc=calc + A3*B*C2*ri3*si*t2;
calc=calc - B2*C2*ri3*si*t2;
calc=calc - A*B2*C2*ri3*si*t2;
calc=calc + 4*A2*B2*C2*ri3*si*t2;
calc=calc + 2*B3*C2*ri3*si*t2;
calc=calc + 3*A*B3*C2*ri3*si*t2;
calc=calc + A*C3*ri3*si*t2;
calc=calc + 5*A2*C3*ri3*si*t2;
calc=calc + 6*A*B*C3*ri3*si*t2;
calc=calc + 5*A2*B*C3*ri3*si*t2;
calc=calc + B2*C3*ri3*si*t2;
calc=calc + 4*A*B2*C3*ri3*si*t2;
calc=calc + A4*si2*t2;
calc=calc + A3*B*si2*t2;
calc=calc + 2*A4*B*si2*t2;
calc=calc - A2*B2*si2*t2;
calc=calc + 4*A3*B2*si2*t2;
calc=calc - A*B3*si2*t2;
calc=calc + 2*A2*B3*si2*t2;
calc=calc + 4*A3*C*si2*t2;
calc=calc + 3*A2*B*C*si2*t2;
calc=calc + 10*A3*B*C*si2*t2;
calc=calc - 2*A*B2*C*si2*t2;
calc=calc + 18*A2*B2*C*si2*t2;
calc=calc + A3*B2*C*si2*t2;
calc=calc - B3*C*si2*t2;
calc=calc + 8*A*B3*C*si2*t2;
calc=calc + 2*A2*B3*C*si2*t2;
calc=calc + A*B4*C*si2*t2;
calc=calc + 6*A2*C2*si2*t2;
calc=calc + 3*A*B*C2*si2*t2;
calc=calc + 18*A2*B*C2*si2*t2;
calc=calc - B2*C2*si2*t2;
calc=calc + 21*A*B2*C2*si2*t2;
calc=calc + 3*A2*B2*C2*si2*t2;
calc=calc + 3*B3*C2*si2*t2;
calc=calc + 4*A*B3*C2*si2*t2;
calc=calc + B4*C2*si2*t2;
calc=calc + 4*A*C3*si2*t2;
calc=calc + B*C3*si2*t2;
calc=calc + 14*A*B*C3*si2*t2;
calc=calc + 7*B2*C3*si2*t2;
calc=calc + 3*A*B2*C3*si2*t2;
calc=calc + 2*B3*C3*si2*t2;
calc=calc + C4*si2*t2;
calc=calc + 4*B*C4*si2*t2;
calc=calc + B2*C4*si2*t2;
calc=calc - 2*A4*ri*si2*t2;
calc=calc - A3*B*ri*si2*t2;
calc=calc - 4*A4*B*ri*si2*t2;
calc=calc + 4*A2*B2*ri*si2*t2;
calc=calc - 7*A3*B2*ri*si2*t2;
calc=calc + 3*A*B3*ri*si2*t2;
calc=calc - 2*A2*B3*ri*si2*t2;
calc=calc + A*B4*ri*si2*t2;
calc=calc - 4*A3*C*ri*si2*t2;
calc=calc + 2*A4*C*ri*si2*t2;
calc=calc + 2*A2*B*C*ri*si2*t2;
calc=calc - 10*A3*B*C*ri*si2*t2;
calc=calc + 2*A4*B*C*ri*si2*t2;
calc=calc + 9*A*B2*C*ri*si2*t2;
calc=calc - 24*A2*B2*C*ri*si2*t2;
calc=calc + 2*A3*B2*C*ri*si2*t2;
calc=calc + 3*B3*C*ri*si2*t2;
calc=calc - 11*A*B3*C*ri*si2*t2;
calc=calc - 2*A2*B3*C*ri*si2*t2;
calc=calc + B4*C*ri*si2*t2;
calc=calc - 2*A*B4*C*ri*si2*t2;
calc=calc + 6*A3*C2*ri*si2*t2;
calc=calc + 7*A*B*C2*ri*si2*t2;
calc=calc - 14*A2*B*C2*ri*si2*t2;
calc=calc + 6*A3*B*C2*ri*si2*t2;
calc=calc + 5*B2*C2*ri*si2*t2;
calc=calc - 21*A*B2*C2*ri*si2*t2;
calc=calc + 10*A2*B2*C2*ri*si2*t2;
calc=calc - 3*B3*C2*ri*si2*t2;
calc=calc + 3*A*B3*C2*ri*si2*t2;
calc=calc - B4*C2*ri*si2*t2;
calc=calc + 4*A*C3*ri*si2*t2;
calc=calc + 6*A2*C3*ri*si2*t2;
calc=calc + 4*B*C3*ri*si2*t2;
calc=calc - 5*A*B*C3*ri*si2*t2;
calc=calc + 6*A2*B*C3*ri*si2*t2;
calc=calc - 4*B2*C3*ri*si2*t2;
calc=calc + 4*A*B2*C3*ri*si2*t2;
calc=calc + B3*C3*ri*si2*t2;
calc=calc + 2*C4*ri*si2*t2;
calc=calc + 2*A*C4*ri*si2*t2;
calc=calc + 3*B*C4*ri*si2*t2;
calc=calc + 2*A*B*C4*ri*si2*t2;
calc=calc + 2*B2*C4*ri*si2*t2;
calc=calc + A4*ri2*si2*t2;
calc=calc - A3*B*ri2*si2*t2;
calc=calc + 2*A4*B*ri2*si2*t2;
calc=calc - 5*A2*B2*ri2*si2*t2;
calc=calc + 2*A3*B2*ri2*si2*t2;
calc=calc - 3*A*B3*ri2*si2*t2;
calc=calc - 2*A2*B3*ri2*si2*t2;
calc=calc - 2*A*B4*ri2*si2*t2;
calc=calc - A3*C*ri2*si2*t2;
calc=calc - 4*A4*C*ri2*si2*t2;
calc=calc - 6*A2*B*C*ri2*si2*t2;
calc=calc - 5*A3*B*C*ri2*si2*t2;
calc=calc - 4*A4*B*C*ri2*si2*t2;
calc=calc - 7*A*B2*C*ri2*si2*t2;
calc=calc + 5*A2*B2*C*ri2*si2*t2;
calc=calc - 7*A3*B2*C*ri2*si2*t2;
calc=calc - 2*B3*C*ri2*si2*t2;
calc=calc + 5*A*B3*C*ri2*si2*t2;
calc=calc - 2*A2*B3*C*ri2*si2*t2;
calc=calc - B4*C*ri2*si2*t2;
calc=calc + A*B4*C*ri2*si2*t2;
calc=calc - 5*A2*C2*ri2*si2*t2;
calc=calc - 7*A3*C2*ri2*si2*t2;
calc=calc - 7*A*B*C2*ri2*si2*t2;
calc=calc + 5*A2*B*C2*ri2*si2*t2;
calc=calc - 7*A3*B*C2*ri2*si2*t2;
calc=calc - 4*B2*C2*ri2*si2*t2;
calc=calc + 8*A*B2*C2*ri2*si2*t2;
calc=calc - 14*A2*B2*C2*ri2*si2*t2;
calc=calc - 7*A*B3*C2*ri2*si2*t2;
calc=calc - 3*A*C3*ri2*si2*t2;
calc=calc + A2*C3*ri2*si2*t2;
calc=calc - 2*B*C3*ri2*si2*t2;
calc=calc - A*B*C3*ri2*si2*t2;
calc=calc - 8*A2*B*C3*ri2*si2*t2;
calc=calc + 3*B2*C3*ri2*si2*t2;
calc=calc - 7*A*B2*C3*ri2*si2*t2;
calc=calc + 4*A*C4*ri2*si2*t2;
calc=calc + 2*B*C4*ri2*si2*t2;
calc=calc + A*B*C4*ri2*si2*t2;
calc=calc + A3*B*ri3*si2*t2;
calc=calc + 2*A2*B2*ri3*si2*t2;
calc=calc + A3*B2*ri3*si2*t2;
calc=calc + A*B3*ri3*si2*t2;
calc=calc + 2*A2*B3*ri3*si2*t2;
calc=calc + A*B4*ri3*si2*t2;
calc=calc + A3*C*ri3*si2*t2;
calc=calc + 2*A4*C*ri3*si2*t2;
calc=calc + A2*B*C*ri3*si2*t2;
calc=calc + 5*A3*B*C*ri3*si2*t2;
calc=calc + 2*A4*B*C*ri3*si2*t2;
calc=calc + A2*B2*C*ri3*si2*t2;
calc=calc + 4*A3*B2*C*ri3*si2*t2;
calc=calc - 2*A*B3*C*ri3*si2*t2;
calc=calc + 2*A2*B3*C*ri3*si2*t2;
calc=calc - A2*C2*ri3*si2*t2;
calc=calc + A3*C2*ri3*si2*t2;
calc=calc - 3*A*B*C2*ri3*si2*t2;
calc=calc - 9*A2*B*C2*ri3*si2*t2;
calc=calc + A3*B*C2*ri3*si2*t2;
calc=calc - 8*A*B2*C2*ri3*si2*t2;
calc=calc + A2*B2*C2*ri3*si2*t2;
calc=calc - 2*A*C3*ri3*si2*t2;
calc=calc - 10*A2*C3*ri3*si2*t2;
calc=calc - 5*A*B*C3*ri3*si2*t2;
calc=calc - A2*B*C3*ri3*si2*t2;
calc=calc + A3*B*si3*t2;
calc=calc - A4*B*si3*t2;
calc=calc + A2*B2*si3*t2;
calc=calc - A3*B2*si3*t2;
calc=calc + 3*A2*B*C*si3*t2;
calc=calc - 4*A3*B*C*si3*t2;
calc=calc + 2*A*B2*C*si3*t2;
calc=calc - 3*A2*B2*C*si3*t2;
calc=calc - A3*B2*C*si3*t2;
calc=calc + 2*A*B3*C*si3*t2;
calc=calc + 3*A*B*C2*si3*t2;
calc=calc - 6*A2*B*C2*si3*t2;
calc=calc + B2*C2*si3*t2;
calc=calc - 3*A2*B2*C2*si3*t2;
calc=calc + 2*B3*C2*si3*t2;
calc=calc - 4*A*B3*C2*si3*t2;
calc=calc + B*C3*si3*t2;
calc=calc - 4*A*B*C3*si3*t2;
calc=calc + 2*B2*C3*si3*t2;
calc=calc - 3*A*B2*C3*si3*t2;
calc=calc - B3*C3*si3*t2;
calc=calc - B*C4*si3*t2;
calc=calc - B2*C4*si3*t2;
calc=calc - 2*A3*B*ri*si3*t2;
calc=calc + 2*A4*B*ri*si3*t2;
calc=calc - A2*B2*ri*si3*t2;
calc=calc + A3*B2*ri*si3*t2;
calc=calc + A*B3*ri*si3*t2;
calc=calc - A2*B3*ri*si3*t2;
calc=calc - A3*C*ri*si3*t2;
calc=calc - 6*A2*B*C*ri*si3*t2;
calc=calc + 7*A3*B*C*ri*si3*t2;
calc=calc - A4*B*C*ri*si3*t2;
calc=calc - 2*A*B2*C*ri*si3*t2;
calc=calc + 4*A2*B2*C*ri*si3*t2;
calc=calc + A3*B2*C*ri*si3*t2;
calc=calc - 6*A*B3*C*ri*si3*t2;
calc=calc - A2*B3*C*ri*si3*t2;
calc=calc - 3*A2*C2*ri*si3*t2;
calc=calc - 6*A*B*C2*ri*si3*t2;
calc=calc + 9*A2*B*C2*ri*si3*t2;
calc=calc - 3*A3*B*C2*ri*si3*t2;
calc=calc - B2*C2*ri*si3*t2;
calc=calc - 7*A*B2*C2*ri*si3*t2;
calc=calc - 2*A2*B2*C2*ri*si3*t2;
calc=calc - 2*B3*C2*ri*si3*t2;
calc=calc + 4*A*B3*C2*ri*si3*t2;
calc=calc - 3*A*C3*ri*si3*t2;
calc=calc - 2*B*C3*ri*si3*t2;
calc=calc + 2*A*B*C3*ri*si3*t2;
calc=calc - 3*A2*B*C3*ri*si3*t2;
calc=calc - 4*B2*C3*ri*si3*t2;
calc=calc + 3*A*B2*C3*ri*si3*t2;
calc=calc - C4*ri*si3*t2;
calc=calc - 2*B*C4*ri*si3*t2;
calc=calc - A*B*C4*ri*si3*t2;
calc=calc + A3*B*ri2*si3*t2;
calc=calc - A4*B*ri2*si3*t2;
calc=calc - A2*B2*ri2*si3*t2;
calc=calc + A3*B2*ri2*si3*t2;
calc=calc - 2*A*B3*ri2*si3*t2;
calc=calc + 2*A2*B3*ri2*si3*t2;
calc=calc + A3*C*ri2*si3*t2;
calc=calc + A2*B*C*ri2*si3*t2;
calc=calc - 4*A3*B*C*ri2*si3*t2;
calc=calc + 2*A4*B*C*ri2*si3*t2;
calc=calc - 3*A*B2*C*ri2*si3*t2;
calc=calc - 3*A2*B2*C*ri2*si3*t2;
calc=calc + A3*B2*C*ri2*si3*t2;
calc=calc + 4*A*B3*C*ri2*si3*t2;
calc=calc + 2*A2*B3*C*ri2*si3*t2;
calc=calc + 2*A2*C2*ri2*si3*t2;
calc=calc - 2*A3*C2*ri2*si3*t2;
calc=calc - 11*A2*B*C2*ri2*si3*t2;
calc=calc + 4*A3*B*C2*ri2*si3*t2;
calc=calc + 7*A*B2*C2*ri2*si3*t2;
calc=calc + 7*A2*B2*C2*ri2*si3*t2;
calc=calc + A*C3*ri2*si3*t2;
calc=calc - 4*A2*C3*ri2*si3*t2;
calc=calc + A*B*C3*ri2*si3*t2;
calc=calc + 5*A2*B*C3*ri2*si3*t2;
calc=calc - 2*A*C4*ri2*si3*t2;
calc=calc + A2*B2*ri3*si3*t2;
calc=calc - A3*B2*ri3*si3*t2;
calc=calc + A*B3*ri3*si3*t2;
calc=calc - A2*B3*ri3*si3*t2;
calc=calc + 2*A2*B*C*ri3*si3*t2;
calc=calc + A3*B*C*ri3*si3*t2;
calc=calc - A4*B*C*ri3*si3*t2;
calc=calc + 3*A*B2*C*ri3*si3*t2;
calc=calc + 2*A2*B2*C*ri3*si3*t2;
calc=calc - A3*B2*C*ri3*si3*t2;
calc=calc - A2*B3*C*ri3*si3*t2;
calc=calc + A2*C2*ri3*si3*t2;
calc=calc + 2*A3*C2*ri3*si3*t2;
calc=calc + 3*A*B*C2*ri3*si3*t2;
calc=calc + 8*A2*B*C2*ri3*si3*t2;
calc=calc - A3*B*C2*ri3*si3*t2;
calc=calc - 2*A2*B2*C2*ri3*si3*t2;
calc=calc + A*C3*ri3*si3*t2;
calc=calc + 5*A2*C3*ri3*si3*t2;
calc=calc - A2*B*C3*ri3*si3*t2;
calc=calc - 2*A4*t3;
calc=calc - 8*A3*B*t3;
calc=calc - 12*A2*B2*t3;
calc=calc - 8*A*B3*t3;
calc=calc - 2*B4*t3;
calc=calc - 8*A3*C*t3;
calc=calc - 24*A2*B*C*t3;
calc=calc - 24*A*B2*C*t3;
calc=calc - 8*B3*C*t3;
calc=calc - 12*A2*C2*t3;
calc=calc - 24*A*B*C2*t3;
calc=calc - 12*B2*C2*t3;
calc=calc - 8*A*C3*t3;
calc=calc - 8*B*C3*t3;
calc=calc - 2*C4*t3;
calc=calc + 4*A4*ri*t3;
calc=calc + 16*A3*B*ri*t3;
calc=calc + 24*A2*B2*ri*t3;
calc=calc + 16*A*B3*ri*t3;
calc=calc + 4*B4*ri*t3;
calc=calc + 12*A3*C*ri*t3;
calc=calc - A4*C*ri*t3;
calc=calc + 36*A2*B*C*ri*t3;
calc=calc - 5*A3*B*C*ri*t3;
calc=calc + 36*A*B2*C*ri*t3;
calc=calc - 9*A2*B2*C*ri*t3;
calc=calc + 12*B3*C*ri*t3;
calc=calc - 7*A*B3*C*ri*t3;
calc=calc - 2*B4*C*ri*t3;
calc=calc + 12*A2*C2*ri*t3;
calc=calc - 3*A3*C2*ri*t3;
calc=calc + 24*A*B*C2*ri*t3;
calc=calc - 12*A2*B*C2*ri*t3;
calc=calc + 12*B2*C2*ri*t3;
calc=calc - 15*A*B2*C2*ri*t3;
calc=calc - 6*B3*C2*ri*t3;
calc=calc + 4*A*C3*ri*t3;
calc=calc - 3*A2*C3*ri*t3;
calc=calc + 4*B*C3*ri*t3;
calc=calc - 9*A*B*C3*ri*t3;
calc=calc - 6*B2*C3*ri*t3;
calc=calc - A*C4*ri*t3;
calc=calc - 2*B*C4*ri*t3;
calc=calc - 2*A4*ri2*t3;
calc=calc - 8*A3*B*ri2*t3;
calc=calc - 12*A2*B2*ri2*t3;
calc=calc - 8*A*B3*ri2*t3;
calc=calc - 2*B4*ri2*t3;
calc=calc - 2*A3*C*ri2*t3;
calc=calc + 2*A4*C*ri2*t3;
calc=calc - 6*A2*B*C*ri2*t3;
calc=calc + 9*A3*B*C*ri2*t3;
calc=calc - 6*A*B2*C*ri2*t3;
calc=calc + 15*A2*B2*C*ri2*t3;
calc=calc - 2*B3*C*ri2*t3;
calc=calc + 11*A*B3*C*ri2*t3;
calc=calc + 3*B4*C*ri2*t3;
calc=calc + 2*A2*C2*ri2*t3;
calc=calc + 7*A3*C2*ri2*t3;
calc=calc + 4*A*B*C2*ri2*t3;
calc=calc + 19*A2*B*C2*ri2*t3;
calc=calc + 2*B2*C2*ri2*t3;
calc=calc + 18*A*B2*C2*ri2*t3;
calc=calc + 6*B3*C2*ri2*t3;
calc=calc + 2*A*C3*ri2*t3;
calc=calc + 5*A2*C3*ri2*t3;
calc=calc + 2*B*C3*ri2*t3;
calc=calc + 7*A*B*C3*ri2*t3;
calc=calc + 3*B2*C3*ri2*t3;
calc=calc - 2*A3*C*ri3*t3;
calc=calc - A4*C*ri3*t3;
calc=calc - 6*A2*B*C*ri3*t3;
calc=calc - 4*A3*B*C*ri3*t3;
calc=calc - 6*A*B2*C*ri3*t3;
calc=calc - 6*A2*B2*C*ri3*t3;
calc=calc - 2*B3*C*ri3*t3;
calc=calc - 4*A*B3*C*ri3*t3;
calc=calc - B4*C*ri3*t3;
calc=calc - 2*A2*C2*ri3*t3;
calc=calc - 4*A3*C2*ri3*t3;
calc=calc - 4*A*B*C2*ri3*t3;
calc=calc - 7*A2*B*C2*ri3*t3;
calc=calc - 2*B2*C2*ri3*t3;
calc=calc - 3*A*B2*C2*ri3*t3;
calc=calc + A*B*C3*ri3*t3;
calc=calc + A2*B*C3*ri3*t3;
calc=calc + B2*C3*ri3*t3;
calc=calc + 4*A4*si*t3;
calc=calc + 12*A3*B*si*t3;
calc=calc + A4*B*si*t3;
calc=calc + 12*A2*B2*si*t3;
calc=calc + 3*A3*B2*si*t3;
calc=calc + 4*A*B3*si*t3;
calc=calc + 3*A2*B3*si*t3;
calc=calc + A*B4*si*t3;
calc=calc + 16*A3*C*si*t3;
calc=calc + 36*A2*B*C*si*t3;
calc=calc + 5*A3*B*C*si*t3;
calc=calc + 24*A*B2*C*si*t3;
calc=calc + 12*A2*B2*C*si*t3;
calc=calc + 4*B3*C*si*t3;
calc=calc + 9*A*B3*C*si*t3;
calc=calc + 2*B4*C*si*t3;
calc=calc + 24*A2*C2*si*t3;
calc=calc + 36*A*B*C2*si*t3;
calc=calc + 9*A2*B*C2*si*t3;
calc=calc + 12*B2*C2*si*t3;
calc=calc + 15*A*B2*C2*si*t3;
calc=calc + 6*B3*C2*si*t3;
calc=calc + 16*A*C3*si*t3;
calc=calc + 12*B*C3*si*t3;
calc=calc + 7*A*B*C3*si*t3;
calc=calc + 6*B2*C3*si*t3;
calc=calc + 4*C4*si*t3;
calc=calc + 2*B*C4*si*t3;
calc=calc - 8*A4*ri*si*t3;
calc=calc - 22*A3*B*ri*si*t3;
calc=calc - 2*A4*B*ri*si*t3;
calc=calc - 18*A2*B2*ri*si*t3;
calc=calc - 6*A3*B2*ri*si*t3;
calc=calc - 2*A*B3*ri*si*t3;
calc=calc - 6*A2*B3*ri*si*t3;
calc=calc + 2*B4*ri*si*t3;
calc=calc - 2*A*B4*ri*si*t3;
calc=calc - 22*A3*C*ri*si*t3;
calc=calc + 2*A4*C*ri*si*t3;
calc=calc - 44*A2*B*C*ri*si*t3;
calc=calc + 4*A3*B*C*ri*si*t3;
calc=calc - 22*A*B2*C*ri*si*t3;
calc=calc - 3*A2*B2*C*ri*si*t3;
calc=calc - 8*A*B3*C*ri*si*t3;
calc=calc - 3*B4*C*ri*si*t3;
calc=calc - 18*A2*C2*ri*si*t3;
calc=calc + 6*A3*C2*ri*si*t3;
calc=calc - 22*A*B*C2*ri*si*t3;
calc=calc + 11*A2*B*C2*ri*si*t3;
calc=calc - 4*B2*C2*ri*si*t3;
calc=calc - 3*B3*C2*ri*si*t3;
calc=calc - 2*A*C3*ri*si*t3;
calc=calc + 6*A2*C3*ri*si*t3;
calc=calc + 8*A*B*C3*ri*si*t3;
calc=calc + 3*B2*C3*ri*si*t3;
calc=calc + 2*C4*ri*si*t3;
calc=calc + 2*A*C4*ri*si*t3;
calc=calc + 3*B*C4*ri*si*t3;
calc=calc + 4*A4*ri2*si*t3;
calc=calc + 8*A3*B*ri2*si*t3;
calc=calc + A4*B*ri2*si*t3;
calc=calc + 3*A3*B2*ri2*si*t3;
calc=calc - 8*A*B3*ri2*si*t3;
calc=calc + 3*A2*B3*ri2*si*t3;
calc=calc - 4*B4*ri2*si*t3;
calc=calc + A*B4*ri2*si*t3;
calc=calc + 2*A3*C*ri2*si*t3;
calc=calc - 4*A4*C*ri2*si*t3;
calc=calc - 4*A2*B*C*ri2*si*t3;
calc=calc - 18*A3*B*C*ri2*si*t3;
calc=calc - 14*A*B2*C*ri2*si*t3;
calc=calc - 19*A2*B2*C*ri2*si*t3;
calc=calc - 8*B3*C*ri2*si*t3;
calc=calc - 3*A*B3*C*ri2*si*t3;
calc=calc + 2*B4*C*ri2*si*t3;
calc=calc - 8*A2*C2*ri2*si*t3;
calc=calc - 13*A3*C2*ri2*si*t3;
calc=calc - 18*A*B*C2*ri2*si*t3;
calc=calc - 25*A2*B*C2*ri2*si*t3;
calc=calc - 10*B2*C2*ri2*si*t3;
calc=calc - 13*A*B2*C2*ri2*si*t3;
calc=calc + 2*A2*B2*C2*ri2*si*t3;
calc=calc - B3*C2*ri2*si*t3;
calc=calc - 6*A*C3*ri2*si*t3;
calc=calc - 8*A2*C3*ri2*si*t3;
calc=calc - 6*B*C3*ri2*si*t3;
calc=calc - 8*A*B*C3*ri2*si*t3;
calc=calc - A2*B*C3*ri2*si*t3;
calc=calc - 2*B2*C3*ri2*si*t3;
calc=calc + A*C4*ri2*si*t3;
calc=calc + B*C4*ri2*si*t3;
calc=calc + 2*A3*B*ri3*si*t3;
calc=calc + 6*A2*B2*ri3*si*t3;
calc=calc + 6*A*B3*ri3*si*t3;
calc=calc + 2*B4*ri3*si*t3;
calc=calc + 4*A3*C*ri3*si*t3;
calc=calc + 2*A4*C*ri3*si*t3;
calc=calc + 12*A2*B*C*ri3*si*t3;
calc=calc + 9*A3*B*C*ri3*si*t3;
calc=calc + 12*A*B2*C*ri3*si*t3;
calc=calc + 10*A2*B2*C*ri3*si*t3;
calc=calc + 4*B3*C*ri3*si*t3;
calc=calc + 2*A*B3*C*ri3*si*t3;
calc=calc - B4*C*ri3*si*t3;
calc=calc + 2*A2*C2*ri3*si*t3;
calc=calc + 7*A3*C2*ri3*si*t3;
calc=calc + 4*A*B*C2*ri3*si*t3;
calc=calc + 5*A2*B*C2*ri3*si*t3;
calc=calc + 2*B2*C2*ri3*si*t3;
calc=calc - 2*A*B2*C2*ri3*si*t3;
calc=calc - 2*A2*B2*C2*ri3*si*t3;
calc=calc - 2*B3*C2*ri3*si*t3;
calc=calc - 2*A*C3*ri3*si*t3;
calc=calc - 4*A2*C3*ri3*si*t3;
calc=calc - 4*A*B*C3*ri3*si*t3;
calc=calc - 2*A2*B*C3*ri3*si*t3;
calc=calc - B2*C3*ri3*si*t3;
calc=calc - 2*A4*si2*t3;
calc=calc - 2*A3*B*si2*t3;
calc=calc - 2*A4*B*si2*t3;
calc=calc + 2*A2*B2*si2*t3;
calc=calc - 3*A3*B2*si2*t3;
calc=calc + 2*A*B3*si2*t3;
calc=calc - A2*B3*si2*t3;
calc=calc - 8*A3*C*si2*t3;
calc=calc - 6*A2*B*C*si2*t3;
calc=calc - 9*A3*B*C*si2*t3;
calc=calc + 4*A*B2*C*si2*t3;
calc=calc - 15*A2*B2*C*si2*t3;
calc=calc + 2*B3*C*si2*t3;
calc=calc - 7*A*B3*C*si2*t3;
calc=calc - 12*A2*C2*si2*t3;
calc=calc - 6*A*B*C2*si2*t3;
calc=calc - 15*A2*B*C2*si2*t3;
calc=calc + 2*B2*C2*si2*t3;
calc=calc - 18*A*B2*C2*si2*t3;
calc=calc - 3*B3*C2*si2*t3;
calc=calc - 8*A*C3*si2*t3;
calc=calc - 2*B*C3*si2*t3;
calc=calc - 11*A*B*C3*si2*t3;
calc=calc - 6*B2*C3*si2*t3;
calc=calc - 2*C4*si2*t3;
calc=calc - 3*B*C4*si2*t3;
calc=calc + 4*A4*ri*si2*t3;
calc=calc + 2*A3*B*ri*si2*t3;
calc=calc + 4*A4*B*ri*si2*t3;
calc=calc - 8*A2*B2*ri*si2*t3;
calc=calc + 5*A3*B2*ri*si2*t3;
calc=calc - 6*A*B3*ri*si2*t3;
calc=calc - A*B4*ri*si2*t3;
calc=calc + 8*A3*C*ri*si2*t3;
calc=calc - A4*C*ri*si2*t3;
calc=calc - 4*A2*B*C*ri*si2*t3;
calc=calc + 6*A3*B*C*ri*si2*t3;
calc=calc - 18*A*B2*C*ri*si2*t3;
calc=calc + 17*A2*B2*C*ri*si2*t3;
calc=calc - 6*B3*C*ri*si2*t3;
calc=calc + 8*A*B3*C*ri*si2*t3;
calc=calc + A2*B3*C*ri*si2*t3;
calc=calc - B4*C*ri*si2*t3;
calc=calc - 3*A3*C2*ri*si2*t3;
calc=calc - 14*A*B*C2*ri*si2*t3;
calc=calc + 7*A2*B*C2*ri*si2*t3;
calc=calc - 10*B2*C2*ri*si2*t3;
calc=calc + 13*A*B2*C2*ri*si2*t3;
calc=calc - 2*A2*B2*C2*ri*si2*t3;
calc=calc + 2*B3*C2*ri*si2*t3;
calc=calc - 8*A*C3*ri*si2*t3;
calc=calc - 3*A2*C3*ri*si2*t3;
calc=calc - 8*B*C3*ri*si2*t3;
calc=calc + 3*A*B*C3*ri*si2*t3;
calc=calc + B2*C3*ri*si2*t3;
calc=calc - 4*C4*ri*si2*t3;
calc=calc - A*C4*ri*si2*t3;
calc=calc - 2*B*C4*ri*si2*t3;
calc=calc - 2*A4*ri2*si2*t3;
calc=calc + 2*A3*B*ri2*si2*t3;
calc=calc - 2*A4*B*ri2*si2*t3;
calc=calc + 10*A2*B2*ri2*si2*t3;
calc=calc - A3*B2*ri2*si2*t3;
calc=calc + 6*A*B3*ri2*si2*t3;
calc=calc + 3*A2*B3*ri2*si2*t3;
calc=calc + 2*A*B4*ri2*si2*t3;
calc=calc + 2*A3*C*ri2*si2*t3;
calc=calc + 2*A4*C*ri2*si2*t3;
calc=calc + 12*A2*B*C*ri2*si2*t3;
calc=calc + 8*A3*B*C*ri2*si2*t3;
calc=calc + 14*A*B2*C*ri2*si2*t3;
calc=calc - 2*A2*B2*C*ri2*si2*t3;
calc=calc + 4*B3*C*ri2*si2*t3;
calc=calc - 2*A*B3*C*ri2*si2*t3;
calc=calc - 2*A2*B3*C*ri2*si2*t3;
calc=calc + B4*C*ri2*si2*t3;
calc=calc + 10*A2*C2*ri2*si2*t3;
calc=calc + 5*A3*C2*ri2*si2*t3;
calc=calc + 14*A*B*C2*ri2*si2*t3;
calc=calc - 2*A2*B*C2*ri2*si2*t3;
calc=calc + 8*B2*C2*ri2*si2*t3;
calc=calc + B3*C2*ri2*si2*t3;
calc=calc + 6*A*C3*ri2*si2*t3;
calc=calc + A2*C3*ri2*si2*t3;
calc=calc + 4*B*C3*ri2*si2*t3;
calc=calc + 2*A*B*C3*ri2*si2*t3;
calc=calc + 2*A2*B*C3*ri2*si2*t3;
calc=calc - B2*C3*ri2*si2*t3;
calc=calc - 2*A*C4*ri2*si2*t3;
calc=calc - B*C4*ri2*si2*t3;
calc=calc - 2*A3*B*ri3*si2*t3;
calc=calc - 4*A2*B2*ri3*si2*t3;
calc=calc - A3*B2*ri3*si2*t3;
calc=calc - 2*A*B3*ri3*si2*t3;
calc=calc - 2*A2*B3*ri3*si2*t3;
calc=calc - A*B4*ri3*si2*t3;
calc=calc - 2*A3*C*ri3*si2*t3;
calc=calc - A4*C*ri3*si2*t3;
calc=calc - 2*A2*B*C*ri3*si2*t3;
calc=calc - 5*A3*B*C*ri3*si2*t3;
calc=calc + A*B3*C*ri3*si2*t3;
calc=calc + A2*B3*C*ri3*si2*t3;
calc=calc + 2*A2*C2*ri3*si2*t3;
calc=calc - 2*A3*C2*ri3*si2*t3;
calc=calc + 6*A*B*C2*ri3*si2*t3;
calc=calc + 10*A2*B*C2*ri3*si2*t3;
calc=calc + 5*A*B2*C2*ri3*si2*t3;
calc=calc + 2*A2*B2*C2*ri3*si2*t3;
calc=calc + 4*A*C3*ri3*si2*t3;
calc=calc + 8*A2*C3*ri3*si2*t3;
calc=calc + 3*A*B*C3*ri3*si2*t3;
calc=calc + A2*B*C3*ri3*si2*t3;
calc=calc - 2*A3*B*si3*t3;
calc=calc + A4*B*si3*t3;
calc=calc - 2*A2*B2*si3*t3;
calc=calc - 6*A2*B*C*si3*t3;
calc=calc + 4*A3*B*C*si3*t3;
calc=calc - 4*A*B2*C*si3*t3;
calc=calc + 3*A2*B2*C*si3*t3;
calc=calc - A*B3*C*si3*t3;
calc=calc - A2*B3*C*si3*t3;
calc=calc - 6*A*B*C2*si3*t3;
calc=calc + 6*A2*B*C2*si3*t3;
calc=calc - 2*B2*C2*si3*t3;
calc=calc + 3*A*B2*C2*si3*t3;
calc=calc - B3*C2*si3*t3;
calc=calc - 2*B*C3*si3*t3;
calc=calc + 4*A*B*C3*si3*t3;
calc=calc + B*C4*si3*t3;
calc=calc + 4*A3*B*ri*si3*t3;
calc=calc - 2*A4*B*ri*si3*t3;
calc=calc + 2*A2*B2*ri*si3*t3;
calc=calc + A3*B2*ri*si3*t3;
calc=calc - 2*A*B3*ri*si3*t3;
calc=calc + 2*A3*C*ri*si3*t3;
calc=calc + 12*A2*B*C*ri*si3*t3;
calc=calc - 5*A3*B*C*ri*si3*t3;
calc=calc + 4*A*B2*C*ri*si3*t3;
calc=calc - 5*A2*B2*C*ri*si3*t3;
calc=calc + 4*A*B3*C*ri*si3*t3;
calc=calc + 2*A2*B3*C*ri*si3*t3;
calc=calc + 6*A2*C2*ri*si3*t3;
calc=calc + 12*A*B*C2*ri*si3*t3;
calc=calc - 6*A2*B*C2*ri*si3*t3;
calc=calc + 2*B2*C2*ri*si3*t3;
calc=calc + 2*A*B2*C2*ri*si3*t3;
calc=calc + 2*A2*B2*C2*ri*si3*t3;
calc=calc + B3*C2*ri*si3*t3;
calc=calc + 6*A*C3*ri*si3*t3;
calc=calc + 4*B*C3*ri*si3*t3;
calc=calc - 2*A*B*C3*ri*si3*t3;
calc=calc + 2*B2*C3*ri*si3*t3;
calc=calc + 2*C4*ri*si3*t3;
calc=calc + B*C4*ri*si3*t3;
calc=calc - 2*A3*B*ri2*si3*t3;
calc=calc + A4*B*ri2*si3*t3;
calc=calc + 2*A2*B2*ri2*si3*t3;
calc=calc - 2*A3*B2*ri2*si3*t3;
calc=calc + 4*A*B3*ri2*si3*t3;
calc=calc - 2*A3*C*ri2*si3*t3;
calc=calc - 2*A2*B*C*ri2*si3*t3;
calc=calc + A3*B*C*ri2*si3*t3;
calc=calc + 6*A*B2*C*ri2*si3*t3;
calc=calc + 6*A2*B2*C*ri2*si3*t3;
calc=calc - 3*A*B3*C*ri2*si3*t3;
calc=calc - A2*B3*C*ri2*si3*t3;
calc=calc - 4*A2*C2*ri2*si3*t3;
calc=calc + A3*C2*ri2*si3*t3;
calc=calc + 8*A2*B*C2*ri2*si3*t3;
calc=calc - 5*A*B2*C2*ri2*si3*t3;
calc=calc - 2*A2*B2*C2*ri2*si3*t3;
calc=calc - 2*A*C3*ri2*si3*t3;
calc=calc + 2*A2*C3*ri2*si3*t3;
calc=calc - A*B*C3*ri2*si3*t3;
calc=calc - A2*B*C3*ri2*si3*t3;
calc=calc + A*C4*ri2*si3*t3;
calc=calc - 2*A2*B2*ri3*si3*t3;
calc=calc + A3*B2*ri3*si3*t3;
calc=calc - 2*A*B3*ri3*si3*t3;
calc=calc - 4*A2*B*C*ri3*si3*t3;
calc=calc - 6*A*B2*C*ri3*si3*t3;
calc=calc - 4*A2*B2*C*ri3*si3*t3;
calc=calc - 2*A2*C2*ri3*si3*t3;
calc=calc - A3*C2*ri3*si3*t3;
calc=calc - 6*A*B*C2*ri3*si3*t3;
calc=calc - 8*A2*B*C2*ri3*si3*t3;
calc=calc - 2*A*C3*ri3*si3*t3;
calc=calc - 4*A2*C3*ri3*si3*t3;
calc=calc + A4*t4;
calc=calc + 4*A3*B*t4;
calc=calc + 6*A2*B2*t4;
calc=calc + 4*A*B3*t4;
calc=calc + B4*t4;
calc=calc + 4*A3*C*t4;
calc=calc + 12*A2*B*C*t4;
calc=calc + 12*A*B2*C*t4;
calc=calc + 4*B3*C*t4;
calc=calc + 6*A2*C2*t4;
calc=calc + 12*A*B*C2*t4;
calc=calc + 6*B2*C2*t4;
calc=calc + 4*A*C3*t4;
calc=calc + 4*B*C3*t4;
calc=calc + C4*t4;
calc=calc - 2*A4*ri*t4;
calc=calc - 8*A3*B*ri*t4;
calc=calc - 12*A2*B2*ri*t4;
calc=calc - 8*A*B3*ri*t4;
calc=calc - 2*B4*ri*t4;
calc=calc - 6*A3*C*ri*t4;
calc=calc - 18*A2*B*C*ri*t4;
calc=calc - 18*A*B2*C*ri*t4;
calc=calc - 6*B3*C*ri*t4;
calc=calc - 6*A2*C2*ri*t4;
calc=calc - 12*A*B*C2*ri*t4;
calc=calc - 6*B2*C2*ri*t4;
calc=calc - 2*A*C3*ri*t4;
calc=calc - 2*B*C3*ri*t4;
calc=calc + A4*ri2*t4;
calc=calc + 4*A3*B*ri2*t4;
calc=calc + 6*A2*B2*ri2*t4;
calc=calc + 4*A*B3*ri2*t4;
calc=calc + B4*ri2*t4;
calc=calc + A3*C*ri2*t4;
calc=calc + 3*A2*B*C*ri2*t4;
calc=calc + 3*A*B2*C*ri2*t4;
calc=calc + B3*C*ri2*t4;
calc=calc - A2*C2*ri2*t4;
calc=calc - A3*C2*ri2*t4;
calc=calc - 2*A*B*C2*ri2*t4;
calc=calc - A2*B*C2*ri2*t4;
calc=calc - B2*C2*ri2*t4;
calc=calc - A*C3*ri2*t4;
calc=calc - A2*C3*ri2*t4;
calc=calc - B*C3*ri2*t4;
calc=calc + A3*C*ri3*t4;
calc=calc + 3*A2*B*C*ri3*t4;
calc=calc + 3*A*B2*C*ri3*t4;
calc=calc + B3*C*ri3*t4;
calc=calc + A2*C2*ri3*t4;
calc=calc + A3*C2*ri3*t4;
calc=calc + 2*A*B*C2*ri3*t4;
calc=calc + A2*B*C2*ri3*t4;
calc=calc + B2*C2*ri3*t4;
calc=calc - 2*A4*si*t4;
calc=calc - 6*A3*B*si*t4;
calc=calc - 6*A2*B2*si*t4;
calc=calc - 2*A*B3*si*t4;
calc=calc - 8*A3*C*si*t4;
calc=calc - 18*A2*B*C*si*t4;
calc=calc - 12*A*B2*C*si*t4;
calc=calc - 2*B3*C*si*t4;
calc=calc - 12*A2*C2*si*t4;
calc=calc - 18*A*B*C2*si*t4;
calc=calc - 6*B2*C2*si*t4;
calc=calc - 8*A*C3*si*t4;
calc=calc - 6*B*C3*si*t4;
calc=calc - 2*C4*si*t4;
calc=calc + 4*A4*ri*si*t4;
calc=calc + 11*A3*B*ri*si*t4;
calc=calc + 9*A2*B2*ri*si*t4;
calc=calc + A*B3*ri*si*t4;
calc=calc - B4*ri*si*t4;
calc=calc + 11*A3*C*ri*si*t4;
calc=calc + 22*A2*B*C*ri*si*t4;
calc=calc - 2*A3*B*C*ri*si*t4;
calc=calc + 11*A*B2*C*ri*si*t4;
calc=calc - 2*A2*B2*C*ri*si*t4;
calc=calc + 9*A2*C2*ri*si*t4;
calc=calc + 11*A*B*C2*ri*si*t4;
calc=calc - 2*A2*B*C2*ri*si*t4;
calc=calc + 2*B2*C2*ri*si*t4;
calc=calc + A*C3*ri*si*t4;
calc=calc - C4*ri*si*t4;
calc=calc - 2*A4*ri2*si*t4;
calc=calc - 4*A3*B*ri2*si*t4;
calc=calc + 4*A*B3*ri2*si*t4;
calc=calc + 2*B4*ri2*si*t4;
calc=calc - A3*C*ri2*si*t4;
calc=calc + 2*A2*B*C*ri2*si*t4;
calc=calc + 3*A3*B*C*ri2*si*t4;
calc=calc + 7*A*B2*C*ri2*si*t4;
calc=calc + 3*A2*B2*C*ri2*si*t4;
calc=calc + 4*B3*C*ri2*si*t4;
calc=calc + 4*A2*C2*ri2*si*t4;
calc=calc + 2*A3*C2*ri2*si*t4;
calc=calc + 9*A*B*C2*ri2*si*t4;
calc=calc + 2*A2*B*C2*ri2*si*t4;
calc=calc + 5*B2*C2*ri2*si*t4;
calc=calc + 3*A*C3*ri2*si*t4;
calc=calc + 2*A2*C3*ri2*si*t4;
calc=calc + 3*B*C3*ri2*si*t4;
calc=calc - A3*B*ri3*si*t4;
calc=calc - 3*A2*B2*ri3*si*t4;
calc=calc - 3*A*B3*ri3*si*t4;
calc=calc - B4*ri3*si*t4;
calc=calc - 2*A3*C*ri3*si*t4;
calc=calc - 6*A2*B*C*ri3*si*t4;
calc=calc - A3*B*C*ri3*si*t4;
calc=calc - 6*A*B2*C*ri3*si*t4;
calc=calc - A2*B2*C*ri3*si*t4;
calc=calc - 2*B3*C*ri3*si*t4;
calc=calc - A2*C2*ri3*si*t4;
calc=calc - 2*A3*C2*ri3*si*t4;
calc=calc - 2*A*B*C2*ri3*si*t4;
calc=calc - B2*C2*ri3*si*t4;
calc=calc + A*C3*ri3*si*t4;
calc=calc + A2*C3*ri3*si*t4;
calc=calc + A4*si2*t4;
calc=calc + A3*B*si2*t4;
calc=calc - A2*B2*si2*t4;
calc=calc - A3*B2*si2*t4;
calc=calc - A*B3*si2*t4;
calc=calc - A2*B3*si2*t4;
calc=calc + 4*A3*C*si2*t4;
calc=calc + 3*A2*B*C*si2*t4;
calc=calc - 2*A*B2*C*si2*t4;
calc=calc - A2*B2*C*si2*t4;
calc=calc - B3*C*si2*t4;
calc=calc + 6*A2*C2*si2*t4;
calc=calc + 3*A*B*C2*si2*t4;
calc=calc - B2*C2*si2*t4;
calc=calc + 4*A*C3*si2*t4;
calc=calc + B*C3*si2*t4;
calc=calc + C4*si2*t4;
calc=calc - 2*A4*ri*si2*t4;
calc=calc - A3*B*ri*si2*t4;
calc=calc + 4*A2*B2*ri*si2*t4;
calc=calc + 2*A3*B2*ri*si2*t4;
calc=calc + 3*A*B3*ri*si2*t4;
calc=calc + 2*A2*B3*ri*si2*t4;
calc=calc - 4*A3*C*ri*si2*t4;
calc=calc + 2*A2*B*C*ri*si2*t4;
calc=calc + 3*A3*B*C*ri*si2*t4;
calc=calc + 9*A*B2*C*ri*si2*t4;
calc=calc + 2*A2*B2*C*ri*si2*t4;
calc=calc + 3*B3*C*ri*si2*t4;
calc=calc + 7*A*B*C2*ri*si2*t4;
calc=calc + 3*A2*B*C2*ri*si2*t4;
calc=calc + 5*B2*C2*ri*si2*t4;
calc=calc + 4*A*C3*ri*si2*t4;
calc=calc + 4*B*C3*ri*si2*t4;
calc=calc + 2*C4*ri*si2*t4;
calc=calc + A4*ri2*si2*t4;
calc=calc - A3*B*ri2*si2*t4;
calc=calc - 5*A2*B2*ri2*si2*t4;
calc=calc - A3*B2*ri2*si2*t4;
calc=calc - 3*A*B3*ri2*si2*t4;
calc=calc - A2*B3*ri2*si2*t4;
calc=calc - A3*C*ri2*si2*t4;
calc=calc - 6*A2*B*C*ri2*si2*t4;
calc=calc - 4*A3*B*C*ri2*si2*t4;
calc=calc - 7*A*B2*C*ri2*si2*t4;
calc=calc + A2*B2*C*ri2*si2*t4;
calc=calc - 2*B3*C*ri2*si2*t4;
calc=calc - 5*A2*C2*ri2*si2*t4;
calc=calc - A3*C2*ri2*si2*t4;
calc=calc - 7*A*B*C2*ri2*si2*t4;
calc=calc + A2*B*C2*ri2*si2*t4;
calc=calc - 4*B2*C2*ri2*si2*t4;
calc=calc - 3*A*C3*ri2*si2*t4;
calc=calc - A2*C3*ri2*si2*t4;
calc=calc - 2*B*C3*ri2*si2*t4;
calc=calc + A3*B*ri3*si2*t4;
calc=calc + 2*A2*B2*ri3*si2*t4;
calc=calc + A*B3*ri3*si2*t4;
calc=calc + A3*C*ri3*si2*t4;
calc=calc + A2*B*C*ri3*si2*t4;
calc=calc + A3*B*C*ri3*si2*t4;
calc=calc - 2*A2*B2*C*ri3*si2*t4;
calc=calc - A2*C2*ri3*si2*t4;
calc=calc + A3*C2*ri3*si2*t4;
calc=calc - 3*A*B*C2*ri3*si2*t4;
calc=calc - 4*A2*B*C2*ri3*si2*t4;
calc=calc - 2*A*C3*ri3*si2*t4;
calc=calc - 2*A2*C3*ri3*si2*t4;
calc=calc + A3*B*si3*t4;
calc=calc + A2*B2*si3*t4;
calc=calc + A3*B2*si3*t4;
calc=calc + 3*A2*B*C*si3*t4;
calc=calc + 2*A*B2*C*si3*t4;
calc=calc + A2*B2*C*si3*t4;
calc=calc + 3*A*B*C2*si3*t4;
calc=calc + B2*C2*si3*t4;
calc=calc + B*C3*si3*t4;
calc=calc - 2*A3*B*ri*si3*t4;
calc=calc - A2*B2*ri*si3*t4;
calc=calc - 2*A3*B2*ri*si3*t4;
calc=calc + A*B3*ri*si3*t4;
calc=calc + A2*B3*ri*si3*t4;
calc=calc - A3*C*ri*si3*t4;
calc=calc - 6*A2*B*C*ri*si3*t4;
calc=calc - A3*B*C*ri*si3*t4;
calc=calc - 2*A*B2*C*ri*si3*t4;
calc=calc - 3*A2*C2*ri*si3*t4;
calc=calc - 6*A*B*C2*ri*si3*t4;
calc=calc - A2*B*C2*ri*si3*t4;
calc=calc - B2*C2*ri*si3*t4;
calc=calc - 3*A*C3*ri*si3*t4;
calc=calc - 2*B*C3*ri*si3*t4;
calc=calc - C4*ri*si3*t4;
calc=calc + A3*B*ri2*si3*t4;
calc=calc - A2*B2*ri2*si3*t4;
calc=calc + A3*B2*ri2*si3*t4;
calc=calc - 2*A*B3*ri2*si3*t4;
calc=calc - 2*A2*B3*ri2*si3*t4;
calc=calc + A3*C*ri2*si3*t4;
calc=calc + A2*B*C*ri2*si3*t4;
calc=calc + A3*B*C*ri2*si3*t4;
calc=calc - 3*A*B2*C*ri2*si3*t4;
calc=calc - 4*A2*B2*C*ri2*si3*t4;
calc=calc + 2*A2*C2*ri2*si3*t4;
calc=calc - 2*A2*B*C2*ri2*si3*t4;
calc=calc + A*C3*ri2*si3*t4;
calc=calc + A2*B2*ri3*si3*t4;
calc=calc + A*B3*ri3*si3*t4;
calc=calc + A2*B3*ri3*si3*t4;
calc=calc + 2*A2*B*C*ri3*si3*t4;
calc=calc + 3*A*B2*C*ri3*si3*t4;
calc=calc + 3*A2*B2*C*ri3*si3*t4;
calc=calc + A2*C2*ri3*si3*t4;
calc=calc + 3*A*B*C2*ri3*si3*t4;
calc=calc + 3*A2*B*C2*ri3*si3*t4;
calc=calc + A*C3*ri3*si3*t4;
calc=calc + A2*C3*ri3*si3*t4; return calc}
