From babd4411e0c3ec21e3dfafa185265a8a79e13b9c Mon Sep 17 00:00:00 2001 From: Rene Brun <Rene.Brun@cern.ch> Date: Thu, 3 Nov 2005 21:03:37 +0000 Subject: [PATCH] Revert to the previous version of stressLinear. I introduced a new version by mistake. git-svn-id: http://root.cern.ch/svn/root/trunk@13124 27541ba8-7e3a-0410-8455-c3a389f83636 --- test/stressLinear.cxx | 284 +++++++++++++++++------------------------- 1 file changed, 114 insertions(+), 170 deletions(-) diff --git a/test/stressLinear.cxx b/test/stressLinear.cxx index 10525428bfd..a7be8bc02c3 100644 --- a/test/stressLinear.cxx +++ b/test/stressLinear.cxx @@ -96,19 +96,12 @@ #include <TF1.h> #include <TGraph.h> -#include "TMatrixF.h" -#include "TMatrixFSym.h" -#include "TMatrixFSparse.h" -#include "TMatrixFLazy.h" -#include "TVectorF.h" - #include "TMatrixD.h" #include "TMatrixDSym.h" #include "TMatrixDSparse.h" #include "TMatrixDLazy.h" #include "TMatrixDUtils.h" #include "TVectorD.h" - #include "TDecompLU.h" #include "TDecompChol.h" #include "TDecompQRH.h" @@ -161,8 +154,6 @@ void astress_pseudo (); void astress_eigen (Int_t msize); void astress_decomp_io (Int_t msize); -void stress_backward_io (); - void cleanup (); //_____________________________batch only_____________________ @@ -275,15 +266,6 @@ void stressLinear(Int_t maxSizeReq,Int_t verbose) cout << "******************************************************************" <<endl; } - //Backward Compatibilty of Streamers - if (gROOT->GetVersionInt() > 40800) - { - cout << "* Starting Backward IO compatibility - S T R E S S *" <<endl; - cout << "******************************************************************" <<endl; - stress_backward_io(); - cout << "******************************************************************" <<endl; - } - gBenchmark->Stop("stress"); //Print table with results @@ -616,13 +598,13 @@ void mstress_element_op(Int_t rsize,Int_t csize) for (Int_t i = m.GetRowLwb(); i <= m.GetRowUpb(); i++) for(Int_t j = m.GetColLwb(); j <= m.GetColUpb(); j++) m(i,j) = 0; - ok &= VerifyMatrixValue(m,0.,gVerbose,EPSILON); + ok &= VerifyMatrixValue(m,0,gVerbose,EPSILON); } if (gVerbose) cout << "Creating zero m1 ..." << endl; - TMatrixD m1(TMatrixD::kZero, m); - ok &= VerifyMatrixValue(m1,0.,gVerbose,EPSILON); + TMatrixD m1(TMatrixDBase::kZero, m); + ok &= VerifyMatrixValue(m1,0,gVerbose,EPSILON); if (gVerbose) cout << "Comparing m1 with 0 ..." << endl; @@ -653,7 +635,7 @@ void mstress_element_op(Int_t rsize,Int_t csize) if (gVerbose) cout << "Clearing m1 ..." << endl; m1.Zero(); - ok &= VerifyMatrixValue(m1,0.,gVerbose,EPSILON); + ok &= VerifyMatrixValue(m1,0,gVerbose,EPSILON); if (gVerbose) cout << "\nClear m and add the pattern" << endl; @@ -747,7 +729,7 @@ void mstress_element_op(Int_t rsize,Int_t csize) m.Sqr(); m1.Sqr(); m += m1; - ok &= VerifyMatrixValue(m,1.,gVerbose,EPSILON); + ok &= VerifyMatrixValue(m,1,gVerbose,EPSILON); if (gVerbose) cout << "\nDone\n" << endl; @@ -768,8 +750,8 @@ void mstress_binary_ebe_op(Int_t rsize, Int_t csize) const Double_t pattern = 4.25; TMatrixD m(2,rsize+1,0,csize-1); - TMatrixD m1(TMatrixD::kZero,m); - TMatrixD mp(TMatrixD::kZero,m); + TMatrixD m1(TMatrixDBase::kZero,m); + TMatrixD mp(TMatrixDBase::kZero,m); { for (Int_t i = mp.GetRowLwb(); i <= mp.GetRowUpb(); i++) @@ -797,7 +779,7 @@ void mstress_binary_ebe_op(Int_t rsize, Int_t csize) if (gVerbose) cout << " subtracting the matrix from itself" << endl; m1 -= m1; - ok &= VerifyMatrixValue(m1,0.,gVerbose,EPSILON); + ok &= VerifyMatrixValue(m1,0,gVerbose,EPSILON); if (gVerbose) cout << " adding two matrices together" << endl; m1 += m; @@ -812,13 +794,13 @@ void mstress_binary_ebe_op(Int_t rsize, Int_t csize) m1 = m; if (gVerbose) cout << " making m = 3*mp and m1 = 3*mp, via add() and succesive mult" << endl; - Add(m,2.,mp); + Add(m,2,mp); m1 += m1; m1 += mp; ok &= VerifyMatrixIdentity(m,m1,gVerbose,EPSILON); if (gVerbose) cout << " clear both m and m1, by subtracting from itself and via add()" << endl; m1 -= m1; - Add(m,-3.,mp); + Add(m,-3,mp); ok &= VerifyMatrixIdentity(m,m1,gVerbose,EPSILON); if (gVerbose) { @@ -861,7 +843,7 @@ void mstress_transposition(Int_t msize) cout << "\nCheck to see that a square UnitMatrix stays the same"; TMatrixD m(msize,msize); m.UnitMatrix(); - TMatrixD mt(TMatrixD::kTransposed,m); + TMatrixD mt(TMatrixDBase::kTransposed,m); ok &= ( m == mt ) ? kTRUE : kFALSE; } @@ -870,7 +852,7 @@ void mstress_transposition(Int_t msize) cout << "\nTest a non-square UnitMatrix"; TMatrixD m(msize,msize+1); m.UnitMatrix(); - TMatrixD mt(TMatrixD::kTransposed,m); + TMatrixD mt(TMatrixDBase::kTransposed,m); Assert(m.GetNrows() == mt.GetNcols() && m.GetNcols() == mt.GetNrows() ); for (Int_t i = m.GetRowLwb(); i <= TMath::Min(m.GetRowUpb(),m.GetColUpb()); i++) for (Int_t j = m.GetColLwb(); j <= TMath::Min(m.GetRowUpb(),m.GetColUpb()); j++) @@ -881,7 +863,7 @@ void mstress_transposition(Int_t msize) if (gVerbose) cout << "\nCheck to see that a symmetric (Hilbert)Matrix stays the same"; TMatrixD m = THilbertMatrixD(msize,msize); - TMatrixD mt(TMatrixD::kTransposed,m); + TMatrixD mt(TMatrixDBase::kTransposed,m); ok &= ( m == mt ) ? kTRUE : kFALSE; } @@ -890,14 +872,14 @@ void mstress_transposition(Int_t msize) cout << "\nCheck transposing a non-symmetric matrix"; TMatrixD m = THilbertMatrixD(msize+1,msize); m(1,2) = TMath::Pi(); - TMatrixD mt(TMatrixD::kTransposed,m); + TMatrixD mt(TMatrixDBase::kTransposed,m); Assert(m.GetNrows() == mt.GetNcols() && m.GetNcols() == mt.GetNrows()); Assert(mt(2,1) == (Double_t)TMath::Pi() && mt(1,2) != (Double_t)TMath::Pi()); Assert(mt[2][1] == (Double_t)TMath::Pi() && mt[1][2] != (Double_t)TMath::Pi()); if (gVerbose) cout << "\nCheck double transposing a non-symmetric matrix" << endl; - TMatrixD mtt(TMatrixD::kTransposed,mt); + TMatrixD mtt(TMatrixDBase::kTransposed,mt); ok &= ( m == mtt ) ? kTRUE : kFALSE; } @@ -949,7 +931,7 @@ void mstress_special_creation(Int_t dim) if (gVerbose) cout << "\ntest creating Hilbert matrices" << endl; TMatrixD m = THilbertMatrixD(dim+1,dim); - TMatrixD m1(TMatrixD::kZero,m); + TMatrixD m1(TMatrixDBase::kZero,m); ok &= ( !(m == m1) ) ? kTRUE : kFALSE; ok &= ( m != 0 ) ? kTRUE : kFALSE; #ifndef __CINT__ @@ -971,7 +953,7 @@ void mstress_special_creation(Int_t dim) ok &= ( m != 0 ) ? kTRUE : kFALSE; TMatrixD m1(m); // Applying the copy constructor ok &= ( m1 == m ) ? kTRUE : kFALSE; - TMatrixD m2(TMatrixD::kZero,m); + TMatrixD m2(TMatrixDBase::kZero,m); ok &= ( m2 == 0 ) ? kTRUE : kFALSE; ok &= ( m != 0 ) ? kTRUE : kFALSE; } @@ -1000,7 +982,7 @@ void mstress_special_creation(Int_t dim) ok &= ( is_indeed_unit(m) ) ? kTRUE : kFALSE; #endif m.ResizeTo(dim-1,dim); - TMatrixD m2(TMatrixD::kUnit,m); + TMatrixD m2(TMatrixDBase::kUnit,m); #ifndef __CINT__ { TestUnit test_unit; @@ -1147,7 +1129,7 @@ void mstress_norms(Int_t rsize_req,Int_t csize_req) if (gVerbose) cout << " Square of the Eucl norm has got to be pattern^2 * no_elems" << endl; ok &= ( m.E2Norm() == (pattern*pattern)*m.GetNoElements() ) ? kTRUE : kFALSE; - TMatrixD m1(TMatrixD::kZero,m); + TMatrixD m1(TMatrixDBase::kZero,m); ok &= ( m.E2Norm() == E2Norm(m,m1) ) ? kTRUE : kFALSE; if (gVerbose) @@ -1427,7 +1409,7 @@ void mstress_mm_multiplications() if (verbose) cout << "\nTest inline multiplications of the UnitMatrix" << endl; TMatrixD m = THilbertMatrixD(-1,msize,-1,msize); - TMatrixD u(TMatrixD::kUnit,m); + TMatrixD u(TMatrixDBase::kUnit,m); m(3,1) = TMath::Pi(); u *= m; ok &= VerifyMatrixIdentity(u,m,verbose,epsilon); @@ -1474,17 +1456,17 @@ void mstress_mm_multiplications() cout << "Test general matrix multiplication through inline mult" << endl; TMatrixD m = THilbertMatrixD(msize-2,msize); m(3,3) = TMath::Pi(); - TMatrixD mt(TMatrixD::kTransposed,m); + TMatrixD mt(TMatrixDBase::kTransposed,m); TMatrixD p = THilbertMatrixD(msize,msize); TMatrixDDiag(p) += 1; - TMatrixD mp(m,TMatrixD::kMult,p); + TMatrixD mp(m,TMatrixDBase::kMult,p); TMatrixD m1 = m; m *= p; ok &= VerifyMatrixIdentity(m,mp,verbose,epsilon); - TMatrixD mp1(mt,TMatrixD::kTransposeMult,p); + TMatrixD mp1(mt,TMatrixDBase::kTransposeMult,p); VerifyMatrixIdentity(m,mp1,verbose,epsilon); ok &= ( !(m1 == m) ); - TMatrixD mp2(TMatrixD::kZero,m1); + TMatrixD mp2(TMatrixDBase::kZero,m1); ok &= ( mp2 == 0 ); mp2.Mult(m1,p); ok &= VerifyMatrixIdentity(m,mp2,verbose,epsilon); @@ -1540,20 +1522,20 @@ void mstress_mm_multiplications() const Int_t order = 5; const Int_t no_sub_cols = (1<<order)-5; TMatrixD haar_sub = THaarMatrixD(5,no_sub_cols); - TMatrixD haar_sub_t(TMatrixD::kTransposed,haar_sub); - TMatrixD hsths(haar_sub_t,TMatrixD::kMult,haar_sub); - TMatrixD hsths1(TMatrixD::kZero,hsths); hsths1.Mult(haar_sub_t,haar_sub); - TMatrixD hsths_eth(TMatrixD::kUnit,hsths); + TMatrixD haar_sub_t(TMatrixDBase::kTransposed,haar_sub); + TMatrixD hsths(haar_sub_t,TMatrixDBase::kMult,haar_sub); + TMatrixD hsths1(TMatrixDBase::kZero,hsths); hsths1.Mult(haar_sub_t,haar_sub); + TMatrixD hsths_eth(TMatrixDBase::kUnit,hsths); ok &= ( hsths.GetNrows() == no_sub_cols && hsths.GetNcols() == no_sub_cols ); ok &= VerifyMatrixIdentity(hsths,hsths_eth,gVerbose,EPSILON); ok &= VerifyMatrixIdentity(hsths1,hsths_eth,gVerbose,EPSILON); TMatrixD haar = THaarMatrixD(order); - TMatrixD unit(TMatrixD::kUnit,haar); - TMatrixD haar_t(TMatrixD::kTransposed,haar); - TMatrixD hth(haar,TMatrixD::kTransposeMult,haar); - TMatrixD hht(haar,TMatrixD::kMult,haar_t); + TMatrixD unit(TMatrixDBase::kUnit,haar); + TMatrixD haar_t(TMatrixDBase::kTransposed,haar); + TMatrixD hth(haar,TMatrixDBase::kTransposeMult,haar); + TMatrixD hht(haar,TMatrixDBase::kMult,haar_t); TMatrixD hht1 = haar; hht1 *= haar_t; - TMatrixD hht2(TMatrixD::kZero,haar); hht2.Mult(haar,haar_t); + TMatrixD hht2(TMatrixDBase::kZero,haar); hht2.Mult(haar,haar_t); ok &= VerifyMatrixIdentity(unit,hth,gVerbose,EPSILON); ok &= VerifyMatrixIdentity(unit,hht,gVerbose,EPSILON); ok &= VerifyMatrixIdentity(unit,hht1,gVerbose,EPSILON); @@ -1586,7 +1568,7 @@ void mstress_sym_mm_multiplications(Int_t msize) cout << "\nTest inline multiplications of the UnitMatrix" << endl; TMatrixD m = THilbertMatrixD(-1,msize,-1,msize); TMatrixDSym m_sym(-1,msize,m.GetMatrixArray()); - TMatrixDSym u(TMatrixDSym::kUnit,m_sym); + TMatrixDSym u(TMatrixDBase::kUnit,m_sym); TMatrixD u2 = u * m_sym; ok &= VerifyMatrixIdentity(u2,m_sym,gVerbose,epsilon); } @@ -1694,18 +1676,18 @@ void mstress_sym_mm_multiplications(Int_t msize) TMatrixDSym ms = THilbertMatrixDSym(msize); ms(2,3) = TMath::Pi(); ms(3,2) = TMath::Pi(); - TMatrixDSym mt(TMatrixDSym::kTransposed,ms); + TMatrixDSym mt(TMatrixDBase::kTransposed,ms); TMatrixDSym p = THilbertMatrixDSym(msize); TMatrixDDiag(p) += 1; - TMatrixD mp(ms,TMatrixD::kMult,p); + TMatrixD mp(ms,TMatrixDBase::kMult,p); TMatrixDSym m1 = ms; - TMatrixD m3(ms,TMatrixD::kMult,p); + TMatrixD m3(ms,TMatrixDBase::kMult,p); memcpy(ms.GetMatrixArray(),m3.GetMatrixArray(),msize*msize*sizeof(Double_t)); ok &= VerifyMatrixIdentity(ms,mp,gVerbose,epsilon); - TMatrixD mp1(mt,TMatrixD::kTransposeMult,p); + TMatrixD mp1(mt,TMatrixDBase::kTransposeMult,p); ok &= VerifyMatrixIdentity(ms,mp1,gVerbose,epsilon); ok &= ( !(m1 == ms) ) ? kTRUE : kFALSE; - TMatrixDSym mp2(TMatrixDSym::kZero,ms); + TMatrixDSym mp2(TMatrixDBase::kZero,ms); ok &= ( mp2 == 0 ) ? kTRUE : kFALSE; if (gVerbose) @@ -1722,18 +1704,18 @@ void mstress_sym_mm_multiplications(Int_t msize) const Int_t order = 5; const Int_t no_sub_cols = (1<<order)-5; TMatrixD haarb = THaarMatrixD(5,no_sub_cols); - TMatrixD haarb_t(TMatrixD::kTransposed,haarb); - TMatrixD hth(haarb_t,TMatrixD::kMult,haarb); - TMatrixDSym hth1(TMatrixDSym::kAtA,haarb); + TMatrixD haarb_t(TMatrixDBase::kTransposed,haarb); + TMatrixD hth(haarb_t,TMatrixDBase::kMult,haarb); + TMatrixDSym hth1(TMatrixDBase::kAtA,haarb); ok &= VerifyMatrixIdentity(hth,hth1,gVerbose,epsilon); } { TMatrixD haar = THaarMatrixD(5); - TMatrixD unit(TMatrixD::kUnit,haar); - TMatrixD haar_t(TMatrixD::kTransposed,haar); - TMatrixDSym hths(TMatrixDSym::kAtA,haar); - TMatrixD hht(haar,TMatrixD::kMult,haar_t); + TMatrixD unit(TMatrixDBase::kUnit,haar); + TMatrixD haar_t(TMatrixDBase::kTransposed,haar); + TMatrixDSym hths(TMatrixDBase::kAtA,haar); + TMatrixD hht(haar,TMatrixDBase::kMult,haar_t); TMatrixD hht1 = haar; hht1 *= haar_t; ok &= VerifyMatrixIdentity(unit,hths,gVerbose,epsilon); ok &= VerifyMatrixIdentity(unit,hht,gVerbose,epsilon); @@ -1836,7 +1818,7 @@ void mstress_vm_multiplications() TMatrixD m = THilbertMatrixD(0,msize,0,msize-1); vb *= m; ok &= ( vb.GetLwb() == 0 ) ? kTRUE : kFALSE; - TMatrixD mvm(m,TMatrixD::kMult,vm); + TMatrixD mvm(m,TMatrixDBase::kMult,vm); TMatrixD mvb(msize+1,1); TMatrixDColumn(mvb,0) = vb; ok &= VerifyMatrixIdentity(mvb,mvm,verbose,epsilon); @@ -1851,10 +1833,10 @@ void mstress_vm_multiplications() vb(i) = TMath::Pi()+i; TMatrixD vm(msize,1); TMatrixDColumn(vm,0) = vb; - TMatrixDSym ms = THilbertMatrixDSym(0,msize-1); - vb *= ms; + TMatrixDSym m = THilbertMatrixDSym(0,msize-1); + vb *= m; ok &= ( vb.GetLwb() == 0 ) ? kTRUE : kFALSE; - TMatrixD mvm(ms,TMatrixD::kMult,vm); + TMatrixD mvm(m,TMatrixDBase::kMult,vm); TMatrixD mvb(msize,1); TMatrixDColumn(mvb,0) = vb; ok &= VerifyMatrixIdentity(mvb,mvm,verbose,epsilon); @@ -1922,12 +1904,12 @@ void mstress_inversion() if (verbose) cout << "Test inversion of an orthonormal (Haar) matrix" << endl; const Int_t order = Int_t(TMath::Log(msize)/TMath::Log(2)); - TMatrixD mr = THaarMatrixD(order); - TMatrixD morig = mr; - TMatrixD mt(TMatrixD::kTransposed,mr); + TMatrixD m = THaarMatrixD(order); + TMatrixD morig = m; + TMatrixD mt(TMatrixD::kTransposed,m); Double_t det = -1; // init to a wrong val to see if it's changed - mr.Invert(&det); - ok &= VerifyMatrixIdentity(mr,mt,verbose,epsilon); + m.Invert(&det); + ok &= VerifyMatrixIdentity(m,mt,verbose,epsilon); ok &= ( TMath::Abs(det-1) <= msize*epsilon ) ? kTRUE : kFALSE; if (verbose) { cout << "det = " << det << " deviation= " << TMath::Abs(det-1); @@ -1941,12 +1923,12 @@ void mstress_inversion() { if (verbose) cout << "Test inversion of a good matrix with diagonal dominance" << endl; - TMatrixD mh = THilbertMatrixD(msize,msize); - TMatrixDDiag(mh) += 1; - TMatrixD morig = mh; + TMatrixD m = THilbertMatrixD(msize,msize); + TMatrixDDiag(m) += 1; + TMatrixD morig = m; Double_t det_inv = 0; - const Double_t det_comp = mh.Determinant(); - mh.Invert(&det_inv); + const Double_t det_comp = m.Determinant(); + m.Invert(&det_inv); if (verbose) { cout << "\tcomputed determinant " << det_comp << endl; cout << "\tdeterminant returned by Invert() " << det_inv << endl; @@ -1954,8 +1936,8 @@ void mstress_inversion() if (verbose) cout << "\tcheck to see M^(-1) * M is E" << endl; - TMatrixD mim(mh,TMatrixD::kMult,morig); - TMatrixD unit(TMatrixD::kUnit,mh); + TMatrixD mim(m,TMatrixD::kMult,morig); + TMatrixD unit(TMatrixD::kUnit,m); ok &= VerifyMatrixIdentity(mim,unit,verbose,epsilon); if (verbose) @@ -1966,27 +1948,27 @@ void mstress_inversion() if (verbose) cout << "Test inversion through SVD" << endl; TMatrixD inv_svd (msize,msize); TDecompSVD svd (ms); svd.Invert(inv_svd); - ok &= VerifyMatrixIdentity(inv_svd,mh,verbose,epsilon); + ok &= VerifyMatrixIdentity(inv_svd,m,verbose,epsilon); if (verbose) cout << "Test inversion through LU" << endl; TMatrixD inv_lu (msize,msize); TDecompLU lu (ms); lu.Invert(inv_lu); - ok &= VerifyMatrixIdentity(inv_lu,mh,verbose,epsilon); + ok &= VerifyMatrixIdentity(inv_lu,m,verbose,epsilon); if (verbose) cout << "Test inversion through Cholesky" << endl; TMatrixDSym inv_chol(msize); TDecompChol chol(ms); chol.Invert(inv_chol); - ok &= VerifyMatrixIdentity(inv_chol,mh,verbose,epsilon); + ok &= VerifyMatrixIdentity(inv_chol,m,verbose,epsilon); if (verbose) cout << "Test inversion through QRH" << endl; TMatrixD inv_qrh (msize,msize); TDecompQRH qrh (ms); qrh.Invert(inv_qrh); - ok &= VerifyMatrixIdentity(inv_qrh,mh,verbose,epsilon); + ok &= VerifyMatrixIdentity(inv_qrh,m,verbose,epsilon); if (verbose) cout << "Test inversion through Bunch-Kaufman" << endl; TMatrixDSym inv_bk(msize); TDecompBK bk(ms); chol.Invert(inv_bk); - ok &= VerifyMatrixIdentity(inv_bk,mh,verbose,epsilon); + ok &= VerifyMatrixIdentity(inv_bk,m,verbose,epsilon); if (verbose) cout << "\tcheck to see M * M^(-1) is E" << endl; - TMatrixD mmi = morig; mmi *= mh; + TMatrixD mmi = morig; mmi *= m; ok &= VerifyMatrixIdentity(mmi,unit,verbose,epsilon); } @@ -2031,14 +2013,14 @@ void mstress_inversion() } } for (size = 2; size < 7; size++) { - TMatrixDSym ms1 = THilbertMatrixDSym(size); - TMatrixDDiag(ms1) += 1; - TMatrixDSym ms2 = ms1; + TMatrixDSym m1 = THilbertMatrixDSym(size); + TMatrixDDiag(m1) += 1; + TMatrixDSym m2 = m1; Double_t det1 = 0.0; Double_t det2 = 0.0; - ms1.Invert(&det1); - ms2.InvertFast(&det2); - ok &= VerifyMatrixIdentity(ms1,ms2,gVerbose,EPSILON); + m1.Invert(&det1); + m2.InvertFast(&det2); + ok &= VerifyMatrixIdentity(m1,m2,gVerbose,EPSILON); ok &= (TMath::Abs(det1-det2) < EPSILON); if (gVerbose) { cout << "det(Invert)= " << det1 << " det(InvertFast)= " << det2 <<endl; @@ -2373,8 +2355,8 @@ void spstress_element_op(Int_t rsize,Int_t csize) if (gVerbose) cout << "Creating zero m1 ..." << endl; - TMatrixDSparse m1(TMatrixDSparse::kZero, m); - ok &= VerifyMatrixValue(m1,0.,gVerbose,EPSILON); + TMatrixDSparse m1(TMatrixDBase::kZero, m); + ok &= VerifyMatrixValue(m1,0,gVerbose,EPSILON); if (gVerbose) cout << "Comparing m1 with 0 ..." << endl; @@ -2421,7 +2403,7 @@ void spstress_element_op(Int_t rsize,Int_t csize) if (gVerbose) cout << "Clearing m1 ..." << endl; m1.Zero(); - ok &= VerifyMatrixValue(m1,0.,gVerbose,EPSILON); + ok &= VerifyMatrixValue(m1,0,gVerbose,EPSILON); if (gVerbose) cout << "\nSet m = pattern" << endl; @@ -2524,10 +2506,10 @@ void spstress_binary_ebe_op(Int_t rsize, Int_t csize) const Double_t pattern = 4.25; TMatrixD m_d(2,rsize+1,0,csize-1); m_d = 1; - TMatrixDSparse m (TMatrixDSparse::kZero,m_d); m.SetSparseIndex (m_d); - TMatrixDSparse m1(TMatrixDSparse::kZero,m); m1.SetSparseIndex(m_d); + TMatrixDSparse m (TMatrixDBase::kZero,m_d); m.SetSparseIndex (m_d); + TMatrixDSparse m1(TMatrixDBase::kZero,m); m1.SetSparseIndex(m_d); - TMatrixDSparse mp(TMatrixDSparse::kZero,m1); mp.SetSparseIndex(m_d); + TMatrixDSparse mp(TMatrixDBase::kZero,m1); mp.SetSparseIndex(m_d); { for (Int_t i = mp.GetRowLwb(); i <= mp.GetRowUpb(); i++) for (Int_t j = mp.GetColLwb(); j <= mp.GetColUpb(); j++) @@ -2554,7 +2536,7 @@ void spstress_binary_ebe_op(Int_t rsize, Int_t csize) if (gVerbose) cout << " subtracting the matrix from itself" << endl; m1 -= m1; - ok &= VerifyMatrixValue(m1,0.,gVerbose,EPSILON); + ok &= VerifyMatrixValue(m1,0,gVerbose,EPSILON); m1.SetSparseIndex(m_d); if (gVerbose) { @@ -2566,13 +2548,13 @@ void spstress_binary_ebe_op(Int_t rsize, Int_t csize) if (gVerbose) cout << " making m = 3*mp and m1 = 3*mp, via add() and succesive mult" << endl; m1 = m; - Add(m,2.,mp); + Add(m,2,mp); m1 += m1; m1 += mp; ok &= VerifyMatrixIdentity(m,m1,gVerbose,EPSILON); if (gVerbose) cout << " clear both m and m1, by subtracting from itself and via add()" << endl; m1 -= m1; - Add(m,-3.,mp); + Add(m,-3,mp); ok &= VerifyMatrixIdentity(m,m1,gVerbose,EPSILON); if (gVerbose) { @@ -2616,7 +2598,7 @@ void spstress_transposition(Int_t msize) cout << "\nCheck to see that a square UnitMatrix stays the same"; TMatrixDSparse m(msize,msize); m.UnitMatrix(); - TMatrixDSparse mt(TMatrixDSparse::kTransposed,m); + TMatrixDSparse mt(TMatrixDBase::kTransposed,m); ok &= ( m == mt ) ? kTRUE : kFALSE; } @@ -2625,7 +2607,7 @@ void spstress_transposition(Int_t msize) cout << "\nTest a non-square UnitMatrix"; TMatrixDSparse m(msize,msize+1); m.UnitMatrix(); - TMatrixDSparse mt(TMatrixDSparse::kTransposed,m); + TMatrixDSparse mt(TMatrixDBase::kTransposed,m); Assert(m.GetNrows() == mt.GetNcols() && m.GetNcols() == mt.GetNrows() ); const Int_t rowlwb = m.GetRowLwb(); const Int_t collwb = m.GetColLwb(); @@ -2639,7 +2621,7 @@ void spstress_transposition(Int_t msize) if (gVerbose) cout << "\nCheck to see that a symmetric (Hilbert)Matrix stays the same"; TMatrixDSparse m = TMatrixD(THilbertMatrixD(msize,msize)); - TMatrixDSparse mt(TMatrixDSparse::kTransposed,m); + TMatrixDSparse mt(TMatrixDBase::kTransposed,m); ok &= ( m == mt ) ? kTRUE : kFALSE; } @@ -2648,14 +2630,14 @@ void spstress_transposition(Int_t msize) cout << "\nCheck transposing a non-symmetric matrix"; TMatrixDSparse m = TMatrixD(THilbertMatrixD(msize+1,msize)); m(1,2) = TMath::Pi(); - TMatrixDSparse mt(TMatrixDSparse::kTransposed,m); + TMatrixDSparse mt(TMatrixDBase::kTransposed,m); Assert(m.GetNrows() == mt.GetNcols() && m.GetNcols() == mt.GetNrows()); Assert(mt(2,1) == (Double_t)TMath::Pi() && mt(1,2) != (Double_t)TMath::Pi()); Assert(mt[2][1] == (Double_t)TMath::Pi() && mt[1][2] != (Double_t)TMath::Pi()); if (gVerbose) cout << "\nCheck double transposing a non-symmetric matrix" << endl; - TMatrixDSparse mtt(TMatrixDSparse::kTransposed,mt); + TMatrixDSparse mtt(TMatrixDBase::kTransposed,mt); ok &= ( m == mtt ) ? kTRUE : kFALSE; } @@ -2705,7 +2687,7 @@ void spstress_norms(Int_t rsize_req,Int_t csize_req) cout << " Square of the Eucl norm has got to be pattern^2 * no_elems" << endl; ok &= ( m.E2Norm() == (pattern*pattern)*m.GetNoElements() ) ? kTRUE : kFALSE; TMatrixDSparse m1(m); m1 = 1; - ok &= ( m.E2Norm() == E2Norm(m+1.,m1) ) ? kTRUE : kFALSE; + ok &= ( m.E2Norm() == E2Norm(m+1,m1) ) ? kTRUE : kFALSE; if (gVerbose) cout << "\nDone\n" << endl; @@ -2745,8 +2727,8 @@ void spstress_mm_multiplications() if (ok) { TMatrixDSparse m = TMatrixD(THilbertMatrixD(-1,msize,-1,msize)); - TMatrixDSparse ur(TMatrixDSparse::kUnit,m); - TMatrixDSparse ul(TMatrixDSparse::kUnit,m); + TMatrixDSparse ur(TMatrixDBase::kUnit,m); + TMatrixDSparse ul(TMatrixDBase::kUnit,m); m(3,1) = TMath::Pi(); ul *= m; m *= ur; @@ -2756,8 +2738,8 @@ void spstress_mm_multiplications() if (ok) { TMatrixD m_d = THilbertMatrixD(-1,msize,-1,msize); - TMatrixDSparse ur(TMatrixDSparse::kUnit,m_d); - TMatrixDSparse ul(TMatrixDSparse::kUnit,m_d); + TMatrixDSparse ur(TMatrixDBase::kUnit,m_d); + TMatrixDSparse ul(TMatrixDBase::kUnit,m_d); m_d(3,1) = TMath::Pi(); ul *= m_d; m_d *= TMatrixD(ur); @@ -2803,16 +2785,16 @@ void spstress_mm_multiplications() m(3,3) = TMath::Pi(); TMatrixD p_d = THilbertMatrixD(msize,msize); TMatrixDDiag(p_d) += 1; - TMatrixDSparse mp(m,TMatrixDSparse::kMult,p_d); + TMatrixDSparse mp(m,TMatrixDBase::kMult,p_d); TMatrixDSparse m1 = m; m *= p_d; ok &= VerifyMatrixIdentity(m,mp,verbose,epsilon); - TMatrixDSparse pt_d(TMatrixDSparse::kTransposed,p_d); - TMatrixDSparse mp1(m1,TMatrixDSparse::kMultTranspose,pt_d); + TMatrixDSparse pt_d(TMatrixDBase::kTransposed,p_d); + TMatrixDSparse mp1(m1,TMatrixDBase::kMultTranspose,pt_d); VerifyMatrixIdentity(m,mp1,verbose,epsilon); ok &= ( !(m1 == m) ); - TMatrixDSparse mp2(TMatrixDSparse::kZero,m1); + TMatrixDSparse mp2(TMatrixDBase::kZero,m1); ok &= ( mp2 == 0 ); mp2.SetSparseIndex(m1); mp2.Mult(m1,p_d); @@ -2848,8 +2830,8 @@ void spstress_mm_multiplications() const Int_t order = 5; const Int_t no_sub_cols = (1<<order)-order; TMatrixDSparse haar_sub = TMatrixD(THaarMatrixD(order,no_sub_cols)); - TMatrixDSparse haar_sub_t(TMatrixDSparse::kTransposed,haar_sub); - TMatrixDSparse hsths(haar_sub_t,TMatrixDSparse::kMult,haar_sub); + TMatrixDSparse haar_sub_t(TMatrixDBase::kTransposed,haar_sub); + TMatrixDSparse hsths(haar_sub_t,TMatrixDBase::kMult,haar_sub); for (i = hsths.GetRowLwb(); i <= hsths.GetRowLwb()+hsths.GetNrows()-1; i++) for (j = hsths.GetColLwb(); j <= hsths.GetColLwb()+hsths.GetNcols()-1; j++) if (i == j) hsths(i,i) -= 1; @@ -2857,15 +2839,15 @@ void spstress_mm_multiplications() ok &= (hsths.Abs() < EPSILON); TMatrixDSparse haar = TMatrixD(THaarMatrixD(order)); - TMatrixDSparse haar_t(TMatrixDSparse::kTransposed,haar); + TMatrixDSparse haar_t(TMatrixDBase::kTransposed,haar); - TMatrixDSparse hth(haar_t,TMatrixDSparse::kMult,haar); + TMatrixDSparse hth(haar_t,TMatrixDBase::kMult,haar); for (i = hth.GetRowLwb(); i <= hth.GetRowLwb()+hth.GetNrows()-1; i++) for (j = hth.GetColLwb(); j <= hth.GetColLwb()+hth.GetNcols()-1; j++) if (i == j) hth(i,i) -= 1; ok &= (hth.Abs() < EPSILON); - TMatrixDSparse hht(haar,TMatrixDSparse::kMultTranspose,haar); + TMatrixDSparse hht(haar,TMatrixDBase::kMultTranspose,haar); for (i = hht.GetRowLwb(); i <= hht.GetRowLwb()+hht.GetNrows()-1; i++) for (j = hht.GetColLwb(); j <= hht.GetColLwb()+hht.GetNcols()-1; j++) if (i == j) hht(i,i) -= 1; @@ -2877,7 +2859,7 @@ void spstress_mm_multiplications() if (i == j) hht1(i,i) -= 1; ok &= (hht1.Abs() < EPSILON); - TMatrixDSparse hht2(TMatrixDSparse::kZero,haar); + TMatrixDSparse hht2(TMatrixDBase::kZero,haar); hht2.SetSparseIndex(hht1); hht2.Mult(haar,haar_t); for (i = hht2.GetRowLwb(); i <= hht2.GetRowLwb()+hht2.GetNrows()-1; i++) @@ -2958,7 +2940,7 @@ void spstress_vm_multiplications() TMatrixDSparse m = TMatrixD(THilbertMatrixD(0,msize,0,msize-1)); vb *= m; ok &= ( vb.GetLwb() == 0 ) ? kTRUE : kFALSE; - TMatrixDSparse mvm(m,TMatrixDSparse::kMult,vm); + TMatrixDSparse mvm(m,TMatrixDBase::kMult,vm); TMatrixD mvb(msize+1,1); TMatrixDColumn(mvb,0) = vb; ok &= VerifyMatrixIdentity(mvb,mvm,verbose,epsilon); @@ -3357,7 +3339,7 @@ void vstress_element_op(Int_t vsize) v.Sqr(); v1.Sqr(); v += v1; - ok &= VerifyVectorValue(v,1.,gVerbose,EPSILON); + ok &= VerifyVectorValue(v,1,gVerbose,EPSILON); } if (gVerbose) @@ -3417,7 +3399,7 @@ void vstress_binary_op(Int_t vsize) if (gVerbose) cout << " subtracting the vector from itself" << endl; v1 -= v1; - ok &= VerifyVectorValue(v1,0.,gVerbose,EPSILON); + ok &= VerifyVectorValue(v1,0,gVerbose,EPSILON); if (gVerbose) cout << " adding two vectors together" << endl; v1 += v; @@ -3440,13 +3422,13 @@ void vstress_binary_op(Int_t vsize) v1 = v; if (gVerbose) cout << " making v = 3*vp and v1 = 3*vp, via add() and succesive mult" << endl; - Add(v,2.,vp); + Add(v,2,vp); v1 += v1; v1 += vp; ok &= VerifyVectorIdentity(v,v1,gVerbose,epsilon); if (gVerbose) cout << " clear both v and v1, by subtracting from itself and via add()" << endl; v1 -= v1; - Add(v,-3.,vp); + Add(v,-3,vp); ok &= VerifyVectorIdentity(v,v1,gVerbose,epsilon); if (gVerbose) { @@ -3811,7 +3793,7 @@ Bool_t test_svd_expansion(const TMatrixD &A) const Int_t nCols = svd.GetU().GetNcols(); TMatrixD E1(nRows,nRows); E1.UnitMatrix(); TMatrixD E2(nCols,nCols); E2.UnitMatrix(); - TMatrixD ut(TMatrixD::kTransposed,svd.GetU()); + TMatrixD ut(TMatrixDBase::kTransposed,svd.GetU()); ok &= VerifyMatrixIdentity(ut * svd.GetU(),E2,gVerbose,100*EPSILON); ok &= VerifyMatrixIdentity(svd.GetU() * ut,E1,gVerbose,100*EPSILON); } @@ -3823,7 +3805,7 @@ Bool_t test_svd_expansion(const TMatrixD &A) const Int_t nCols = svd.GetV().GetNcols(); TMatrixD E1(nRows,nRows); E1.UnitMatrix(); TMatrixD E2(nCols,nCols); E2.UnitMatrix(); - TMatrixD vt(TMatrixD::kTransposed,svd.GetV()); + TMatrixD vt(TMatrixDBase::kTransposed,svd.GetV()); ok &= VerifyMatrixIdentity(vt * svd.GetV(),E2,gVerbose,100*EPSILON); ok &= VerifyMatrixIdentity(svd.GetV() * vt,E1,gVerbose,100*EPSILON); } @@ -3835,7 +3817,7 @@ Bool_t test_svd_expansion(const TMatrixD &A) const Int_t nCols = svd.GetV().GetNcols(); TMatrixD s(nRows,nCols); TMatrixDDiag diag(s); diag = svd.GetSig(); - TMatrixD vt(TMatrixD::kTransposed,svd.GetV()); + TMatrixD vt(TMatrixDBase::kTransposed,svd.GetV()); TMatrixD tmp = s * vt; ok &= VerifyMatrixIdentity(A,svd.GetU() * tmp,gVerbose,100*EPSILON); if (gVerbose) { @@ -3958,7 +3940,7 @@ void astress_decomp() { const TMatrixD m2 = THilbertMatrixD(5,5); - const TMatrixDSym mtm(TMatrixDSym::kAtA,m2); + const TMatrixDSym mtm(TMatrixDBase::kAtA,m2); TDecompChol chol(mtm); ok &= VerifyMatrixIdentity(chol.GetMatrix(),mtm,gVerbose,100*EPSILON); } @@ -4185,7 +4167,7 @@ void astress_eigen(Int_t msize) TVectorD sig = svd.GetSig(); sig.Sqr(); // Symmetric matrix EigenVector algorithm - TMatrixDSym mtm1(TMatrixDSym::kAtA,m); + TMatrixDSym mtm1(TMatrixDBase::kAtA,m); const TMatrixDSymEigen eigen1(mtm1); const TVectorD eigenVal1 = eigen1.GetEigenValues(); @@ -4199,7 +4181,7 @@ void astress_eigen(Int_t msize) ok &= VerifyMatrixIdentity(mtm1x,lam_x1,gVerbose,EPSILON); // General matrix EigenVector algorithm tested on symmetric matrix - TMatrixD mtm2(m,TMatrixD::kTransposeMult,m); + TMatrixD mtm2(m,TMatrixDBase::kTransposeMult,m); const TMatrixDEigen eigen2(mtm2); const TVectorD eigenVal2 = eigen2.GetEigenValuesRe(); @@ -4347,44 +4329,6 @@ void astress_decomp_io(Int_t msize) StatusPrint(5,"Decomposition Persistence",ok); } -void stress_backward_io() -{ - TFile *f = new TFile("linearIO.root"); - - TMatrixF mf1 = THilbertMatrixF(-5,5,-5,5); - mf1[1][2] = TMath::Pi(); - TMatrixFSym mf2 = THilbertMatrixFSym(-5,5); - TVectorF vf_row(mf1.GetRowLwb(),mf1.GetRowUpb()); vf_row = TMatrixFRow(mf1,3); - - TMatrixF *mf1_r = (TMatrixF*) f->Get("mf1"); - TMatrixFSym *mf2_r = (TMatrixFSym*) f->Get("mf2"); - TVectorF *vf_row_r = (TVectorF*) f->Get("vf_row"); - - Bool_t ok = kTRUE; - - ok &= ((*mf1_r) == mf1) ? kTRUE : kFALSE; - ok &= ((*mf2_r) == mf2) ? kTRUE : kFALSE; - ok &= ((*vf_row_r) == vf_row) ? kTRUE : kFALSE; - - TMatrixD md1 = THilbertMatrixD(-5,5,-5,5); - md1[1][2] = TMath::Pi(); - TMatrixDSym md2 = THilbertMatrixDSym(-5,5); - TMatrixDSparse md3 = md1; - TVectorD vd_row(md1.GetRowLwb(),md1.GetRowUpb()); vd_row = TMatrixDRow(md1,3); - - TMatrixD *md1_r = (TMatrixD*) f->Get("md1"); - TMatrixDSym *md2_r = (TMatrixDSym*) f->Get("md2"); - TMatrixDSparse *md3_r = (TMatrixDSparse*) f->Get("md3"); - TVectorD *vd_row_r = (TVectorD*) f->Get("vd_row"); - - ok &= ((*md1_r) == md1) ? kTRUE : kFALSE; - ok &= ((*md2_r) == md2) ? kTRUE : kFALSE; - ok &= ((*md3_r) == md3) ? kTRUE : kFALSE; - ok &= ((*vd_row_r) == vd_row) ? kTRUE : kFALSE; - - StatusPrint(1,"Streamers",ok); -} - void cleanup() { gSystem->Unlink("vmatrix.root"); -- GitLab