41 #define SIMPLE_UOP(OPER)                      \ 
   42     G4ErrorMatrixIter a=m.begin();            \ 
   43     G4ErrorMatrixIter e=m.begin()+num_size(); \ 
   44    for(;a<e; a++) (*a) OPER t; 
   46 #define SIMPLE_BOP(OPER)                           \ 
   47     G4ErrorMatrixIter a=m.begin();                 \ 
   48     G4ErrorMatrixConstIter b=mat2.m.begin();         \ 
   49     G4ErrorMatrixConstIter e=m.begin()+num_size(); \ 
   50    for(;a<e; a++, b++) (*a) OPER (*b); 
   52 #define SIMPLE_TOP(OPER)                                 \ 
   53     G4ErrorMatrixConstIter a=mat1.m.begin();               \ 
   54     G4ErrorMatrixConstIter b=mat2.m.begin();               \ 
   55     G4ErrorMatrixIter t=mret.m.begin();                  \ 
   56     G4ErrorMatrixConstIter e=mat1.m.begin()+mat1.num_size(); \ 
   57    for( ;a<e; a++, b++, t++) (*t) = (*a) OPER (*b); 
   59 #define CHK_DIM_2(r1,r2,c1,c2,fun) \ 
   60    if (r1!=r2 || c1!=c2)  { \ 
   61     G4ErrorMatrix::error("Range error in Matrix function " #fun "(1)."); \ 
   64 #define CHK_DIM_1(c1,r2,fun) \ 
   66      G4ErrorMatrix::error("Range error in Matrix function " #fun "(2)."); \ 
   72    : 
m(p*(p+1)/2), nrow(p)
 
   74    size = nrow * (nrow+1) / 2;
 
   79    : 
m(p*(p+1)/2), nrow(p)
 
   81    size = nrow * (nrow+1) / 2;
 
   92          for(
G4int i=1;i<=nrow;i++)
 
  113    : 
m(mat1.size), nrow(mat1.nrow), size(mat1.size)
 
  134     for(
G4int icol=1; icol<=irow; icol++)
 
  138     b1 += irow+min_row-1;
 
  153     for(
G4int icol=1; icol<=irow; icol++)
 
  157     b1 += irow+min_row-1;
 
  171     for(
G4int icol=1; icol<=irow; icol++)
 
  203   for(;a<e; a++, b++) { (*b) = -(*a); }
 
  294   for(mit1=mat1.m.begin();
 
  299       for(
int step=1;step<=mat2.
num_row();++step)
 
  306             {  temp+=*(sp++)*(*(mit2++));  }
 
  309                 for(
int stept=step+1;stept<=mat2.
num_row();stept++)
 
  311                    temp+=*sp*(*(mit2++));
 
  312                    if(stept<mat2.
num_row()) sp+=stept;
 
  329   for(step=1,snp=mat1.m.begin();step<=mat1.
num_row();snp+=step++)
 
  331     for(mit1=mat2.m.begin();mit1<mat2.m.begin()+mat2.
num_col();mit1++)
 
  338         temp+=*mit2*(*(sp++));
 
  342       for(stept=step+1;stept<=mat1.
num_row();stept++)
 
  358   G4int step1,stept1,step2,stept2;
 
  362   for(step1=1,snp1=mat1.m.begin();step1<=mat1.
num_row();snp1+=step1++)
 
  364     for(step2=1,snp2=mat2.m.begin();step2<=mat2.
num_row();)
 
  372         while(sp1<snp1+step1)  
 
  373           { temp+=(*(sp1++))*(*(sp2++)); }
 
  375         for(stept1=step1+1;stept1!=step2+1;sp1+=stept1++)
 
  376           { temp+=(*sp1)*(*(sp2++)); }
 
  378         for(stept2=++step2;stept2<=mat2.
num_row();sp1+=stept1++,sp2+=stept2++)
 
  379           { temp+=(*sp1)*(*sp2); }
 
  384           { temp+=(*(sp1++))*(*(sp2++)); }
 
  386         for(stept2=++step2;stept2!=step1+1;sp2+=stept2++)
 
  387           { temp+=(*(sp1++))*(*sp2); }
 
  389         for(stept1=step1+1;stept1<=mat1.
num_row();sp1+=stept1++,sp2+=stept2++)
 
  390           { temp+=(*sp1)*(*sp2); }
 
  414     for(
G4int k=1;k<=j;k++)
 
  417       if(j!=k) *mkj += *sjk;
 
  446     for(
G4int k=1;k<=j;k++)
 
  449       if(j!=k) *mkj -= *sjk;
 
  480    if(mat1.nrow*mat1.nrow != size)
 
  482       size = mat1.nrow * mat1.nrow;
 
  496       for(
G4int k=1;k<=j;k++)
 
  499          if(j!=k) *mkj = *sjk;
 
  511    if (&mat1 == 
this) { 
return *
this; }
 
  512    if(mat1.nrow != nrow)
 
  532   if(os.flags() & std::ios::fixed)
 
  534     width = os.precision()+3;
 
  538     width = os.precision()+7;
 
  545       os << q(irow,icol) << 
" ";
 
  560     for(
G4int ic=1;ic<=ir;ic++)
 
  562       *(b++) = (*f)(*(a++), ir, ic);
 
  570    if(mat1.nrow != nrow)
 
  573       size = nrow * (nrow+1) / 2;
 
  578    for(
G4int r=1;r<=nrow;r++)
 
  581       for(
G4int c=1;c<=r;c++)
 
  600   for(
G4int r=1;r<=mret.num_row();r++)
 
  603     for(
G4int c=1;c<=r;c++)
 
  610         tmp+=(*(tempri++))*(*(m1ci++));
 
  627   for(
G4int r=1;r<=mret.num_row();r++)
 
  639         tmp+=(*(tempri++))*(*(m1ci++));
 
  643         tmp+=(*(tempri++))*(*(m1ci));
 
  661   for(
G4int r=1;r<=mret.num_row();r++)
 
  664     for(
G4int c=1;c<=r;c++)
 
  669       for(
G4int i=1;i<=mat1.num_row();i++)
 
  671         tmp+=(*(tempir))*(*(m1ic));
 
  694       c11 = (*(m.begin()+2)) * (*(m.begin()+5))
 
  695           - (*(m.begin()+4)) * (*(m.begin()+4));
 
  696       c12 = (*(m.begin()+4)) * (*(m.begin()+3))
 
  697           - (*(m.begin()+1)) * (*(m.begin()+5));
 
  698       c13 = (*(m.begin()+1)) * (*(m.begin()+4))
 
  699           - (*(m.begin()+2)) * (*(m.begin()+3));
 
  700       c22 = (*(m.begin()+5)) * (*m.begin())
 
  701           - (*(m.begin()+3)) * (*(m.begin()+3));
 
  702       c23 = (*(m.begin()+3)) * (*(m.begin()+1))
 
  703           - (*(m.begin()+4)) * (*m.begin());
 
  704       c33 = (*m.begin()) * (*(m.begin()+2))
 
  705           - (*(m.begin()+1)) * (*(m.begin()+1));
 
  706       t1 = std::fabs(*m.begin());
 
  707       t2 = std::fabs(*(m.begin()+1));
 
  708       t3 = std::fabs(*(m.begin()+3));
 
  713           temp = *(m.begin()+3);
 
  714           det = c23*c12-c22*c13;
 
  719           det = c22*c33-c23*c23;
 
  724         temp = *(m.begin()+3);
 
  725         det = c23*c12-c22*c13;
 
  729         temp = *(m.begin()+1);
 
  730         det = c13*c23-c12*c33;
 
  752       det = (*m.begin())*(*(m.begin()+2)) - (*(m.begin()+1))*(*(m.begin()+1));
 
  759       *(m.begin()+1) *= -ss;
 
  760       temp = ss*(*(m.begin()+2));
 
  761       *(m.begin()+2) = ss*(*m.begin());
 
  772       *m.begin() = 1.0/(*m.begin());
 
  801   static const G4int max_array = 20;
 
  805   static std::vector<G4int> ir_vec (max_array+1); 
 
  806   if (ir_vec.size() <= 
static_cast<unsigned int>(nrow))
 
  808     ir_vec.resize(nrow+1);
 
  810   G4int * ir = &ir_vec[0];   
 
  814   G4int i = mt.dfact_matrix(det, ir);
 
  815   if(i==0) { 
return det; }
 
  822    for (
G4int i=0; i<nrow; i++) 
 
  823      { t += *(m.begin() + (i+3)*i/2); }
 
  846   static const G4int max_array = 25;
 
  848   if (!xvec) xvec = 
new  std::vector<G4double> (max_array) ;
 
  850   if (!pivv) pivv = 
new  std::vector<G4int>    (max_array) ;
 
  851   typedef std::vector<G4int>::iterator pivIter; 
 
  852   if (xvec->size() < 
static_cast<unsigned int>(nrow)) xvec->resize(nrow);
 
  853   if (pivv->size() < 
static_cast<unsigned int>(nrow)) pivv->resize(nrow);
 
  860   pivIter piv = pivv->begin();
 
  873   for (i = 0; i < nrow; i++)
 
  884   for (j=1; j < nrow; j+=ss)  
 
  886           mjj = m.begin() + j*(j-1)/2 + j-1;
 
  889           ip = m.begin() + (j+1)*j/2 + j-1;
 
  890           for (i=j+1; i <= nrow ; ip += i++)
 
  892             if (std::fabs(*ip) > 
lambda)
 
  894                 lambda = std::fabs(*ip);
 
  910               if (std::fabs(*mjj) >= lambda*alpha)
 
  918                   ip = m.begin() + pivrow*(pivrow-1)/2+j-1;
 
  919                   for (k=j; k < pivrow; k++)
 
  921                       if (std::fabs(*ip) > sigma)
 
  922                         sigma = std::fabs(*ip);
 
  925                   if (sigma * std::fabs(*mjj) >= alpha * lambda * 
lambda)
 
  930                   else if (std::fabs(*(m.begin()+pivrow*(pivrow-1)/2+pivrow-1)) 
 
  944                   temp2 = *mjj = 1./ *mjj; 
 
  947                   for (i=j+1; i <= nrow; i++)
 
  949                       temp1 = *(m.begin() + i*(i-1)/2 + j-1) * temp2;
 
  950                       ip = m.begin()+i*(i-1)/2+j;
 
  951                       for (k=j+1; k<=i; k++)
 
  953                           *ip -= temp1 * *(m.begin() + k*(k-1)/2 + j-1);
 
  954                           if (std::fabs(*ip) <= epsilon)
 
  960                   ip = m.begin() + (j+1)*j/2 + j-1; 
 
  961                   for (i=j+1; i <= nrow; ip += i++)
 
  972                   ip = m.begin() + pivrow*(pivrow-1)/2 + j;
 
  973                   for (i=j+1; i < pivrow; i++, ip++)
 
  975                       temp1 = *(m.begin() + i*(i-1)/2 + j-1);
 
  976                       *(m.begin() + i*(i-1)/2 + j-1)= *ip;
 
  980                   *mjj = *(m.begin()+pivrow*(pivrow-1)/2+pivrow-1);
 
  981                   *(m.begin()+pivrow*(pivrow-1)/2+pivrow-1) = temp1;
 
  982                   ip = m.begin() + (pivrow+1)*pivrow/2 + j-1;
 
  984                   for (i = pivrow+1; i <= nrow; ip += i, iq += i++)
 
  996                   temp2 = *mjj = 1./ *mjj; 
 
  999                   for (i = j+1; i <= nrow; i++)
 
 1001                       temp1 = *(m.begin() + i*(i-1)/2 + j-1) * temp2;
 
 1002                       ip = m.begin()+i*(i-1)/2+j;
 
 1003                       for (k=j+1; k<=i; k++)
 
 1005                           *ip -= temp1 * *(m.begin() + k*(k-1)/2 + j-1);
 
 1006                           if (std::fabs(*ip) <= epsilon)
 
 1012                   ip = m.begin() + (j+1)*j/2 + j-1;
 
 1013                   for (i=j+1; i<=nrow; ip += i++)
 
 1027                       ip = m.begin() + pivrow*(pivrow-1)/2 + j+1;
 
 1028                       for (i=j+2; i < pivrow; i++, ip++)
 
 1030                           temp1 = *(m.begin() + i*(i-1)/2 + j);
 
 1031                           *(m.begin() + i*(i-1)/2 + j) = *ip;
 
 1034                       temp1 = *(mjj + j + 1);
 
 1036                         *(m.begin() + pivrow*(pivrow-1)/2 + pivrow-1);
 
 1037                       *(m.begin() + pivrow*(pivrow-1)/2 + pivrow-1) = temp1;
 
 1039                       *(mjj + j) = *(m.begin() + pivrow*(pivrow-1)/2 + j-1);
 
 1040                       *(m.begin() + pivrow*(pivrow-1)/2 + j-1) = temp1;
 
 1041                       ip = m.begin() + (pivrow+1)*pivrow/2 + j;
 
 1042                       iq = ip + pivrow-(j+1);
 
 1043                       for (i = pivrow+1; i <= nrow; ip += i, iq += i++)
 
 1051                   temp2 = *mjj * *(mjj + j + 1) - *(mjj + j) * *(mjj + j); 
 
 1056                                 "Error in pivot choice!");
 
 1064                   *mjj = *(mjj + j + 1) * temp2;
 
 1065                   *(mjj + j + 1) = temp1 * temp2;
 
 1066                   *(mjj + j) = - *(mjj + j) * temp2;
 
 1071                       for (i=j+2; i <= nrow ; i++)
 
 1073                           ip = m.begin() + i*(i-1)/2 + j-1;
 
 1074                           temp1 = *ip * *mjj + *(ip + 1) * *(mjj + j);
 
 1075                           if (std::fabs(temp1 ) <= epsilon)
 
 1077                           temp2 = *ip * *(mjj + j) + *(ip + 1) * *(mjj + j + 1);
 
 1078                           if (std::fabs(temp2 ) <= 
epsilon)
 
 1080                           for (k = j+2; k <= i ; k++)
 
 1082                               ip = m.begin() + i*(i-1)/2 + k-1;
 
 1083                               iq = m.begin() + k*(k-1)/2 + j-1;
 
 1084                               *ip -= temp1 * *iq + temp2 * *(iq+1);
 
 1085                               if (std::fabs(*ip) <= 
epsilon)
 
 1090                       for (i=j+2; i <= nrow ; i++)
 
 1092                           ip = m.begin() + i*(i-1)/2 + j-1;
 
 1093                           temp1 = *ip * *mjj + *(ip+1) * *(mjj + j);
 
 1094                           if (std::fabs(temp1) <= epsilon)
 
 1096                           *(ip+1) = *ip * *(mjj + j) + *(ip+1) * *(mjj + j + 1);
 
 1097                           if (std::fabs(*(ip+1)) <= epsilon)
 
 1108     mjj = m.begin() + j*(j-1)/2 + j-1;
 
 1122   for (j = nrow ; j >= 1 ; j -= ss) 
 
 1124           mjj = m.begin() + j*(j-1)/2 + j-1;
 
 1130                   ip = m.begin() + (j+1)*j/2 + j-1;
 
 1131                   for (i=0; i < nrow-j; ip += 1+j+i++)
 
 1135                   for (i=j+1; i<=nrow ; i++)
 
 1138                     ip = m.begin() + i*(i-1)/2 + j;
 
 1139                     for (k=0; k <= i-j-1; k++)
 
 1140                       { temp2 += *ip++ * x[k]; }
 
 1141                     for (ip += i-1; k < nrow-j; ip += 1+j+k++) 
 
 1142                       { temp2 += *ip * x[k]; }
 
 1143                     *(m.begin()+ i*(i-1)/2 + j-1) = -temp2;
 
 1146                   ip = m.begin() + (j+1)*j/2 + j-1;
 
 1147                   for (k=0; k < nrow-j; ip += 1+j+k++)
 
 1148                     { temp2 += x[k] * *ip; }
 
 1156                 std::ostringstream message;
 
 1157                 message << 
"Error in pivot: " << piv[j-1];
 
 1158                 G4Exception(
"G4ErrorSymMatrix::invertBunchKaufman()",
 
 1164                   ip = m.begin() + (j+1)*j/2 + j-1;
 
 1165                   for (i=0; i < nrow-j; ip += 1+j+i++)
 
 1169                   for (i=j+1; i<=nrow ; i++)
 
 1172                     ip = m.begin() + i*(i-1)/2 + j;
 
 1173                     for (k=0; k <= i-j-1; k++)
 
 1174                       { temp2 += *ip++ * x[k]; }
 
 1175                     for (ip += i-1; k < nrow-j; ip += 1+j+k++)
 
 1176                       { temp2 += *ip * x[k]; }
 
 1177                     *(m.begin()+ i*(i-1)/2 + j-1) = -temp2;
 
 1180                   ip = m.begin() + (j+1)*j/2 + j-1;
 
 1181                   for (k=0; k < nrow-j; ip += 1+j+k++)
 
 1182                     { temp2 += x[k] * *ip; }
 
 1185                   ip = m.begin() + (j+1)*j/2 + j-2;
 
 1186                   for (i=j+1; i <= nrow; ip += i++)
 
 1187                     { temp2 += *ip * *(ip+1); }
 
 1189                   ip = m.begin() + (j+1)*j/2 + j-2;
 
 1190                   for (i=0; i < nrow-j; ip += 1+j+i++)
 
 1194                   for (i=j+1; i <= nrow ; i++)
 
 1197                     ip = m.begin() + i*(i-1)/2 + j;
 
 1198                     for (k=0; k <= i-j-1; k++)
 
 1199                       { temp2 += *ip++ * x[k]; }
 
 1200                     for (ip += i-1; k < nrow-j; ip += 1+j+k++)
 
 1201                       { temp2 += *ip * x[k]; }
 
 1202                     *(m.begin()+ i*(i-1)/2 + j-2)= -temp2;
 
 1205                   ip = m.begin() + (j+1)*j/2 + j-2;
 
 1206                   for (k=0; k < nrow-j; ip += 1+j+k++)
 
 1207                     { temp2 += x[k] * *ip; }
 
 1215           pivrow = (piv[j-1]==0)? -piv[j-2] : piv[j-1];
 
 1216           ip = m.begin() + pivrow*(pivrow-1)/2 + j;
 
 1217           for (i=j+1;i < pivrow; i++, ip++)
 
 1219               temp1 = *(m.begin() + i*(i-1)/2 + j-1);
 
 1220               *(m.begin() + i*(i-1)/2 + j-1) = *ip;
 
 1224           *mjj = *(m.begin() + pivrow*(pivrow-1)/2 + pivrow-1);
 
 1225           *(m.begin() + pivrow*(pivrow-1)/2 + pivrow-1) = temp1;
 
 1229               *(mjj-1) = *( m.begin() + pivrow*(pivrow-1)/2 + j-2);
 
 1230               *( m.begin() + pivrow*(pivrow-1)/2 + j-2) = temp1;
 
 1233           ip = m.begin() + (pivrow+1)*pivrow/2 + j-1;  
 
 1235           for (i = pivrow+1; i <= nrow; ip += i, iq += i++)
 
 1250 const G4double G4ErrorSymMatrix::CHOLESKY_THRESHOLD_5x5 = .5;
 
 1251 const G4double G4ErrorSymMatrix::CHOLESKY_THRESHOLD_6x6 = .2;
 
 1252 const G4double G4ErrorSymMatrix::CHOLESKY_CREEP_5x5 = .005;
 
 1253 const G4double G4ErrorSymMatrix::CHOLESKY_CREEP_6x6 = .002;
 
 1301 void G4ErrorSymMatrix::invert5(
G4int & ifail)
 
 1303       if (posDefFraction5x5 >= CHOLESKY_THRESHOLD_5x5)
 
 1306         posDefFraction5x5 = .9*posDefFraction5x5 + .1*(1-ifail);
 
 1314         if (posDefFraction5x5 + adjustment5x5 >= CHOLESKY_THRESHOLD_5x5)
 
 1317           posDefFraction5x5 = .9*posDefFraction5x5 + .1*(1-ifail);
 
 1327           adjustment5x5 += CHOLESKY_CREEP_5x5;
 
 1333 void G4ErrorSymMatrix::invert6(
G4int & ifail)
 
 1335       if (posDefFraction6x6 >= CHOLESKY_THRESHOLD_6x6)
 
 1338         posDefFraction6x6 = .9*posDefFraction6x6 + .1*(1-ifail);
 
 1346         if (posDefFraction6x6 + adjustment6x6 >= CHOLESKY_THRESHOLD_6x6)
 
 1349           posDefFraction6x6 = .9*posDefFraction6x6 + .1*(1-ifail);
 
 1359           adjustment6x6 += CHOLESKY_CREEP_6x6;
 
 1400                                 + m[
A12]*Det2_23_01;
 
 1402                                 + m[
A13]*Det2_23_01;
 
 1404                                 + m[
A13]*Det2_23_02;
 
 1406                                 + m[
A13]*Det2_23_12;
 
 1408                                 + m[
A12]*Det2_24_01;
 
 1410                                 + m[
A13]*Det2_24_01;
 
 1412                                 + m[
A14]*Det2_24_01;
 
 1414                                 + m[
A13]*Det2_24_02;
 
 1416                                 + m[
A14]*Det2_24_02;
 
 1418                                 + m[
A13]*Det2_24_12;
 
 1420                                 + m[
A14]*Det2_24_12;
 
 1422                                 + m[
A12]*Det2_34_01;
 
 1424                                 + m[
A13]*Det2_34_01;
 
 1426                                 + m[
A14]*Det2_34_01;
 
 1428                                 + m[
A13]*Det2_34_02;
 
 1430                                 + m[
A14]*Det2_34_02;
 
 1432                                 + m[
A14]*Det2_34_03;
 
 1434                                 + m[
A13]*Det2_34_12;
 
 1436                                 + m[
A14]*Det2_34_12;
 
 1438                                 + m[
A14]*Det2_34_13;
 
 1440                                 + m[
A22]*Det2_34_01;
 
 1442                                 + m[
A23]*Det2_34_01;
 
 1444                                 + m[
A24]*Det2_34_01;
 
 1446                                 + m[
A23]*Det2_34_02;
 
 1448                                 + m[
A24]*Det2_34_02;
 
 1450                                 + m[
A24]*Det2_34_03;
 
 1452                                 + m[
A23]*Det2_34_12;
 
 1454                                 + m[
A24]*Det2_34_12;
 
 1456                                 + m[
A24]*Det2_34_13;
 
 1458                                 + m[
A24]*Det2_34_23;
 
 1462   G4double Det4_0123_0123 = m[
A00]*Det3_123_123 - m[
A01]*Det3_123_023 
 
 1463                                 + m[
A02]*Det3_123_013 - m[
A03]*Det3_123_012;
 
 1464   G4double Det4_0124_0123 = m[
A00]*Det3_124_123 - m[
A01]*Det3_124_023 
 
 1465                                 + m[
A02]*Det3_124_013 - m[
A03]*Det3_124_012;
 
 1466   G4double Det4_0124_0124 = m[
A00]*Det3_124_124 - m[
A01]*Det3_124_024 
 
 1467                                 + m[
A02]*Det3_124_014 - m[
A04]*Det3_124_012;
 
 1468   G4double Det4_0134_0123 = m[
A00]*Det3_134_123 - m[
A01]*Det3_134_023 
 
 1469                                 + m[
A02]*Det3_134_013 - m[
A03]*Det3_134_012;
 
 1470   G4double Det4_0134_0124 = m[
A00]*Det3_134_124 - m[
A01]*Det3_134_024 
 
 1471                                 + m[
A02]*Det3_134_014 - m[
A04]*Det3_134_012;
 
 1472   G4double Det4_0134_0134 = m[
A00]*Det3_134_134 - m[
A01]*Det3_134_034 
 
 1473                                 + m[
A03]*Det3_134_014 - m[
A04]*Det3_134_013;
 
 1474   G4double Det4_0234_0123 = m[
A00]*Det3_234_123 - m[
A01]*Det3_234_023 
 
 1475                                 + m[
A02]*Det3_234_013 - m[
A03]*Det3_234_012;
 
 1476   G4double Det4_0234_0124 = m[
A00]*Det3_234_124 - m[
A01]*Det3_234_024 
 
 1477                                 + m[
A02]*Det3_234_014 - m[
A04]*Det3_234_012;
 
 1478   G4double Det4_0234_0134 = m[
A00]*Det3_234_134 - m[
A01]*Det3_234_034 
 
 1479                                 + m[
A03]*Det3_234_014 - m[
A04]*Det3_234_013;
 
 1480   G4double Det4_0234_0234 = m[
A00]*Det3_234_234 - m[
A02]*Det3_234_034 
 
 1481                                 + m[
A03]*Det3_234_024 - m[
A04]*Det3_234_023;
 
 1482   G4double Det4_1234_0123 = m[
A10]*Det3_234_123 - m[
A11]*Det3_234_023 
 
 1483                                 + m[
A12]*Det3_234_013 - m[
A13]*Det3_234_012;
 
 1484   G4double Det4_1234_0124 = m[
A10]*Det3_234_124 - m[
A11]*Det3_234_024 
 
 1485                                 + m[
A12]*Det3_234_014 - m[
A14]*Det3_234_012;
 
 1486   G4double Det4_1234_0134 = m[
A10]*Det3_234_134 - m[
A11]*Det3_234_034 
 
 1487                                 + m[
A13]*Det3_234_014 - m[
A14]*Det3_234_013;
 
 1488   G4double Det4_1234_0234 = m[
A10]*Det3_234_234 - m[
A12]*Det3_234_034 
 
 1489                                 + m[
A13]*Det3_234_024 - m[
A14]*Det3_234_023;
 
 1490   G4double Det4_1234_1234 = m[
A11]*Det3_234_234 - m[
A12]*Det3_234_134 
 
 1491                                 + m[
A13]*Det3_234_124 - m[
A14]*Det3_234_123;
 
 1496                 - m[
A01]*Det4_1234_0234 
 
 1497                 + m[
A02]*Det4_1234_0134 
 
 1498                 - m[
A03]*Det4_1234_0124 
 
 1499                 + m[
A04]*Det4_1234_0123;
 
 1508   G4double mn1OverDet = - oneOverDet;
 
 1510   m[
A00] =  Det4_1234_1234 * oneOverDet;
 
 1511   m[
A01] =  Det4_1234_0234 * mn1OverDet;
 
 1512   m[
A02] =  Det4_1234_0134 * oneOverDet;
 
 1513   m[
A03] =  Det4_1234_0124 * mn1OverDet;
 
 1514   m[
A04] =  Det4_1234_0123 * oneOverDet;
 
 1516   m[
A11] =  Det4_0234_0234 * oneOverDet;
 
 1517   m[
A12] =  Det4_0234_0134 * mn1OverDet;
 
 1518   m[
A13] =  Det4_0234_0124 * oneOverDet;
 
 1519   m[
A14] =  Det4_0234_0123 * mn1OverDet;
 
 1521   m[
A22] =  Det4_0134_0134 * oneOverDet;
 
 1522   m[
A23] =  Det4_0134_0124 * mn1OverDet;
 
 1523   m[
A24] =  Det4_0134_0123 * oneOverDet;
 
 1525   m[
A33] =  Det4_0124_0124 * oneOverDet;
 
 1526   m[
A34] =  Det4_0124_0123 * mn1OverDet;
 
 1528   m[
A44] =  Det4_0123_0123 * oneOverDet;
 
 1582                                                 + m[
A22]*Det2_34_01;
 
 1584                                                 + m[
A23]*Det2_34_01;
 
 1586                                                 + m[
A24]*Det2_34_01;
 
 1588                                                 + m[
A23]*Det2_34_02;
 
 1590                                                 + m[
A24]*Det2_34_02;
 
 1592                                                 + m[
A24]*Det2_34_03;
 
 1594                                                 + m[
A23]*Det2_34_12;
 
 1596                                                 + m[
A24]*Det2_34_12;
 
 1598                                                 + m[
A24]*Det2_34_13;
 
 1600                                                 + m[
A24]*Det2_34_23;
 
 1602                                                 + m[
A22]*Det2_35_01;
 
 1604                                                 + m[
A23]*Det2_35_01;
 
 1606                                                 + m[
A24]*Det2_35_01;
 
 1608                                                 + m[
A25]*Det2_35_01;
 
 1610                                                 + m[
A23]*Det2_35_02;
 
 1612                                                 + m[
A24]*Det2_35_02;
 
 1614                                                 + m[
A25]*Det2_35_02;
 
 1616                                                 + m[
A24]*Det2_35_03;
 
 1618                                                 + m[
A25]*Det2_35_03;
 
 1620                                                 + m[
A23]*Det2_35_12;
 
 1622                                                 + m[
A24]*Det2_35_12;
 
 1624                                                 + m[
A25]*Det2_35_12;
 
 1626                                                 + m[
A24]*Det2_35_13;
 
 1628                                                 + m[
A25]*Det2_35_13;
 
 1630                                                 + m[
A24]*Det2_35_23;
 
 1632                                                 + m[
A25]*Det2_35_23;
 
 1634                                                 + m[
A22]*Det2_45_01;
 
 1636                                                 + m[
A23]*Det2_45_01;
 
 1638                                                 + m[
A24]*Det2_45_01;
 
 1640                                                 + m[
A25]*Det2_45_01;
 
 1642                                                 + m[
A23]*Det2_45_02;
 
 1644                                                 + m[
A24]*Det2_45_02;
 
 1646                                                 + m[
A25]*Det2_45_02;
 
 1648                                                 + m[
A24]*Det2_45_03;
 
 1650                                                 + m[
A25]*Det2_45_03;
 
 1652                                                 + m[
A25]*Det2_45_04;
 
 1654                                                 + m[
A23]*Det2_45_12;
 
 1656                                                 + m[
A24]*Det2_45_12;
 
 1658                                                 + m[
A25]*Det2_45_12;
 
 1660                                                 + m[
A24]*Det2_45_13;
 
 1662                                                 + m[
A25]*Det2_45_13;
 
 1664                                                 + m[
A25]*Det2_45_14;
 
 1666                                                 + m[
A24]*Det2_45_23;
 
 1668                                                 + m[
A25]*Det2_45_23;
 
 1670                                                 + m[
A25]*Det2_45_24;
 
 1672                                                 + m[
A32]*Det2_45_01;
 
 1674                                                 + m[
A33]*Det2_45_01;
 
 1676                                                 + m[
A34]*Det2_45_01;
 
 1678                                                 + m[
A35]*Det2_45_01;
 
 1680                                                 + m[
A33]*Det2_45_02;
 
 1682                                                 + m[
A34]*Det2_45_02;
 
 1684                                                 + m[
A35]*Det2_45_02;
 
 1686                                                 + m[
A34]*Det2_45_03;
 
 1688                                                 + m[
A35]*Det2_45_03;
 
 1690                                                 + m[
A35]*Det2_45_04;
 
 1692                                                 + m[
A33]*Det2_45_12;
 
 1694                                                 + m[
A34]*Det2_45_12;
 
 1696                                                 + m[
A35]*Det2_45_12;
 
 1698                                                 + m[
A34]*Det2_45_13;
 
 1700                                                 + m[
A35]*Det2_45_13;
 
 1702                                                 + m[
A35]*Det2_45_14;
 
 1704                                                 + m[
A34]*Det2_45_23;
 
 1706                                                 + m[
A35]*Det2_45_23;
 
 1708                                                 + m[
A35]*Det2_45_24;
 
 1710                                                 + m[
A35]*Det2_45_34;
 
 1714   G4double Det4_1234_0123 = m[
A10]*Det3_234_123 - m[
A11]*Det3_234_023 
 
 1715                         + m[
A12]*Det3_234_013 - m[
A13]*Det3_234_012;
 
 1716   G4double Det4_1234_0124 = m[
A10]*Det3_234_124 - m[
A11]*Det3_234_024 
 
 1717                         + m[
A12]*Det3_234_014 - m[
A14]*Det3_234_012;
 
 1718   G4double Det4_1234_0134 = m[
A10]*Det3_234_134 - m[
A11]*Det3_234_034 
 
 1719                         + m[
A13]*Det3_234_014 - m[
A14]*Det3_234_013;
 
 1720   G4double Det4_1234_0234 = m[
A10]*Det3_234_234 - m[
A12]*Det3_234_034 
 
 1721                         + m[
A13]*Det3_234_024 - m[
A14]*Det3_234_023;
 
 1722   G4double Det4_1234_1234 = m[
A11]*Det3_234_234 - m[
A12]*Det3_234_134 
 
 1723                         + m[
A13]*Det3_234_124 - m[
A14]*Det3_234_123;
 
 1724   G4double Det4_1235_0123 = m[
A10]*Det3_235_123 - m[
A11]*Det3_235_023 
 
 1725                         + m[
A12]*Det3_235_013 - m[
A13]*Det3_235_012;
 
 1726   G4double Det4_1235_0124 = m[
A10]*Det3_235_124 - m[
A11]*Det3_235_024 
 
 1727                         + m[
A12]*Det3_235_014 - m[
A14]*Det3_235_012;
 
 1728   G4double Det4_1235_0125 = m[
A10]*Det3_235_125 - m[
A11]*Det3_235_025 
 
 1729                         + m[
A12]*Det3_235_015 - m[
A15]*Det3_235_012;
 
 1730   G4double Det4_1235_0134 = m[
A10]*Det3_235_134 - m[
A11]*Det3_235_034 
 
 1731                         + m[
A13]*Det3_235_014 - m[
A14]*Det3_235_013;
 
 1732   G4double Det4_1235_0135 = m[
A10]*Det3_235_135 - m[
A11]*Det3_235_035 
 
 1733                         + m[
A13]*Det3_235_015 - m[
A15]*Det3_235_013;
 
 1734   G4double Det4_1235_0234 = m[
A10]*Det3_235_234 - m[
A12]*Det3_235_034 
 
 1735                         + m[
A13]*Det3_235_024 - m[
A14]*Det3_235_023;
 
 1736   G4double Det4_1235_0235 = m[
A10]*Det3_235_235 - m[
A12]*Det3_235_035 
 
 1737                         + m[
A13]*Det3_235_025 - m[
A15]*Det3_235_023;
 
 1738   G4double Det4_1235_1234 = m[
A11]*Det3_235_234 - m[
A12]*Det3_235_134 
 
 1739                         + m[
A13]*Det3_235_124 - m[
A14]*Det3_235_123;
 
 1740   G4double Det4_1235_1235 = m[
A11]*Det3_235_235 - m[
A12]*Det3_235_135 
 
 1741                         + m[
A13]*Det3_235_125 - m[
A15]*Det3_235_123;
 
 1742   G4double Det4_1245_0123 = m[
A10]*Det3_245_123 - m[
A11]*Det3_245_023 
 
 1743                         + m[
A12]*Det3_245_013 - m[
A13]*Det3_245_012;
 
 1744   G4double Det4_1245_0124 = m[
A10]*Det3_245_124 - m[
A11]*Det3_245_024 
 
 1745                         + m[
A12]*Det3_245_014 - m[
A14]*Det3_245_012;
 
 1746   G4double Det4_1245_0125 = m[
A10]*Det3_245_125 - m[
A11]*Det3_245_025 
 
 1747                         + m[
A12]*Det3_245_015 - m[
A15]*Det3_245_012;
 
 1748   G4double Det4_1245_0134 = m[
A10]*Det3_245_134 - m[
A11]*Det3_245_034 
 
 1749                         + m[
A13]*Det3_245_014 - m[
A14]*Det3_245_013;
 
 1750   G4double Det4_1245_0135 = m[
A10]*Det3_245_135 - m[
A11]*Det3_245_035 
 
 1751                         + m[
A13]*Det3_245_015 - m[
A15]*Det3_245_013;
 
 1752   G4double Det4_1245_0145 = m[
A10]*Det3_245_145 - m[
A11]*Det3_245_045 
 
 1753                         + m[
A14]*Det3_245_015 - m[
A15]*Det3_245_014;
 
 1754   G4double Det4_1245_0234 = m[
A10]*Det3_245_234 - m[
A12]*Det3_245_034 
 
 1755                         + m[
A13]*Det3_245_024 - m[
A14]*Det3_245_023;
 
 1756   G4double Det4_1245_0235 = m[
A10]*Det3_245_235 - m[
A12]*Det3_245_035 
 
 1757                         + m[
A13]*Det3_245_025 - m[
A15]*Det3_245_023;
 
 1758   G4double Det4_1245_0245 = m[
A10]*Det3_245_245 - m[
A12]*Det3_245_045 
 
 1759                         + m[
A14]*Det3_245_025 - m[
A15]*Det3_245_024;
 
 1760   G4double Det4_1245_1234 = m[
A11]*Det3_245_234 - m[
A12]*Det3_245_134 
 
 1761                         + m[
A13]*Det3_245_124 - m[
A14]*Det3_245_123;
 
 1762   G4double Det4_1245_1235 = m[
A11]*Det3_245_235 - m[
A12]*Det3_245_135 
 
 1763                         + m[
A13]*Det3_245_125 - m[
A15]*Det3_245_123;
 
 1764   G4double Det4_1245_1245 = m[
A11]*Det3_245_245 - m[
A12]*Det3_245_145 
 
 1765                         + m[
A14]*Det3_245_125 - m[
A15]*Det3_245_124;
 
 1766   G4double Det4_1345_0123 = m[
A10]*Det3_345_123 - m[
A11]*Det3_345_023 
 
 1767                         + m[
A12]*Det3_345_013 - m[
A13]*Det3_345_012;
 
 1768   G4double Det4_1345_0124 = m[
A10]*Det3_345_124 - m[
A11]*Det3_345_024 
 
 1769                         + m[
A12]*Det3_345_014 - m[
A14]*Det3_345_012;
 
 1770   G4double Det4_1345_0125 = m[
A10]*Det3_345_125 - m[
A11]*Det3_345_025 
 
 1771                         + m[
A12]*Det3_345_015 - m[
A15]*Det3_345_012;
 
 1772   G4double Det4_1345_0134 = m[
A10]*Det3_345_134 - m[
A11]*Det3_345_034 
 
 1773                         + m[
A13]*Det3_345_014 - m[
A14]*Det3_345_013;
 
 1774   G4double Det4_1345_0135 = m[
A10]*Det3_345_135 - m[
A11]*Det3_345_035 
 
 1775                         + m[
A13]*Det3_345_015 - m[
A15]*Det3_345_013;
 
 1776   G4double Det4_1345_0145 = m[
A10]*Det3_345_145 - m[
A11]*Det3_345_045 
 
 1777                         + m[
A14]*Det3_345_015 - m[
A15]*Det3_345_014;
 
 1778   G4double Det4_1345_0234 = m[
A10]*Det3_345_234 - m[
A12]*Det3_345_034 
 
 1779                         + m[
A13]*Det3_345_024 - m[
A14]*Det3_345_023;
 
 1780   G4double Det4_1345_0235 = m[
A10]*Det3_345_235 - m[
A12]*Det3_345_035 
 
 1781                         + m[
A13]*Det3_345_025 - m[
A15]*Det3_345_023;
 
 1782   G4double Det4_1345_0245 = m[
A10]*Det3_345_245 - m[
A12]*Det3_345_045 
 
 1783                         + m[
A14]*Det3_345_025 - m[
A15]*Det3_345_024;
 
 1784   G4double Det4_1345_0345 = m[
A10]*Det3_345_345 - m[
A13]*Det3_345_045 
 
 1785                         + m[
A14]*Det3_345_035 - m[
A15]*Det3_345_034;
 
 1786   G4double Det4_1345_1234 = m[
A11]*Det3_345_234 - m[
A12]*Det3_345_134 
 
 1787                         + m[
A13]*Det3_345_124 - m[
A14]*Det3_345_123;
 
 1788   G4double Det4_1345_1235 = m[
A11]*Det3_345_235 - m[
A12]*Det3_345_135 
 
 1789                         + m[
A13]*Det3_345_125 - m[
A15]*Det3_345_123;
 
 1790   G4double Det4_1345_1245 = m[
A11]*Det3_345_245 - m[
A12]*Det3_345_145 
 
 1791                         + m[
A14]*Det3_345_125 - m[
A15]*Det3_345_124;
 
 1792   G4double Det4_1345_1345 = m[
A11]*Det3_345_345 - m[
A13]*Det3_345_145 
 
 1793                         + m[
A14]*Det3_345_135 - m[
A15]*Det3_345_134;
 
 1794   G4double Det4_2345_0123 = m[
A20]*Det3_345_123 - m[
A21]*Det3_345_023 
 
 1795                         + m[
A22]*Det3_345_013 - m[
A23]*Det3_345_012;
 
 1796   G4double Det4_2345_0124 = m[
A20]*Det3_345_124 - m[
A21]*Det3_345_024 
 
 1797                         + m[
A22]*Det3_345_014 - m[
A24]*Det3_345_012;
 
 1798   G4double Det4_2345_0125 = m[
A20]*Det3_345_125 - m[
A21]*Det3_345_025 
 
 1799                         + m[
A22]*Det3_345_015 - m[
A25]*Det3_345_012;
 
 1800   G4double Det4_2345_0134 = m[
A20]*Det3_345_134 - m[
A21]*Det3_345_034 
 
 1801                         + m[
A23]*Det3_345_014 - m[
A24]*Det3_345_013;
 
 1802   G4double Det4_2345_0135 = m[
A20]*Det3_345_135 - m[
A21]*Det3_345_035 
 
 1803                         + m[
A23]*Det3_345_015 - m[
A25]*Det3_345_013;
 
 1804   G4double Det4_2345_0145 = m[
A20]*Det3_345_145 - m[
A21]*Det3_345_045 
 
 1805                         + m[
A24]*Det3_345_015 - m[
A25]*Det3_345_014;
 
 1806   G4double Det4_2345_0234 = m[
A20]*Det3_345_234 - m[
A22]*Det3_345_034 
 
 1807                         + m[
A23]*Det3_345_024 - m[
A24]*Det3_345_023;
 
 1808   G4double Det4_2345_0235 = m[
A20]*Det3_345_235 - m[
A22]*Det3_345_035 
 
 1809                         + m[
A23]*Det3_345_025 - m[
A25]*Det3_345_023;
 
 1810   G4double Det4_2345_0245 = m[
A20]*Det3_345_245 - m[
A22]*Det3_345_045 
 
 1811                         + m[
A24]*Det3_345_025 - m[
A25]*Det3_345_024;
 
 1812   G4double Det4_2345_0345 = m[
A20]*Det3_345_345 - m[
A23]*Det3_345_045 
 
 1813                         + m[
A24]*Det3_345_035 - m[
A25]*Det3_345_034;
 
 1814   G4double Det4_2345_1234 = m[
A21]*Det3_345_234 - m[
A22]*Det3_345_134 
 
 1815                         + m[
A23]*Det3_345_124 - m[
A24]*Det3_345_123;
 
 1816   G4double Det4_2345_1235 = m[
A21]*Det3_345_235 - m[
A22]*Det3_345_135 
 
 1817                         + m[
A23]*Det3_345_125 - m[
A25]*Det3_345_123;
 
 1818   G4double Det4_2345_1245 = m[
A21]*Det3_345_245 - m[
A22]*Det3_345_145 
 
 1819                         + m[
A24]*Det3_345_125 - m[
A25]*Det3_345_124;
 
 1820   G4double Det4_2345_1345 = m[
A21]*Det3_345_345 - m[
A23]*Det3_345_145 
 
 1821                         + m[
A24]*Det3_345_135 - m[
A25]*Det3_345_134;
 
 1822   G4double Det4_2345_2345 = m[
A22]*Det3_345_345 - m[
A23]*Det3_345_245 
 
 1823                         + m[
A24]*Det3_345_235 - m[
A25]*Det3_345_234;
 
 1827   G4double Det5_01234_01234 = m[
A00]*Det4_1234_1234 - m[
A01]*Det4_1234_0234 
 
 1828     + m[
A02]*Det4_1234_0134 - m[
A03]*Det4_1234_0124 + m[
A04]*Det4_1234_0123;
 
 1829   G4double Det5_01235_01234 = m[
A00]*Det4_1235_1234 - m[
A01]*Det4_1235_0234 
 
 1830     + m[
A02]*Det4_1235_0134 - m[
A03]*Det4_1235_0124 + m[
A04]*Det4_1235_0123;
 
 1831   G4double Det5_01235_01235 = m[
A00]*Det4_1235_1235 - m[
A01]*Det4_1235_0235 
 
 1832     + m[
A02]*Det4_1235_0135 - m[
A03]*Det4_1235_0125 + m[
A05]*Det4_1235_0123;
 
 1833   G4double Det5_01245_01234 = m[
A00]*Det4_1245_1234 - m[
A01]*Det4_1245_0234 
 
 1834     + m[
A02]*Det4_1245_0134 - m[
A03]*Det4_1245_0124 + m[
A04]*Det4_1245_0123;
 
 1835   G4double Det5_01245_01235 = m[
A00]*Det4_1245_1235 - m[
A01]*Det4_1245_0235 
 
 1836     + m[
A02]*Det4_1245_0135 - m[
A03]*Det4_1245_0125 + m[
A05]*Det4_1245_0123;
 
 1837   G4double Det5_01245_01245 = m[
A00]*Det4_1245_1245 - m[
A01]*Det4_1245_0245 
 
 1838     + m[
A02]*Det4_1245_0145 - m[
A04]*Det4_1245_0125 + m[
A05]*Det4_1245_0124;
 
 1839   G4double Det5_01345_01234 = m[
A00]*Det4_1345_1234 - m[
A01]*Det4_1345_0234 
 
 1840     + m[
A02]*Det4_1345_0134 - m[
A03]*Det4_1345_0124 + m[
A04]*Det4_1345_0123;
 
 1841   G4double Det5_01345_01235 = m[
A00]*Det4_1345_1235 - m[
A01]*Det4_1345_0235 
 
 1842     + m[
A02]*Det4_1345_0135 - m[
A03]*Det4_1345_0125 + m[
A05]*Det4_1345_0123;
 
 1843   G4double Det5_01345_01245 = m[
A00]*Det4_1345_1245 - m[
A01]*Det4_1345_0245 
 
 1844     + m[
A02]*Det4_1345_0145 - m[
A04]*Det4_1345_0125 + m[
A05]*Det4_1345_0124;
 
 1845   G4double Det5_01345_01345 = m[
A00]*Det4_1345_1345 - m[
A01]*Det4_1345_0345 
 
 1846     + m[
A03]*Det4_1345_0145 - m[
A04]*Det4_1345_0135 + m[
A05]*Det4_1345_0134;
 
 1847   G4double Det5_02345_01234 = m[
A00]*Det4_2345_1234 - m[
A01]*Det4_2345_0234 
 
 1848     + m[
A02]*Det4_2345_0134 - m[
A03]*Det4_2345_0124 + m[
A04]*Det4_2345_0123;
 
 1849   G4double Det5_02345_01235 = m[
A00]*Det4_2345_1235 - m[
A01]*Det4_2345_0235 
 
 1850     + m[
A02]*Det4_2345_0135 - m[
A03]*Det4_2345_0125 + m[
A05]*Det4_2345_0123;
 
 1851   G4double Det5_02345_01245 = m[
A00]*Det4_2345_1245 - m[
A01]*Det4_2345_0245 
 
 1852     + m[
A02]*Det4_2345_0145 - m[
A04]*Det4_2345_0125 + m[
A05]*Det4_2345_0124;
 
 1853   G4double Det5_02345_01345 = m[
A00]*Det4_2345_1345 - m[
A01]*Det4_2345_0345 
 
 1854     + m[
A03]*Det4_2345_0145 - m[
A04]*Det4_2345_0135 + m[
A05]*Det4_2345_0134;
 
 1855   G4double Det5_02345_02345 = m[
A00]*Det4_2345_2345 - m[
A02]*Det4_2345_0345 
 
 1856     + m[
A03]*Det4_2345_0245 - m[
A04]*Det4_2345_0235 + m[
A05]*Det4_2345_0234;
 
 1857   G4double Det5_12345_01234 = m[
A10]*Det4_2345_1234 - m[
A11]*Det4_2345_0234 
 
 1858     + m[
A12]*Det4_2345_0134 - m[
A13]*Det4_2345_0124 + m[
A14]*Det4_2345_0123;
 
 1859   G4double Det5_12345_01235 = m[
A10]*Det4_2345_1235 - m[
A11]*Det4_2345_0235 
 
 1860     + m[
A12]*Det4_2345_0135 - m[
A13]*Det4_2345_0125 + m[
A15]*Det4_2345_0123;
 
 1861   G4double Det5_12345_01245 = m[
A10]*Det4_2345_1245 - m[
A11]*Det4_2345_0245 
 
 1862     + m[
A12]*Det4_2345_0145 - m[
A14]*Det4_2345_0125 + m[
A15]*Det4_2345_0124;
 
 1863   G4double Det5_12345_01345 = m[
A10]*Det4_2345_1345 - m[
A11]*Det4_2345_0345 
 
 1864     + m[
A13]*Det4_2345_0145 - m[
A14]*Det4_2345_0135 + m[
A15]*Det4_2345_0134;
 
 1865   G4double Det5_12345_02345 = m[
A10]*Det4_2345_2345 - m[
A12]*Det4_2345_0345 
 
 1866     + m[
A13]*Det4_2345_0245 - m[
A14]*Det4_2345_0235 + m[
A15]*Det4_2345_0234;
 
 1867   G4double Det5_12345_12345 = m[
A11]*Det4_2345_2345 - m[
A12]*Det4_2345_1345 
 
 1868     + m[
A13]*Det4_2345_1245 - m[
A14]*Det4_2345_1235 + m[
A15]*Det4_2345_1234;
 
 1873                 - m[
A01]*Det5_12345_02345 
 
 1874                 + m[
A02]*Det5_12345_01345 
 
 1875                 - m[
A03]*Det5_12345_01245 
 
 1876                 + m[
A04]*Det5_12345_01235 
 
 1877                 - m[
A05]*Det5_12345_01234;
 
 1886   G4double mn1OverDet = - oneOverDet;
 
 1888   m[
A00] =  Det5_12345_12345*oneOverDet;
 
 1889   m[
A01] =  Det5_12345_02345*mn1OverDet;
 
 1890   m[
A02] =  Det5_12345_01345*oneOverDet;
 
 1891   m[
A03] =  Det5_12345_01245*mn1OverDet;
 
 1892   m[
A04] =  Det5_12345_01235*oneOverDet;
 
 1893   m[
A05] =  Det5_12345_01234*mn1OverDet;
 
 1895   m[
A11] =  Det5_02345_02345*oneOverDet;
 
 1896   m[
A12] =  Det5_02345_01345*mn1OverDet;
 
 1897   m[
A13] =  Det5_02345_01245*oneOverDet;
 
 1898   m[
A14] =  Det5_02345_01235*mn1OverDet;
 
 1899   m[
A15] =  Det5_02345_01234*oneOverDet;
 
 1901   m[
A22] =  Det5_01345_01345*oneOverDet;
 
 1902   m[
A23] =  Det5_01345_01245*mn1OverDet;
 
 1903   m[
A24] =  Det5_01345_01235*oneOverDet;
 
 1904   m[
A25] =  Det5_01345_01234*mn1OverDet;
 
 1906   m[
A33] =  Det5_01245_01245*oneOverDet;
 
 1907   m[
A34] =  Det5_01245_01235*mn1OverDet;
 
 1908   m[
A35] =  Det5_01245_01234*oneOverDet;
 
 1910   m[
A44] =  Det5_01235_01235*oneOverDet;
 
 1911   m[
A45] =  Det5_01235_01234*mn1OverDet;
 
 1913   m[
A55] =  Det5_01234_01234*oneOverDet;
 
 1952   if (h00 <= 0) { 
return; }
 
 1953   h00 = 1.0 / std::sqrt(h00);
 
 1962   h11 = m[
A11] - (g10 * g10);
 
 1963   if (h11 <= 0) { 
return; }
 
 1964   h11 = 1.0 / std::sqrt(h11);
 
 1969   g21 = (m[
A21] - (g10 * g20)) * h11;
 
 1970   g31 = (m[
A31] - (g10 * g30)) * h11;
 
 1971   g41 = (m[
A41] - (g10 * g40)) * h11;
 
 1975   h22 = m[
A22] - (g20 * g20) - (g21 * g21);
 
 1976   if (h22 <= 0) { 
return; }
 
 1977   h22 = 1.0 / std::sqrt(h22);
 
 1982   g32 = (m[
A32] - (g20 * g30) - (g21 * g31)) * h22;
 
 1983   g42 = (m[
A42] - (g20 * g40) - (g21 * g41)) * h22;
 
 1987   h33 = m[
A33] - (g30 * g30) - (g31 * g31) - (g32 * g32);
 
 1988   if (h33 <= 0) { 
return; }
 
 1989   h33 = 1.0 / std::sqrt(h33);
 
 1993   g43 = (m[
A43] - (g30 * g40) - (g31 * g41) - (g32 * g42)) * h33;
 
 1997   h44 = m[
A44] - (g40 * g40) - (g41 * g41) - (g42 * g42) - (g43 * g43);
 
 1998   if (h44 <= 0) { 
return; }
 
 1999   h44 = 1.0 / std::sqrt(h44);
 
 2006   h43 = -h33 *  g43 * h44;
 
 2007   h32 = -h22 *  g32 * h33;
 
 2008   h42 = -h22 * (g32 * h43 + g42 * h44);
 
 2009   h21 = -h11 *  g21 * h22;
 
 2010   h31 = -h11 * (g21 * h32 + g31 * h33);
 
 2011   h41 = -h11 * (g21 * h42 + g31 * h43 + g41 * h44);
 
 2012   h10 = -h00 *  g10 * h11;
 
 2013   h20 = -h00 * (g10 * h21 + g20 * h22);
 
 2014   h30 = -h00 * (g10 * h31 + g20 * h32 + g30 * h33);
 
 2015   h40 = -h00 * (g10 * h41 + g20 * h42 + g30 * h43 + g40 * h44);
 
 2020   m[
A00] = h00 * h00 + h10 * h10 + h20 * h20 + h30 * h30 + h40 * h40;
 
 2021   m[
A01] = h10 * h11 + h20 * h21 + h30 * h31 + h40 * h41;
 
 2022   m[
A11] = h11 * h11 + h21 * h21 + h31 * h31 + h41 * h41;
 
 2023   m[
A02] = h20 * h22 + h30 * h32 + h40 * h42;
 
 2024   m[
A12] = h21 * h22 + h31 * h32 + h41 * h42;
 
 2025   m[
A22] = h22 * h22 + h32 * h32 + h42 * h42;
 
 2026   m[
A03] = h30 * h33 + h40 * h43;
 
 2027   m[
A13] = h31 * h33 + h41 * h43;
 
 2028   m[
A23] = h32 * h33 + h42 * h43;
 
 2029   m[
A33] = h33 * h33 + h43 * h43;
 
 2058   G4double h00, h11, h22, h33, h44, h55;  
 
 2075   if (h00 <= 0) { 
return; }
 
 2076   h00 = 1.0 / std::sqrt(h00);
 
 2086   h11 = m[
A11] - (g10 * g10);
 
 2087   if (h11 <= 0) { 
return; }
 
 2088   h11 = 1.0 / std::sqrt(h11);
 
 2093   g21 = (m[
A21] - (g10 * g20)) * h11;
 
 2094   g31 = (m[
A31] - (g10 * g30)) * h11;
 
 2095   g41 = (m[
A41] - (g10 * g40)) * h11;
 
 2096   g51 = (m[
A51] - (g10 * g50)) * h11;
 
 2100   h22 = m[
A22] - (g20 * g20) - (g21 * g21);
 
 2101   if (h22 <= 0) { 
return; }
 
 2102   h22 = 1.0 / std::sqrt(h22);
 
 2107   g32 = (m[
A32] - (g20 * g30) - (g21 * g31)) * h22;
 
 2108   g42 = (m[
A42] - (g20 * g40) - (g21 * g41)) * h22;
 
 2109   g52 = (m[
A52] - (g20 * g50) - (g21 * g51)) * h22;
 
 2113   h33 = m[
A33] - (g30 * g30) - (g31 * g31) - (g32 * g32);
 
 2114   if (h33 <= 0) { 
return; }
 
 2115   h33 = 1.0 / std::sqrt(h33);
 
 2120   g43 = (m[
A43] - (g30 * g40) - (g31 * g41) - (g32 * g42)) * h33;
 
 2121   g53 = (m[
A53] - (g30 * g50) - (g31 * g51) - (g32 * g52)) * h33;
 
 2125   h44 = m[
A44] - (g40 * g40) - (g41 * g41) - (g42 * g42) - (g43 * g43);
 
 2126   if (h44 <= 0) { 
return; }
 
 2127   h44 = 1.0 / std::sqrt(h44);
 
 2131   g54 = (m[
A54] - (g40 * g50) - (g41 * g51) - (g42 * g52) - (g43 * g53)) * h44;
 
 2135   h55 = m[
A55] - (g50*g50) - (g51*g51) - (g52*g52) - (g53*g53) - (g54*g54);
 
 2136   if (h55 <= 0) { 
return; }
 
 2137   h55 = 1.0 / std::sqrt(h55);
 
 2144   h54 = -h44 *  g54 * h55;
 
 2145   h43 = -h33 *  g43 * h44;
 
 2146   h53 = -h33 * (g43 * h54 + g53 * h55);
 
 2147   h32 = -h22 *  g32 * h33;
 
 2148   h42 = -h22 * (g32 * h43 + g42 * h44);
 
 2149   h52 = -h22 * (g32 * h53 + g42 * h54 + g52 * h55);
 
 2150   h21 = -h11 *  g21 * h22;
 
 2151   h31 = -h11 * (g21 * h32 + g31 * h33);
 
 2152   h41 = -h11 * (g21 * h42 + g31 * h43 + g41 * h44);
 
 2153   h51 = -h11 * (g21 * h52 + g31 * h53 + g41 * h54 + g51 * h55);
 
 2154   h10 = -h00 *  g10 * h11;
 
 2155   h20 = -h00 * (g10 * h21 + g20 * h22);
 
 2156   h30 = -h00 * (g10 * h31 + g20 * h32 + g30 * h33);
 
 2157   h40 = -h00 * (g10 * h41 + g20 * h42 + g30 * h43 + g40 * h44);
 
 2158   h50 = -h00 * (g10 * h51 + g20 * h52 + g30 * h53 + g40 * h54 + g50 * h55);
 
 2163   m[
A00] = h00 * h00 + h10 * h10 + h20 * h20 + h30 * h30 + h40 * h40 + h50*h50;
 
 2164   m[
A01] = h10 * h11 + h20 * h21 + h30 * h31 + h40 * h41 + h50 * h51;
 
 2165   m[
A11] = h11 * h11 + h21 * h21 + h31 * h31 + h41 * h41 + h51 * h51;
 
 2166   m[
A02] = h20 * h22 + h30 * h32 + h40 * h42 + h50 * h52;
 
 2167   m[
A12] = h21 * h22 + h31 * h32 + h41 * h42 + h51 * h52;
 
 2168   m[
A22] = h22 * h22 + h32 * h32 + h42 * h42 + h52 * h52;
 
 2169   m[
A03] = h30 * h33 + h40 * h43 + h50 * h53;
 
 2170   m[
A13] = h31 * h33 + h41 * h43 + h51 * h53;
 
 2171   m[
A23] = h32 * h33 + h42 * h43 + h52 * h53;
 
 2172   m[
A33] = h33 * h33 + h43 * h43 + h53 * h53;
 
 2173   m[
A04] = h40 * h44 + h50 * h54;
 
 2174   m[
A14] = h41 * h44 + h51 * h54;
 
 2175   m[
A24] = h42 * h44 + h52 * h54;
 
 2176   m[
A34] = h43 * h44 + h53 * h54;
 
 2177   m[
A44] = h44 * h44 + h54 * h54;
 
 2189 void G4ErrorSymMatrix::invert4  (
G4int & ifail)
 
 2213                                 + m[
A02]*Det2_12_01;
 
 2215                                 + m[
A02]*Det2_13_01;
 
 2217                                 + m[
A03]*Det2_13_01;
 
 2219                                 + m[
A02]*Det2_23_01;
 
 2221                                 + m[
A03]*Det2_23_01;
 
 2223                                 + m[
A03]*Det2_23_02;
 
 2225                                 + m[
A12]*Det2_23_01;
 
 2227                                 + m[
A13]*Det2_23_01;
 
 2229                                 + m[
A13]*Det2_23_02;
 
 2231                                 + m[
A13]*Det2_23_12;
 
 2236                 - m[
A01]*Det3_123_023 
 
 2237                 + m[
A02]*Det3_123_013 
 
 2238                 - m[
A03]*Det3_123_012;
 
 2247   G4double mn1OverDet = - oneOverDet;
 
 2249   m[
A00] =  Det3_123_123 * oneOverDet;
 
 2250   m[
A01] =  Det3_123_023 * mn1OverDet;
 
 2251   m[
A02] =  Det3_123_013 * oneOverDet;
 
 2252   m[
A03] =  Det3_123_012 * mn1OverDet;
 
 2255   m[
A11] =  Det3_023_023 * oneOverDet;
 
 2256   m[
A12] =  Det3_023_013 * mn1OverDet;
 
 2257   m[
A13] =  Det3_023_012 * oneOverDet;
 
 2259   m[
A22] =  Det3_013_013 * oneOverDet;
 
 2260   m[
A23] =  Det3_013_012 * mn1OverDet;
 
 2262   m[
A33] =  Det3_012_012 * oneOverDet;
 
virtual G4int num_row() const 
 
G4ErrorMatrix dsum(const G4ErrorMatrix &, const G4ErrorMatrix &)
 
G4ErrorSymMatrix similarity(const G4ErrorMatrix &m1) const 
 
virtual G4int num_col() const 
 
G4ErrorSymMatrix apply(G4double(*f)(G4double, G4int, G4int)) const 
 
G4ErrorSymMatrix & operator=(const G4ErrorSymMatrix &m2)
 
BasicVector3D< float > operator-(const BasicVector3D< float > &v)
 
BasicVector3D< float > operator+(const BasicVector3D< float > &v)
 
G4ErrorSymMatrix sub(G4int min_row, G4int max_row) const 
 
void invertHaywood6(G4int &ifail)
 
void invertBunchKaufman(G4int &ifail)
 
void invertHaywood5(G4int &ifail)
 
G4ErrorSymMatrix & operator-=(const G4ErrorSymMatrix &m2)
 
G4ErrorMatrix & operator=(const G4ErrorMatrix &m2)
 
void invert(G4int &ifail)
 
std::vector< G4double >::const_iterator G4ErrorMatrixConstIter
 
static constexpr double m
 
void invertCholesky6(G4int &ifail)
 
G4ErrorSymMatrix & operator/=(G4double t)
 
#define CHK_DIM_1(c1, r2, fun)
 
G4ErrorSymMatrix operator-() const 
 
G4ErrorSymMatrix & operator+=(const G4ErrorSymMatrix &m2)
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
static void error(const char *s)
 
std::vector< G4double >::iterator G4ErrorMatrixIter
 
void invertHaywood4(G4int &ifail)
 
#define CHK_DIM_2(r1, r2, c1, c2, fun)
 
std::ostream & operator<<(std::ostream &, const BasicVector3D< float > &)
 
BasicVector3D< float > operator*(const BasicVector3D< float > &v, double a)
 
BasicVector3D< float > operator/(const BasicVector3D< float > &v, double a)
 
virtual ~G4ErrorSymMatrix()
 
G4ErrorMatrix & operator+=(const G4ErrorMatrix &m2)
 
G4ErrorMatrix & operator-=(const G4ErrorMatrix &m2)
 
static const G4double alpha
 
G4ErrorSymMatrix similarityT(const G4ErrorMatrix &m1) const 
 
G4ErrorSymMatrix & operator*=(G4double t)
 
double epsilon(double density, double temperature)
 
G4double determinant() const 
 
void invertCholesky5(G4int &ifail)
 
void assign(const G4ErrorMatrix &m2)