// @(#)root/matrix:$Id$
// Authors: Fons Rademakers, Eddy Offermann  Apr 2004

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "TDecompSparse.h"
#include "TMath.h"

ClassImp(TDecompSparse)

///////////////////////////////////////////////////////////////////////////
//                                                                       //
// Sparse Symmetric Decomposition class                                  //
//                                                                       //
// Solve a sparse symmetric system of linear equations using a method    //
// based on Gaussian elimination as discussed in Duff and Reid,          //
// ACM Trans. Math. Software 9 (1983), 302-325.                          //
//                                                                       //
///////////////////////////////////////////////////////////////////////////

//______________________________________________________________________________
TDecompSparse::TDecompSparse()
{
// Default constructor

   fVerbose = 0;
   InitParam();
   memset(fInfo,0,21*sizeof(Int_t));
}

//______________________________________________________________________________
TDecompSparse::TDecompSparse(Int_t nRows,Int_t nr_nonZeros,Int_t verbose)
{
// Constructor for a matrix with nrows and unspecified number of columns .
// nr_nonZeros is the total number of non-zero entries in the matrix .

   fVerbose = verbose;
   InitParam();

   fNrows     = nRows;
   fNnonZeros = nr_nonZeros;

   fRowFact.Set(nr_nonZeros+1);
   fColFact.Set(nr_nonZeros+1);
   fW      .Set(fNrows+1);
   fIkeep  .Set(3*(fNrows+1));
   fIw     .Set((Int_t)(1.3 * (2*fNnonZeros+3*fNrows+1)+1));
   fIw1    .Set(2*(fNrows+1));

   memset(fInfo,0,21*sizeof(Int_t));

   // These parameters can only be set after sparsity/pivoting pattern is known
   fNsteps = 0;
   fMaxfrt = 0;
}

//______________________________________________________________________________
TDecompSparse::TDecompSparse(Int_t row_lwb,Int_t row_upb,Int_t nr_nonZeros,Int_t verbose)
{
// Constructor for a matrix with row range, [row_lwb..row_upb] and unspecified column
// range . nr_nonZeros is the total number of non-zero entries in the matrix .

   fVerbose = verbose;
   InitParam();

   fRowLwb    = row_lwb;
   fColLwb    = row_lwb;
   fNrows     = row_upb-row_lwb+1;
   fNnonZeros = nr_nonZeros;

   fRowFact.Set(nr_nonZeros+1);
   fColFact.Set(nr_nonZeros+1);
   fW      .Set(fNrows+1);
   fIkeep  .Set(3*(fNrows+1));
   fIw     .Set((Int_t)(1.3 * (2*fNnonZeros+3*fNrows+1)+1));
   fIw1    .Set(2*(fNrows+1));

   memset(fInfo,0,21*sizeof(Int_t));

   // These parameters can only be set after sparsity/pivoting pattern is known
   fNsteps = 0;
   fMaxfrt = 0;
}

//______________________________________________________________________________
TDecompSparse::TDecompSparse(const TMatrixDSparse &a,Int_t verbose)
{
// Constructor for matrix A .

   fVerbose = verbose;

   InitParam();
   SetMatrix(a);

   memset(fInfo,0,21*sizeof(Int_t));
}

//______________________________________________________________________________
TDecompSparse::TDecompSparse(const TDecompSparse &another) : TDecompBase(another)
{
// Copy constructor

   *this = another;
}

//______________________________________________________________________________
Int_t TDecompSparse::NonZerosUpperTriang(const TMatrixDSparse &a)
{
// Static function, returning the number of non-zero entries in the upper triangular matrix .

   const Int_t  rowLwb   = a.GetRowLwb();
   const Int_t  colLwb   = a.GetColLwb();
   const Int_t  nrows    = a.GetNrows();;
   const Int_t *pRowIndex = a.GetRowIndexArray();
   const Int_t *pColIndex = a.GetColIndexArray();

   Int_t nr_nonzeros = 0;
   for (Int_t irow = 0; irow < nrows; irow++ ) {
      const Int_t rown = irow+rowLwb;
      for (Int_t index = pRowIndex[irow]; index < pRowIndex[irow+1]; index++ ) {
         const Int_t coln = pColIndex[index]+colLwb;
         if (coln >= rown) nr_nonzeros++;
      }
   }

   return nr_nonzeros;
}

//______________________________________________________________________________
void TDecompSparse::CopyUpperTriang(const TMatrixDSparse &a,Double_t *b)
{
// Static function, copying the non-zero entries in the upper triangle to
// array b . User should allocate enough memory for array b .

   const Int_t     rowLwb    = a.GetRowLwb();
   const Int_t     colLwb    = a.GetColLwb();
   const Int_t     nrows     = a.GetNrows();;
   const Int_t    *pRowIndex = a.GetRowIndexArray();
   const Int_t    *pColIndex = a.GetColIndexArray();
   const Double_t *pData     = a.GetMatrixArray();

   Int_t nr = 0;
   for (Int_t irow = 0; irow < nrows; irow++ ) {
      const Int_t rown = irow+rowLwb;
      for (Int_t index = pRowIndex[irow]; index < pRowIndex[irow+1]; index++ ) {
         const Int_t coln = pColIndex[index]+colLwb;
         if (coln >= rown) b[nr++] = pData[index];
      }
   }
}

//______________________________________________________________________________
void TDecompSparse::SetMatrix(const TMatrixDSparse &a)
{
// Set matrix to be decomposed .

   ResetStatus();

   fA.Use(*const_cast<TMatrixDSparse *>(&a));
   fRowLwb    = fA.GetRowLwb();
   fColLwb    = fA.GetColLwb();
   fNrows     = fA.GetNrows();
   fNnonZeros = NonZerosUpperTriang(a);

   fRowFact.Set(fNnonZeros+1);
   fColFact.Set(fNnonZeros+1);

   const Int_t *rowIndex = a.GetRowIndexArray();
   const Int_t *colIndex = a.GetColIndexArray();

   Int_t nr = 0;
   for (Int_t irow = 0; irow < fNrows; irow++ ) {
      const Int_t rown = irow+fRowLwb;
      for (Int_t index = rowIndex[irow]; index < rowIndex[irow+1]; index++ ) {
         const Int_t coln = colIndex[index]+fColLwb;
         if (coln >= rown) {
            fRowFact[nr+1] = irow+1;
            fColFact[nr+1] = colIndex[index]+1;
            nr++;
         }
      }
   }

   fW    .Set(fNrows+1);
   fIkeep.Set(3*(fNrows+1));
   fIw   .Set((Int_t)(1.3 * (2*fNnonZeros+3*fNrows+1)+1));
   fIw1  .Set(2*(fNrows+1));

   // Determine pivot sequence, set iflag = 0 in order to make InitPivot choose the order.
   Int_t iflag = 0;
   Double_t ops;
   InitPivot(fNrows,fNnonZeros,fRowFact,fColFact,fIw,fIkeep,fIw1,fNsteps,iflag,
             fIcntl,fCntl,fInfo,ops);

   switch ( this->ErrorFlag() ) {
      case -1 :
         Error("SetMatrix(const TMatrixDSparse &","nRows  = %d out of range",fNrows);
         return;
      case -2 :
         Error("SetMatrix(const TMatrixDSparse &","nr_nonzeros  = %d out of range",fNnonZeros);
         return;
      case -3 :
         Error("SetMatrix(const TMatrixDSparse &",
               "insufficient space in fIw of %d suggest reset to %d",fIw.GetSize(),this->IError());
         return;
      case 1 :
         Error("SetMatrix(const TMatrixDSparse &",
               "detected %d entries out of rage in row/col indices; ignored",this->IError());
         return;
   }

   // set fIw and fIw1 in prep for calls to Factor and Solve

//   fIw  .Set((Int_t) 1.2*this->MinRealWorkspace()+1);
   fIw  .Set((Int_t) 3*this->MinRealWorkspace()+1);
   fIw1 .Set(fNrows+1);
   fIw2 .Set(fNsteps+1);
//   fFact.Set((Int_t) 1.2*this->MinRealWorkspace()+1);
   fFact.Set((Int_t) 3*this->MinRealWorkspace()+1);

   SetBit(kMatrixSet);
}

//______________________________________________________________________________
Bool_t TDecompSparse::Decompose()
{
// Decomposition engine .
// If the decomposition succeeds, bit kDecomposed is set .

   if (TestBit(kDecomposed)) return kTRUE;

   if ( !TestBit(kMatrixSet) ) {
      Error("Decompose()","Matrix has not been set");
      return kFALSE;
   }

   Int_t done = 0; Int_t tries = 0;
   do {
      fFact[0] = 0.;
      CopyUpperTriang(fA,fFact.GetArray()+1);

      Factor(fNrows,fNnonZeros,fRowFact,fColFact,fFact,fIw,fIkeep,
             fNsteps,fMaxfrt,fIw1,fIcntl,fCntl,fInfo);

      switch ( this->ErrorFlag() ) {
         case 0 :
            done = 1;
            break;
         case -1 :
            Error("Decompose()","nRows  = %d out of range",fNrows);
            return kFALSE;
         case -2 :
            Error("Decompose()","nr_nonzeros  = %d out of range",fNnonZeros);
            return kFALSE;
         case -3 :
            {
               if (fVerbose)
                  Info("Decompose()","insufficient space of fIw: %d",fIw.GetSize());
               const Int_t nIw_old = fIw.GetSize();
               const Int_t nIw = (this->IError() > fIPessimism*nIw_old) ? this->IError() :
                                                                         (Int_t)(fIPessimism*nIw_old);
               fIw.Set(nIw);
               if (fVerbose)
                  Info("Decompose()","resetting to fIw: %d",nIw);
               fIPessimism *= 1.1;
               break;
            }
         case -4 :
            {
               if (fVerbose)
                  Info("Decompose()","insufficient factorization space: %d",fFact.GetSize());
               const Int_t nFact_old = fFact.GetSize();
               const Int_t nFact = (this->IError() > fRPessimism*nFact_old) ? this->IError() :
                                                                             (Int_t) (fRPessimism*nFact_old);
               fFact.Set(nFact); fFact.Reset(0.0);
               CopyUpperTriang(fA,fFact.GetArray()+1);
               if (fVerbose)
                  Info("Decompose()","reseting to: %d",nFact);
               fRPessimism *= 1.1;
               break;
            }
         case -5 :
            if (fVerbose) {
               Info("Decompose()","matrix apparently numerically singular");
               Info("Decompose()","detected at stage %d",this->IError());
               Info("Decompose()","accept this factorization and hope for the best..");
            }
            done = 1;
            break;
         case -6 :
            if (fVerbose) {
               Info("Decompose()","change of sign of pivots detected at stage %d",this->IError());
               Info("Decompose()","but who cares ");
            }
            done = 1;
            break;
         case -7 :
            Error("Decompose()","value of fNsteps out of range: %d",fNsteps);
            return kFALSE;
         case 1 :
            if (fVerbose) {
               Info("Decompose()","detected %d entries out of range in row/column index",this->IError());
               Info("Decompose()","they are ignored");
            }
            done = 1;
            break;
         case 3 :
            if (fVerbose)
               Info("Decompose()","rank deficient matrix detected; apparent rank = %d",this->IError());
            done = 1;
            break;
         default:
            break;
      }

      tries++;
   } while (!done && tries < 10);

   Int_t ok;
   if ( !done && tries >= 10) {
      ok = kFALSE;
      if (fVerbose)
         Error("Decompose()","did not get a factorization after 10 tries");
   } else {
      ok = kTRUE;
      SetBit(kDecomposed);
   }

   return ok;
}

//______________________________________________________________________________
Bool_t TDecompSparse::Solve(TVectorD &b)
{
// Solve Ax=b . Solution returned in b.

   R__ASSERT(b.IsValid());
   if (TestBit(kSingular)) {
      Error("Solve()","Matrix is singular");
      return kFALSE;
   }
   if ( !TestBit(kDecomposed) ) {
      if (!Decompose()) {
         Error("Solve()","Decomposition failed");
         return kFALSE;
      }
   }

   if (fNrows != b.GetNrows() || fRowLwb != b.GetLwb())
   {
      Error("Solve(TVectorD &","vector and matrix incompatible");
      return kFALSE;
   }
   b.Shift(-fRowLwb); // make sure rowlwb = 0

   // save bs and store residuals
   TVectorD resid = b;
   TVectorD bSave = b;

   Double_t bnorm = b.NormInf();
   Double_t rnorm = 0.0;

   Int_t done = 0;
   Int_t refactorizations = 0;

   while (!done && refactorizations < 10) {

      Solve(fNrows,fFact,fIw,fW,fMaxfrt,b,fIw1,fNsteps,fIcntl,fInfo);

      // compute residuals
      resid = fA*b-resid;
      rnorm = resid.NormInf();

      if (rnorm < fPrecision*(1.+bnorm)) {
         // residuals are small enough, use this solution
         done = 1;
      } else if (this->GetThresholdPivoting() >= kThresholdPivotingMax
                  || refactorizations > 10)  {
         // ThresholdPivoting parameter is already too high; give up and
         // use this solution, whatever it is (the algorithm may bomb in
         // an outer loop).
         done = 1;
      } else {
         // refactor with a higher Threshold Pivoting parameter
         Double_t tp = this->GetThresholdPivoting();
         tp *= kThresholdPivotingFactor;
         if (tp > kThresholdPivotingMax) tp = kThresholdPivotingMax;
         this->SetThresholdPivoting(tp);
         if (fVerbose)
            Info("Solve","Setting ThresholdPivoting parameter to %.4e for future factorizations",
                  this->GetThresholdPivoting());

         SetMatrix(fA);
         refactorizations++;
         resid = bSave;
         b     = bSave;
      }
   }

   b.Shift(fRowLwb);
   return kTRUE;
}

//______________________________________________________________________________
void TDecompSparse::InitParam()
{
// initializing control parameters

   fPrecision  = kInitPrecision;
   fIPessimism = 1.2;
   fRPessimism = 1.2;

   const Int_t ifrlvl = 5;

   SetVerbose(fVerbose);
   fIcntl[4] = 2139062143;
   fIcntl[5] = 1;
   fIcntl[ifrlvl+1]  = 32639;
   fIcntl[ifrlvl+2]  = 32639;
   fIcntl[ifrlvl+3]  = 32639;
   fIcntl[ifrlvl+4]  = 32639;
   fIcntl[ifrlvl+5]  = 14;
   fIcntl[ifrlvl+6]  = 9;
   fIcntl[ifrlvl+7]  = 8;
   fIcntl[ifrlvl+8]  = 8;
   fIcntl[ifrlvl+9]  = 9;
   fIcntl[ifrlvl+10] = 10;
   fIcntl[ifrlvl+11] = 32639;
   fIcntl[ifrlvl+12] = 32639;
   fIcntl[ifrlvl+13] = 32639;
   fIcntl[ifrlvl+14] = 32689;
   fIcntl[ifrlvl+15] = 24;
   fIcntl[ifrlvl+16] = 11;
   fIcntl[ifrlvl+17] = 9;
   fIcntl[ifrlvl+18] = 8;
   fIcntl[ifrlvl+19] = 9;
   fIcntl[ifrlvl+20] = 10;
   fIcntl[26] = 0;
   fIcntl[27] = 0;
   fIcntl[28] = 0;
   fIcntl[29] = 0;
   fIcntl[30] = 0;
   fCntl[1] = 0.10;
   fCntl[2] = 1.00;
   fCntl[3] = 0.00;
   fCntl[4] = 0.0;
   fCntl[5] = 0.0;

   // set initial value of "Treat As Zero" parameter
   this->SetTreatAsZero(kInitTreatAsZero);

   // set initial value of Threshold parameter
   this->SetThresholdPivoting(kInitThresholdPivoting);

   fNsteps    = 0;
   fMaxfrt    = 0;
   fNrows     = 0;
   fNnonZeros = 0;
}

//______________________________________________________________________________
void TDecompSparse::InitPivot(const Int_t n,const Int_t nz,TArrayI &Airn,TArrayI &Aicn,
                              TArrayI &Aiw,TArrayI &Aikeep,TArrayI &Aiw1,Int_t &nsteps,
                              const Int_t iflag,Int_t *icntl,Double_t *cntl,Int_t *info,
                              Double_t &ops)
{
// Setup Pivoting variables

   Int_t i,iwfr,k,l1,l2,lliw;

   Int_t *irn      = Airn.GetArray();
   Int_t *icn      = Aicn.GetArray();
   Int_t *iw       = Aiw.GetArray();
   Int_t *ikeep    = Aikeep.GetArray();
   Int_t *iw1      = Aiw1.GetArray();
   const Int_t liw = Aiw.GetSize()-1;

   for (i = 1; i < 16; i++)
      info[i] = 0;

   if (icntl[3] > 0 && icntl[2] > 0) {
      ::Info("TDecompSparse::InitPivot","Start with n = %d  nz = %d  liw = %d  iflag = %d",n,nz,liw,iflag);
      nsteps = 0;
      k = TMath::Min(8,nz);
      if (icntl[3] > 1) k = nz;
      if (k > 0) {
         printf("matrix non-zeros:\n");
         for (i = 1; i < k+1; i++) {
            printf("%d %d ",irn[i],icn[i]);
            if (i%5 == 0 || i == k) printf("\n");
         }
      }

      k = TMath::Min(10,n);
      if (icntl[3] > 1) k = n;
      if (iflag == 1 && k > 0) {
         for (i = 1; i < k+1; i++) {
            printf("%d ",ikeep[i]);
            if (i%10 == 0 || i == k) printf("\n");
         }
      }
   }

   if (n >= 1 && n <= icntl[4]) {
      if (nz < 0) {
         info[1] = -2;
         if (icntl[1] > 0)
            ::Error("TDecompSparse::InitPivot","info[1]= %d; value of nz out of range .. = %d",info[1],nz);
         return;
      }
      lliw = liw-2*n;
      l1 = lliw+1;
      l2 = l1+n;
      if (iflag != 1) {
         if (liw < 2*nz+3*n+1) {
            info[1] = -3;
            info[2] = 2*nz+3*n+1;
            if (icntl[1] > 0)
               ::Error("TDecompSparse::InitPivot","info[1]= %d; liw too small, must be increased from %d to at least %d",info[1],liw,info[2]);
            return;
         }
         InitPivot_sub1(n,nz,irn,icn,iw,iw1,iw1+n+1,iw+l1-1,iwfr,icntl,info);
         InitPivot_sub2(n,iw1,iw,lliw,iwfr,iw+l1-1,iw+l2-1,ikeep+n+1,
                        ikeep+2*(n+1),ikeep,icntl[4],info[11],cntl[2]);
      } else {
         if (liw < nz+3*n+1) {
            info[1] = -3;
            info[2] = nz+3*n+1;
            if (icntl[1] > 0)
               ::Error("TDecompSparse::InitPivot","info[1]= %d; liw too small, must be increased from %d to at least %d",info[1],liw,info[2]);
            return;
         }
         InitPivot_sub3(n,nz,irn,icn,ikeep,iw,iw1,iw1+n+1,iw+l1-1,iwfr,icntl,info);
         InitPivot_sub4(n,iw1,iw,lliw,iwfr,ikeep,ikeep+n+1,iw+l1-1,iw+l2-1,info[11]);
      }
      InitPivot_sub5(n,iw1,iw+l1-1,ikeep,ikeep+n+1,ikeep+2*(n+1),iw+l2-1,nsteps,icntl[5]);
      if (nz >= 1) iw[1] = irn[1]+1;
      InitPivot_sub6(n,nz,irn,icn,ikeep,ikeep+2*(n+1),ikeep+n+1,iw+l2-1,
                     nsteps,iw1,iw1+n+1,iw,info,ops);
   } else {
      info[1] = -1;
      if (icntl[1] > 0)
         ::Error("TDecompSparse::InitPivot","info[1]= %d; value of n out of range ... = %d",info[1],n);
      return;
   }

   if (icntl[3] <= 0 || icntl[2] <= 0) return;

   printf("Leaving with nsteps =%d info(1)=%d ops=%14.5e ierror=%d\n",nsteps,info[1],ops,info[2]);
   printf("nrltot=%d nirtot=%d nrlnec=%d nirnec=%d nrladu=%d niradu=%d ncmpa=%d\n",
           info[3],info[4],info[5],info[6],info[7],info[8],info[11]);

   k = TMath::Min(9,n);
   if (icntl[3] > 1) k = n;
   if (k > 0) {
      printf("ikeep[0][.]=\n");
      for (i = 1; i < k+1; i++) {
         printf("%d ",ikeep[i]);
         if (k%10 == 0 || i == k) printf("\n");
      }
   }
   k = TMath::Min(k,nsteps);
   if (k > 0) {
      printf("ikeep[2][.]=\n");
      for (i = 1; i < k+1; i++) {
         printf("%d ",ikeep[2*(n+1)+i]);
         if (k%10 == 0 || i == k) printf("\n");
      }
   }
}

//______________________________________________________________________________
void TDecompSparse::Factor(const Int_t n,const Int_t nz,TArrayI &Airn,TArrayI &Aicn,TArrayD &Aa,
                           TArrayI &Aiw,TArrayI &Aikeep,const Int_t nsteps,Int_t &maxfrt,
                           TArrayI &Aiw1,Int_t *icntl,Double_t *cntl,Int_t *info)
{
// Factorization routine, the workhorse for the decompostion step

   Int_t i,iapos,iblk,ipos,irows,j1,j2,jj,k,kblk,kz,len,ncols,nrows,nz1;

   Int_t    *irn   = Airn.GetArray();
   Int_t    *icn   = Aicn.GetArray();
   Int_t    *iw    = Aiw.GetArray();
   Int_t    *ikeep = Aikeep.GetArray();
   Int_t    *iw1   = Aiw1.GetArray();
   Double_t *a     = Aa.GetArray();

   const Int_t la = Aa.GetSize()-1;
   const Int_t liw = Aiw.GetSize()-1;

   info[1] = 0;
   if (icntl[3] > 0 && icntl[2] > 0) {
      printf("entering Factor with n=%d nz=%d la=%d liw=%d nsteps=%d u=%10.2e\n",
               n,nz,la,liw,nsteps,cntl[1]);
      kz = TMath::Min(6,nz);
      if (icntl[3] > 1) kz = nz;
      if (nz > 0) {
         printf("matrix non-zeros:\n");
         for (i = 1; i < kz+1; i++) {
            printf("%16.3e %d %d ",a[i],irn[i],icn[i]);
            if (i%2 == 0 || i==kz) printf("\n");
         }
      }
      k = TMath::Min(9,n);
      if (icntl[3] > 1) k = n;
      if (k > 0) {
         printf("ikeep(0,.)=\n");
         for (i = 1; i < k+1; i++) {
            printf("%d ",ikeep[i]);
            if (i%10 == 0 || i == k) printf("\n");
         }
      }
      k = TMath::Min(k,nsteps);
      if (k > 0) {
         printf("ikeep(1,.)=\n");
         for (i = 1; i < k+1; i++) {
            printf("%d ",ikeep[n+1+i]);
            if (i%10 == 0 || i == k) printf("\n");
         }
         printf("ikeep(2,.)=\n");
         for (i = 1; i < k+1; i++) {
            printf("%d ",ikeep[2*(n+1)+i]);
            if (i%10 == 0 || i == k) printf("\n");
         }
      }
   }

   if (n < 1 || n > icntl[4])
      info[1] = -1;
   else if (nz < 0)
      info[1] = -2;
   else if (liw < nz) {
      info[1] = -3;
      info[2] = nz;
   } else if (la < nz+n) {
      info[1] = -4;
      info[2] = nz+n;
   } else if (nsteps < 1 || nsteps > n)
      info[1] = -7;
   else {
      Factor_sub1(n,nz,nz1,a,la,irn,icn,iw,liw,ikeep,iw1,icntl,info);
      if (info[1] != -3 && info[1] != -4) {
         Factor_sub2(n,nz1,a,la,iw,liw,ikeep,ikeep+2*(n+1),nsteps,maxfrt,ikeep+n+1,iw1,icntl,cntl,info);
         if (info[1] == 3 && icntl[2] > 0)
            ::Warning("TDecompSparse::Factor","info[1]= %d; matrix is singular. rank=%d",info[1],info[2]);
      }
   }

   if (icntl[1] > 0) {
      switch(info[1]) {
         case -1:
            ::Error("TDecompSparse::Factor","info[1]= %d; value of n out of range ... =%d",info[1],n);
            break;

         case -2:
            ::Error("TDecompSparse::Factor","info[1]= %d; value of nz out of range ... =%d",info[1],nz);
            break;

         case -3:
            ::Error("TDecompSparse::Factor","info[1]= %d; liw too small, must be increased from %d to at least %d",info[1],liw,info[2]);
            break;

         case -4:
            ::Error("TDecompSparse::Factor","info[1]= %d; la too small, must be increased from %d to at least %d",info[1],la,info[2]);
            break;

         case -5:
            ::Error("TDecompSparse::Factor","info[1]= %d; zero pivot at stage %d zero pivot at stage",info[1],info[2]);
            break;

         case -6:
            ::Error("TDecompSparse::Factor","info[1]= %d; change in sign of pivot encountered when factoring allegedly definite matrix",info[1]);
            break;

         case -7:
            ::Error("TDecompSparse::Factor","info[1]= %d; nsteps is out of range",info[1]);
            break;
      }
   }

   if (icntl[3] <= 0 || icntl[2] <= 0 || info[1] < 0)
      return;

   ::Info("TDecompSparse::Factor","leaving Factor with maxfrt=%d info[1]=%d nrlbdu=%d nirbdu=%d ncmpbr=%d ncmpbi=%d ntwo=%d ierror=%d",
          maxfrt,info[1],info[9],info[10],info[12],info[13],info[14],info[2]);

   if (info[1] < 0) return;

   kblk = TMath::Abs(iw[1]+0);
   if (kblk == 0) return;
   if (icntl[3] == 1) kblk = 1;
   ipos = 2;
   iapos = 1;

   for (iblk = 1; iblk < kblk+1; iblk++) {
      ncols = iw[ipos];
      nrows = iw[ipos+1];
      j1 = ipos+2;
      if (ncols <= 0) {
         ncols = -ncols;
         nrows = 1;
         j1 = j1-1;
      }
      ::Info("TDecompSparse::Factor","block pivot =%d nrows =%d ncols =%d",iblk,nrows,ncols);
      j2 = j1+ncols-1;
      ipos = j2+1;

      printf(" column indices =\n");
      for (jj = j1; jj < j2+1; jj++) {
         printf("%d ",iw[jj]);
         if (jj%10 == 0 || jj == j2) printf("\n");
      }

      printf(" real entries .. each row starts on a new line\n");
      len = ncols;
      for (irows = 1; irows < nrows+1; irows++) {
         j1 = iapos;
         j2 = iapos+len-1;
         for (jj = j1; jj < j2+1; jj++) {
            printf("%13.4e ",a[jj]);
            if (jj%5 == 0 || jj == j2) printf("\n");
         }
         len = len-1;
         iapos = j2+1;
      }
   }
}

//______________________________________________________________________________
void TDecompSparse::Solve(const Int_t n,TArrayD &Aa,TArrayI &Aiw,
                          TArrayD &Aw,const Int_t maxfrt,TVectorD &b,TArrayI &Aiw1,
                          const Int_t nsteps,Int_t *icntl,Int_t *info)
{
// Main routine for solving Ax=b

   Int_t i,iapos,iblk,ipos,irows,j1,j2,jj,k,kblk,latop,len,nblk,ncols,nrows;

   Double_t *a   = Aa.GetArray();
   Double_t *w   = Aw.GetArray();
   Int_t    *iw  = Aiw.GetArray();
   Int_t    *iw1 = Aiw1.GetArray();
   Double_t *rhs = new Double_t[n+1];
   rhs[0] = 0.;
   memcpy(rhs+1,b.GetMatrixArray(),n*sizeof(Double_t));
   const Int_t la  = Aa.GetSize()-1;
   const Int_t liw = Aiw.GetSize()-1;

   info[1] = 0;
   k = 0;
   if (icntl[3] > 0 && icntl[2] > 0) {
      printf("nentering Solve with n=%d la=%d liw=%d maxfrt=%d nsteps=%d",n,la,liw,maxfrt,nsteps);

      kblk = TMath::Abs(iw[1]+0);
      if (kblk != 0) {
         if (icntl[3] == 1) kblk = 1;
         ipos = 2;
         iapos = 1;
         for (iblk = 1; iblk < kblk+1; iblk++) {
            ncols = iw[ipos];
            nrows = iw[ipos+1];
            j1 = ipos+2;
            if (ncols <= 0) {
               ncols = -ncols;
               nrows = 1;
               j1 = j1-1;
            }
            printf("block pivot=%d nrows=%d ncols=%d\n",iblk,nrows,ncols);
            j2 = j1+ncols-1;
            ipos = j2+1;
            printf("column indices =\n");
            for (jj = j1; jj < j2+1; jj++) {
               printf("%d ",iw[jj]);
               if (jj%10 == 0 || jj == j2) printf("\n");
            }
            printf("real entries .. each row starts on a new line\n");
            len = ncols;
            for (irows = 1; irows < nrows+1; irows++) {
               j1 = iapos;
               j2 = iapos+len-1;
               for (jj = j1; jj < j2+1; jj++) {
                  printf("%13.3e ",a[jj]);
                  if (jj%5 == 0 || jj == j2) printf("\n");
               }
               len = len-1;
               iapos = j2+1;
            }
         }
      }

      k = TMath::Min(10,n);
      if (icntl[3] > 1) k = n;
      if (n > 0) {
         printf("rhs =\n");
         for (i = 1; i < k+1; i++) {
            printf("%13.3e ",rhs[i]);
            if (i%5 == 0 || i == k) printf("\n");
         }
      }
   }

   nblk = 0;
   if (iw[1] == 0) {
      nblk = 0;
      for (i = 1; i < n+1; i++)
         rhs[i] = 0.0;
   } else {
      nblk = (iw[1] <= 0) ? -iw[1] : iw[1];
      Solve_sub1(n,a,iw+1,w,rhs,iw1,nblk,latop,icntl);
      Solve_sub2(n,a,iw+1,w,rhs,iw1,nblk,latop,icntl);
   }

   if (icntl[3] > 0 && icntl[2] > 0) {
      printf("leaving Solve with:\n");
      if (n > 0) {
         printf("rhs =\n");
         for (i = 1; i < k+1; i++) {
            printf("%13.3e ",rhs[i]);
            if (i%5 == 0 || i == k) printf("\n");
         }
      }
   }

   memcpy(b.GetMatrixArray(),rhs+1,n*sizeof(Double_t));
   delete [] rhs;
}

//______________________________________________________________________________
void TDecompSparse::InitPivot_sub1(const Int_t n,const Int_t nz,Int_t *irn,Int_t *icn,
                                   Int_t *iw,Int_t *ipe,Int_t *iq,Int_t *flag,
                                   Int_t &iwfr,Int_t *icntl,Int_t *info)
{
// Help routine for pivoting setup

   Int_t i,id,j,jn,k,k1,k2,l,last,lr,n1,ndup;

   info[2] = 0;
   for (i = 1; i < n+1; i++)
      ipe[i] = 0;
   lr = nz;

   if (nz != 0) {
      for (k = 1; k < nz+1; k++) {
         i = irn[k];
         j = icn[k];

         Bool_t outRange = (i < 1 || i > n || j < 1 || j > n);
         if (outRange) {
            info[2] = info[2]+1;
            info[1] = 1;
            if (info[2] <= 1 && icntl[2]> 0)
               ::Warning("TDecompSparse::InitPivot_sub1","info[1]= %d; %d th non-zero (in row=%d and column=%d) ignored",info[1],k,i,j);
         }

         if (outRange || i == j) {
            i = 0;
            j = 0;
         } else {
            ipe[i] = ipe[i]+1;
            ipe[j] = ipe[j]+1;
         }
         iw[k] = j;
         lr = lr+1;
         iw[lr] = i;
      }
   }

   iq[1] = 1;
   n1 = n-1;
   if (n1 > 0) {
      for (i = 1; i < n1+1; i++) {
         flag[i] = 0;
         if (ipe[i] == 0) ipe[i] = -1;
         iq[i+1] = ipe[i]+iq[i]+1;
         ipe[i] = iq[i];
      }
   }

   last = ipe[n]+iq[n];
   flag[n] = 0;
   if (lr < last) {
      k1 = lr+1;
      for (k = k1; k < last+1; k++)
         iw[k] = 0;
   }
   ipe[n] = iq[n];
   iwfr = last+1;
   if (nz != 0) {
      for (k = 1; k < nz+1; k++) {
         j = iw[k];
         if (j <= 0)  continue;
         l = k;
         iw[k] = 0;
         for (id = 1; id < nz+1; id++) {
            if (l <= nz)
               l = l+nz;
            else
               l = l-nz;
            i = iw[l];
            iw[l] = 0;
            if (i >= j) {
               l = iq[j]+1;
               iq[j] = l;
               jn = iw[l];
               iw[l] = -i;
            } else {
               l = iq[i]+1;
               iq[i] = l;
               jn = iw[l];
               iw[l] = -j;
            }
            j = jn;
            if (j <= 0) break;
         }
      }
   }

   ndup = 0;

   for (i = 1; i < n+1; i++) {
      k1 = ipe[i]+1;
      k2 = iq[i];
      if (k1 > k2) {
         ipe[i] = 0;
         iq[i] = 0;
      } else {
         for (k = k1; k < k2+1; k++) {
            j = -iw[k];
            if (j <= 0) break;
            l = iq[j]+1;
            iq[j] = l;
            iw[l] = i;
            iw[k] = j;
            if (flag[j] == i) {
               ndup = ndup + 1;
               iw[l] = 0;
               iw[k] = 0;
            }
            flag[j] = i;
         }

         iq[i] = iq[i]-ipe[i];
         if (ndup == 0) iw[k1-1] = iq[i];
      }
   }

   if (ndup != 0) {
      iwfr = 1;
      for (i = 1; i < n+1; i++) {
         k1 = ipe[i]+1;
         if (k1 == 1) continue;
         k2 = iq[i]+ipe[i];
         l = iwfr;
         ipe[i] = iwfr;
         iwfr = iwfr+1;
         for (k = k1; k < k2+1; k++) {
            if (iw[k] == 0) continue;
            iw[iwfr] = iw[k];
            iwfr = iwfr+1;
         }
         iw[l] = iwfr-l-1;
      }
   }

}

//______________________________________________________________________________
void TDecompSparse::InitPivot_sub2(const Int_t n,Int_t *ipe,Int_t *iw,const Int_t lw,
                                   Int_t &iwfr,Int_t *nv,Int_t *nxt,Int_t *lst,Int_t *ipd,
                                   Int_t *flag,const Int_t iovflo,Int_t &ncmpa,
                                   const Double_t fratio)
{
// Help routine for pivoting setup

   Int_t i,id,idl,idn,ie,ip,is,jp,jp1,jp2,js,k,k1,k2,ke,kp,kp0,kp1,
         kp2,ks,l,len,limit,ln,ls,lwfr,md,me,ml,ms,nel,nflg,np,
         np0,ns,nvpiv,nvroot,root;

   for (i = 1; i < n+1; i++) {
      ipd[i]  = 0;
      nv[i]   = 1;
      flag[i] = iovflo;
   }

   js = 0;
   ms = 0;
   ncmpa = 0;
   md     = 1;
   nflg   = iovflo;
   nel    = 0;
   root   = n+1;
   nvroot = 0;
   for (is = 1; is < n+1; is++) {
      k = ipe[is];
      if (k > 0) {
         id = iw[k]+1;
         ns = ipd[id];
         if (ns > 0) lst[ns] = is;
         nxt[is] = ns;
         ipd[id] = is;
         lst[is] = -id;
      } else {
         nel = nel+1;
         flag[is] = -1;
         nxt[is]  = 0;
         lst[is]  = 0;
      }
   }

   for (ml = 1; ml < n+1; ml++) {
      if (nel+nvroot+1 >= n) break;
      for (id = md; id < n+1; id++) {
         ms = ipd[id];
         if (ms > 0) break;
      }

      md = id;
      nvpiv = nv[ms];
      ns = nxt[ms];
      nxt[ms] = 0;
      lst[ms] = 0;
      if (ns > 0) lst[ns] = -id;
      ipd[id] = ns;
      me = ms;
      nel = nel+nvpiv;
      idn = 0;
      kp = ipe[me];
      flag[ms] = -1;
      ip = iwfr;
      len = iw[kp];
      jp = 0;
      for (kp1 = 1; kp1 < len+1; kp1++) {
         kp = kp+1;
         ke = iw[kp];
         if (flag[ke] > -2) {
            if (flag[ke] <= 0) {
               if (ipe[ke] != -root) continue;
               ke = root;
               if (flag[ke] <= 0) continue;
            }
            jp = kp-1;
            ln = len-kp1+1;
            ie = ms;
         } else {
            ie = ke;
            jp = ipe[ie];
            ln = iw[jp];
         }

         for (jp1 = 1; jp1 < ln+1; jp1++) {
            jp = jp+1;
            is = iw[jp];
            if (flag[is] <= 0) {
               if (ipe[is] == -root) {
                  is = root;
                  iw[jp] = root;
                  if (flag[is] <= 0) continue;
               } else
               continue;
            }
            flag[is] = 0;
            if (iwfr >= lw) {
               ipe[ms] = kp;
               iw[kp] = len-kp1;
               ipe[ie] = jp;
               iw[jp] = ln-jp1;
               InitPivot_sub2a(n,ipe,iw,ip-1,lwfr,ncmpa);
               jp2 = iwfr-1;
               iwfr = lwfr;
               if (ip <= jp2) {
                  for (jp = ip; jp < jp2+1; jp++) {
                     iw[iwfr] = iw[jp];
                     iwfr = iwfr+1;
                  }
               }
               ip = lwfr;
               jp = ipe[ie];
               kp = ipe[me];
            }
            iw[iwfr] = is;
            idn = idn+nv[is];
            iwfr = iwfr+1;
            ls = lst[is];
            lst[is] = 0;
            ns = nxt[is];
            nxt[is] = 0;
            if (ns > 0) lst[ns] = ls;
            if (ls < 0) {
               ls = -ls;
               ipd[ls] = ns;
            } else if (ls > 0)
               nxt[ls] = ns;
         }

         if (ie == ms)
            break;
         ipe[ie] = -me;
         flag[ie] = -1;
      }

      nv[ms] = idn+nvpiv;
      if (iwfr != ip) {
         k1 = ip;
         k2 = iwfr-1;
         limit = TMath::Nint(fratio*(n-nel));

         for (k = k1; k < k2+1; k++) {
            is = iw[k];
            if (is == root) continue;
            if (nflg <= 2)  {
               for (i = 1; i < n+1; i++) {
                  if (flag[i] > 0)   flag[i] =  iovflo;
                  if (flag[i] <= -2) flag[i] = -iovflo;
               }
               nflg = iovflo;
            }
            nflg = nflg-1;
            id = idn;
            kp1 = ipe[is]+1;
            np  = kp1;
            kp2 = iw[kp1-1]+kp1-1;

            Int_t skip = 0;
            for (kp = kp1; kp < kp2+1; kp++) {
               ke = iw[kp];
               if (flag[ke] == -1) {
                  if (ipe[ke] != -root) continue;
                  ke = root;
                  iw[kp] = root;
                  if (flag[ke] == -1) continue;
               }
               if (flag[ke] >= 0) {
                  skip = 1;
                  break;
               }
               jp1 = ipe[ke]+1;
               jp2 = iw[jp1-1]+jp1-1;
               idl = id;
               for (jp = jp1; jp < jp2+1; jp++) {
                  js = iw[jp];
                  if (flag[js] <= nflg) continue;
                  id = id+nv[js];
                  flag[js] = nflg;
               }
               if (id <= idl) {
                  Int_t skip2 = 0;
                  for (jp = jp1; jp < jp2+1; jp++) {
                     js = iw[jp];
                     if (flag[js] != 0) {
                        skip2 = 1;
                        break;
                     }
                  }
                  if (skip2) {
                     iw[np] = ke;
                     flag[ke] = -nflg;
                     np = np+1;
                  } else {
                     ipe[ke] = -me;
                     flag[ke] = -1;
                  }
               } else {
                  iw[np] = ke;
                  flag[ke] = -nflg;
                  np = np+1;
               }
            }

            if (!skip)
               np0 = np;
            else {
               np0 = np;
               kp0 = kp;
               for (kp = kp0; kp < kp2+1; kp++) {
                  ks = iw[kp];
                  if (flag[ks] <= nflg) {
                     if (ipe[ks] == -root) {
                        ks = root;
                        iw[kp] = root;
                        if (flag[ks] <= nflg) continue;
                     } else
                        continue;
                  }
                  id = id+nv[ks];
                  flag[ks] = nflg;
                  iw[np] = ks;
                  np = np+1;
               }
            }

            Int_t doit = 2;
            if (id < limit) {
               iw[np] = iw[np0];
               iw[np0] = iw[kp1];
               iw[kp1] = me;
               iw[kp1-1] = np-kp1+1;
               js = ipd[id];
               for (l = 1; l < n+1; l++) {
                  if (js <= 0) {
                     doit = 3;
                     break;
                  }
                  kp1 = ipe[js]+1;
                  if (iw[kp1] != me) {
                     doit = 3;
                     break;
                  }
                  kp2 = kp1-1+iw[kp1-1];
                  Int_t stayInLoop = 0;
                  for (kp = kp1; kp < kp2+1; kp++) {
                     ie = iw[kp];
                     if (TMath::Abs(flag[ie]+0) > nflg) {
                        stayInLoop = 1;
                        break;
                     }
                  }
                  if (!stayInLoop) {
                     doit = 1;
                     break;
                  }
                  js = nxt[js];
               }
            }

            if (doit == 1) {
               ipe[js] = -is;
               nv[is] = nv[is]+nv[js];
               nv[js] = 0;
               flag[js] = -1;
               ns = nxt[js];
               ls = lst[js];
               if (ns > 0) lst[ns] = is;
               if (ls > 0) nxt[ls] = is;
               lst[is] = ls;
               nxt[is] = ns;
               lst[js] = 0;
               nxt[js] = 0;
               if (ipd[id] == js) ipd[id] = is;
            } else if (doit == 2) {
               if (nvroot == 0) {
                  root = is;
                  ipe[is] = 0;
               } else {
                  iw[k] = root;
                  ipe[is] = -root;
                  nv[root] = nv[root]+nv[is];
                  nv[is] = 0;
                  flag[is] = -1;
               }
               nvroot = nv[root];
            } else if (doit == 3) {
               ns = ipd[id];
               if (ns > 0) lst[ns] = is;
               nxt[is] = ns;
               ipd[id] = is;
               lst[is] = -id;
               md = TMath::Min(md,id);
            }
         }

         for (k = k1; k < k2+1; k++) {
            is = iw[k];
            if (nv[is] == 0) continue;
            flag[is] = nflg;
            iw[ip] = is;
            ip = ip+1;
         }
         iwfr = k1;
         flag[me] = -nflg;
         iw[ip] = iw[k1];
         iw[k1] = ip-k1;
         ipe[me] = k1;
         iwfr = ip+1;
      } else
         ipe[me] = 0;
   }

   for (is = 1; is < n+1; is++) {
      if (nxt[is] != 0 || lst[is] != 0) {
         if (nvroot == 0) {
            root = is;
            ipe[is] = 0;
         } else {
            ipe[is] = -root;
         }
         nvroot = nvroot+nv[is];
         nv[is] = 0;
      }
   }

   for (ie = 1; ie < n+1; ie++)
      if (ipe[ie] > 0) ipe[ie] = -root;

   if (nvroot> 0) nv[root] = nvroot;
}

//______________________________________________________________________________
void TDecompSparse::InitPivot_sub2a(const Int_t n,Int_t *ipe,Int_t *iw,const Int_t lw,
                                    Int_t &iwfr,Int_t &ncmpa)
{
// Help routine for pivoting setup

   Int_t i,ir,k,k1,k2,lwfr;

   ncmpa = ncmpa+1;
   for (i = 1; i < n+1; i++) {
      k1 = ipe[i];
      if (k1 <= 0)  continue;
      ipe[i] = iw[k1];
      iw[k1] = -i;
   }

   iwfr = 1;
   lwfr = iwfr;
   for (ir = 1; ir < n+1; ir++) {
      if (lwfr > lw) break;
      Int_t skip = 1;
      for (k = lwfr; k < lw+1; k++) {
         if (iw[k] < 0) {
            skip = 0;
            break;
         }
      }
      if (skip) break;
      i = -iw[k];
      iw[iwfr] = ipe[i];
      ipe[i] = iwfr;
      k1 = k+1;
      k2 = k+iw[iwfr];
      iwfr = iwfr+1;
      if (k1 <= k2)  {
         for (k = k1; k < k2+1; k++) {
            iw[iwfr] = iw[k];
            iwfr = iwfr+1;
         }
      }
      lwfr = k2+1;
   }
}

//______________________________________________________________________________
void TDecompSparse::InitPivot_sub3(const Int_t n,const Int_t nz,Int_t *irn,Int_t *icn,
                                   Int_t *perm,Int_t *iw,Int_t *ipe,Int_t *iq,
                                   Int_t *flag,Int_t &iwfr,Int_t *icntl,Int_t *info)
{
// Help routine for pivoting setup

   Int_t i,id,in,j,jdummy,k,k1,k2,l,lbig,len;

   info[1] = 0;
   info[2] = 0;
   for (i = 1; i < n+1; i++)
      iq[i] = 0;

   if (nz != 0) {
      for (k = 1; k < nz+1; k++) {
         i = irn[k];
         j = icn[k];
         iw[k] = -i;

         Bool_t outRange = (i < 1 || i > n || j < 1 || j > n);
         if (outRange) {
            info[2] = info[2]+1;
            info[1] = 1;
            if (info[2] <= 1 && icntl[2] > 0)
               ::Warning("TDecompSparse::InitPivot_sub3","info[1]= %d; %d 'th non-zero (in row %d and column %d) ignored",info[1],k,i,j);
         }

         if (outRange || i==j) {
            iw[k] = 0;
         } else {
            if (perm[j] <= perm[i])
              iq[j] = iq[j]+1;
            else
               iq[i] = iq[i]+1;
         }
      }
   }

   iwfr = 1;
   lbig = 0;
   for (i = 1; i < n+1; i++) {
      l = iq[i];
      lbig = TMath::Max(l,lbig);
      iwfr = iwfr+l;
      ipe[i] = iwfr-1;
   }

   if (nz != 0) {
      for (k = 1; k < nz+1; k++) {
         i = -iw[k];
         if (i <= 0) continue;
         l = k;
         iw[k] = 0;
         for (id = 1; id < nz+1; id++) {
            j = icn[l];
            if (perm[i] >= perm[j]) {
               l = ipe[j];
               ipe[j] = l-1;
               in = iw[l];
               iw[l] = i;
            } else {
               l = ipe[i];
               ipe[i] = l-1;
               in = iw[l];
               iw[l] = j;
            }
            i = -in;
            if (i <= 0) continue;
         }
      }

      k = iwfr-1;
      l = k+n;
      iwfr = l+1;
      for (i = 1; i < n+1; i++) {
         flag[i] = 0;
         j = n+1-i;
         len = iq[j];
         if (len > 0)  {
            for (jdummy = 1; jdummy < len+1; jdummy++) {
               iw[l] = iw[k];
               k = k-1;
               l = l-1;
            }
         }
         ipe[j] = l;
         l = l-1;
      }

      if (lbig < icntl[4]) {
         for (i = 1; i < n+1; i++) {
            k = ipe[i];
            iw[k] = iq[i];
            if (iq[i] == 0) ipe[i] = 0;
         }
      } else {
         iwfr = 1;
         for (i = 1; i < n+1; i++) {
            k1 = ipe[i]+1;
            k2 = ipe[i]+iq[i];
            if (k1 > k2) {
               ipe[i] = 0;
            } else {
               ipe[i] = iwfr;
               iwfr = iwfr+1;
               for (k = k1; k < k2+1; k++) {
                  j = iw[k];
                  if (flag[j] == i) continue;
                  iw[iwfr] = j;
                  iwfr = iwfr+1;
                  flag[j] = i;
               }
               k = ipe[i];
               iw[k] = iwfr-k-1;
            }
         }
      }
   }

}

//______________________________________________________________________________
void TDecompSparse::InitPivot_sub4(const Int_t n,Int_t *ipe,Int_t *iw,const Int_t lw,
                                   Int_t &iwfr,Int_t *ips,Int_t *ipv,Int_t *nv,Int_t *flag,
                                   Int_t &ncmpa)
{
// Help routine for pivoting setup

   Int_t i,ie,ip,j,je,jp,jp1,jp2,js,kdummy,ln,lwfr,me,minjs,ml,ms;

   for (i = 1; i < n+1; i++) {
      flag[i] = 0;
      nv[i] = 0;
      j = ips[i];
      ipv[j] = i;
   }

   ncmpa = 0;
   for (ml = 1; ml < n+1; ml++) {
      ms = ipv[ml];
      me = ms;
      flag[ms] = me;
      ip = iwfr;
      minjs = n;
      ie = me;

      for (kdummy = 1; kdummy < n+1; kdummy++) {
         jp = ipe[ie];
         ln = 0;
         if (jp > 0) {
            ln = iw[jp];
            for (jp1 = 1; jp1 < ln+1; jp1++) {
               jp = jp+1;
               js = iw[jp];
               if (flag[js] == me) continue;
               flag[js] = me;
               if (iwfr >= lw) {
                  ipe[ie] = jp;
                  iw[jp] = ln-jp1;
                  InitPivot_sub2a(n,ipe,iw,ip-1,lwfr,ncmpa);
                  jp2 = iwfr-1;
                  iwfr = lwfr;
                  if (ip <= jp2)  {
                     for (jp = ip; jp < jp2+1; jp++) {
                        iw[iwfr] = iw[jp];
                        iwfr = iwfr+1;
                     }
                  }
                  ip = lwfr;
                  jp = ipe[ie];
               }
               iw[iwfr] = js;
               minjs = TMath::Min(minjs,ips[js]+0);
               iwfr = iwfr+1;
            }
         }
         ipe[ie] = -me;
         je = nv[ie];
         nv[ie] = ln+1;
         ie = je;
         if (ie == 0) break;
      }

      if (iwfr <= ip) {
         ipe[me] = 0;
         nv[me] = 1;
      } else {
         minjs = ipv[minjs];
         nv[me] = nv[minjs];
         nv[minjs] = me;
         iw[iwfr] = iw[ip];
         iw[ip] = iwfr-ip;
         ipe[me] = ip;
         iwfr = iwfr+1;
      }
   }
}

//______________________________________________________________________________
void TDecompSparse::InitPivot_sub5(const Int_t n,Int_t *ipe,Int_t *nv,Int_t *ips,Int_t *ne,
                                   Int_t *na,Int_t *nd,Int_t &nsteps,const Int_t nemin)
{
// Help routine for pivoting setup

   Int_t i,ib,iff,il,is,ison,k,l,nr;

   il = 0;
   for (i = 1; i < n+1; i++) {
      ips[i] = 0;
      ne[i] = 0;
   }
   for (i = 1; i < n+1; i++) {
      if (nv[i] > 0) continue;
      iff = -ipe[i];
      is = -ips[iff];
      if (is > 0) ipe[i] = is;
      ips[iff] = -i;
   }

   nr = n+1;
   for (i = 1; i < n+1; i++) {
      if (nv[i] <= 0) continue;
      iff = -ipe[i];
      if (iff != 0) {
         is = -ips[iff];
         if (is > 0)
            ipe[i] = is;
         ips[iff] = -i;
      } else {
         nr = nr-1;
         ne[nr] = i;
      }
   }

   is = 1;
   i = 0;
   for (k = 1; k < n+1; k++) {
      if (i <= 0) {
         i = ne[nr];
         ne[nr] = 0;
         nr = nr+1;
         il = n;
         na[n] = 0;
      }
      for (l = 1; l < n+1; l++) {
         if (ips[i] >= 0) break;
         ison = -ips[i];
         ips[i] = 0;
         i = ison;
         il = il-1;
         na[il] = 0;
      }

      ips[i] = k;
      ne[is] = ne[is]+1;
      if (nv[i] > 0) {
         if (il < n) na[il+1] = na[il+1]+1;
         na[is] = na[il];
         nd[is] = nv[i];

         Bool_t doit = (na[is] == 1 && (nd[is-1]-ne[is-1] == nd[is])) ||
                       (na[is] != 1 && ne[is] < nemin && na[is] != 0 && ne[is-1] < nemin);

         if (doit) {
            na[is-1] = na[is-1]+na[is]-1;
            nd[is-1] = nd[is]+ne[is-1];
            ne[is-1] = ne[is]+ne[is-1];
            ne[is] = 0;
         } else {
            is = is+1;
         }
      }

      ib = ipe[i];
      if (ib >= 0) {
         if (ib > 0)
            na[il] = 0;
         i = ib;
      } else {
         i = -ib;
         il = il+1;
      }
   }

   nsteps = is-1;
}

//______________________________________________________________________________
void TDecompSparse::InitPivot_sub6(const Int_t n,const Int_t nz,Int_t *irn,Int_t *icn,
                                   Int_t *perm,Int_t *na,Int_t *ne,Int_t *nd,const Int_t nsteps,
                                   Int_t *lstki,Int_t *lstkr,Int_t *iw,Int_t *info,Double_t &ops)
{
// Help routine for pivoting setup

   Int_t i,inew,iold,iorg,irow,istki,istkr,itop,itree,jold,jorg,k,lstk,nassr,nelim,nfr,nstk,
         numorg,nz1,nz2,nrladu,niradu,nirtot,nrltot,nirnec,nrlnec;
   Double_t delim;

   if (nz != 0 && irn[1] == iw[1]) {
      irn[1] = iw[1]-1;
      nz2 = 0;
      for (iold = 1; iold < n+1; iold++) {
         inew = perm[iold];
         lstki[inew] = lstkr[iold]+1;
         nz2 = nz2+lstkr[iold];
      }
      nz1 = nz2/2+n;
      nz2 = nz2+n;
   } else {
      for (i = 1; i < n+1; i++)
         lstki[i] = 1;
      nz1 = n;
      if (nz != 0) {
         for (i = 1; i < nz+1; i++) {
            iold = irn[i];
            jold = icn[i];
            if (iold < 1 || iold > n) continue;
            if (jold < 1 || jold > n) continue;
            if (iold == jold) continue;
            nz1 = nz1+1;
            irow = TMath::Min(perm[iold]+0,perm[jold]+0);
            lstki[irow] = lstki[irow]+1;
         }
      }
      nz2 = nz1;
   }

   ops = 0.0;
   istki = 0;
   istkr = 0;
   nrladu = 0;
   niradu = 1;
   nirtot = nz1;
   nrltot = nz1;
   nirnec = nz2;
   nrlnec = nz2;
   numorg = 0;
   itop = 0;
   for (itree = 1; itree < nsteps+1; itree++) {
      nelim = ne[itree];
      delim = Double_t(nelim);
      nfr = nd[itree];
      nstk = na[itree];
      nassr = nfr*(nfr+1)/2;
      if (nstk != 0) nassr = nassr-lstkr[itop]+1;
      nrltot = TMath::Max(nrltot,nrladu+nassr+istkr+nz1);
      nirtot = TMath::Max(nirtot,niradu+nfr+2+istki+nz1);
      nrlnec = TMath::Max(nrlnec,nrladu+nassr+istkr+nz2);
      nirnec = TMath::Max(nirnec,niradu+nfr+2+istki+nz2);
      for (iorg = 1; iorg < nelim+1; iorg++) {
         jorg = numorg+iorg;
         nz2 = nz2-lstki[jorg];
      }
      numorg = numorg+nelim;
      if (nstk > 0) {
         for (k = 1; k < nstk+1; k++) {
            lstk = lstkr[itop];
            istkr = istkr-lstk;
            lstk = lstki[itop];
            istki = istki-lstk;
            itop = itop-1;
         }
      }
      nrladu = nrladu+(nelim* (2*nfr-nelim+1))/2;
      niradu = niradu+2+nfr;
      if (nelim == 1) niradu = niradu-1;
      ops = ops+((nfr*delim*(nfr+1)-(2*nfr+1)*delim*(delim+1)/2+delim*(delim+1)*(2*delim+1)/6)/2);
      if (itree == nsteps || nfr == nelim) continue;
      itop = itop+1;
      lstkr[itop] = (nfr-nelim)* (nfr-nelim+1)/2;
      lstki[itop] = nfr-nelim+1;
      istki = istki+lstki[itop];
      istkr = istkr+lstkr[itop];
      nirtot = TMath::Max(nirtot,niradu+istki+nz1);
      nirnec = TMath::Max(nirnec,niradu+istki+nz2);
   }

   nrlnec = TMath::Max(nrlnec,n+TMath::Max(nz,nz1));
   nrltot = TMath::Max(nrltot,n+TMath::Max(nz,nz1));
   nrlnec = TMath::Min(nrlnec,nrltot);
   nirnec = TMath::Max(nz,nirnec);
   nirtot = TMath::Max(nz,nirtot);
   nirnec = TMath::Min(nirnec,nirtot);
   info[3] = nrltot;
   info[4] = nirtot;
   info[5] = nrlnec;
   info[6] = nirnec;
   info[7] = nrladu;
   info[8] = niradu;
}

//______________________________________________________________________________
void TDecompSparse::Factor_sub1(const Int_t n,const Int_t nz,Int_t &nz1,Double_t *a,
                                const Int_t la,Int_t *irn,Int_t *icn,Int_t *iw,const Int_t liw,
                                Int_t *perm,Int_t *iw2,Int_t *icntl,Int_t *info)
{
// Help routine for factorization

   Int_t i,ia,ich,ii,iiw,inew,iold,ipos,j1,j2,jj,jnew,jold,jpos,k;
   Double_t anext,anow;

   const Double_t zero = 0.0;
   info[1] = 0;
   ia = la;
   for (iold = 1; iold < n+1; iold++) {
      iw2[iold] = 1;
      a[ia] = zero;
      ia = ia-1;
   }

   info[2] = 0;
   nz1 = n;
   if (nz != 0) {
      for (k = 1; k < nz+1; k++) {
         iold = irn[k];
         jold = icn[k];
         Bool_t outRange = (iold < 1 || iold > n || jold < 1 || jold > n);

         inew = perm[iold];
         jnew = perm[jold];

         if (!outRange && inew == jnew) {
            ia = la-n+iold;
            a[ia] = a[ia]+a[k];
            iw[k] = 0;
         } else {
            if (!outRange) {
               inew = TMath::Min(inew,jnew);
               iw2[inew] = iw2[inew]+1;
               iw[k] = -iold;
               nz1 = nz1+1;
            } else {
               info[1] = 1;
               info[2] = info[2]+1;
               if (info[2] <= 1 && icntl[2] > 0)
                  ::Warning("TDecompSparse::Factor_sub1","info[1]= %d; %d 'th non-zero (in row %d and column %d) ignored",
                            info[1],k,irn[k],icn[k]);
               iw[k] = 0;
            }
         }
      }
   }

   if (nz >= nz1 || nz1 == n) {
      k = 1;
      for (i = 1; i < n+1; i++) {
         k = k+iw2[i];
         iw2[i] = k;
      }
   } else {
      k = 1;
      for (i = 1; i < n+1; i++) {
         k = k+iw2[i]-1;
         iw2[i] = k;
      }
   }

   if (nz1 > liw) {
      info[1] = -3;
      info[2] = nz1;
      return;
   }

   if (nz1+n > la) {
      info[1] = -4;
      info[2] = nz1+n;
      return;
   }

   if (nz1 != n) {
      for (k = 1; k < nz+1; k++) {
         iold = -iw[k];
         if (iold <= 0) continue;
         jold = icn[k];
         anow = a[k];
         iw[k] = 0;
         for (ich = 1; ich < nz+1; ich++) {
            inew = perm[iold];
            jnew = perm[jold];
            inew = TMath::Min(inew,jnew);
            if (inew == perm[jold]) jold = iold;
            jpos = iw2[inew]-1;
            iold = -iw[jpos];
            anext = a[jpos];
            a[jpos] = anow;
            iw[jpos] = jold;
            iw2[inew] = jpos;
            if (iold == 0) break;
            anow = anext;
            jold = icn[jpos];
         }
      }

      if (nz < nz1) {
         ipos = nz1;
         jpos = nz1-n;
         for (ii = 1; ii < n+1; ii++) {
            i = n-ii+1;
            j1 = iw2[i];
            j2 = jpos;
            if (j1 <= jpos) {
               for (jj = j1; jj < j2+1; jj++) {
                  iw[ipos] = iw[jpos];
                  a[ipos] = a[jpos];
                  ipos = ipos-1;
                  jpos = jpos-1;
               }
            }
            iw2[i] = ipos+1;
            ipos = ipos-1;
         }
      }
   }

   for (iold = 1; iold < n+1; iold++) {
      inew = perm[iold];
      jpos = iw2[inew]-1;
      ia = la-n+iold;
      a[jpos] = a[ia];
      iw[jpos] = -iold;
   }
   ipos = nz1;
   ia = la;
   iiw = liw;
   for (i = 1; i < nz1+1; i++) {
      a[ia] = a[ipos];
      iw[iiw] = iw[ipos];
      ipos = ipos-1;
      ia = ia-1;
      iiw = iiw-1;
   }
}

//______________________________________________________________________________
void TDecompSparse::Factor_sub2(const Int_t n,const Int_t nz,Double_t *a,const Int_t la,
                                Int_t *iw,const Int_t liw,Int_t *perm,Int_t *nstk,
                                const Int_t nsteps,Int_t &maxfrt,Int_t *nelim,Int_t *iw2,
                                Int_t *icntl,Double_t *cntl,Int_t *info)
{
// Help routine for factorization

   Double_t amax,amult,amult1,amult2,detpiv,rmax,swop,thresh,tmax,uu;
   Int_t ainput,apos,apos1,apos2,apos3,astk,astk2,azero,i,iass;
   Int_t ibeg,idummy,iell,iend,iexch,ifr,iinput,ioldps,iorg,ipiv;
   Int_t ipmnp,ipos,irow,isnpiv,istk,istk2,iswop,iwpos,j,j1;
   Int_t j2,jcol,jdummy,jfirst,jj,jj1,jjj,jlast,jmax,jmxmip,jnew;
   Int_t jnext,jpiv,jpos,k,k1,k2,kdummy,kk,kmax,krow,laell,lapos2;
   Int_t liell,lnass,lnpiv,lt,ltopst,nass,nblk,newel,nfront,npiv;
   Int_t npivp1,ntotpv,numass,numorg,numstk,pivsiz,posfac,pospv1,pospv2;
   Int_t ntwo,neig,ncmpbi,ncmpbr,nrlbdu,nirbdu;

   const Double_t zero = 0.0;
   const Double_t half = 0.5;
   const Double_t one  = 1.0;

   detpiv = 0.0;
   apos3  = 0;
   isnpiv = 0;
   jmax   = 0;
   jpos   = 0;

   nblk = 0;
   ntwo = 0;
   neig = 0;
   ncmpbi = 0;
   ncmpbr = 0;
   maxfrt = 0;
   nrlbdu = 0;
   nirbdu = 0;
   uu = TMath::Min(cntl[1],half);
   uu = TMath::Max(uu,-half);
   for (i = 1; i < n+1; i++)
      iw2[i] = 0;
   iwpos = 2;
   posfac = 1;
   istk = liw-nz+1;
   istk2 = istk-1;
   astk = la-nz+1;
   astk2 = astk-1;
   iinput = istk;
   ainput = astk;
   azero = 0;
   ntotpv = 0;
   numass = 0;

   for (iass = 1; iass < nsteps+1; iass++) {
      nass = nelim[iass];
      newel = iwpos+1;
      jfirst = n+1;
      nfront = 0;
      numstk = nstk[iass];
      ltopst = 1;
      lnass = 0;
      if (numstk != 0) {
         j2 = istk-1;
         lnass = nass;
         ltopst = ((iw[istk]+1)*iw[istk])/2;
         for (iell = 1; iell < numstk+1; iell++) {
            jnext = jfirst;
            jlast = n+1;
            j1 = j2+2;
            j2 = j1-1+iw[j1-1];
            for (jj = j1; jj < j2+1; jj++) {
               j = iw[jj];
               if (iw2[j] > 0) continue;
               jnew = perm[j];
               if (jnew <= numass) nass = nass+1;
               for (idummy = 1; idummy < n+1; idummy++) {
                  if (jnext == n+1) break;
                  if (perm[jnext] > jnew) break;
                  jlast = jnext;
                  jnext = iw2[jlast];
               }
               if (jlast == n+1)
                  jfirst = j;
               else
                  iw2[jlast] = j;
               iw2[j] = jnext;
               jlast = j;
               nfront = nfront+1;
            }
         }
         lnass = nass-lnass;
      }

      numorg = nelim[iass];
      j1 = iinput;
      for (iorg = 1; iorg < numorg+1; iorg++) {
         j = -iw[j1];
         for (idummy = 1; idummy < liw+1; idummy++) {
            jnew = perm[j];
            if (iw2[j] <= 0) {
               jlast = n+1;
               jnext = jfirst;
               for (jdummy = 1; jdummy < n+1; jdummy++) {
                  if (jnext == n+1) break;
                  if (perm[jnext] > jnew) break;
                  jlast = jnext;
                  jnext = iw2[jlast];
               }
               if (jlast == n+1)
                  jfirst = j;
               else
                  iw2[jlast] = j;
               iw2[j] = jnext;
               nfront = nfront+1;
            }
            j1 = j1+1;
            if (j1 > liw) break;
            j = iw[j1];
            if (j < 0) break;
         }
      }

      if (newel+nfront >= istk)
         Factor_sub3(a,iw,istk,istk2,iinput,2,ncmpbr,ncmpbi);
      if (newel+nfront >= istk) {
         info[1] = -3;
         info[2] = liw+1+newel+nfront-istk;
         goto finish;
      }

      j = jfirst;
      for (ifr = 1; ifr < nfront+1; ifr++) {
         newel = newel+1;
         iw[newel] = j;
         jnext = iw2[j];
         iw2[j] = newel-(iwpos+1);
         j = jnext;
      }

      maxfrt = TMath::Max(maxfrt,nfront);
      iw[iwpos] = nfront;
      laell = ((nfront+1)*nfront)/2;
      apos2 = posfac+laell-1;
      if (numstk != 0) lnass = lnass*(2*nfront-lnass+1)/2;

      if (posfac+lnass-1 >= astk || apos2 >= astk+ltopst-1) {
         Factor_sub3(a,iw,astk,astk2,ainput,1,ncmpbr,ncmpbi);
         if (posfac+lnass-1 >= astk || apos2 >= astk+ltopst-1) {
            info[1] = -4;
            info[2] = la+TMath::Max(posfac+lnass,apos2-ltopst+2)-astk;
            goto finish;
         }
      }

      if (apos2 > azero) {
         apos = azero+1;
         lapos2 = TMath::Min(apos2,astk-1);
         if (lapos2 >= apos) {
            for (k= apos; k< lapos2+1; k++)
            a[k] = zero;
         }
         azero = apos2;
      }

      if (numstk != 0) {
         for (iell = 1; iell < numstk+1; iell++) {
            j1 = istk+1;
            j2 = istk+iw[istk];
            for (jj = j1; jj < j2+1; jj++) {
               irow = iw[jj];
               irow = iw2[irow];
               apos = posfac+IDiag(nfront,irow);
               for (jjj = jj; jjj < j2+1; jjj++) {
                  j = iw[jjj];
                  apos2 = apos+iw2[j]-irow;
                  a[apos2] = a[apos2]+a[astk];
                  a[astk] = zero;
                  astk = astk+1;
               }
            }
            istk = j2+1;
         }
      }

      for (iorg = 1; iorg < numorg+1; iorg++) {
         j = -iw[iinput];
         irow = iw2[j];
         apos = posfac+IDiag(nfront,irow);
         for (idummy = 1; idummy < nz+1; idummy++) {
            apos2 = apos+iw2[j]-irow;
            a[apos2] = a[apos2]+a[ainput];
            ainput = ainput+1;
            iinput = iinput+1;
            if (iinput > liw) break;
            j = iw[iinput];
            if (j < 0) break;
         }
      }
      numass = numass+numorg;
      j1 = iwpos+2;
      j2 = iwpos+nfront+1;
      for (k = j1; k < j2+1; k++) {
         j = iw[k];
         iw2[j] = 0;
      }

      lnpiv = -1;
      npiv = 0;
      for (kdummy = 1; kdummy < nass+1; kdummy++) {
         if (npiv == nass) break;
         if (npiv == lnpiv) break;
         lnpiv = npiv;
         npivp1 = npiv+1;
         jpiv = 1;
         for (ipiv = npivp1; ipiv < nass+1; ipiv++) {
            jpiv = jpiv-1;
            if (jpiv == 1) continue;
            apos = posfac+IDiag(nfront-npiv,ipiv-npiv);

            if (uu <= zero) {
               if (TMath::Abs(a[apos]) <= cntl[3]) {
                  info[1] = -5;
                  info[2] = ntotpv+1;
                  goto finish;
               }
               if (ntotpv <=  0) {
                  if (a[apos] > zero) isnpiv = 1;
                  if (a[apos] < zero) isnpiv = -1;
               }
               if ((a[apos] <= zero || isnpiv !=  1) && (a[apos] >= zero || isnpiv != -1)) {
                  if (info[1] != 2) info[2] = 0;
                  info[2] = info[2]+1;
                  info[1] = 2;
                  i = ntotpv+1;
                  if (icntl[2] > 0 && info[2] <= 10)
                     ::Warning("TDecompSparse::Factor_sub2","info[1]= %d; pivot %d has different sign from the previous one",
                               info[1],i);
                  isnpiv = -isnpiv;
               }
               if ((a[apos] > zero && isnpiv ==  1) || (a[apos] < zero && isnpiv == -1) || (uu == zero)) goto hack;
               info[1] = -6;
               info[2] = ntotpv+1;
               goto finish;
            }

            amax = zero;
            tmax = amax;
            j1 = apos+1;
            j2 = apos+nass-ipiv;
            if (j2 >= j1) {
               for (jj = j1; jj < j2+1; jj++) {
                  if (TMath::Abs(a[jj]) <= amax) continue;
                  jmax = ipiv+jj-j1+1;
                  amax = TMath::Abs(a[jj]);
               }
            }
            j1 = j2+1;
            j2 = apos+nfront-ipiv;
            if (j2 >= j1) {
               for (jj = j1; jj < j2+1; jj++)
                  tmax = TMath::Max(TMath::Abs(a[jj]),tmax);
            }
            rmax = TMath::Max(tmax,amax);
            apos1 = apos;
            kk = nfront-ipiv;
            lt = ipiv-(npiv+1);
            if (lt != 0) {
               for (k = 1; k < lt+1; k++) {
                  kk = kk+1;
                  apos1 = apos1-kk;
                  rmax = TMath::Max(rmax,TMath::Abs(a[apos1]));
               }
            }
            if (TMath::Abs(a[apos]) <= TMath::Max(cntl[3],uu*rmax)) {
               if (TMath::Abs(amax) <= cntl[3]) continue;
               apos2 = posfac+IDiag(nfront-npiv,jmax-npiv);
               detpiv = a[apos]*a[apos2]-amax*amax;
               thresh = TMath::Abs(detpiv);
               thresh = thresh/(uu*TMath::Max(TMath::Abs(a[apos])+amax,TMath::Abs(a[apos2])+amax));
               if (thresh <= rmax) continue;
               rmax = zero;
               j1 = apos2+1;
               j2 = apos2+nfront-jmax;
               if (j2 >= j1) {
                  for (jj = j1; jj < j2+1; jj++)
                     rmax = TMath::Max(rmax,TMath::Abs(a[jj]));
               }
               kk = nfront-jmax+1;
               apos3 = apos2;
               jmxmip = jmax-ipiv-1;
               if (jmxmip != 0) {
                  for (k = 1; k < jmxmip+1; k++) {
                     apos2 = apos2-kk;
                     kk = kk+1;
                     rmax = TMath::Max(rmax,TMath::Abs(a[apos2]));
                  }
               }
               ipmnp = ipiv-npiv-1;
               if (ipmnp != 0) {
                  apos2 = apos2-kk;
                  kk = kk+1;
                  for (k = 1; k < ipmnp+1; k++) {
                     apos2 = apos2-kk;
                     kk = kk+1;
                     rmax = TMath::Max(rmax,TMath::Abs(a[apos2]));
                  }
               }
               if (thresh <= rmax) continue;
               pivsiz = 2;
            } else {
               pivsiz = 1;
            }

            irow = ipiv-npiv;
            for (krow = 1; krow < pivsiz+1; krow++) {
               if (irow != 1) {
                  j1 = posfac+irow;
                  j2 = posfac+nfront-(npiv+1);
                  if (j2 >= j1) {
                     apos2 = apos+1;
                     for (jj = j1; jj < j2+1; jj++) {
                        swop = a[apos2];
                        a[apos2] = a[jj];
                        a[jj] = swop;
                        apos2 = apos2+1;
                     }
                  }
                  j1 = posfac+1;
                  j2 = posfac+irow-2;
                  apos2 = apos;
                  kk = nfront-(irow+npiv);
                  if (j2 >= j1) {
                     for (jjj = j1; jjj < j2+1; jjj++) {
                        jj = j2-jjj+j1;
                        kk = kk+1;
                        apos2 = apos2-kk;
                        swop = a[apos2];
                        a[apos2] = a[jj];
                        a[jj] = swop;
                     }
                  }
                  if (npiv != 0) {
                     apos1 = posfac;
                     kk = kk+1;
                     apos2 = apos2-kk;
                     for (jj = 1; jj < npiv+1; jj++) {
                        kk = kk+1;
                        apos1 = apos1-kk;
                        apos2 = apos2-kk;
                        swop = a[apos2];
                        a[apos2] = a[apos1];
                        a[apos1] = swop;
                     }
                  }
                  swop = a[apos];
                  a[apos] = a[posfac];
                  a[posfac] = swop;
                  ipos = iwpos+npiv+2;
                  iexch = iwpos+irow+npiv+1;
                  iswop = iw[ipos];
                  iw[ipos] = iw[iexch];
                  iw[iexch] = iswop;
               }
               if (pivsiz == 1) continue;
               if (krow != 2)  {
                  irow = jmax-(npiv+1);
                  jpos = posfac;
                  posfac = posfac+nfront-npiv;
                  npiv = npiv+1;
                  apos = apos3;
               } else {
                  npiv = npiv-1;
                  posfac = jpos;
               }
            }

            if (pivsiz != 2) {
hack:
               a[posfac] = one/a[posfac];
               if (a[posfac] < zero) neig = neig+1;
               j1 = posfac+1;
               j2 = posfac+nfront-(npiv+1);
               if (j2 >= j1) {
                  ibeg = j2+1;
                  for (jj = j1; jj < j2+1; jj++) {
                     amult = -a[jj]*a[posfac];
                     iend = ibeg+nfront-(npiv+jj-j1+2);
                     for (irow = ibeg; irow < iend+1; irow++) {
                        jcol = jj+irow-ibeg;
                        a[irow] = a[irow]+amult*a[jcol];
                     }
                     ibeg = iend+1;
                     a[jj] = amult;
                  }
               }
               npiv = npiv+1;
               ntotpv = ntotpv+1;
               jpiv = 1;
               posfac = posfac+nfront-npiv+1;
            } else {
               ipos = iwpos+npiv+2;
               ntwo = ntwo+1;
               iw[ipos] = -iw[ipos];
               pospv1 = posfac;
               pospv2 = posfac+nfront-npiv;
               swop = a[pospv2];
               if (detpiv < zero) neig = neig+1;
               if (detpiv > zero && swop < zero) neig = neig+2;
               a[pospv2] = a[pospv1]/detpiv;
               a[pospv1] = swop/detpiv;
               a[pospv1+1] = -a[pospv1+1]/detpiv;
               j1 = pospv1+2;
               j2 = pospv1+nfront-(npiv+1);
               if (j2 >= j1) {
                  jj1 = pospv2;
                  ibeg = pospv2+nfront-(npiv+1);
                  for (jj = j1; jj < j2+1; jj++) {
                     jj1 = jj1+1;
                     amult1 =-(a[pospv1]*a[jj]+a[pospv1+1]*a[jj1]);
                     amult2 =-(a[pospv1+1]*a[jj]+a[pospv2]*a[jj1]);
                     iend = ibeg+nfront-(npiv+jj-j1+3);
                     for (irow = ibeg; irow < iend+1; irow++) {
                        k1 = jj+irow-ibeg;
                        k2 = jj1+irow-ibeg;
                        a[irow] = a[irow]+amult1*a[k1]+amult2*a[k2];
                     }
                     ibeg = iend+1;
                     a[jj] = amult1;
                     a[jj1] = amult2;
                  }
               }
               npiv = npiv+2;
               ntotpv = ntotpv+2;
               jpiv = 2;
               posfac = pospv2+nfront-npiv+1;
            }
         }
      }

      if (npiv != 0) nblk = nblk+1;
      ioldps = iwpos;
      iwpos = iwpos+nfront+2;
      if (npiv != 0) {
         if (npiv <= 1) {
            iw[ioldps] = -iw[ioldps];
            for (k = 1; k < nfront+1; k++) {
               j1 = ioldps+k;
               iw[j1] = iw[j1+1];
            }
            iwpos = iwpos-1;
         } else {
            iw[ioldps+1] = npiv;
         }
      }
      liell = nfront-npiv;

      if (liell != 0 && iass != nsteps) {
         if (iwpos+liell >= istk)
            Factor_sub3(a,iw,istk,istk2,iinput,2,ncmpbr,ncmpbi);
         istk = istk-liell-1;
         iw[istk] = liell;
         j1 = istk;
         kk = iwpos-liell-1;
         for (k = 1; k < liell+1; k++) {
            j1 = j1+1;
            kk = kk+1;
            iw[j1] = iw[kk];
         }
         laell = ((liell+1)*liell)/2;
         kk = posfac+laell;
         if (kk == astk) {
            astk = astk-laell;
         } else {
            kmax = kk-1;
            for (k = 1; k < laell+1; k++) {
               kk = kk-1;
               astk = astk-1;
               a[astk] = a[kk];
            }
            kmax = TMath::Min(kmax,astk-1);
            for ( k = kk; k < kmax+1; k++)
               a[k] = zero;
         }
         azero = TMath::Min(azero,astk-1);
      }
      if (npiv == 0) iwpos = ioldps;
   }

   iw[1] = nblk;
   if (ntwo > 0) iw[1] = -nblk;
   nrlbdu = posfac-1;
   nirbdu = iwpos-1;

   if (ntotpv != n) {
      info[1] = 3;
      info[2] = ntotpv;
   }

finish:
   info[9]  = nrlbdu;
   info[10] = nirbdu;
   info[12] = ncmpbr;
   info[13] = ncmpbi;
   info[14] = ntwo;
   info[15] = neig;
}

//______________________________________________________________________________
void TDecompSparse::Factor_sub3(Double_t *a,Int_t *iw,Int_t &j1,Int_t &j2,const Int_t itop,
                                const Int_t ireal,Int_t &ncmpbr,Int_t &ncmpbi)
{
// Help routine for factorization

   Int_t ipos,jj,jjj;

   ipos = itop-1;
   if (j2 != ipos) {
      if (ireal != 2) {
         ncmpbr = ncmpbr+1;
         if (j1 <= j2) {
            for (jjj = j1; jjj < j2+1; jjj++) {
               jj = j2-jjj+j1;
               a[ipos] = a[jj];
               ipos = ipos-1;
            }
         }
      } else {
         ncmpbi = ncmpbi+1;
         if (j1 <= j2) {
            for (jjj = j1; jjj < j2+1; jjj++) {
               jj = j2-jjj+j1;
               iw[ipos] = iw[jj];
               ipos = ipos-1;
            }
         }
      }
      j2 = itop-1;
      j1 = ipos+1;
   }
}

//______________________________________________________________________________
void TDecompSparse::Solve_sub1(const Int_t n,Double_t *a,Int_t *iw,Double_t *w,
                               Double_t *rhs,Int_t *iw2,const Int_t nblk,Int_t &latop,
                               Int_t *icntl)
{
// Help routine for solving

   Int_t apos,iblk,ifr,ilvl,ipiv,ipos,irhs,irow,ist,j,j1=0,j2,j3,jj,jpiv,k,k1,k2,k3,liell,npiv;
   Double_t w1,w2;

   const Int_t ifrlvl = 5;

   apos = 1;
   ipos = 1;
   j2 = 0;
   iblk = 0;
   npiv = 0;
   for (irow = 1; irow < n+1; irow++) {
      if (npiv <= 0) {
         iblk = iblk+1;
         if (iblk > nblk) break;
         ipos = j2+1;
         iw2[iblk] = ipos;
         liell = -iw[ipos];
         npiv = 1;
         if (liell <= 0)  {
            liell = -liell;
            ipos = ipos+1;
            npiv = iw[ipos];
         }
         j1 = ipos+1;
         j2 = ipos+liell;
         ilvl = TMath::Min(npiv,10);
         if (liell < icntl[ifrlvl+ilvl]) goto hack;
         ifr = 0;
         for (jj = j1; jj < j2+1; jj++) {
            j = TMath::Abs(iw[jj]+0);
            ifr = ifr+1;
            w[ifr] = rhs[j];
         }
         jpiv = 1;
         j3 = j1;

         for (ipiv = 1; ipiv < npiv+1; ipiv++) {
            jpiv = jpiv-1;
            if (jpiv == 1) continue;

            if (iw[j3] >= 0) {
               jpiv = 1;
               j3 = j3+1;
               apos = apos+1;
               ist = ipiv+1;
               if (liell< ist) continue;
               w1 = w[ipiv];
               k = apos;
               for (j = ist; j < liell+1; j++) {
                  w[j] = w[j]+a[k]*w1;
                  k = k+1;
               }
               apos = apos+liell-ist+1;
            } else {
               jpiv = 2;
               j3 = j3+2;
               apos = apos+2;
               ist = ipiv+2;
               if (liell >= ist) {
                  w1 = w[ipiv];
                  w2 = w[ipiv+1];
                  k1 = apos;
                  k2 = apos+liell-ipiv;
                  for (j = ist; j < liell+1; j++) {
                     w[j] = w[j]+w1*a[k1]+w2*a[k2];
                     k1 = k1+1;
                     k2 = k2+1;
                  }
               }
               apos = apos+2*(liell-ist+1)+1;
            }
         }

         ifr = 0;
         for (jj = j1; jj < j2+1; jj++) {
            j = TMath::Abs(iw[jj]+0);
            ifr = ifr+1;
            rhs[j] = w[ifr];
         }
         npiv = 0;
      } else {
hack:
         if (iw[j1] >= 0) {
            npiv = npiv-1;
            apos = apos+1;
            j1 = j1+1;
            if (j1 <= j2) {
               irhs = iw[j1-1];
               w1 = rhs[irhs];
               k = apos;
               for (j = j1; j < j2+1; j++) {
                  irhs = TMath::Abs(iw[j]+0);
                  rhs[irhs] = rhs[irhs]+a[k]*w1;
                  k = k+1;
               }
            }
            apos = apos+j2-j1+1;
         } else {
            npiv = npiv-2;
            j1 = j1+2;
            apos = apos+2;
            if (j1 <= j2) {
               irhs = -iw[j1-2];
               w1 = rhs[irhs];
               irhs = iw[j1-1];
               w2 = rhs[irhs];
               k1 = apos;
               k3 = apos+j2-j1+2;
               for (j = j1; j < j2+1; j++) {
                  irhs = TMath::Abs(iw[j]+0);
                  rhs[irhs] = rhs[irhs]+w1*a[k1]+w2*a[k3];
                  k1 = k1+1;
                  k3 = k3+1;
               }
            }
            apos = apos+2*(j2-j1+1)+1;
         }
      }
   }

   latop = apos-1;
}

//______________________________________________________________________________
void TDecompSparse::Solve_sub2(const Int_t n,Double_t *a,Int_t *iw,Double_t *w,
                               Double_t *rhs,Int_t *iw2,const Int_t nblk,
                               const Int_t latop,Int_t *icntl)
{
// Help routine for solving

   Int_t apos,apos2,i1rhs,i2rhs,iblk,ifr,iipiv,iirhs,ilvl,ipiv,ipos,irhs,ist,
         j,j1=0,j2=0,jj,jj1,jj2,jpiv,jpos=0,k,liell,loop,npiv;
   Double_t w1,w2;

   const Int_t ifrlvl = 5;

   apos = latop+1;
   npiv = 0;
   iblk = nblk+1;
   for (loop = 1; loop < n+1; loop++) {
      if (npiv <= 0) {
         iblk = iblk-1;
         if (iblk < 1) break;
         ipos = iw2[iblk];
         liell = -iw[ipos];
         npiv = 1;
         if (liell <= 0) {
            liell = -liell;
            ipos = ipos+1;
            npiv = iw[ipos];
         }
         jpos = ipos+npiv;
         j2 = ipos+liell;
         ilvl = TMath::Min(10,npiv)+10;
         if (liell < icntl[ifrlvl+ilvl]) goto hack;
         j1 = ipos+1;
         ifr = 0;
         for (jj = j1; jj < j2+1; jj++) {
            j = TMath::Abs(iw[jj]+0);
            ifr = ifr+1;
            w[ifr] = rhs[j];
         }
         jpiv = 1;
         for (iipiv = 1; iipiv < npiv+1; iipiv++) {
            jpiv = jpiv-1;
            if (jpiv == 1) continue;
            ipiv = npiv-iipiv+1;
            if (ipiv == 1 || iw[jpos-1] >= 0) {
               jpiv = 1;
               apos = apos-(liell+1-ipiv);
               ist = ipiv+1;
               w1 = w[ipiv]*a[apos];
               if (liell >= ist) {
                  jj1 = apos+1;
                  for (j = ist; j < liell+1; j++) {
                     w1 = w1+a[jj1]*w[j];
                     jj1 = jj1+1;
                  }
               }
               w[ipiv] = w1;
               jpos = jpos-1;
            } else {
               jpiv = 2;
               apos2 = apos-(liell+1-ipiv);
               apos = apos2-(liell+2-ipiv);
               ist = ipiv+1;
               w1 = w[ipiv-1]*a[apos]+w[ipiv]*a[apos+1];
               w2 = w[ipiv-1]*a[apos+1]+w[ipiv]*a[apos2];
               if (liell >= ist) {
                  jj1 = apos+2;
                  jj2 = apos2+1;
                  for (j = ist; j < liell+1; j++) {
                     w1 = w1+w[j]*a[jj1];
                     w2 = w2+w[j]*a[jj2];
                     jj1 = jj1+1;
                     jj2 = jj2+1;
                  }
               }
               w[ipiv-1] = w1;
               w[ipiv] = w2;
               jpos = jpos-2;
            }
         }
         ifr = 0;
         for (jj = j1; jj < j2+1; jj++) {
            j = TMath::Abs(iw[jj]+0);
            ifr = ifr+1;
            rhs[j] = w[ifr];
         }
         npiv = 0;
      } else {
hack:
         if (npiv == 1 || iw[jpos-1] >= 0) {
            npiv = npiv-1;
            apos = apos-(j2-jpos+1);
            iirhs = iw[jpos];
            w1 = rhs[iirhs]*a[apos];
            j1 = jpos+1;
            if (j1 <= j2) {
               k = apos+1;
               for (j = j1; j < j2+1; j++) {
                  irhs = TMath::Abs(iw[j]+0);
                  w1 = w1+a[k]*rhs[irhs];
                  k = k+1;
               }
            }
            rhs[iirhs] = w1;
            jpos = jpos-1;
         } else {
            npiv = npiv-2;
            apos2 = apos-(j2-jpos+1);
            apos = apos2-(j2-jpos+2);
            i1rhs = -iw[jpos-1];
            i2rhs = iw[jpos];
            w1 = rhs[i1rhs]*a[apos]+rhs[i2rhs]*a[apos+1];
            w2 = rhs[i1rhs]*a[apos+1]+rhs[i2rhs]*a[apos2];
            j1 = jpos+1;
            if (j1 <= j2) {
               jj1 = apos+2;
               jj2 = apos2+1;
               for (j = j1; j < j2+1; j++) {
                  irhs = TMath::Abs(iw[j]+0);
                  w1 = w1+rhs[irhs]*a[jj1];
                  w2 = w2+rhs[irhs]*a[jj2];
                  jj1 = jj1+1;
                  jj2 = jj2+1;
               }
            }
            rhs[i1rhs] = w1;
            rhs[i2rhs] = w2;
            jpos = jpos-2;
         }
      }
   }
}

//______________________________________________________________________________
void TDecompSparse::Print(Option_t *opt) const
{
// Print class members

   TDecompBase::Print(opt);

   printf("fPrecision  = %.3f\n",fPrecision);
   printf("fIPessimism = %.3f\n",fIPessimism);
   printf("fRPessimism = %.3f\n",fRPessimism);

   TMatrixDSparse fact(0,fNrows-1,0,fNrows-1,fNnonZeros,
                       (Int_t*)fRowFact.GetArray(),(Int_t*)fColFact.GetArray(),(Double_t*)fFact.GetArray());
   fact.Print("fFact");
}

//______________________________________________________________________________
TDecompSparse &TDecompSparse::operator=(const TDecompSparse &source)
{
// Assignment operator

   if (this != &source) {
      TDecompBase::operator=(source);
      memcpy(fIcntl,source.fIcntl,31*sizeof(Int_t));
      memcpy(fCntl,source.fCntl,6*sizeof(Double_t));
      memcpy(fInfo,source.fInfo,21*sizeof(Int_t));
      fVerbose    = source.fVerbose;
      fPrecision  = source.fPrecision;
      fIkeep      = source.fIkeep;
      fIw         = source.fIw;
      fIw1        = source.fIw1;
      fIw2        = source.fIw2;
      fNsteps     = source.fNsteps;
      fMaxfrt     = source.fMaxfrt;
      fW          = source.fW;
      fIPessimism = source.fIPessimism;
      fRPessimism = source.fRPessimism;
      if (fA.IsValid())
         fA.Use(*const_cast<TMatrixDSparse *>(&(source.fA)));
      fNrows      = source.fNrows;
      fNnonZeros  = source.fNnonZeros;
      fFact       = source.fFact;
      fRowFact    = source.fRowFact;
      fColFact    = source.fColFact;
   }
   return *this;
}
 TDecompSparse.cxx:1
 TDecompSparse.cxx:2
 TDecompSparse.cxx:3
 TDecompSparse.cxx:4
 TDecompSparse.cxx:5
 TDecompSparse.cxx:6
 TDecompSparse.cxx:7
 TDecompSparse.cxx:8
 TDecompSparse.cxx:9
 TDecompSparse.cxx:10
 TDecompSparse.cxx:11
 TDecompSparse.cxx:12
 TDecompSparse.cxx:13
 TDecompSparse.cxx:14
 TDecompSparse.cxx:15
 TDecompSparse.cxx:16
 TDecompSparse.cxx:17
 TDecompSparse.cxx:18
 TDecompSparse.cxx:19
 TDecompSparse.cxx:20
 TDecompSparse.cxx:21
 TDecompSparse.cxx:22
 TDecompSparse.cxx:23
 TDecompSparse.cxx:24
 TDecompSparse.cxx:25
 TDecompSparse.cxx:26
 TDecompSparse.cxx:27
 TDecompSparse.cxx:28
 TDecompSparse.cxx:29
 TDecompSparse.cxx:30
 TDecompSparse.cxx:31
 TDecompSparse.cxx:32
 TDecompSparse.cxx:33
 TDecompSparse.cxx:34
 TDecompSparse.cxx:35
 TDecompSparse.cxx:36
 TDecompSparse.cxx:37
 TDecompSparse.cxx:38
 TDecompSparse.cxx:39
 TDecompSparse.cxx:40
 TDecompSparse.cxx:41
 TDecompSparse.cxx:42
 TDecompSparse.cxx:43
 TDecompSparse.cxx:44
 TDecompSparse.cxx:45
 TDecompSparse.cxx:46
 TDecompSparse.cxx:47
 TDecompSparse.cxx:48
 TDecompSparse.cxx:49
 TDecompSparse.cxx:50
 TDecompSparse.cxx:51
 TDecompSparse.cxx:52
 TDecompSparse.cxx:53
 TDecompSparse.cxx:54
 TDecompSparse.cxx:55
 TDecompSparse.cxx:56
 TDecompSparse.cxx:57
 TDecompSparse.cxx:58
 TDecompSparse.cxx:59
 TDecompSparse.cxx:60
 TDecompSparse.cxx:61
 TDecompSparse.cxx:62
 TDecompSparse.cxx:63
 TDecompSparse.cxx:64
 TDecompSparse.cxx:65
 TDecompSparse.cxx:66
 TDecompSparse.cxx:67
 TDecompSparse.cxx:68
 TDecompSparse.cxx:69
 TDecompSparse.cxx:70
 TDecompSparse.cxx:71
 TDecompSparse.cxx:72
 TDecompSparse.cxx:73
 TDecompSparse.cxx:74
 TDecompSparse.cxx:75
 TDecompSparse.cxx:76
 TDecompSparse.cxx:77
 TDecompSparse.cxx:78
 TDecompSparse.cxx:79
 TDecompSparse.cxx:80
 TDecompSparse.cxx:81
 TDecompSparse.cxx:82
 TDecompSparse.cxx:83
 TDecompSparse.cxx:84
 TDecompSparse.cxx:85
 TDecompSparse.cxx:86
 TDecompSparse.cxx:87
 TDecompSparse.cxx:88
 TDecompSparse.cxx:89
 TDecompSparse.cxx:90
 TDecompSparse.cxx:91
 TDecompSparse.cxx:92
 TDecompSparse.cxx:93
 TDecompSparse.cxx:94
 TDecompSparse.cxx:95
 TDecompSparse.cxx:96
 TDecompSparse.cxx:97
 TDecompSparse.cxx:98
 TDecompSparse.cxx:99
 TDecompSparse.cxx:100
 TDecompSparse.cxx:101
 TDecompSparse.cxx:102
 TDecompSparse.cxx:103
 TDecompSparse.cxx:104
 TDecompSparse.cxx:105
 TDecompSparse.cxx:106
 TDecompSparse.cxx:107
 TDecompSparse.cxx:108
 TDecompSparse.cxx:109
 TDecompSparse.cxx:110
 TDecompSparse.cxx:111
 TDecompSparse.cxx:112
 TDecompSparse.cxx:113
 TDecompSparse.cxx:114
 TDecompSparse.cxx:115
 TDecompSparse.cxx:116
 TDecompSparse.cxx:117
 TDecompSparse.cxx:118
 TDecompSparse.cxx:119
 TDecompSparse.cxx:120
 TDecompSparse.cxx:121
 TDecompSparse.cxx:122
 TDecompSparse.cxx:123
 TDecompSparse.cxx:124
 TDecompSparse.cxx:125
 TDecompSparse.cxx:126
 TDecompSparse.cxx:127
 TDecompSparse.cxx:128
 TDecompSparse.cxx:129
 TDecompSparse.cxx:130
 TDecompSparse.cxx:131
 TDecompSparse.cxx:132
 TDecompSparse.cxx:133
 TDecompSparse.cxx:134
 TDecompSparse.cxx:135
 TDecompSparse.cxx:136
 TDecompSparse.cxx:137
 TDecompSparse.cxx:138
 TDecompSparse.cxx:139
 TDecompSparse.cxx:140
 TDecompSparse.cxx:141
 TDecompSparse.cxx:142
 TDecompSparse.cxx:143
 TDecompSparse.cxx:144
 TDecompSparse.cxx:145
 TDecompSparse.cxx:146
 TDecompSparse.cxx:147
 TDecompSparse.cxx:148
 TDecompSparse.cxx:149
 TDecompSparse.cxx:150
 TDecompSparse.cxx:151
 TDecompSparse.cxx:152
 TDecompSparse.cxx:153
 TDecompSparse.cxx:154
 TDecompSparse.cxx:155
 TDecompSparse.cxx:156
 TDecompSparse.cxx:157
 TDecompSparse.cxx:158
 TDecompSparse.cxx:159
 TDecompSparse.cxx:160
 TDecompSparse.cxx:161
 TDecompSparse.cxx:162
 TDecompSparse.cxx:163
 TDecompSparse.cxx:164
 TDecompSparse.cxx:165
 TDecompSparse.cxx:166
 TDecompSparse.cxx:167
 TDecompSparse.cxx:168
 TDecompSparse.cxx:169
 TDecompSparse.cxx:170
 TDecompSparse.cxx:171
 TDecompSparse.cxx:172
 TDecompSparse.cxx:173
 TDecompSparse.cxx:174
 TDecompSparse.cxx:175
 TDecompSparse.cxx:176
 TDecompSparse.cxx:177
 TDecompSparse.cxx:178
 TDecompSparse.cxx:179
 TDecompSparse.cxx:180
 TDecompSparse.cxx:181
 TDecompSparse.cxx:182
 TDecompSparse.cxx:183
 TDecompSparse.cxx:184
 TDecompSparse.cxx:185
 TDecompSparse.cxx:186
 TDecompSparse.cxx:187
 TDecompSparse.cxx:188
 TDecompSparse.cxx:189
 TDecompSparse.cxx:190
 TDecompSparse.cxx:191
 TDecompSparse.cxx:192
 TDecompSparse.cxx:193
 TDecompSparse.cxx:194
 TDecompSparse.cxx:195
 TDecompSparse.cxx:196
 TDecompSparse.cxx:197
 TDecompSparse.cxx:198
 TDecompSparse.cxx:199
 TDecompSparse.cxx:200
 TDecompSparse.cxx:201
 TDecompSparse.cxx:202
 TDecompSparse.cxx:203
 TDecompSparse.cxx:204
 TDecompSparse.cxx:205
 TDecompSparse.cxx:206
 TDecompSparse.cxx:207
 TDecompSparse.cxx:208
 TDecompSparse.cxx:209
 TDecompSparse.cxx:210
 TDecompSparse.cxx:211
 TDecompSparse.cxx:212
 TDecompSparse.cxx:213
 TDecompSparse.cxx:214
 TDecompSparse.cxx:215
 TDecompSparse.cxx:216
 TDecompSparse.cxx:217
 TDecompSparse.cxx:218
 TDecompSparse.cxx:219
 TDecompSparse.cxx:220
 TDecompSparse.cxx:221
 TDecompSparse.cxx:222
 TDecompSparse.cxx:223
 TDecompSparse.cxx:224
 TDecompSparse.cxx:225
 TDecompSparse.cxx:226
 TDecompSparse.cxx:227
 TDecompSparse.cxx:228
 TDecompSparse.cxx:229
 TDecompSparse.cxx:230
 TDecompSparse.cxx:231
 TDecompSparse.cxx:232
 TDecompSparse.cxx:233
 TDecompSparse.cxx:234
 TDecompSparse.cxx:235
 TDecompSparse.cxx:236
 TDecompSparse.cxx:237
 TDecompSparse.cxx:238
 TDecompSparse.cxx:239
 TDecompSparse.cxx:240
 TDecompSparse.cxx:241
 TDecompSparse.cxx:242
 TDecompSparse.cxx:243
 TDecompSparse.cxx:244
 TDecompSparse.cxx:245
 TDecompSparse.cxx:246
 TDecompSparse.cxx:247
 TDecompSparse.cxx:248
 TDecompSparse.cxx:249
 TDecompSparse.cxx:250
 TDecompSparse.cxx:251
 TDecompSparse.cxx:252
 TDecompSparse.cxx:253
 TDecompSparse.cxx:254
 TDecompSparse.cxx:255
 TDecompSparse.cxx:256
 TDecompSparse.cxx:257
 TDecompSparse.cxx:258
 TDecompSparse.cxx:259
 TDecompSparse.cxx:260
 TDecompSparse.cxx:261
 TDecompSparse.cxx:262
 TDecompSparse.cxx:263
 TDecompSparse.cxx:264
 TDecompSparse.cxx:265
 TDecompSparse.cxx:266
 TDecompSparse.cxx:267
 TDecompSparse.cxx:268
 TDecompSparse.cxx:269
 TDecompSparse.cxx:270
 TDecompSparse.cxx:271
 TDecompSparse.cxx:272
 TDecompSparse.cxx:273
 TDecompSparse.cxx:274
 TDecompSparse.cxx:275
 TDecompSparse.cxx:276
 TDecompSparse.cxx:277
 TDecompSparse.cxx:278
 TDecompSparse.cxx:279
 TDecompSparse.cxx:280
 TDecompSparse.cxx:281
 TDecompSparse.cxx:282
 TDecompSparse.cxx:283
 TDecompSparse.cxx:284
 TDecompSparse.cxx:285
 TDecompSparse.cxx:286
 TDecompSparse.cxx:287
 TDecompSparse.cxx:288
 TDecompSparse.cxx:289
 TDecompSparse.cxx:290
 TDecompSparse.cxx:291
 TDecompSparse.cxx:292
 TDecompSparse.cxx:293
 TDecompSparse.cxx:294
 TDecompSparse.cxx:295
 TDecompSparse.cxx:296
 TDecompSparse.cxx:297
 TDecompSparse.cxx:298
 TDecompSparse.cxx:299
 TDecompSparse.cxx:300
 TDecompSparse.cxx:301
 TDecompSparse.cxx:302
 TDecompSparse.cxx:303
 TDecompSparse.cxx:304
 TDecompSparse.cxx:305
 TDecompSparse.cxx:306
 TDecompSparse.cxx:307
 TDecompSparse.cxx:308
 TDecompSparse.cxx:309
 TDecompSparse.cxx:310
 TDecompSparse.cxx:311
 TDecompSparse.cxx:312
 TDecompSparse.cxx:313
 TDecompSparse.cxx:314
 TDecompSparse.cxx:315
 TDecompSparse.cxx:316
 TDecompSparse.cxx:317
 TDecompSparse.cxx:318
 TDecompSparse.cxx:319
 TDecompSparse.cxx:320
 TDecompSparse.cxx:321
 TDecompSparse.cxx:322
 TDecompSparse.cxx:323
 TDecompSparse.cxx:324
 TDecompSparse.cxx:325
 TDecompSparse.cxx:326
 TDecompSparse.cxx:327
 TDecompSparse.cxx:328
 TDecompSparse.cxx:329
 TDecompSparse.cxx:330
 TDecompSparse.cxx:331
 TDecompSparse.cxx:332
 TDecompSparse.cxx:333
 TDecompSparse.cxx:334
 TDecompSparse.cxx:335
 TDecompSparse.cxx:336
 TDecompSparse.cxx:337
 TDecompSparse.cxx:338
 TDecompSparse.cxx:339
 TDecompSparse.cxx:340
 TDecompSparse.cxx:341
 TDecompSparse.cxx:342
 TDecompSparse.cxx:343
 TDecompSparse.cxx:344
 TDecompSparse.cxx:345
 TDecompSparse.cxx:346
 TDecompSparse.cxx:347
 TDecompSparse.cxx:348
 TDecompSparse.cxx:349
 TDecompSparse.cxx:350
 TDecompSparse.cxx:351
 TDecompSparse.cxx:352
 TDecompSparse.cxx:353
 TDecompSparse.cxx:354
 TDecompSparse.cxx:355
 TDecompSparse.cxx:356
 TDecompSparse.cxx:357
 TDecompSparse.cxx:358
 TDecompSparse.cxx:359
 TDecompSparse.cxx:360
 TDecompSparse.cxx:361
 TDecompSparse.cxx:362
 TDecompSparse.cxx:363
 TDecompSparse.cxx:364
 TDecompSparse.cxx:365
 TDecompSparse.cxx:366
 TDecompSparse.cxx:367
 TDecompSparse.cxx:368
 TDecompSparse.cxx:369
 TDecompSparse.cxx:370
 TDecompSparse.cxx:371
 TDecompSparse.cxx:372
 TDecompSparse.cxx:373
 TDecompSparse.cxx:374
 TDecompSparse.cxx:375
 TDecompSparse.cxx:376
 TDecompSparse.cxx:377
 TDecompSparse.cxx:378
 TDecompSparse.cxx:379
 TDecompSparse.cxx:380
 TDecompSparse.cxx:381
 TDecompSparse.cxx:382
 TDecompSparse.cxx:383
 TDecompSparse.cxx:384
 TDecompSparse.cxx:385
 TDecompSparse.cxx:386
 TDecompSparse.cxx:387
 TDecompSparse.cxx:388
 TDecompSparse.cxx:389
 TDecompSparse.cxx:390
 TDecompSparse.cxx:391
 TDecompSparse.cxx:392
 TDecompSparse.cxx:393
 TDecompSparse.cxx:394
 TDecompSparse.cxx:395
 TDecompSparse.cxx:396
 TDecompSparse.cxx:397
 TDecompSparse.cxx:398
 TDecompSparse.cxx:399
 TDecompSparse.cxx:400
 TDecompSparse.cxx:401
 TDecompSparse.cxx:402
 TDecompSparse.cxx:403
 TDecompSparse.cxx:404
 TDecompSparse.cxx:405
 TDecompSparse.cxx:406
 TDecompSparse.cxx:407
 TDecompSparse.cxx:408
 TDecompSparse.cxx:409
 TDecompSparse.cxx:410
 TDecompSparse.cxx:411
 TDecompSparse.cxx:412
 TDecompSparse.cxx:413
 TDecompSparse.cxx:414
 TDecompSparse.cxx:415
 TDecompSparse.cxx:416
 TDecompSparse.cxx:417
 TDecompSparse.cxx:418
 TDecompSparse.cxx:419
 TDecompSparse.cxx:420
 TDecompSparse.cxx:421
 TDecompSparse.cxx:422
 TDecompSparse.cxx:423
 TDecompSparse.cxx:424
 TDecompSparse.cxx:425
 TDecompSparse.cxx:426
 TDecompSparse.cxx:427
 TDecompSparse.cxx:428
 TDecompSparse.cxx:429
 TDecompSparse.cxx:430
 TDecompSparse.cxx:431
 TDecompSparse.cxx:432
 TDecompSparse.cxx:433
 TDecompSparse.cxx:434
 TDecompSparse.cxx:435
 TDecompSparse.cxx:436
 TDecompSparse.cxx:437
 TDecompSparse.cxx:438
 TDecompSparse.cxx:439
 TDecompSparse.cxx:440
 TDecompSparse.cxx:441
 TDecompSparse.cxx:442
 TDecompSparse.cxx:443
 TDecompSparse.cxx:444
 TDecompSparse.cxx:445
 TDecompSparse.cxx:446
 TDecompSparse.cxx:447
 TDecompSparse.cxx:448
 TDecompSparse.cxx:449
 TDecompSparse.cxx:450
 TDecompSparse.cxx:451
 TDecompSparse.cxx:452
 TDecompSparse.cxx:453
 TDecompSparse.cxx:454
 TDecompSparse.cxx:455
 TDecompSparse.cxx:456
 TDecompSparse.cxx:457
 TDecompSparse.cxx:458
 TDecompSparse.cxx:459
 TDecompSparse.cxx:460
 TDecompSparse.cxx:461
 TDecompSparse.cxx:462
 TDecompSparse.cxx:463
 TDecompSparse.cxx:464
 TDecompSparse.cxx:465
 TDecompSparse.cxx:466
 TDecompSparse.cxx:467
 TDecompSparse.cxx:468
 TDecompSparse.cxx:469
 TDecompSparse.cxx:470
 TDecompSparse.cxx:471
 TDecompSparse.cxx:472
 TDecompSparse.cxx:473
 TDecompSparse.cxx:474
 TDecompSparse.cxx:475
 TDecompSparse.cxx:476
 TDecompSparse.cxx:477
 TDecompSparse.cxx:478
 TDecompSparse.cxx:479
 TDecompSparse.cxx:480
 TDecompSparse.cxx:481
 TDecompSparse.cxx:482
 TDecompSparse.cxx:483
 TDecompSparse.cxx:484
 TDecompSparse.cxx:485
 TDecompSparse.cxx:486
 TDecompSparse.cxx:487
 TDecompSparse.cxx:488
 TDecompSparse.cxx:489
 TDecompSparse.cxx:490
 TDecompSparse.cxx:491
 TDecompSparse.cxx:492
 TDecompSparse.cxx:493
 TDecompSparse.cxx:494
 TDecompSparse.cxx:495
 TDecompSparse.cxx:496
 TDecompSparse.cxx:497
 TDecompSparse.cxx:498
 TDecompSparse.cxx:499
 TDecompSparse.cxx:500
 TDecompSparse.cxx:501
 TDecompSparse.cxx:502
 TDecompSparse.cxx:503
 TDecompSparse.cxx:504
 TDecompSparse.cxx:505
 TDecompSparse.cxx:506
 TDecompSparse.cxx:507
 TDecompSparse.cxx:508
 TDecompSparse.cxx:509
 TDecompSparse.cxx:510
 TDecompSparse.cxx:511
 TDecompSparse.cxx:512
 TDecompSparse.cxx:513
 TDecompSparse.cxx:514
 TDecompSparse.cxx:515
 TDecompSparse.cxx:516
 TDecompSparse.cxx:517
 TDecompSparse.cxx:518
 TDecompSparse.cxx:519
 TDecompSparse.cxx:520
 TDecompSparse.cxx:521
 TDecompSparse.cxx:522
 TDecompSparse.cxx:523
 TDecompSparse.cxx:524
 TDecompSparse.cxx:525
 TDecompSparse.cxx:526
 TDecompSparse.cxx:527
 TDecompSparse.cxx:528
 TDecompSparse.cxx:529
 TDecompSparse.cxx:530
 TDecompSparse.cxx:531
 TDecompSparse.cxx:532
 TDecompSparse.cxx:533
 TDecompSparse.cxx:534
 TDecompSparse.cxx:535
 TDecompSparse.cxx:536
 TDecompSparse.cxx:537
 TDecompSparse.cxx:538
 TDecompSparse.cxx:539
 TDecompSparse.cxx:540
 TDecompSparse.cxx:541
 TDecompSparse.cxx:542
 TDecompSparse.cxx:543
 TDecompSparse.cxx:544
 TDecompSparse.cxx:545
 TDecompSparse.cxx:546
 TDecompSparse.cxx:547
 TDecompSparse.cxx:548
 TDecompSparse.cxx:549
 TDecompSparse.cxx:550
 TDecompSparse.cxx:551
 TDecompSparse.cxx:552
 TDecompSparse.cxx:553
 TDecompSparse.cxx:554
 TDecompSparse.cxx:555
 TDecompSparse.cxx:556
 TDecompSparse.cxx:557
 TDecompSparse.cxx:558
 TDecompSparse.cxx:559
 TDecompSparse.cxx:560
 TDecompSparse.cxx:561
 TDecompSparse.cxx:562
 TDecompSparse.cxx:563
 TDecompSparse.cxx:564
 TDecompSparse.cxx:565
 TDecompSparse.cxx:566
 TDecompSparse.cxx:567
 TDecompSparse.cxx:568
 TDecompSparse.cxx:569
 TDecompSparse.cxx:570
 TDecompSparse.cxx:571
 TDecompSparse.cxx:572
 TDecompSparse.cxx:573
 TDecompSparse.cxx:574
 TDecompSparse.cxx:575
 TDecompSparse.cxx:576
 TDecompSparse.cxx:577
 TDecompSparse.cxx:578
 TDecompSparse.cxx:579
 TDecompSparse.cxx:580
 TDecompSparse.cxx:581
 TDecompSparse.cxx:582
 TDecompSparse.cxx:583
 TDecompSparse.cxx:584
 TDecompSparse.cxx:585
 TDecompSparse.cxx:586
 TDecompSparse.cxx:587
 TDecompSparse.cxx:588
 TDecompSparse.cxx:589
 TDecompSparse.cxx:590
 TDecompSparse.cxx:591
 TDecompSparse.cxx:592
 TDecompSparse.cxx:593
 TDecompSparse.cxx:594
 TDecompSparse.cxx:595
 TDecompSparse.cxx:596
 TDecompSparse.cxx:597
 TDecompSparse.cxx:598
 TDecompSparse.cxx:599
 TDecompSparse.cxx:600
 TDecompSparse.cxx:601
 TDecompSparse.cxx:602
 TDecompSparse.cxx:603
 TDecompSparse.cxx:604
 TDecompSparse.cxx:605
 TDecompSparse.cxx:606
 TDecompSparse.cxx:607
 TDecompSparse.cxx:608
 TDecompSparse.cxx:609
 TDecompSparse.cxx:610
 TDecompSparse.cxx:611
 TDecompSparse.cxx:612
 TDecompSparse.cxx:613
 TDecompSparse.cxx:614
 TDecompSparse.cxx:615
 TDecompSparse.cxx:616
 TDecompSparse.cxx:617
 TDecompSparse.cxx:618
 TDecompSparse.cxx:619
 TDecompSparse.cxx:620
 TDecompSparse.cxx:621
 TDecompSparse.cxx:622
 TDecompSparse.cxx:623
 TDecompSparse.cxx:624
 TDecompSparse.cxx:625
 TDecompSparse.cxx:626
 TDecompSparse.cxx:627
 TDecompSparse.cxx:628
 TDecompSparse.cxx:629
 TDecompSparse.cxx:630
 TDecompSparse.cxx:631
 TDecompSparse.cxx:632
 TDecompSparse.cxx:633
 TDecompSparse.cxx:634
 TDecompSparse.cxx:635
 TDecompSparse.cxx:636
 TDecompSparse.cxx:637
 TDecompSparse.cxx:638
 TDecompSparse.cxx:639
 TDecompSparse.cxx:640
 TDecompSparse.cxx:641
 TDecompSparse.cxx:642
 TDecompSparse.cxx:643
 TDecompSparse.cxx:644
 TDecompSparse.cxx:645
 TDecompSparse.cxx:646
 TDecompSparse.cxx:647
 TDecompSparse.cxx:648
 TDecompSparse.cxx:649
 TDecompSparse.cxx:650
 TDecompSparse.cxx:651
 TDecompSparse.cxx:652
 TDecompSparse.cxx:653
 TDecompSparse.cxx:654
 TDecompSparse.cxx:655
 TDecompSparse.cxx:656
 TDecompSparse.cxx:657
 TDecompSparse.cxx:658
 TDecompSparse.cxx:659
 TDecompSparse.cxx:660
 TDecompSparse.cxx:661
 TDecompSparse.cxx:662
 TDecompSparse.cxx:663
 TDecompSparse.cxx:664
 TDecompSparse.cxx:665
 TDecompSparse.cxx:666
 TDecompSparse.cxx:667
 TDecompSparse.cxx:668
 TDecompSparse.cxx:669
 TDecompSparse.cxx:670
 TDecompSparse.cxx:671
 TDecompSparse.cxx:672
 TDecompSparse.cxx:673
 TDecompSparse.cxx:674
 TDecompSparse.cxx:675
 TDecompSparse.cxx:676
 TDecompSparse.cxx:677
 TDecompSparse.cxx:678
 TDecompSparse.cxx:679
 TDecompSparse.cxx:680
 TDecompSparse.cxx:681
 TDecompSparse.cxx:682
 TDecompSparse.cxx:683
 TDecompSparse.cxx:684
 TDecompSparse.cxx:685
 TDecompSparse.cxx:686
 TDecompSparse.cxx:687
 TDecompSparse.cxx:688
 TDecompSparse.cxx:689
 TDecompSparse.cxx:690
 TDecompSparse.cxx:691
 TDecompSparse.cxx:692
 TDecompSparse.cxx:693
 TDecompSparse.cxx:694
 TDecompSparse.cxx:695
 TDecompSparse.cxx:696
 TDecompSparse.cxx:697
 TDecompSparse.cxx:698
 TDecompSparse.cxx:699
 TDecompSparse.cxx:700
 TDecompSparse.cxx:701
 TDecompSparse.cxx:702
 TDecompSparse.cxx:703
 TDecompSparse.cxx:704
 TDecompSparse.cxx:705
 TDecompSparse.cxx:706
 TDecompSparse.cxx:707
 TDecompSparse.cxx:708
 TDecompSparse.cxx:709
 TDecompSparse.cxx:710
 TDecompSparse.cxx:711
 TDecompSparse.cxx:712
 TDecompSparse.cxx:713
 TDecompSparse.cxx:714
 TDecompSparse.cxx:715
 TDecompSparse.cxx:716
 TDecompSparse.cxx:717
 TDecompSparse.cxx:718
 TDecompSparse.cxx:719
 TDecompSparse.cxx:720
 TDecompSparse.cxx:721
 TDecompSparse.cxx:722
 TDecompSparse.cxx:723
 TDecompSparse.cxx:724
 TDecompSparse.cxx:725
 TDecompSparse.cxx:726
 TDecompSparse.cxx:727
 TDecompSparse.cxx:728
 TDecompSparse.cxx:729
 TDecompSparse.cxx:730
 TDecompSparse.cxx:731
 TDecompSparse.cxx:732
 TDecompSparse.cxx:733
 TDecompSparse.cxx:734
 TDecompSparse.cxx:735
 TDecompSparse.cxx:736
 TDecompSparse.cxx:737
 TDecompSparse.cxx:738
 TDecompSparse.cxx:739
 TDecompSparse.cxx:740
 TDecompSparse.cxx:741
 TDecompSparse.cxx:742
 TDecompSparse.cxx:743
 TDecompSparse.cxx:744
 TDecompSparse.cxx:745
 TDecompSparse.cxx:746
 TDecompSparse.cxx:747
 TDecompSparse.cxx:748
 TDecompSparse.cxx:749
 TDecompSparse.cxx:750
 TDecompSparse.cxx:751
 TDecompSparse.cxx:752
 TDecompSparse.cxx:753
 TDecompSparse.cxx:754
 TDecompSparse.cxx:755
 TDecompSparse.cxx:756
 TDecompSparse.cxx:757
 TDecompSparse.cxx:758
 TDecompSparse.cxx:759
 TDecompSparse.cxx:760
 TDecompSparse.cxx:761
 TDecompSparse.cxx:762
 TDecompSparse.cxx:763
 TDecompSparse.cxx:764
 TDecompSparse.cxx:765
 TDecompSparse.cxx:766
 TDecompSparse.cxx:767
 TDecompSparse.cxx:768
 TDecompSparse.cxx:769
 TDecompSparse.cxx:770
 TDecompSparse.cxx:771
 TDecompSparse.cxx:772
 TDecompSparse.cxx:773
 TDecompSparse.cxx:774
 TDecompSparse.cxx:775
 TDecompSparse.cxx:776
 TDecompSparse.cxx:777
 TDecompSparse.cxx:778
 TDecompSparse.cxx:779
 TDecompSparse.cxx:780
 TDecompSparse.cxx:781
 TDecompSparse.cxx:782
 TDecompSparse.cxx:783
 TDecompSparse.cxx:784
 TDecompSparse.cxx:785
 TDecompSparse.cxx:786
 TDecompSparse.cxx:787
 TDecompSparse.cxx:788
 TDecompSparse.cxx:789
 TDecompSparse.cxx:790
 TDecompSparse.cxx:791
 TDecompSparse.cxx:792
 TDecompSparse.cxx:793
 TDecompSparse.cxx:794
 TDecompSparse.cxx:795
 TDecompSparse.cxx:796
 TDecompSparse.cxx:797
 TDecompSparse.cxx:798
 TDecompSparse.cxx:799
 TDecompSparse.cxx:800
 TDecompSparse.cxx:801
 TDecompSparse.cxx:802
 TDecompSparse.cxx:803
 TDecompSparse.cxx:804
 TDecompSparse.cxx:805
 TDecompSparse.cxx:806
 TDecompSparse.cxx:807
 TDecompSparse.cxx:808
 TDecompSparse.cxx:809
 TDecompSparse.cxx:810
 TDecompSparse.cxx:811
 TDecompSparse.cxx:812
 TDecompSparse.cxx:813
 TDecompSparse.cxx:814
 TDecompSparse.cxx:815
 TDecompSparse.cxx:816
 TDecompSparse.cxx:817
 TDecompSparse.cxx:818
 TDecompSparse.cxx:819
 TDecompSparse.cxx:820
 TDecompSparse.cxx:821
 TDecompSparse.cxx:822
 TDecompSparse.cxx:823
 TDecompSparse.cxx:824
 TDecompSparse.cxx:825
 TDecompSparse.cxx:826
 TDecompSparse.cxx:827
 TDecompSparse.cxx:828
 TDecompSparse.cxx:829
 TDecompSparse.cxx:830
 TDecompSparse.cxx:831
 TDecompSparse.cxx:832
 TDecompSparse.cxx:833
 TDecompSparse.cxx:834
 TDecompSparse.cxx:835
 TDecompSparse.cxx:836
 TDecompSparse.cxx:837
 TDecompSparse.cxx:838
 TDecompSparse.cxx:839
 TDecompSparse.cxx:840
 TDecompSparse.cxx:841
 TDecompSparse.cxx:842
 TDecompSparse.cxx:843
 TDecompSparse.cxx:844
 TDecompSparse.cxx:845
 TDecompSparse.cxx:846
 TDecompSparse.cxx:847
 TDecompSparse.cxx:848
 TDecompSparse.cxx:849
 TDecompSparse.cxx:850
 TDecompSparse.cxx:851
 TDecompSparse.cxx:852
 TDecompSparse.cxx:853
 TDecompSparse.cxx:854
 TDecompSparse.cxx:855
 TDecompSparse.cxx:856
 TDecompSparse.cxx:857
 TDecompSparse.cxx:858
 TDecompSparse.cxx:859
 TDecompSparse.cxx:860
 TDecompSparse.cxx:861
 TDecompSparse.cxx:862
 TDecompSparse.cxx:863
 TDecompSparse.cxx:864
 TDecompSparse.cxx:865
 TDecompSparse.cxx:866
 TDecompSparse.cxx:867
 TDecompSparse.cxx:868
 TDecompSparse.cxx:869
 TDecompSparse.cxx:870
 TDecompSparse.cxx:871
 TDecompSparse.cxx:872
 TDecompSparse.cxx:873
 TDecompSparse.cxx:874
 TDecompSparse.cxx:875
 TDecompSparse.cxx:876
 TDecompSparse.cxx:877
 TDecompSparse.cxx:878
 TDecompSparse.cxx:879
 TDecompSparse.cxx:880
 TDecompSparse.cxx:881
 TDecompSparse.cxx:882
 TDecompSparse.cxx:883
 TDecompSparse.cxx:884
 TDecompSparse.cxx:885
 TDecompSparse.cxx:886
 TDecompSparse.cxx:887
 TDecompSparse.cxx:888
 TDecompSparse.cxx:889
 TDecompSparse.cxx:890
 TDecompSparse.cxx:891
 TDecompSparse.cxx:892
 TDecompSparse.cxx:893
 TDecompSparse.cxx:894
 TDecompSparse.cxx:895
 TDecompSparse.cxx:896
 TDecompSparse.cxx:897
 TDecompSparse.cxx:898
 TDecompSparse.cxx:899
 TDecompSparse.cxx:900
 TDecompSparse.cxx:901
 TDecompSparse.cxx:902
 TDecompSparse.cxx:903
 TDecompSparse.cxx:904
 TDecompSparse.cxx:905
 TDecompSparse.cxx:906
 TDecompSparse.cxx:907
 TDecompSparse.cxx:908
 TDecompSparse.cxx:909
 TDecompSparse.cxx:910
 TDecompSparse.cxx:911
 TDecompSparse.cxx:912
 TDecompSparse.cxx:913
 TDecompSparse.cxx:914
 TDecompSparse.cxx:915
 TDecompSparse.cxx:916
 TDecompSparse.cxx:917
 TDecompSparse.cxx:918
 TDecompSparse.cxx:919
 TDecompSparse.cxx:920
 TDecompSparse.cxx:921
 TDecompSparse.cxx:922
 TDecompSparse.cxx:923
 TDecompSparse.cxx:924
 TDecompSparse.cxx:925
 TDecompSparse.cxx:926
 TDecompSparse.cxx:927
 TDecompSparse.cxx:928
 TDecompSparse.cxx:929
 TDecompSparse.cxx:930
 TDecompSparse.cxx:931
 TDecompSparse.cxx:932
 TDecompSparse.cxx:933
 TDecompSparse.cxx:934
 TDecompSparse.cxx:935
 TDecompSparse.cxx:936
 TDecompSparse.cxx:937
 TDecompSparse.cxx:938
 TDecompSparse.cxx:939
 TDecompSparse.cxx:940
 TDecompSparse.cxx:941
 TDecompSparse.cxx:942
 TDecompSparse.cxx:943
 TDecompSparse.cxx:944
 TDecompSparse.cxx:945
 TDecompSparse.cxx:946
 TDecompSparse.cxx:947
 TDecompSparse.cxx:948
 TDecompSparse.cxx:949
 TDecompSparse.cxx:950
 TDecompSparse.cxx:951
 TDecompSparse.cxx:952
 TDecompSparse.cxx:953
 TDecompSparse.cxx:954
 TDecompSparse.cxx:955
 TDecompSparse.cxx:956
 TDecompSparse.cxx:957
 TDecompSparse.cxx:958
 TDecompSparse.cxx:959
 TDecompSparse.cxx:960
 TDecompSparse.cxx:961
 TDecompSparse.cxx:962
 TDecompSparse.cxx:963
 TDecompSparse.cxx:964
 TDecompSparse.cxx:965
 TDecompSparse.cxx:966
 TDecompSparse.cxx:967
 TDecompSparse.cxx:968
 TDecompSparse.cxx:969
 TDecompSparse.cxx:970
 TDecompSparse.cxx:971
 TDecompSparse.cxx:972
 TDecompSparse.cxx:973
 TDecompSparse.cxx:974
 TDecompSparse.cxx:975
 TDecompSparse.cxx:976
 TDecompSparse.cxx:977
 TDecompSparse.cxx:978
 TDecompSparse.cxx:979
 TDecompSparse.cxx:980
 TDecompSparse.cxx:981
 TDecompSparse.cxx:982
 TDecompSparse.cxx:983
 TDecompSparse.cxx:984
 TDecompSparse.cxx:985
 TDecompSparse.cxx:986
 TDecompSparse.cxx:987
 TDecompSparse.cxx:988
 TDecompSparse.cxx:989
 TDecompSparse.cxx:990
 TDecompSparse.cxx:991
 TDecompSparse.cxx:992
 TDecompSparse.cxx:993
 TDecompSparse.cxx:994
 TDecompSparse.cxx:995
 TDecompSparse.cxx:996
 TDecompSparse.cxx:997
 TDecompSparse.cxx:998
 TDecompSparse.cxx:999
 TDecompSparse.cxx:1000
 TDecompSparse.cxx:1001
 TDecompSparse.cxx:1002
 TDecompSparse.cxx:1003
 TDecompSparse.cxx:1004
 TDecompSparse.cxx:1005
 TDecompSparse.cxx:1006
 TDecompSparse.cxx:1007
 TDecompSparse.cxx:1008
 TDecompSparse.cxx:1009
 TDecompSparse.cxx:1010
 TDecompSparse.cxx:1011
 TDecompSparse.cxx:1012
 TDecompSparse.cxx:1013
 TDecompSparse.cxx:1014
 TDecompSparse.cxx:1015
 TDecompSparse.cxx:1016
 TDecompSparse.cxx:1017
 TDecompSparse.cxx:1018
 TDecompSparse.cxx:1019
 TDecompSparse.cxx:1020
 TDecompSparse.cxx:1021
 TDecompSparse.cxx:1022
 TDecompSparse.cxx:1023
 TDecompSparse.cxx:1024
 TDecompSparse.cxx:1025
 TDecompSparse.cxx:1026
 TDecompSparse.cxx:1027
 TDecompSparse.cxx:1028
 TDecompSparse.cxx:1029
 TDecompSparse.cxx:1030
 TDecompSparse.cxx:1031
 TDecompSparse.cxx:1032
 TDecompSparse.cxx:1033
 TDecompSparse.cxx:1034
 TDecompSparse.cxx:1035
 TDecompSparse.cxx:1036
 TDecompSparse.cxx:1037
 TDecompSparse.cxx:1038
 TDecompSparse.cxx:1039
 TDecompSparse.cxx:1040
 TDecompSparse.cxx:1041
 TDecompSparse.cxx:1042
 TDecompSparse.cxx:1043
 TDecompSparse.cxx:1044
 TDecompSparse.cxx:1045
 TDecompSparse.cxx:1046
 TDecompSparse.cxx:1047
 TDecompSparse.cxx:1048
 TDecompSparse.cxx:1049
 TDecompSparse.cxx:1050
 TDecompSparse.cxx:1051
 TDecompSparse.cxx:1052
 TDecompSparse.cxx:1053
 TDecompSparse.cxx:1054
 TDecompSparse.cxx:1055
 TDecompSparse.cxx:1056
 TDecompSparse.cxx:1057
 TDecompSparse.cxx:1058
 TDecompSparse.cxx:1059
 TDecompSparse.cxx:1060
 TDecompSparse.cxx:1061
 TDecompSparse.cxx:1062
 TDecompSparse.cxx:1063
 TDecompSparse.cxx:1064
 TDecompSparse.cxx:1065
 TDecompSparse.cxx:1066
 TDecompSparse.cxx:1067
 TDecompSparse.cxx:1068
 TDecompSparse.cxx:1069
 TDecompSparse.cxx:1070
 TDecompSparse.cxx:1071
 TDecompSparse.cxx:1072
 TDecompSparse.cxx:1073
 TDecompSparse.cxx:1074
 TDecompSparse.cxx:1075
 TDecompSparse.cxx:1076
 TDecompSparse.cxx:1077
 TDecompSparse.cxx:1078
 TDecompSparse.cxx:1079
 TDecompSparse.cxx:1080
 TDecompSparse.cxx:1081
 TDecompSparse.cxx:1082
 TDecompSparse.cxx:1083
 TDecompSparse.cxx:1084
 TDecompSparse.cxx:1085
 TDecompSparse.cxx:1086
 TDecompSparse.cxx:1087
 TDecompSparse.cxx:1088
 TDecompSparse.cxx:1089
 TDecompSparse.cxx:1090
 TDecompSparse.cxx:1091
 TDecompSparse.cxx:1092
 TDecompSparse.cxx:1093
 TDecompSparse.cxx:1094
 TDecompSparse.cxx:1095
 TDecompSparse.cxx:1096
 TDecompSparse.cxx:1097
 TDecompSparse.cxx:1098
 TDecompSparse.cxx:1099
 TDecompSparse.cxx:1100
 TDecompSparse.cxx:1101
 TDecompSparse.cxx:1102
 TDecompSparse.cxx:1103
 TDecompSparse.cxx:1104
 TDecompSparse.cxx:1105
 TDecompSparse.cxx:1106
 TDecompSparse.cxx:1107
 TDecompSparse.cxx:1108
 TDecompSparse.cxx:1109
 TDecompSparse.cxx:1110
 TDecompSparse.cxx:1111
 TDecompSparse.cxx:1112
 TDecompSparse.cxx:1113
 TDecompSparse.cxx:1114
 TDecompSparse.cxx:1115
 TDecompSparse.cxx:1116
 TDecompSparse.cxx:1117
 TDecompSparse.cxx:1118
 TDecompSparse.cxx:1119
 TDecompSparse.cxx:1120
 TDecompSparse.cxx:1121
 TDecompSparse.cxx:1122
 TDecompSparse.cxx:1123
 TDecompSparse.cxx:1124
 TDecompSparse.cxx:1125
 TDecompSparse.cxx:1126
 TDecompSparse.cxx:1127
 TDecompSparse.cxx:1128
 TDecompSparse.cxx:1129
 TDecompSparse.cxx:1130
 TDecompSparse.cxx:1131
 TDecompSparse.cxx:1132
 TDecompSparse.cxx:1133
 TDecompSparse.cxx:1134
 TDecompSparse.cxx:1135
 TDecompSparse.cxx:1136
 TDecompSparse.cxx:1137
 TDecompSparse.cxx:1138
 TDecompSparse.cxx:1139
 TDecompSparse.cxx:1140
 TDecompSparse.cxx:1141
 TDecompSparse.cxx:1142
 TDecompSparse.cxx:1143
 TDecompSparse.cxx:1144
 TDecompSparse.cxx:1145
 TDecompSparse.cxx:1146
 TDecompSparse.cxx:1147
 TDecompSparse.cxx:1148
 TDecompSparse.cxx:1149
 TDecompSparse.cxx:1150
 TDecompSparse.cxx:1151
 TDecompSparse.cxx:1152
 TDecompSparse.cxx:1153
 TDecompSparse.cxx:1154
 TDecompSparse.cxx:1155
 TDecompSparse.cxx:1156
 TDecompSparse.cxx:1157
 TDecompSparse.cxx:1158
 TDecompSparse.cxx:1159
 TDecompSparse.cxx:1160
 TDecompSparse.cxx:1161
 TDecompSparse.cxx:1162
 TDecompSparse.cxx:1163
 TDecompSparse.cxx:1164
 TDecompSparse.cxx:1165
 TDecompSparse.cxx:1166
 TDecompSparse.cxx:1167
 TDecompSparse.cxx:1168
 TDecompSparse.cxx:1169
 TDecompSparse.cxx:1170
 TDecompSparse.cxx:1171
 TDecompSparse.cxx:1172
 TDecompSparse.cxx:1173
 TDecompSparse.cxx:1174
 TDecompSparse.cxx:1175
 TDecompSparse.cxx:1176
 TDecompSparse.cxx:1177
 TDecompSparse.cxx:1178
 TDecompSparse.cxx:1179
 TDecompSparse.cxx:1180
 TDecompSparse.cxx:1181
 TDecompSparse.cxx:1182
 TDecompSparse.cxx:1183
 TDecompSparse.cxx:1184
 TDecompSparse.cxx:1185
 TDecompSparse.cxx:1186
 TDecompSparse.cxx:1187
 TDecompSparse.cxx:1188
 TDecompSparse.cxx:1189
 TDecompSparse.cxx:1190
 TDecompSparse.cxx:1191
 TDecompSparse.cxx:1192
 TDecompSparse.cxx:1193
 TDecompSparse.cxx:1194
 TDecompSparse.cxx:1195
 TDecompSparse.cxx:1196
 TDecompSparse.cxx:1197
 TDecompSparse.cxx:1198
 TDecompSparse.cxx:1199
 TDecompSparse.cxx:1200
 TDecompSparse.cxx:1201
 TDecompSparse.cxx:1202
 TDecompSparse.cxx:1203
 TDecompSparse.cxx:1204
 TDecompSparse.cxx:1205
 TDecompSparse.cxx:1206
 TDecompSparse.cxx:1207
 TDecompSparse.cxx:1208
 TDecompSparse.cxx:1209
 TDecompSparse.cxx:1210
 TDecompSparse.cxx:1211
 TDecompSparse.cxx:1212
 TDecompSparse.cxx:1213
 TDecompSparse.cxx:1214
 TDecompSparse.cxx:1215
 TDecompSparse.cxx:1216
 TDecompSparse.cxx:1217
 TDecompSparse.cxx:1218
 TDecompSparse.cxx:1219
 TDecompSparse.cxx:1220
 TDecompSparse.cxx:1221
 TDecompSparse.cxx:1222
 TDecompSparse.cxx:1223
 TDecompSparse.cxx:1224
 TDecompSparse.cxx:1225
 TDecompSparse.cxx:1226
 TDecompSparse.cxx:1227
 TDecompSparse.cxx:1228
 TDecompSparse.cxx:1229
 TDecompSparse.cxx:1230
 TDecompSparse.cxx:1231
 TDecompSparse.cxx:1232
 TDecompSparse.cxx:1233
 TDecompSparse.cxx:1234
 TDecompSparse.cxx:1235
 TDecompSparse.cxx:1236
 TDecompSparse.cxx:1237
 TDecompSparse.cxx:1238
 TDecompSparse.cxx:1239
 TDecompSparse.cxx:1240
 TDecompSparse.cxx:1241
 TDecompSparse.cxx:1242
 TDecompSparse.cxx:1243
 TDecompSparse.cxx:1244
 TDecompSparse.cxx:1245
 TDecompSparse.cxx:1246
 TDecompSparse.cxx:1247
 TDecompSparse.cxx:1248
 TDecompSparse.cxx:1249
 TDecompSparse.cxx:1250
 TDecompSparse.cxx:1251
 TDecompSparse.cxx:1252
 TDecompSparse.cxx:1253
 TDecompSparse.cxx:1254
 TDecompSparse.cxx:1255
 TDecompSparse.cxx:1256
 TDecompSparse.cxx:1257
 TDecompSparse.cxx:1258
 TDecompSparse.cxx:1259
 TDecompSparse.cxx:1260
 TDecompSparse.cxx:1261
 TDecompSparse.cxx:1262
 TDecompSparse.cxx:1263
 TDecompSparse.cxx:1264
 TDecompSparse.cxx:1265
 TDecompSparse.cxx:1266
 TDecompSparse.cxx:1267
 TDecompSparse.cxx:1268
 TDecompSparse.cxx:1269
 TDecompSparse.cxx:1270
 TDecompSparse.cxx:1271
 TDecompSparse.cxx:1272
 TDecompSparse.cxx:1273
 TDecompSparse.cxx:1274
 TDecompSparse.cxx:1275
 TDecompSparse.cxx:1276
 TDecompSparse.cxx:1277
 TDecompSparse.cxx:1278
 TDecompSparse.cxx:1279
 TDecompSparse.cxx:1280
 TDecompSparse.cxx:1281
 TDecompSparse.cxx:1282
 TDecompSparse.cxx:1283
 TDecompSparse.cxx:1284
 TDecompSparse.cxx:1285
 TDecompSparse.cxx:1286
 TDecompSparse.cxx:1287
 TDecompSparse.cxx:1288
 TDecompSparse.cxx:1289
 TDecompSparse.cxx:1290
 TDecompSparse.cxx:1291
 TDecompSparse.cxx:1292
 TDecompSparse.cxx:1293
 TDecompSparse.cxx:1294
 TDecompSparse.cxx:1295
 TDecompSparse.cxx:1296
 TDecompSparse.cxx:1297
 TDecompSparse.cxx:1298
 TDecompSparse.cxx:1299
 TDecompSparse.cxx:1300
 TDecompSparse.cxx:1301
 TDecompSparse.cxx:1302
 TDecompSparse.cxx:1303
 TDecompSparse.cxx:1304
 TDecompSparse.cxx:1305
 TDecompSparse.cxx:1306
 TDecompSparse.cxx:1307
 TDecompSparse.cxx:1308
 TDecompSparse.cxx:1309
 TDecompSparse.cxx:1310
 TDecompSparse.cxx:1311
 TDecompSparse.cxx:1312
 TDecompSparse.cxx:1313
 TDecompSparse.cxx:1314
 TDecompSparse.cxx:1315
 TDecompSparse.cxx:1316
 TDecompSparse.cxx:1317
 TDecompSparse.cxx:1318
 TDecompSparse.cxx:1319
 TDecompSparse.cxx:1320
 TDecompSparse.cxx:1321
 TDecompSparse.cxx:1322
 TDecompSparse.cxx:1323
 TDecompSparse.cxx:1324
 TDecompSparse.cxx:1325
 TDecompSparse.cxx:1326
 TDecompSparse.cxx:1327
 TDecompSparse.cxx:1328
 TDecompSparse.cxx:1329
 TDecompSparse.cxx:1330
 TDecompSparse.cxx:1331
 TDecompSparse.cxx:1332
 TDecompSparse.cxx:1333
 TDecompSparse.cxx:1334
 TDecompSparse.cxx:1335
 TDecompSparse.cxx:1336
 TDecompSparse.cxx:1337
 TDecompSparse.cxx:1338
 TDecompSparse.cxx:1339
 TDecompSparse.cxx:1340
 TDecompSparse.cxx:1341
 TDecompSparse.cxx:1342
 TDecompSparse.cxx:1343
 TDecompSparse.cxx:1344
 TDecompSparse.cxx:1345
 TDecompSparse.cxx:1346
 TDecompSparse.cxx:1347
 TDecompSparse.cxx:1348
 TDecompSparse.cxx:1349
 TDecompSparse.cxx:1350
 TDecompSparse.cxx:1351
 TDecompSparse.cxx:1352
 TDecompSparse.cxx:1353
 TDecompSparse.cxx:1354
 TDecompSparse.cxx:1355
 TDecompSparse.cxx:1356
 TDecompSparse.cxx:1357
 TDecompSparse.cxx:1358
 TDecompSparse.cxx:1359
 TDecompSparse.cxx:1360
 TDecompSparse.cxx:1361
 TDecompSparse.cxx:1362
 TDecompSparse.cxx:1363
 TDecompSparse.cxx:1364
 TDecompSparse.cxx:1365
 TDecompSparse.cxx:1366
 TDecompSparse.cxx:1367
 TDecompSparse.cxx:1368
 TDecompSparse.cxx:1369
 TDecompSparse.cxx:1370
 TDecompSparse.cxx:1371
 TDecompSparse.cxx:1372
 TDecompSparse.cxx:1373
 TDecompSparse.cxx:1374
 TDecompSparse.cxx:1375
 TDecompSparse.cxx:1376
 TDecompSparse.cxx:1377
 TDecompSparse.cxx:1378
 TDecompSparse.cxx:1379
 TDecompSparse.cxx:1380
 TDecompSparse.cxx:1381
 TDecompSparse.cxx:1382
 TDecompSparse.cxx:1383
 TDecompSparse.cxx:1384
 TDecompSparse.cxx:1385
 TDecompSparse.cxx:1386
 TDecompSparse.cxx:1387
 TDecompSparse.cxx:1388
 TDecompSparse.cxx:1389
 TDecompSparse.cxx:1390
 TDecompSparse.cxx:1391
 TDecompSparse.cxx:1392
 TDecompSparse.cxx:1393
 TDecompSparse.cxx:1394
 TDecompSparse.cxx:1395
 TDecompSparse.cxx:1396
 TDecompSparse.cxx:1397
 TDecompSparse.cxx:1398
 TDecompSparse.cxx:1399
 TDecompSparse.cxx:1400
 TDecompSparse.cxx:1401
 TDecompSparse.cxx:1402
 TDecompSparse.cxx:1403
 TDecompSparse.cxx:1404
 TDecompSparse.cxx:1405
 TDecompSparse.cxx:1406
 TDecompSparse.cxx:1407
 TDecompSparse.cxx:1408
 TDecompSparse.cxx:1409
 TDecompSparse.cxx:1410
 TDecompSparse.cxx:1411
 TDecompSparse.cxx:1412
 TDecompSparse.cxx:1413
 TDecompSparse.cxx:1414
 TDecompSparse.cxx:1415
 TDecompSparse.cxx:1416
 TDecompSparse.cxx:1417
 TDecompSparse.cxx:1418
 TDecompSparse.cxx:1419
 TDecompSparse.cxx:1420
 TDecompSparse.cxx:1421
 TDecompSparse.cxx:1422
 TDecompSparse.cxx:1423
 TDecompSparse.cxx:1424
 TDecompSparse.cxx:1425
 TDecompSparse.cxx:1426
 TDecompSparse.cxx:1427
 TDecompSparse.cxx:1428
 TDecompSparse.cxx:1429
 TDecompSparse.cxx:1430
 TDecompSparse.cxx:1431
 TDecompSparse.cxx:1432
 TDecompSparse.cxx:1433
 TDecompSparse.cxx:1434
 TDecompSparse.cxx:1435
 TDecompSparse.cxx:1436
 TDecompSparse.cxx:1437
 TDecompSparse.cxx:1438
 TDecompSparse.cxx:1439
 TDecompSparse.cxx:1440
 TDecompSparse.cxx:1441
 TDecompSparse.cxx:1442
 TDecompSparse.cxx:1443
 TDecompSparse.cxx:1444
 TDecompSparse.cxx:1445
 TDecompSparse.cxx:1446
 TDecompSparse.cxx:1447
 TDecompSparse.cxx:1448
 TDecompSparse.cxx:1449
 TDecompSparse.cxx:1450
 TDecompSparse.cxx:1451
 TDecompSparse.cxx:1452
 TDecompSparse.cxx:1453
 TDecompSparse.cxx:1454
 TDecompSparse.cxx:1455
 TDecompSparse.cxx:1456
 TDecompSparse.cxx:1457
 TDecompSparse.cxx:1458
 TDecompSparse.cxx:1459
 TDecompSparse.cxx:1460
 TDecompSparse.cxx:1461
 TDecompSparse.cxx:1462
 TDecompSparse.cxx:1463
 TDecompSparse.cxx:1464
 TDecompSparse.cxx:1465
 TDecompSparse.cxx:1466
 TDecompSparse.cxx:1467
 TDecompSparse.cxx:1468
 TDecompSparse.cxx:1469
 TDecompSparse.cxx:1470
 TDecompSparse.cxx:1471
 TDecompSparse.cxx:1472
 TDecompSparse.cxx:1473
 TDecompSparse.cxx:1474
 TDecompSparse.cxx:1475
 TDecompSparse.cxx:1476
 TDecompSparse.cxx:1477
 TDecompSparse.cxx:1478
 TDecompSparse.cxx:1479
 TDecompSparse.cxx:1480
 TDecompSparse.cxx:1481
 TDecompSparse.cxx:1482
 TDecompSparse.cxx:1483
 TDecompSparse.cxx:1484
 TDecompSparse.cxx:1485
 TDecompSparse.cxx:1486
 TDecompSparse.cxx:1487
 TDecompSparse.cxx:1488
 TDecompSparse.cxx:1489
 TDecompSparse.cxx:1490
 TDecompSparse.cxx:1491
 TDecompSparse.cxx:1492
 TDecompSparse.cxx:1493
 TDecompSparse.cxx:1494
 TDecompSparse.cxx:1495
 TDecompSparse.cxx:1496
 TDecompSparse.cxx:1497
 TDecompSparse.cxx:1498
 TDecompSparse.cxx:1499
 TDecompSparse.cxx:1500
 TDecompSparse.cxx:1501
 TDecompSparse.cxx:1502
 TDecompSparse.cxx:1503
 TDecompSparse.cxx:1504
 TDecompSparse.cxx:1505
 TDecompSparse.cxx:1506
 TDecompSparse.cxx:1507
 TDecompSparse.cxx:1508
 TDecompSparse.cxx:1509
 TDecompSparse.cxx:1510
 TDecompSparse.cxx:1511
 TDecompSparse.cxx:1512
 TDecompSparse.cxx:1513
 TDecompSparse.cxx:1514
 TDecompSparse.cxx:1515
 TDecompSparse.cxx:1516
 TDecompSparse.cxx:1517
 TDecompSparse.cxx:1518
 TDecompSparse.cxx:1519
 TDecompSparse.cxx:1520
 TDecompSparse.cxx:1521
 TDecompSparse.cxx:1522
 TDecompSparse.cxx:1523
 TDecompSparse.cxx:1524
 TDecompSparse.cxx:1525
 TDecompSparse.cxx:1526
 TDecompSparse.cxx:1527
 TDecompSparse.cxx:1528
 TDecompSparse.cxx:1529
 TDecompSparse.cxx:1530
 TDecompSparse.cxx:1531
 TDecompSparse.cxx:1532
 TDecompSparse.cxx:1533
 TDecompSparse.cxx:1534
 TDecompSparse.cxx:1535
 TDecompSparse.cxx:1536
 TDecompSparse.cxx:1537
 TDecompSparse.cxx:1538
 TDecompSparse.cxx:1539
 TDecompSparse.cxx:1540
 TDecompSparse.cxx:1541
 TDecompSparse.cxx:1542
 TDecompSparse.cxx:1543
 TDecompSparse.cxx:1544
 TDecompSparse.cxx:1545
 TDecompSparse.cxx:1546
 TDecompSparse.cxx:1547
 TDecompSparse.cxx:1548
 TDecompSparse.cxx:1549
 TDecompSparse.cxx:1550
 TDecompSparse.cxx:1551
 TDecompSparse.cxx:1552
 TDecompSparse.cxx:1553
 TDecompSparse.cxx:1554
 TDecompSparse.cxx:1555
 TDecompSparse.cxx:1556
 TDecompSparse.cxx:1557
 TDecompSparse.cxx:1558
 TDecompSparse.cxx:1559
 TDecompSparse.cxx:1560
 TDecompSparse.cxx:1561
 TDecompSparse.cxx:1562
 TDecompSparse.cxx:1563
 TDecompSparse.cxx:1564
 TDecompSparse.cxx:1565
 TDecompSparse.cxx:1566
 TDecompSparse.cxx:1567
 TDecompSparse.cxx:1568
 TDecompSparse.cxx:1569
 TDecompSparse.cxx:1570
 TDecompSparse.cxx:1571
 TDecompSparse.cxx:1572
 TDecompSparse.cxx:1573
 TDecompSparse.cxx:1574
 TDecompSparse.cxx:1575
 TDecompSparse.cxx:1576
 TDecompSparse.cxx:1577
 TDecompSparse.cxx:1578
 TDecompSparse.cxx:1579
 TDecompSparse.cxx:1580
 TDecompSparse.cxx:1581
 TDecompSparse.cxx:1582
 TDecompSparse.cxx:1583
 TDecompSparse.cxx:1584
 TDecompSparse.cxx:1585
 TDecompSparse.cxx:1586
 TDecompSparse.cxx:1587
 TDecompSparse.cxx:1588
 TDecompSparse.cxx:1589
 TDecompSparse.cxx:1590
 TDecompSparse.cxx:1591
 TDecompSparse.cxx:1592
 TDecompSparse.cxx:1593
 TDecompSparse.cxx:1594
 TDecompSparse.cxx:1595
 TDecompSparse.cxx:1596
 TDecompSparse.cxx:1597
 TDecompSparse.cxx:1598
 TDecompSparse.cxx:1599
 TDecompSparse.cxx:1600
 TDecompSparse.cxx:1601
 TDecompSparse.cxx:1602
 TDecompSparse.cxx:1603
 TDecompSparse.cxx:1604
 TDecompSparse.cxx:1605
 TDecompSparse.cxx:1606
 TDecompSparse.cxx:1607
 TDecompSparse.cxx:1608
 TDecompSparse.cxx:1609
 TDecompSparse.cxx:1610
 TDecompSparse.cxx:1611
 TDecompSparse.cxx:1612
 TDecompSparse.cxx:1613
 TDecompSparse.cxx:1614
 TDecompSparse.cxx:1615
 TDecompSparse.cxx:1616
 TDecompSparse.cxx:1617
 TDecompSparse.cxx:1618
 TDecompSparse.cxx:1619
 TDecompSparse.cxx:1620
 TDecompSparse.cxx:1621
 TDecompSparse.cxx:1622
 TDecompSparse.cxx:1623
 TDecompSparse.cxx:1624
 TDecompSparse.cxx:1625
 TDecompSparse.cxx:1626
 TDecompSparse.cxx:1627
 TDecompSparse.cxx:1628
 TDecompSparse.cxx:1629
 TDecompSparse.cxx:1630
 TDecompSparse.cxx:1631
 TDecompSparse.cxx:1632
 TDecompSparse.cxx:1633
 TDecompSparse.cxx:1634
 TDecompSparse.cxx:1635
 TDecompSparse.cxx:1636
 TDecompSparse.cxx:1637
 TDecompSparse.cxx:1638
 TDecompSparse.cxx:1639
 TDecompSparse.cxx:1640
 TDecompSparse.cxx:1641
 TDecompSparse.cxx:1642
 TDecompSparse.cxx:1643
 TDecompSparse.cxx:1644
 TDecompSparse.cxx:1645
 TDecompSparse.cxx:1646
 TDecompSparse.cxx:1647
 TDecompSparse.cxx:1648
 TDecompSparse.cxx:1649
 TDecompSparse.cxx:1650
 TDecompSparse.cxx:1651
 TDecompSparse.cxx:1652
 TDecompSparse.cxx:1653
 TDecompSparse.cxx:1654
 TDecompSparse.cxx:1655
 TDecompSparse.cxx:1656
 TDecompSparse.cxx:1657
 TDecompSparse.cxx:1658
 TDecompSparse.cxx:1659
 TDecompSparse.cxx:1660
 TDecompSparse.cxx:1661
 TDecompSparse.cxx:1662
 TDecompSparse.cxx:1663
 TDecompSparse.cxx:1664
 TDecompSparse.cxx:1665
 TDecompSparse.cxx:1666
 TDecompSparse.cxx:1667
 TDecompSparse.cxx:1668
 TDecompSparse.cxx:1669
 TDecompSparse.cxx:1670
 TDecompSparse.cxx:1671
 TDecompSparse.cxx:1672
 TDecompSparse.cxx:1673
 TDecompSparse.cxx:1674
 TDecompSparse.cxx:1675
 TDecompSparse.cxx:1676
 TDecompSparse.cxx:1677
 TDecompSparse.cxx:1678
 TDecompSparse.cxx:1679
 TDecompSparse.cxx:1680
 TDecompSparse.cxx:1681
 TDecompSparse.cxx:1682
 TDecompSparse.cxx:1683
 TDecompSparse.cxx:1684
 TDecompSparse.cxx:1685
 TDecompSparse.cxx:1686
 TDecompSparse.cxx:1687
 TDecompSparse.cxx:1688
 TDecompSparse.cxx:1689
 TDecompSparse.cxx:1690
 TDecompSparse.cxx:1691
 TDecompSparse.cxx:1692
 TDecompSparse.cxx:1693
 TDecompSparse.cxx:1694
 TDecompSparse.cxx:1695
 TDecompSparse.cxx:1696
 TDecompSparse.cxx:1697
 TDecompSparse.cxx:1698
 TDecompSparse.cxx:1699
 TDecompSparse.cxx:1700
 TDecompSparse.cxx:1701
 TDecompSparse.cxx:1702
 TDecompSparse.cxx:1703
 TDecompSparse.cxx:1704
 TDecompSparse.cxx:1705
 TDecompSparse.cxx:1706
 TDecompSparse.cxx:1707
 TDecompSparse.cxx:1708
 TDecompSparse.cxx:1709
 TDecompSparse.cxx:1710
 TDecompSparse.cxx:1711
 TDecompSparse.cxx:1712
 TDecompSparse.cxx:1713
 TDecompSparse.cxx:1714
 TDecompSparse.cxx:1715
 TDecompSparse.cxx:1716
 TDecompSparse.cxx:1717
 TDecompSparse.cxx:1718
 TDecompSparse.cxx:1719
 TDecompSparse.cxx:1720
 TDecompSparse.cxx:1721
 TDecompSparse.cxx:1722
 TDecompSparse.cxx:1723
 TDecompSparse.cxx:1724
 TDecompSparse.cxx:1725
 TDecompSparse.cxx:1726
 TDecompSparse.cxx:1727
 TDecompSparse.cxx:1728
 TDecompSparse.cxx:1729
 TDecompSparse.cxx:1730
 TDecompSparse.cxx:1731
 TDecompSparse.cxx:1732
 TDecompSparse.cxx:1733
 TDecompSparse.cxx:1734
 TDecompSparse.cxx:1735
 TDecompSparse.cxx:1736
 TDecompSparse.cxx:1737
 TDecompSparse.cxx:1738
 TDecompSparse.cxx:1739
 TDecompSparse.cxx:1740
 TDecompSparse.cxx:1741
 TDecompSparse.cxx:1742
 TDecompSparse.cxx:1743
 TDecompSparse.cxx:1744
 TDecompSparse.cxx:1745
 TDecompSparse.cxx:1746
 TDecompSparse.cxx:1747
 TDecompSparse.cxx:1748
 TDecompSparse.cxx:1749
 TDecompSparse.cxx:1750
 TDecompSparse.cxx:1751
 TDecompSparse.cxx:1752
 TDecompSparse.cxx:1753
 TDecompSparse.cxx:1754
 TDecompSparse.cxx:1755
 TDecompSparse.cxx:1756
 TDecompSparse.cxx:1757
 TDecompSparse.cxx:1758
 TDecompSparse.cxx:1759
 TDecompSparse.cxx:1760
 TDecompSparse.cxx:1761
 TDecompSparse.cxx:1762
 TDecompSparse.cxx:1763
 TDecompSparse.cxx:1764
 TDecompSparse.cxx:1765
 TDecompSparse.cxx:1766
 TDecompSparse.cxx:1767
 TDecompSparse.cxx:1768
 TDecompSparse.cxx:1769
 TDecompSparse.cxx:1770
 TDecompSparse.cxx:1771
 TDecompSparse.cxx:1772
 TDecompSparse.cxx:1773
 TDecompSparse.cxx:1774
 TDecompSparse.cxx:1775
 TDecompSparse.cxx:1776
 TDecompSparse.cxx:1777
 TDecompSparse.cxx:1778
 TDecompSparse.cxx:1779
 TDecompSparse.cxx:1780
 TDecompSparse.cxx:1781
 TDecompSparse.cxx:1782
 TDecompSparse.cxx:1783
 TDecompSparse.cxx:1784
 TDecompSparse.cxx:1785
 TDecompSparse.cxx:1786
 TDecompSparse.cxx:1787
 TDecompSparse.cxx:1788
 TDecompSparse.cxx:1789
 TDecompSparse.cxx:1790
 TDecompSparse.cxx:1791
 TDecompSparse.cxx:1792
 TDecompSparse.cxx:1793
 TDecompSparse.cxx:1794
 TDecompSparse.cxx:1795
 TDecompSparse.cxx:1796
 TDecompSparse.cxx:1797
 TDecompSparse.cxx:1798
 TDecompSparse.cxx:1799
 TDecompSparse.cxx:1800
 TDecompSparse.cxx:1801
 TDecompSparse.cxx:1802
 TDecompSparse.cxx:1803
 TDecompSparse.cxx:1804
 TDecompSparse.cxx:1805
 TDecompSparse.cxx:1806
 TDecompSparse.cxx:1807
 TDecompSparse.cxx:1808
 TDecompSparse.cxx:1809
 TDecompSparse.cxx:1810
 TDecompSparse.cxx:1811
 TDecompSparse.cxx:1812
 TDecompSparse.cxx:1813
 TDecompSparse.cxx:1814
 TDecompSparse.cxx:1815
 TDecompSparse.cxx:1816
 TDecompSparse.cxx:1817
 TDecompSparse.cxx:1818
 TDecompSparse.cxx:1819
 TDecompSparse.cxx:1820
 TDecompSparse.cxx:1821
 TDecompSparse.cxx:1822
 TDecompSparse.cxx:1823
 TDecompSparse.cxx:1824
 TDecompSparse.cxx:1825
 TDecompSparse.cxx:1826
 TDecompSparse.cxx:1827
 TDecompSparse.cxx:1828
 TDecompSparse.cxx:1829
 TDecompSparse.cxx:1830
 TDecompSparse.cxx:1831
 TDecompSparse.cxx:1832
 TDecompSparse.cxx:1833
 TDecompSparse.cxx:1834
 TDecompSparse.cxx:1835
 TDecompSparse.cxx:1836
 TDecompSparse.cxx:1837
 TDecompSparse.cxx:1838
 TDecompSparse.cxx:1839
 TDecompSparse.cxx:1840
 TDecompSparse.cxx:1841
 TDecompSparse.cxx:1842
 TDecompSparse.cxx:1843
 TDecompSparse.cxx:1844
 TDecompSparse.cxx:1845
 TDecompSparse.cxx:1846
 TDecompSparse.cxx:1847
 TDecompSparse.cxx:1848
 TDecompSparse.cxx:1849
 TDecompSparse.cxx:1850
 TDecompSparse.cxx:1851
 TDecompSparse.cxx:1852
 TDecompSparse.cxx:1853
 TDecompSparse.cxx:1854
 TDecompSparse.cxx:1855
 TDecompSparse.cxx:1856
 TDecompSparse.cxx:1857
 TDecompSparse.cxx:1858
 TDecompSparse.cxx:1859
 TDecompSparse.cxx:1860
 TDecompSparse.cxx:1861
 TDecompSparse.cxx:1862
 TDecompSparse.cxx:1863
 TDecompSparse.cxx:1864
 TDecompSparse.cxx:1865
 TDecompSparse.cxx:1866
 TDecompSparse.cxx:1867
 TDecompSparse.cxx:1868
 TDecompSparse.cxx:1869
 TDecompSparse.cxx:1870
 TDecompSparse.cxx:1871
 TDecompSparse.cxx:1872
 TDecompSparse.cxx:1873
 TDecompSparse.cxx:1874
 TDecompSparse.cxx:1875
 TDecompSparse.cxx:1876
 TDecompSparse.cxx:1877
 TDecompSparse.cxx:1878
 TDecompSparse.cxx:1879
 TDecompSparse.cxx:1880
 TDecompSparse.cxx:1881
 TDecompSparse.cxx:1882
 TDecompSparse.cxx:1883
 TDecompSparse.cxx:1884
 TDecompSparse.cxx:1885
 TDecompSparse.cxx:1886
 TDecompSparse.cxx:1887
 TDecompSparse.cxx:1888
 TDecompSparse.cxx:1889
 TDecompSparse.cxx:1890
 TDecompSparse.cxx:1891
 TDecompSparse.cxx:1892
 TDecompSparse.cxx:1893
 TDecompSparse.cxx:1894
 TDecompSparse.cxx:1895
 TDecompSparse.cxx:1896
 TDecompSparse.cxx:1897
 TDecompSparse.cxx:1898
 TDecompSparse.cxx:1899
 TDecompSparse.cxx:1900
 TDecompSparse.cxx:1901
 TDecompSparse.cxx:1902
 TDecompSparse.cxx:1903
 TDecompSparse.cxx:1904
 TDecompSparse.cxx:1905
 TDecompSparse.cxx:1906
 TDecompSparse.cxx:1907
 TDecompSparse.cxx:1908
 TDecompSparse.cxx:1909
 TDecompSparse.cxx:1910
 TDecompSparse.cxx:1911
 TDecompSparse.cxx:1912
 TDecompSparse.cxx:1913
 TDecompSparse.cxx:1914
 TDecompSparse.cxx:1915
 TDecompSparse.cxx:1916
 TDecompSparse.cxx:1917
 TDecompSparse.cxx:1918
 TDecompSparse.cxx:1919
 TDecompSparse.cxx:1920
 TDecompSparse.cxx:1921
 TDecompSparse.cxx:1922
 TDecompSparse.cxx:1923
 TDecompSparse.cxx:1924
 TDecompSparse.cxx:1925
 TDecompSparse.cxx:1926
 TDecompSparse.cxx:1927
 TDecompSparse.cxx:1928
 TDecompSparse.cxx:1929
 TDecompSparse.cxx:1930
 TDecompSparse.cxx:1931
 TDecompSparse.cxx:1932
 TDecompSparse.cxx:1933
 TDecompSparse.cxx:1934
 TDecompSparse.cxx:1935
 TDecompSparse.cxx:1936
 TDecompSparse.cxx:1937
 TDecompSparse.cxx:1938
 TDecompSparse.cxx:1939
 TDecompSparse.cxx:1940
 TDecompSparse.cxx:1941
 TDecompSparse.cxx:1942
 TDecompSparse.cxx:1943
 TDecompSparse.cxx:1944
 TDecompSparse.cxx:1945
 TDecompSparse.cxx:1946
 TDecompSparse.cxx:1947
 TDecompSparse.cxx:1948
 TDecompSparse.cxx:1949
 TDecompSparse.cxx:1950
 TDecompSparse.cxx:1951
 TDecompSparse.cxx:1952
 TDecompSparse.cxx:1953
 TDecompSparse.cxx:1954
 TDecompSparse.cxx:1955
 TDecompSparse.cxx:1956
 TDecompSparse.cxx:1957
 TDecompSparse.cxx:1958
 TDecompSparse.cxx:1959
 TDecompSparse.cxx:1960
 TDecompSparse.cxx:1961
 TDecompSparse.cxx:1962
 TDecompSparse.cxx:1963
 TDecompSparse.cxx:1964
 TDecompSparse.cxx:1965
 TDecompSparse.cxx:1966
 TDecompSparse.cxx:1967
 TDecompSparse.cxx:1968
 TDecompSparse.cxx:1969
 TDecompSparse.cxx:1970
 TDecompSparse.cxx:1971
 TDecompSparse.cxx:1972
 TDecompSparse.cxx:1973
 TDecompSparse.cxx:1974
 TDecompSparse.cxx:1975
 TDecompSparse.cxx:1976
 TDecompSparse.cxx:1977
 TDecompSparse.cxx:1978
 TDecompSparse.cxx:1979
 TDecompSparse.cxx:1980
 TDecompSparse.cxx:1981
 TDecompSparse.cxx:1982
 TDecompSparse.cxx:1983
 TDecompSparse.cxx:1984
 TDecompSparse.cxx:1985
 TDecompSparse.cxx:1986
 TDecompSparse.cxx:1987
 TDecompSparse.cxx:1988
 TDecompSparse.cxx:1989
 TDecompSparse.cxx:1990
 TDecompSparse.cxx:1991
 TDecompSparse.cxx:1992
 TDecompSparse.cxx:1993
 TDecompSparse.cxx:1994
 TDecompSparse.cxx:1995
 TDecompSparse.cxx:1996
 TDecompSparse.cxx:1997
 TDecompSparse.cxx:1998
 TDecompSparse.cxx:1999
 TDecompSparse.cxx:2000
 TDecompSparse.cxx:2001
 TDecompSparse.cxx:2002
 TDecompSparse.cxx:2003
 TDecompSparse.cxx:2004
 TDecompSparse.cxx:2005
 TDecompSparse.cxx:2006
 TDecompSparse.cxx:2007
 TDecompSparse.cxx:2008
 TDecompSparse.cxx:2009
 TDecompSparse.cxx:2010
 TDecompSparse.cxx:2011
 TDecompSparse.cxx:2012
 TDecompSparse.cxx:2013
 TDecompSparse.cxx:2014
 TDecompSparse.cxx:2015
 TDecompSparse.cxx:2016
 TDecompSparse.cxx:2017
 TDecompSparse.cxx:2018
 TDecompSparse.cxx:2019
 TDecompSparse.cxx:2020
 TDecompSparse.cxx:2021
 TDecompSparse.cxx:2022
 TDecompSparse.cxx:2023
 TDecompSparse.cxx:2024
 TDecompSparse.cxx:2025
 TDecompSparse.cxx:2026
 TDecompSparse.cxx:2027
 TDecompSparse.cxx:2028
 TDecompSparse.cxx:2029
 TDecompSparse.cxx:2030
 TDecompSparse.cxx:2031
 TDecompSparse.cxx:2032
 TDecompSparse.cxx:2033
 TDecompSparse.cxx:2034
 TDecompSparse.cxx:2035
 TDecompSparse.cxx:2036
 TDecompSparse.cxx:2037
 TDecompSparse.cxx:2038
 TDecompSparse.cxx:2039
 TDecompSparse.cxx:2040
 TDecompSparse.cxx:2041
 TDecompSparse.cxx:2042
 TDecompSparse.cxx:2043
 TDecompSparse.cxx:2044
 TDecompSparse.cxx:2045
 TDecompSparse.cxx:2046
 TDecompSparse.cxx:2047
 TDecompSparse.cxx:2048
 TDecompSparse.cxx:2049
 TDecompSparse.cxx:2050
 TDecompSparse.cxx:2051
 TDecompSparse.cxx:2052
 TDecompSparse.cxx:2053
 TDecompSparse.cxx:2054
 TDecompSparse.cxx:2055
 TDecompSparse.cxx:2056
 TDecompSparse.cxx:2057
 TDecompSparse.cxx:2058
 TDecompSparse.cxx:2059
 TDecompSparse.cxx:2060
 TDecompSparse.cxx:2061
 TDecompSparse.cxx:2062
 TDecompSparse.cxx:2063
 TDecompSparse.cxx:2064
 TDecompSparse.cxx:2065
 TDecompSparse.cxx:2066
 TDecompSparse.cxx:2067
 TDecompSparse.cxx:2068
 TDecompSparse.cxx:2069
 TDecompSparse.cxx:2070
 TDecompSparse.cxx:2071
 TDecompSparse.cxx:2072
 TDecompSparse.cxx:2073
 TDecompSparse.cxx:2074
 TDecompSparse.cxx:2075
 TDecompSparse.cxx:2076
 TDecompSparse.cxx:2077
 TDecompSparse.cxx:2078
 TDecompSparse.cxx:2079
 TDecompSparse.cxx:2080
 TDecompSparse.cxx:2081
 TDecompSparse.cxx:2082
 TDecompSparse.cxx:2083
 TDecompSparse.cxx:2084
 TDecompSparse.cxx:2085
 TDecompSparse.cxx:2086
 TDecompSparse.cxx:2087
 TDecompSparse.cxx:2088
 TDecompSparse.cxx:2089
 TDecompSparse.cxx:2090
 TDecompSparse.cxx:2091
 TDecompSparse.cxx:2092
 TDecompSparse.cxx:2093
 TDecompSparse.cxx:2094
 TDecompSparse.cxx:2095
 TDecompSparse.cxx:2096
 TDecompSparse.cxx:2097
 TDecompSparse.cxx:2098
 TDecompSparse.cxx:2099
 TDecompSparse.cxx:2100
 TDecompSparse.cxx:2101
 TDecompSparse.cxx:2102
 TDecompSparse.cxx:2103
 TDecompSparse.cxx:2104
 TDecompSparse.cxx:2105
 TDecompSparse.cxx:2106
 TDecompSparse.cxx:2107
 TDecompSparse.cxx:2108
 TDecompSparse.cxx:2109
 TDecompSparse.cxx:2110
 TDecompSparse.cxx:2111
 TDecompSparse.cxx:2112
 TDecompSparse.cxx:2113
 TDecompSparse.cxx:2114
 TDecompSparse.cxx:2115
 TDecompSparse.cxx:2116
 TDecompSparse.cxx:2117
 TDecompSparse.cxx:2118
 TDecompSparse.cxx:2119
 TDecompSparse.cxx:2120
 TDecompSparse.cxx:2121
 TDecompSparse.cxx:2122
 TDecompSparse.cxx:2123
 TDecompSparse.cxx:2124
 TDecompSparse.cxx:2125
 TDecompSparse.cxx:2126
 TDecompSparse.cxx:2127
 TDecompSparse.cxx:2128
 TDecompSparse.cxx:2129
 TDecompSparse.cxx:2130
 TDecompSparse.cxx:2131
 TDecompSparse.cxx:2132
 TDecompSparse.cxx:2133
 TDecompSparse.cxx:2134
 TDecompSparse.cxx:2135
 TDecompSparse.cxx:2136
 TDecompSparse.cxx:2137
 TDecompSparse.cxx:2138
 TDecompSparse.cxx:2139
 TDecompSparse.cxx:2140
 TDecompSparse.cxx:2141
 TDecompSparse.cxx:2142
 TDecompSparse.cxx:2143
 TDecompSparse.cxx:2144
 TDecompSparse.cxx:2145
 TDecompSparse.cxx:2146
 TDecompSparse.cxx:2147
 TDecompSparse.cxx:2148
 TDecompSparse.cxx:2149
 TDecompSparse.cxx:2150
 TDecompSparse.cxx:2151
 TDecompSparse.cxx:2152
 TDecompSparse.cxx:2153
 TDecompSparse.cxx:2154
 TDecompSparse.cxx:2155
 TDecompSparse.cxx:2156
 TDecompSparse.cxx:2157
 TDecompSparse.cxx:2158
 TDecompSparse.cxx:2159
 TDecompSparse.cxx:2160
 TDecompSparse.cxx:2161
 TDecompSparse.cxx:2162
 TDecompSparse.cxx:2163
 TDecompSparse.cxx:2164
 TDecompSparse.cxx:2165
 TDecompSparse.cxx:2166
 TDecompSparse.cxx:2167
 TDecompSparse.cxx:2168
 TDecompSparse.cxx:2169
 TDecompSparse.cxx:2170
 TDecompSparse.cxx:2171
 TDecompSparse.cxx:2172
 TDecompSparse.cxx:2173
 TDecompSparse.cxx:2174
 TDecompSparse.cxx:2175
 TDecompSparse.cxx:2176
 TDecompSparse.cxx:2177
 TDecompSparse.cxx:2178
 TDecompSparse.cxx:2179
 TDecompSparse.cxx:2180
 TDecompSparse.cxx:2181
 TDecompSparse.cxx:2182
 TDecompSparse.cxx:2183
 TDecompSparse.cxx:2184
 TDecompSparse.cxx:2185
 TDecompSparse.cxx:2186
 TDecompSparse.cxx:2187
 TDecompSparse.cxx:2188
 TDecompSparse.cxx:2189
 TDecompSparse.cxx:2190
 TDecompSparse.cxx:2191
 TDecompSparse.cxx:2192
 TDecompSparse.cxx:2193
 TDecompSparse.cxx:2194
 TDecompSparse.cxx:2195
 TDecompSparse.cxx:2196
 TDecompSparse.cxx:2197
 TDecompSparse.cxx:2198
 TDecompSparse.cxx:2199
 TDecompSparse.cxx:2200
 TDecompSparse.cxx:2201
 TDecompSparse.cxx:2202
 TDecompSparse.cxx:2203
 TDecompSparse.cxx:2204
 TDecompSparse.cxx:2205
 TDecompSparse.cxx:2206
 TDecompSparse.cxx:2207
 TDecompSparse.cxx:2208
 TDecompSparse.cxx:2209
 TDecompSparse.cxx:2210
 TDecompSparse.cxx:2211
 TDecompSparse.cxx:2212
 TDecompSparse.cxx:2213
 TDecompSparse.cxx:2214
 TDecompSparse.cxx:2215
 TDecompSparse.cxx:2216
 TDecompSparse.cxx:2217
 TDecompSparse.cxx:2218
 TDecompSparse.cxx:2219
 TDecompSparse.cxx:2220
 TDecompSparse.cxx:2221
 TDecompSparse.cxx:2222
 TDecompSparse.cxx:2223
 TDecompSparse.cxx:2224
 TDecompSparse.cxx:2225
 TDecompSparse.cxx:2226
 TDecompSparse.cxx:2227
 TDecompSparse.cxx:2228
 TDecompSparse.cxx:2229
 TDecompSparse.cxx:2230
 TDecompSparse.cxx:2231
 TDecompSparse.cxx:2232
 TDecompSparse.cxx:2233
 TDecompSparse.cxx:2234
 TDecompSparse.cxx:2235
 TDecompSparse.cxx:2236
 TDecompSparse.cxx:2237
 TDecompSparse.cxx:2238
 TDecompSparse.cxx:2239
 TDecompSparse.cxx:2240
 TDecompSparse.cxx:2241
 TDecompSparse.cxx:2242
 TDecompSparse.cxx:2243
 TDecompSparse.cxx:2244
 TDecompSparse.cxx:2245
 TDecompSparse.cxx:2246
 TDecompSparse.cxx:2247
 TDecompSparse.cxx:2248
 TDecompSparse.cxx:2249
 TDecompSparse.cxx:2250
 TDecompSparse.cxx:2251
 TDecompSparse.cxx:2252
 TDecompSparse.cxx:2253
 TDecompSparse.cxx:2254
 TDecompSparse.cxx:2255
 TDecompSparse.cxx:2256
 TDecompSparse.cxx:2257
 TDecompSparse.cxx:2258
 TDecompSparse.cxx:2259
 TDecompSparse.cxx:2260
 TDecompSparse.cxx:2261
 TDecompSparse.cxx:2262
 TDecompSparse.cxx:2263
 TDecompSparse.cxx:2264
 TDecompSparse.cxx:2265
 TDecompSparse.cxx:2266
 TDecompSparse.cxx:2267
 TDecompSparse.cxx:2268
 TDecompSparse.cxx:2269
 TDecompSparse.cxx:2270
 TDecompSparse.cxx:2271
 TDecompSparse.cxx:2272
 TDecompSparse.cxx:2273
 TDecompSparse.cxx:2274
 TDecompSparse.cxx:2275
 TDecompSparse.cxx:2276
 TDecompSparse.cxx:2277
 TDecompSparse.cxx:2278
 TDecompSparse.cxx:2279
 TDecompSparse.cxx:2280
 TDecompSparse.cxx:2281
 TDecompSparse.cxx:2282
 TDecompSparse.cxx:2283
 TDecompSparse.cxx:2284
 TDecompSparse.cxx:2285
 TDecompSparse.cxx:2286
 TDecompSparse.cxx:2287
 TDecompSparse.cxx:2288
 TDecompSparse.cxx:2289
 TDecompSparse.cxx:2290
 TDecompSparse.cxx:2291
 TDecompSparse.cxx:2292
 TDecompSparse.cxx:2293
 TDecompSparse.cxx:2294
 TDecompSparse.cxx:2295
 TDecompSparse.cxx:2296
 TDecompSparse.cxx:2297
 TDecompSparse.cxx:2298
 TDecompSparse.cxx:2299
 TDecompSparse.cxx:2300
 TDecompSparse.cxx:2301
 TDecompSparse.cxx:2302
 TDecompSparse.cxx:2303
 TDecompSparse.cxx:2304
 TDecompSparse.cxx:2305
 TDecompSparse.cxx:2306
 TDecompSparse.cxx:2307
 TDecompSparse.cxx:2308
 TDecompSparse.cxx:2309
 TDecompSparse.cxx:2310
 TDecompSparse.cxx:2311
 TDecompSparse.cxx:2312
 TDecompSparse.cxx:2313
 TDecompSparse.cxx:2314
 TDecompSparse.cxx:2315
 TDecompSparse.cxx:2316
 TDecompSparse.cxx:2317
 TDecompSparse.cxx:2318
 TDecompSparse.cxx:2319
 TDecompSparse.cxx:2320
 TDecompSparse.cxx:2321
 TDecompSparse.cxx:2322
 TDecompSparse.cxx:2323
 TDecompSparse.cxx:2324
 TDecompSparse.cxx:2325
 TDecompSparse.cxx:2326
 TDecompSparse.cxx:2327
 TDecompSparse.cxx:2328
 TDecompSparse.cxx:2329
 TDecompSparse.cxx:2330
 TDecompSparse.cxx:2331
 TDecompSparse.cxx:2332
 TDecompSparse.cxx:2333
 TDecompSparse.cxx:2334
 TDecompSparse.cxx:2335
 TDecompSparse.cxx:2336
 TDecompSparse.cxx:2337
 TDecompSparse.cxx:2338
 TDecompSparse.cxx:2339
 TDecompSparse.cxx:2340
 TDecompSparse.cxx:2341
 TDecompSparse.cxx:2342
 TDecompSparse.cxx:2343
 TDecompSparse.cxx:2344
 TDecompSparse.cxx:2345
 TDecompSparse.cxx:2346
 TDecompSparse.cxx:2347
 TDecompSparse.cxx:2348
 TDecompSparse.cxx:2349
 TDecompSparse.cxx:2350
 TDecompSparse.cxx:2351
 TDecompSparse.cxx:2352
 TDecompSparse.cxx:2353
 TDecompSparse.cxx:2354
 TDecompSparse.cxx:2355
 TDecompSparse.cxx:2356
 TDecompSparse.cxx:2357
 TDecompSparse.cxx:2358
 TDecompSparse.cxx:2359
 TDecompSparse.cxx:2360
 TDecompSparse.cxx:2361
 TDecompSparse.cxx:2362
 TDecompSparse.cxx:2363
 TDecompSparse.cxx:2364
 TDecompSparse.cxx:2365
 TDecompSparse.cxx:2366
 TDecompSparse.cxx:2367
 TDecompSparse.cxx:2368
 TDecompSparse.cxx:2369
 TDecompSparse.cxx:2370
 TDecompSparse.cxx:2371
 TDecompSparse.cxx:2372
 TDecompSparse.cxx:2373
 TDecompSparse.cxx:2374
 TDecompSparse.cxx:2375
 TDecompSparse.cxx:2376
 TDecompSparse.cxx:2377
 TDecompSparse.cxx:2378
 TDecompSparse.cxx:2379
 TDecompSparse.cxx:2380
 TDecompSparse.cxx:2381
 TDecompSparse.cxx:2382
 TDecompSparse.cxx:2383
 TDecompSparse.cxx:2384
 TDecompSparse.cxx:2385
 TDecompSparse.cxx:2386
 TDecompSparse.cxx:2387
 TDecompSparse.cxx:2388
 TDecompSparse.cxx:2389
 TDecompSparse.cxx:2390
 TDecompSparse.cxx:2391
 TDecompSparse.cxx:2392
 TDecompSparse.cxx:2393
 TDecompSparse.cxx:2394
 TDecompSparse.cxx:2395
 TDecompSparse.cxx:2396
 TDecompSparse.cxx:2397
 TDecompSparse.cxx:2398
 TDecompSparse.cxx:2399
 TDecompSparse.cxx:2400
 TDecompSparse.cxx:2401
 TDecompSparse.cxx:2402
 TDecompSparse.cxx:2403
 TDecompSparse.cxx:2404
 TDecompSparse.cxx:2405
 TDecompSparse.cxx:2406
 TDecompSparse.cxx:2407
 TDecompSparse.cxx:2408
 TDecompSparse.cxx:2409
 TDecompSparse.cxx:2410
 TDecompSparse.cxx:2411
 TDecompSparse.cxx:2412
 TDecompSparse.cxx:2413
 TDecompSparse.cxx:2414
 TDecompSparse.cxx:2415
 TDecompSparse.cxx:2416
 TDecompSparse.cxx:2417
 TDecompSparse.cxx:2418
 TDecompSparse.cxx:2419
 TDecompSparse.cxx:2420
 TDecompSparse.cxx:2421
 TDecompSparse.cxx:2422
 TDecompSparse.cxx:2423
 TDecompSparse.cxx:2424
 TDecompSparse.cxx:2425
 TDecompSparse.cxx:2426
 TDecompSparse.cxx:2427
 TDecompSparse.cxx:2428
 TDecompSparse.cxx:2429
 TDecompSparse.cxx:2430
 TDecompSparse.cxx:2431
 TDecompSparse.cxx:2432
 TDecompSparse.cxx:2433
 TDecompSparse.cxx:2434
 TDecompSparse.cxx:2435
 TDecompSparse.cxx:2436
 TDecompSparse.cxx:2437
 TDecompSparse.cxx:2438
 TDecompSparse.cxx:2439
 TDecompSparse.cxx:2440
 TDecompSparse.cxx:2441
 TDecompSparse.cxx:2442
 TDecompSparse.cxx:2443
 TDecompSparse.cxx:2444
 TDecompSparse.cxx:2445
 TDecompSparse.cxx:2446
 TDecompSparse.cxx:2447
 TDecompSparse.cxx:2448
 TDecompSparse.cxx:2449
 TDecompSparse.cxx:2450
 TDecompSparse.cxx:2451
 TDecompSparse.cxx:2452
 TDecompSparse.cxx:2453
 TDecompSparse.cxx:2454
 TDecompSparse.cxx:2455
 TDecompSparse.cxx:2456
 TDecompSparse.cxx:2457
 TDecompSparse.cxx:2458
 TDecompSparse.cxx:2459
 TDecompSparse.cxx:2460
 TDecompSparse.cxx:2461
 TDecompSparse.cxx:2462
 TDecompSparse.cxx:2463
 TDecompSparse.cxx:2464
 TDecompSparse.cxx:2465
 TDecompSparse.cxx:2466
 TDecompSparse.cxx:2467
 TDecompSparse.cxx:2468
 TDecompSparse.cxx:2469
 TDecompSparse.cxx:2470
 TDecompSparse.cxx:2471
 TDecompSparse.cxx:2472
 TDecompSparse.cxx:2473
 TDecompSparse.cxx:2474
 TDecompSparse.cxx:2475
 TDecompSparse.cxx:2476
 TDecompSparse.cxx:2477
 TDecompSparse.cxx:2478
 TDecompSparse.cxx:2479
 TDecompSparse.cxx:2480
 TDecompSparse.cxx:2481
 TDecompSparse.cxx:2482
 TDecompSparse.cxx:2483
 TDecompSparse.cxx:2484
 TDecompSparse.cxx:2485
 TDecompSparse.cxx:2486
 TDecompSparse.cxx:2487
 TDecompSparse.cxx:2488
 TDecompSparse.cxx:2489
 TDecompSparse.cxx:2490
 TDecompSparse.cxx:2491
 TDecompSparse.cxx:2492
 TDecompSparse.cxx:2493
 TDecompSparse.cxx:2494
 TDecompSparse.cxx:2495
 TDecompSparse.cxx:2496
 TDecompSparse.cxx:2497
 TDecompSparse.cxx:2498
 TDecompSparse.cxx:2499
 TDecompSparse.cxx:2500
 TDecompSparse.cxx:2501
 TDecompSparse.cxx:2502
 TDecompSparse.cxx:2503
 TDecompSparse.cxx:2504
 TDecompSparse.cxx:2505
 TDecompSparse.cxx:2506
 TDecompSparse.cxx:2507
 TDecompSparse.cxx:2508
 TDecompSparse.cxx:2509
 TDecompSparse.cxx:2510
 TDecompSparse.cxx:2511
 TDecompSparse.cxx:2512
 TDecompSparse.cxx:2513
 TDecompSparse.cxx:2514
 TDecompSparse.cxx:2515
 TDecompSparse.cxx:2516
 TDecompSparse.cxx:2517
 TDecompSparse.cxx:2518
 TDecompSparse.cxx:2519
 TDecompSparse.cxx:2520
 TDecompSparse.cxx:2521
 TDecompSparse.cxx:2522
 TDecompSparse.cxx:2523
 TDecompSparse.cxx:2524
 TDecompSparse.cxx:2525
 TDecompSparse.cxx:2526
 TDecompSparse.cxx:2527
 TDecompSparse.cxx:2528
 TDecompSparse.cxx:2529
 TDecompSparse.cxx:2530
 TDecompSparse.cxx:2531
 TDecompSparse.cxx:2532
 TDecompSparse.cxx:2533
 TDecompSparse.cxx:2534
 TDecompSparse.cxx:2535
 TDecompSparse.cxx:2536
 TDecompSparse.cxx:2537
 TDecompSparse.cxx:2538
 TDecompSparse.cxx:2539
 TDecompSparse.cxx:2540
 TDecompSparse.cxx:2541
 TDecompSparse.cxx:2542
 TDecompSparse.cxx:2543
 TDecompSparse.cxx:2544
 TDecompSparse.cxx:2545
 TDecompSparse.cxx:2546
 TDecompSparse.cxx:2547
 TDecompSparse.cxx:2548
 TDecompSparse.cxx:2549
 TDecompSparse.cxx:2550
 TDecompSparse.cxx:2551
 TDecompSparse.cxx:2552
 TDecompSparse.cxx:2553
 TDecompSparse.cxx:2554
 TDecompSparse.cxx:2555
 TDecompSparse.cxx:2556
 TDecompSparse.cxx:2557
 TDecompSparse.cxx:2558
 TDecompSparse.cxx:2559
 TDecompSparse.cxx:2560
 TDecompSparse.cxx:2561
 TDecompSparse.cxx:2562
 TDecompSparse.cxx:2563
 TDecompSparse.cxx:2564
 TDecompSparse.cxx:2565
 TDecompSparse.cxx:2566
 TDecompSparse.cxx:2567
 TDecompSparse.cxx:2568
 TDecompSparse.cxx:2569
 TDecompSparse.cxx:2570
 TDecompSparse.cxx:2571
 TDecompSparse.cxx:2572
 TDecompSparse.cxx:2573
 TDecompSparse.cxx:2574
 TDecompSparse.cxx:2575
 TDecompSparse.cxx:2576
 TDecompSparse.cxx:2577
 TDecompSparse.cxx:2578
 TDecompSparse.cxx:2579
 TDecompSparse.cxx:2580
 TDecompSparse.cxx:2581
 TDecompSparse.cxx:2582
 TDecompSparse.cxx:2583
 TDecompSparse.cxx:2584
 TDecompSparse.cxx:2585
 TDecompSparse.cxx:2586
 TDecompSparse.cxx:2587
 TDecompSparse.cxx:2588
 TDecompSparse.cxx:2589
 TDecompSparse.cxx:2590
 TDecompSparse.cxx:2591
 TDecompSparse.cxx:2592
 TDecompSparse.cxx:2593
 TDecompSparse.cxx:2594
 TDecompSparse.cxx:2595
 TDecompSparse.cxx:2596
 TDecompSparse.cxx:2597
 TDecompSparse.cxx:2598
 TDecompSparse.cxx:2599
 TDecompSparse.cxx:2600
 TDecompSparse.cxx:2601
 TDecompSparse.cxx:2602
 TDecompSparse.cxx:2603
 TDecompSparse.cxx:2604
 TDecompSparse.cxx:2605
 TDecompSparse.cxx:2606
 TDecompSparse.cxx:2607
 TDecompSparse.cxx:2608
 TDecompSparse.cxx:2609
 TDecompSparse.cxx:2610
 TDecompSparse.cxx:2611
 TDecompSparse.cxx:2612
 TDecompSparse.cxx:2613
 TDecompSparse.cxx:2614
 TDecompSparse.cxx:2615
 TDecompSparse.cxx:2616
 TDecompSparse.cxx:2617
 TDecompSparse.cxx:2618
 TDecompSparse.cxx:2619
 TDecompSparse.cxx:2620
 TDecompSparse.cxx:2621
 TDecompSparse.cxx:2622
 TDecompSparse.cxx:2623
 TDecompSparse.cxx:2624
 TDecompSparse.cxx:2625
 TDecompSparse.cxx:2626
 TDecompSparse.cxx:2627
 TDecompSparse.cxx:2628
 TDecompSparse.cxx:2629
 TDecompSparse.cxx:2630
 TDecompSparse.cxx:2631
 TDecompSparse.cxx:2632
 TDecompSparse.cxx:2633
 TDecompSparse.cxx:2634
 TDecompSparse.cxx:2635
 TDecompSparse.cxx:2636
 TDecompSparse.cxx:2637
 TDecompSparse.cxx:2638
 TDecompSparse.cxx:2639
 TDecompSparse.cxx:2640
 TDecompSparse.cxx:2641
 TDecompSparse.cxx:2642
 TDecompSparse.cxx:2643
 TDecompSparse.cxx:2644
 TDecompSparse.cxx:2645
 TDecompSparse.cxx:2646
 TDecompSparse.cxx:2647
 TDecompSparse.cxx:2648
 TDecompSparse.cxx:2649
 TDecompSparse.cxx:2650
 TDecompSparse.cxx:2651
 TDecompSparse.cxx:2652
 TDecompSparse.cxx:2653
 TDecompSparse.cxx:2654
 TDecompSparse.cxx:2655
 TDecompSparse.cxx:2656
 TDecompSparse.cxx:2657
 TDecompSparse.cxx:2658
 TDecompSparse.cxx:2659
 TDecompSparse.cxx:2660
 TDecompSparse.cxx:2661
 TDecompSparse.cxx:2662
 TDecompSparse.cxx:2663
 TDecompSparse.cxx:2664
 TDecompSparse.cxx:2665
 TDecompSparse.cxx:2666
 TDecompSparse.cxx:2667
 TDecompSparse.cxx:2668
 TDecompSparse.cxx:2669
 TDecompSparse.cxx:2670
 TDecompSparse.cxx:2671
 TDecompSparse.cxx:2672
 TDecompSparse.cxx:2673
 TDecompSparse.cxx:2674
 TDecompSparse.cxx:2675
 TDecompSparse.cxx:2676
 TDecompSparse.cxx:2677
 TDecompSparse.cxx:2678
 TDecompSparse.cxx:2679
 TDecompSparse.cxx:2680
 TDecompSparse.cxx:2681
 TDecompSparse.cxx:2682
 TDecompSparse.cxx:2683
 TDecompSparse.cxx:2684
 TDecompSparse.cxx:2685
 TDecompSparse.cxx:2686
 TDecompSparse.cxx:2687
 TDecompSparse.cxx:2688
 TDecompSparse.cxx:2689
 TDecompSparse.cxx:2690
 TDecompSparse.cxx:2691
 TDecompSparse.cxx:2692
 TDecompSparse.cxx:2693
 TDecompSparse.cxx:2694
 TDecompSparse.cxx:2695
 TDecompSparse.cxx:2696
 TDecompSparse.cxx:2697
 TDecompSparse.cxx:2698
 TDecompSparse.cxx:2699
 TDecompSparse.cxx:2700
 TDecompSparse.cxx:2701
 TDecompSparse.cxx:2702
 TDecompSparse.cxx:2703
 TDecompSparse.cxx:2704
 TDecompSparse.cxx:2705
 TDecompSparse.cxx:2706
 TDecompSparse.cxx:2707
 TDecompSparse.cxx:2708
 TDecompSparse.cxx:2709
 TDecompSparse.cxx:2710
 TDecompSparse.cxx:2711
 TDecompSparse.cxx:2712
 TDecompSparse.cxx:2713
 TDecompSparse.cxx:2714
 TDecompSparse.cxx:2715
 TDecompSparse.cxx:2716
 TDecompSparse.cxx:2717
 TDecompSparse.cxx:2718
 TDecompSparse.cxx:2719
 TDecompSparse.cxx:2720
 TDecompSparse.cxx:2721
 TDecompSparse.cxx:2722
 TDecompSparse.cxx:2723
 TDecompSparse.cxx:2724
 TDecompSparse.cxx:2725
 TDecompSparse.cxx:2726
 TDecompSparse.cxx:2727
 TDecompSparse.cxx:2728
 TDecompSparse.cxx:2729