13 : m(0), nrow(0), size_(0)
22#ifdef MATRIX_BOUND_CHECK
24 error(
"Range error in HepSymMatrix::fast()");
26 return *(m.begin()+(row*(row-1))/2+(col-1));
30#ifdef MATRIX_BOUND_CHECK
32 error(
"Range error in HepSymMatrix::fast()");
34 return *(m.begin()+(row*(row-1))/2+(col-1));
38 {
return (row>=col?
fast(row,col) :
fast(col,row));}
40 {
return (row>=col?
fast(row,col) :
fast(col,row));}
48#ifdef HEP_GNU_OPTIMIZED_RETURN
59#ifdef HEP_GNU_OPTIMIZED_RETURN
71#ifdef MATRIX_BOUND_CHECK
72 if(_r<0||_r>=_a.nrow || c<0||c>=_a.nrow)
73 error(
"Range error in HepSymMatrix::operator[][]");
76 return *(_a.m.begin() + (_r+1)*_r/2 + c);
78 return *(_a.m.begin() + (c+1)*c/2 + _r);
85#ifdef MATRIX_BOUND_CHECK
86 if(_r<0||_r>=_a.nrow || c<0||c>=_a.nrow)
87 error(
"Range error in HepSymMatrix::operator[][]");
90 return *(_a.m.begin() + (_r+1)*_r/2 + c);
92 return *(_a.m.begin() + (c+1)*c/2 + _r);
107#ifdef HEP_GNU_OPTIMIZED_RETURN
121 if (ierr)
throw std::runtime_error(
"Error in HepSymMatrix inversion");
128 if (ierr)
throw std::runtime_error(
"Error in HepSymMatrix inversion");
static void error(const char *s)
const double & operator[](int) const
HepSymMatrix_row_const(const HepSymMatrix &, int)
HepSymMatrix_row(HepSymMatrix &, int)
HepSymMatrix_row operator[](int)
void assign(const HepMatrix &hm2)
const double & operator()(int row, int col) const
const double & fast(int row, int col) const
HepSymMatrix inverse() const