193 #include "CLHEP/Matrix/defs.h"
194 #include "CLHEP/Matrix/GenMatrix.h"
209 class HepMatrix :
public HepGenMatrix {
242 virtual const double &
operator()(
int row,
int col)
const;
243 virtual double &
operator()(
int row,
int col);
280 HepMatrix sub(
int min_row,
int max_row,
int min_col,
int max_col)
const;
294 virtual void invert(
int& ierr);
310 double trace()
const;
376 double s,
int k1,
int k2,
377 int rowmin,
int rowmax);
380 double s,
int k1,
int k2,
381 int colmin,
int colmax);
390 int dfact_matrix(
double &det,
int *ir);
395 int dfinv_matrix(
int *ir);
399 std::vector<double > m;
401 std::vector<double,Alloc<double,25> > m;
410 HepMatrix
operator*(
const HepMatrix &,
const HepMatrix &);
411 HepMatrix
operator*(
double t,
const HepMatrix &);
412 HepMatrix
operator*(
const HepMatrix &,
double );
416 HepMatrix
operator/(
const HepMatrix &,
double );
419 HepMatrix
operator+(
const HepMatrix &hm1,
const HepMatrix &hm2);
423 HepMatrix
operator-(
const HepMatrix &hm1,
const HepMatrix &hm2);
427 HepMatrix
dsum(
const HepMatrix&,
const HepMatrix&);
432 HepVector
solve(
const HepMatrix &,
const HepVector &);
435 std::ostream&
operator<<(std::ostream &s,
const HepMatrix &q);
442 HepVector
qr_solve(
const HepMatrix &A,
const HepVector &
b);
443 HepVector
qr_solve(HepMatrix *A,
const HepVector &
b);
444 HepMatrix
qr_solve(
const HepMatrix &A,
const HepMatrix &
b);
445 HepMatrix
qr_solve(HepMatrix *A,
const HepMatrix &
b);
456 void qr_decomp(HepMatrix *A, HepMatrix *hsm);
466 void col_house(HepMatrix *
a,
const HepMatrix &v,
double vnormsq,
467 int row,
int col,
int row_start,
int col_start);
468 void col_house(HepMatrix *
a,
const HepMatrix &v,
int row,
int col,
469 int row_start,
int col_start);
472 void col_givens(HepMatrix *A,
double c,
double s,
473 int k1,
int k2,
int row_min=1,
int row_max=0);
476 void row_givens(HepMatrix *A,
double c,
double s,
477 int k1,
int k2,
int col_min=1,
int col_max=0);
480 void givens(
double a,
double b,
double *c,
double *s);
483 HepVector
house(
const HepMatrix &
a,
int row=1,
int col=1);
490 void row_house(HepMatrix *
a,
const HepVector &v,
double vnormsq,
491 int row=1,
int col=1);
492 void row_house(HepMatrix *
a,
const HepMatrix &v,
double vnormsq,
493 int row,
int col,
int row_start,
int col_start);
494 void row_house(HepMatrix *
a,
const HepMatrix &v,
int row,
int col,
495 int row_start,
int col_start);
500 #ifdef ENABLE_BACKWARDS_COMPATIBILITY
502 using namespace CLHEP;
505 #ifndef HEP_DEBUG_INLINE
506 #include "CLHEP/Matrix/Matrix.icc"
HepMatrix apply(double(*f)(double, int, int)) const
HepVector solve(const HepMatrix &, const HepVector &)
HepMatrix operator-() const
Hep3Vector operator+(const Hep3Vector &, const Hep3Vector &)
HepMatrix_row(HepMatrix &, int)
void row_givens(HepMatrix *A, double c, double s, int k1, int k2, int col_min=1, int col_max=0)
friend void col_givens(HepMatrix *A, double c, double s, int k1, int k2, int rowmin, int rowmax)
friend HepVector house(const HepMatrix &a, int row, int col)
virtual void invertHaywood5(int &ierr)
void row_house(HepMatrix *a, const HepVector &v, double vnormsq, int row=1, int col=1)
void house_with_update(HepMatrix *a, int row=1, int col=1)
HepMatrix qr_inverse(const HepMatrix &A)
HepMatrix & operator=(const HepMatrix &)
virtual int num_col() const
virtual const double & operator()(int row, int col) const
HepMatrix_row_const(const HepMatrix &, int)
void col_house(HepMatrix *a, const HepMatrix &v, double vnormsq, int row, int col, int row_start, int col_start)
friend void tridiagonal(HepSymMatrix *a, HepMatrix *hsm)
HepLorentzVector operator/(const HepLorentzVector &, double a)
friend void row_givens(HepMatrix *A, double c, double s, int k1, int k2, int colmin, int colmax)
friend HepMatrix operator+(const HepMatrix &hm1, const HepMatrix &hm2)
void qr_decomp(HepMatrix *A, HepMatrix *hsm)
friend HepMatrix operator*(const HepMatrix &hm1, const HepMatrix &hm2)
friend void house_with_update2(HepSymMatrix *a, HepMatrix *v, int row, int col)
double determinant() const
HepVector house(const HepMatrix &a, int row=1, int col=1)
friend void row_house(HepMatrix *, const HepMatrix &, double, int, int, int, int)
HepLorentzRotation operator*(const HepRotation &r, const HepLorentzRotation <)
friend void col_house(HepMatrix *, const HepMatrix &, double, int, int, int, int)
virtual void invertHaywood6(int &ierr)
HepMatrix inverse() const
HepDiagMatrix dsum(const HepDiagMatrix &s1, const HepDiagMatrix &s2)
void col_givens(HepMatrix *A, double c, double s, int k1, int k2, int row_min=1, int row_max=0)
const double & operator[](int) const
HepMatrix & operator/=(double t)
friend class HepSymMatrix
void back_solve(const HepMatrix &R, HepVector *b)
friend class HepMatrix_row_const
HepMatrix & operator*=(double t)
HepMatrix_row operator[](int)
void givens(double a, double b, double *c, double *s)
friend HepVector solve(const HepMatrix &, const HepVector &)
friend void swap(HepMatrix &hm1, HepMatrix &hm2)
friend class HepDiagMatrix
friend class HepMatrix_row
HepVector qr_solve(const HepMatrix &A, const HepVector &b)
virtual void invertHaywood4(int &ierr)
Hep3Vector operator-(const Hep3Vector &, const Hep3Vector &)
HepMatrix sub(int min_row, int max_row, int min_col, int max_col) const
HepMatrix & operator-=(const HepMatrix &)
friend void house_with_update(HepMatrix *a, int row, int col)
HepMatrix & operator+=(const HepMatrix &)
virtual int num_row() const
virtual int num_size() const
std::ostream & operator<<(std::ostream &os, const HepAxisAngle &aa)
friend void back_solve(const HepMatrix &R, HepVector *b)
friend HepVector qr_solve(HepMatrix *, const HepVector &)