12 #ifndef ROOT_TDecompBK
13 #define ROOT_TDecompBK
26 class TDecompBK :
public TDecompBase
34 virtual const TMatrixDBase &GetDecompMatrix()
const {
return fU; }
39 explicit TDecompBK(Int_t nrows);
40 TDecompBK(Int_t row_lwb,Int_t row_upb);
41 TDecompBK(
const TMatrixDSym &m,Double_t tol = 0.0);
42 TDecompBK(
const TDecompBK &another);
43 virtual ~TDecompBK() {
if (fIpiv)
delete [] fIpiv; fIpiv = 0; }
45 virtual Int_t GetNrows ()
const {
return fU.GetNrows(); }
46 virtual Int_t GetNcols ()
const {
return fU.GetNcols(); }
47 const TMatrixD &GetU () {
if ( !TestBit(kDecomposed) ) Decompose();
50 virtual void SetMatrix (
const TMatrixDSym &a);
52 virtual Bool_t Decompose ();
53 virtual Bool_t Solve ( TVectorD &b);
54 virtual TVectorD Solve (
const TVectorD& b,Bool_t &ok) { TVectorD x = b; ok = Solve(x);
return x; }
55 virtual Bool_t Solve ( TMatrixDColumn &b);
56 virtual Bool_t TransSolve ( TVectorD &b) {
return Solve(b); }
57 virtual TVectorD TransSolve (
const TVectorD& b,Bool_t &ok) { TVectorD x = b; ok = Solve(x);
return x; }
58 virtual Bool_t TransSolve ( TMatrixDColumn &b) {
return Solve(b); }
59 virtual void Det (Double_t &,Double_t &)
60 { MayNotUse(
"Det(Double_t&,Double_t&)"); }
62 Bool_t Invert (TMatrixDSym &inv);
63 TMatrixDSym Invert (Bool_t &status);
64 TMatrixDSym Invert () { Bool_t status;
return Invert(status); }
66 void Print(Option_t *opt =
"")
const;
68 TDecompBK &operator= (
const TDecompBK &source);