24 int mnvert(MnAlgebraicSymMatrix& a) {
 
   26    unsigned int nrow = a.Nrow();
 
   27    MnAlgebraicVector s(nrow);
 
   28    MnAlgebraicVector q(nrow);
 
   29    MnAlgebraicVector pp(nrow);
 
   31    for(
unsigned int i = 0; i < nrow; i++) {
 
   33       if (si < 0.) 
return 1;
 
   34       s(i) = 1./std::sqrt(si);
 
   37    for(
unsigned int i = 0; i < nrow; i++)
 
   38       for(
unsigned int j = i; j < nrow; j++)
 
   39          a(i,j) *= (s(i)*s(j));
 
   41    for(
unsigned i = 0; i < nrow; i++) {
 
   43       if(a(k,k) == 0.) 
return 1;
 
   47       unsigned int kp1 = k + 1;
 
   49          for(
unsigned int j = 0; j < k; j++) {
 
   56          for(
unsigned int j = kp1; j < nrow; j++) {
 
   62       for(
unsigned int j = 0; j < nrow; j++)
 
   63          for(k = j; k < nrow; k++)
 
   64             a(j,k) += (pp(j)*q(k));
 
   67    for(
unsigned int j = 0; j < nrow; j++)
 
   68       for(
unsigned int k = j; k < nrow; k++)
 
   69          a(j,k) *= (s(j)*s(k));