Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
JMATH::JMatrixND Struct Reference

NxN matrix. More...

#include <JMatrixND.hh>

Inheritance diagram for JMATH::JMatrixND:
JMATH::JMatrixND_t JMATH::JMath< JMatrixND > JLANG::JEquals< JFirst_t, JSecond_t > JLANG::JSingleton< T > JMATH::JMatrixNS JFIT::JMatrixNZ

Public Types

typedef T data_type
 

Public Member Functions

 JMatrixND ()
 Default constructor. More...
 
 JMatrixND (const size_t size)
 Constructor. More...
 
 JMatrixND (const JMatrixND &A)
 Copy constructor. More...
 
JMatrixNDoperator= (const JMatrixND &A)
 Assignment operator. More...
 
void resize (const size_t size)
 Resize matrix. More...
 
JMatrixNDreset ()
 Set matrix to the null matrix. More...
 
JMatrixNDsetIdentity ()
 Set to identity matrix. More...
 
JMatrixNDnegate ()
 Negate matrix. More...
 
JMatrixNDadd (const JMatrixND &A)
 Matrix addition. More...
 
JMatrixNDsub (const JMatrixND &A)
 Matrix subtraction. More...
 
JMatrixNDmul (const double factor)
 Scale matrix. More...
 
JMatrixNDdiv (const double factor)
 Scale matrix. More...
 
JMatrixNDmul (const JMatrixND &A, const JMatrixND &B)
 Matrix multiplication. More...
 
bool equals (const JMatrixND &A, const double eps=std::numeric_limits< double >::min()) const
 Equality. More...
 
bool isIdentity (const double eps=std::numeric_limits< double >::min()) const
 Test identity. More...
 
bool isSymmetric (const double eps=std::numeric_limits< double >::min()) const
 Test symmetry. More...
 
double getDot (const JVectorND &v) const
 Get dot product. More...
 
void clear ()
 Clear memory. More...
 
void set (const JMatrixND_t &A)
 Set matrix. More...
 
void swap (JMatrixND_t &A)
 Swap matrices. More...
 
JMatrixND_ttranspose ()
 Transpose. More...
 
size_t size () const
 Get dimension of matrix. More...
 
size_t capacity () const
 Get capacity of dimension. More...
 
bool empty () const
 Check emptyness. More...
 
const double * data () const
 Get pointer to data. More...
 
double * data ()
 Get pointer to data. More...
 
const double * operator[] (size_t row) const
 Get row data. More...
 
double * operator[] (size_t row)
 Get row data. More...
 
double operator() (const size_t row, const size_t col) const
 Get matrix element. More...
 
double & operator() (const size_t row, const size_t col)
 Get matrix element. More...
 
double at (size_t row, size_t col) const
 Get matrix element. More...
 
double & at (size_t row, size_t col)
 Get matrix element. More...
 
JMatrixNDmul (const JNullType &object)
 Multiply with object. More...
 

Static Public Member Functions

static data_typegetInstance ()
 Get unique instance of template class. More...
 

Protected Member Functions

void rswap (size_t r1, size_t r2)
 
void cswap (size_t c1, size_t c2)
 Swap columns. More...
 

Protected Attributes

double * __p
 pointer to data More...
 
size_t __n
 dimension of matrix More...
 
size_t __m
 capacity of matrix More...
 

Friends

JReaderoperator>> (JReader &in, JMatrixND &A)
 Read matrix from input. More...
 
JWriteroperator<< (JWriter &out, const JMatrixND &A)
 Write matrix to output. More...
 
std::ostream & operator<< (std::ostream &out, const JMatrixND &A)
 Print ASCII formatted output. More...
 

Detailed Description

NxN matrix.

Definition at line 300 of file JMatrixND.hh.

Member Typedef Documentation

template<class T>
typedef T JLANG::JSingleton< T >::data_type
inherited

Definition at line 20 of file JSingleton.hh.

Constructor & Destructor Documentation

JMATH::JMatrixND::JMatrixND ( )
inline

Default constructor.

Definition at line 310 of file JMatrixND.hh.

311  {}
JMATH::JMatrixND::JMatrixND ( const size_t  size)
inline

Constructor.

The matrix is set to zero.

Parameters
sizedimension

Definition at line 321 of file JMatrixND.hh.

322  {
323  resize(size);
324  reset();
325  }
JMatrixND & reset()
Set matrix to the null matrix.
Definition: JMatrixND.hh:372
void resize(const size_t size)
Resize matrix.
Definition: JMatrixND.hh:359
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
JMATH::JMatrixND::JMatrixND ( const JMatrixND A)
inline

Copy constructor.

Parameters
Amatrix

Definition at line 333 of file JMatrixND.hh.

334  {
335  set(A);
336  }
void set(const JMatrixND_t &A)
Set matrix.
Definition: JMatrixND.hh:107

Member Function Documentation

JMatrixND& JMATH::JMatrixND::operator= ( const JMatrixND A)
inline

Assignment operator.

Parameters
Amatrix

Definition at line 344 of file JMatrixND.hh.

345  {
346  this->set(A);
347 
348  return *this;
349  }
void set(const JMatrixND_t &A)
Set matrix.
Definition: JMatrixND.hh:107
void JMATH::JMatrixND::resize ( const size_t  size)
inline

Resize matrix.

Note that this method does not maintain data in the matrix.

Parameters
sizedimension

Definition at line 359 of file JMatrixND.hh.

360  {
361  static_cast<JMatrixND_t&>(*this).resize(size);
362 
363  getInstance().resize(size);
364  }
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
static data_type & getInstance()
Get unique instance of template class.
Definition: JSingleton.hh:27
void resize(const size_t size)
Resize matrix.
Definition: JMatrixND.hh:79
Basic NxN matrix.
Definition: JMatrixND.hh:35
JMatrixND& JMATH::JMatrixND::reset ( )
inline

Set matrix to the null matrix.

Returns
this matrix

Definition at line 372 of file JMatrixND.hh.

373  {
375 
376  double* p = A.data();
377 
378  for (size_t i = this->size(); i != 0; --i, ++p) {
379  *p = 0.0;
380  }
381 
382  p = this->data();
383 
384  for (size_t i = this->size(); i != 0; --i, p += this->size()) {
385  memcpy(p, A.data(), this->size() * sizeof(double));
386  }
387 
388  return *this;
389  }
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
static data_type & getInstance()
Get unique instance of template class.
Definition: JSingleton.hh:27
const double * data() const
Get pointer to data.
Definition: JMatrixND.hh:187
Basic NxN matrix.
Definition: JMatrixND.hh:35
source $JPP_DIR setenv csh $JPP_DIR eval JShellParser o a A
JMatrixND& JMATH::JMatrixND::setIdentity ( )
inline

Set to identity matrix.

Returns
this matrix

Definition at line 397 of file JMatrixND.hh.

398  {
399  reset();
400 
401  for (size_t i = 0; i != this->size(); ++i) {
402  (*this)(i,i) = 1.0;
403  }
404 
405  return *this;
406  }
JMatrixND & reset()
Set matrix to the null matrix.
Definition: JMatrixND.hh:372
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
JMatrixND& JMATH::JMatrixND::negate ( )
inline

Negate matrix.

Returns
this matrix

Definition at line 414 of file JMatrixND.hh.

415  {
416  double* p = this->data();
417 
418  for (size_t i = this->size()*this->size(); i != 0; --i, ++p) {
419  *p = -*p;
420  }
421 
422  return *this;
423  }
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
const double * data() const
Get pointer to data.
Definition: JMatrixND.hh:187
JMatrixND& JMATH::JMatrixND::add ( const JMatrixND A)
inline

Matrix addition.

Parameters
Amatrix
Returns
this matrix

Definition at line 432 of file JMatrixND.hh.

433  {
434  if (this->size() == A.size()) {
435 
436  double* p = this->data();
437  const double* q = A.data();
438 
439  for (size_t i = this->size()*this->size(); i != 0; --i, ++p, ++q) {
440  *p += *q;
441  }
442 
443  } else {
444  THROW(JException, "JMatrixND::add() inconsistent matrix dimensions " << this->size() << ' ' << A.size());
445  }
446  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
const double * data() const
Get pointer to data.
Definition: JMatrixND.hh:187
JMatrixND& JMATH::JMatrixND::sub ( const JMatrixND A)
inline

Matrix subtraction.

Parameters
Amatrix
Returns
this matrix

Definition at line 455 of file JMatrixND.hh.

456  {
457  if (this->size() == A.size()) {
458 
459  double* p = this->data();
460  const double* q = A.data();
461 
462  for (size_t i = this->size()*this->size(); i != 0; --i, ++p, ++q) {
463  *p -= *q;
464  }
465 
466  } else {
467  THROW(JException, "JMatrixND::sub() inconsistent matrix dimensions " << this->size() << ' ' << A.size());
468  }
469 
470  return *this;
471  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
const double * data() const
Get pointer to data.
Definition: JMatrixND.hh:187
JMatrixND& JMATH::JMatrixND::mul ( const double  factor)
inline

Scale matrix.

Parameters
factorfactor
Returns
this matrix

Definition at line 480 of file JMatrixND.hh.

481  {
482  double* p = this->data();
483 
484  for (size_t i = this->size()*this->size(); i != 0; --i, ++p) {
485  *p *= factor;
486  }
487 
488  return *this;
489  }
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
const double * data() const
Get pointer to data.
Definition: JMatrixND.hh:187
JMatrixND& JMATH::JMatrixND::div ( const double  factor)
inline

Scale matrix.

Parameters
factorfactor
Returns
this matrix

Definition at line 498 of file JMatrixND.hh.

499  {
500  double* p = this->data();
501 
502  for (size_t i = this->size()*this->size(); i != 0; --i, ++p) {
503  *p /= factor;
504  }
505 
506  return *this;
507  }
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
const double * data() const
Get pointer to data.
Definition: JMatrixND.hh:187
JMatrixND& JMATH::JMatrixND::mul ( const JMatrixND A,
const JMatrixND B 
)
inline

Matrix multiplication.

Parameters
Amatrix
Bmatrix
Returns
this matrix

Definition at line 517 of file JMatrixND.hh.

519  {
520  if (A.size() == B.size()) {
521 
522  this->resize(A.size());
523 
524  if (!this->empty()) {
525 
527 
528  C.set(B);
529  C.transpose();
530 
531  size_t i, row;
532 
533  for (row = 0; row + 4 <= this->size(); row += 4) { // process rows by four
534 
535  double* p0 = (*this)[row + 0];
536  double* p1 = (*this)[row + 1];
537  double* p2 = (*this)[row + 2];
538  double* p3 = (*this)[row + 3];
539 
540  for (size_t col = 0; col != this->size(); ++col, ++p0, ++p1, ++p2, ++p3) {
541 
542  double w0 = 0.0;
543  double w1 = 0.0;
544  double w2 = 0.0;
545  double w3 = 0.0;
546 
547  const double* a0 = A[row + 0];
548  const double* a1 = A[row + 1];
549  const double* a2 = A[row + 2];
550  const double* a3 = A[row + 3];
551 
552  const double* c0 = C[col];
553 
554  for (i = 0; i + 4 <= this->size(); i += 4, a0 += 4, a1 += 4, a2 += 4, a3 += 4, c0 += 4) {
555  w0 += a0[0] * c0[0] + a0[1] * c0[1] + a0[2] * c0[2] + a0[3] * c0[3];
556  w1 += a1[0] * c0[0] + a1[1] * c0[1] + a1[2] * c0[2] + a1[3] * c0[3];
557  w2 += a2[0] * c0[0] + a2[1] * c0[1] + a2[2] * c0[2] + a2[3] * c0[3];
558  w3 += a3[0] * c0[0] + a3[1] * c0[1] + a3[2] * c0[2] + a3[3] * c0[3];
559  }
560 
561  for ( ; i != this->size(); ++i, ++a0, ++a1, ++a2, ++a3, ++c0) {
562  w0 += (*a0) * (*c0);
563  w1 += (*a1) * (*c0);
564  w2 += (*a2) * (*c0);
565  w3 += (*a3) * (*c0);
566  }
567 
568  *p0 = w0;
569  *p1 = w1;
570  *p2 = w2;
571  *p3 = w3;
572  }
573  }
574 
575  for ( ; row != this->size(); ++row) { // remaining rows
576 
577  double* p0 = (*this)[row + 0];
578 
579  for (size_t col = 0; col != this->size(); ++col, ++p0) {
580 
581  double w0 = 0.0;
582 
583  const double* a0 = A[row + 0];
584  const double* c0 = C[col];
585 
586  for (i = 0; i + 4 <= this->size(); i += 4, a0 += 4, c0 += 4) {
587  w0 += a0[0] * c0[0] + a0[1] * c0[1] + a0[2] * c0[2] + a0[3] * c0[3];
588  }
589 
590  for ( ; i != this->size(); ++i, ++a0, ++c0) {
591  w0 += (*a0) * (*c0);
592  }
593 
594  *p0 = w0;
595  }
596  }
597  }
598 
599  } else {
600  THROW(JException, "JMatrixND::mul() inconsistent matrix dimensions " << A.size() << ' ' << B.size());
601  }
602 
603  return *this;
604  }
TPaveText * p1
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
void resize(const size_t size)
Resize matrix.
Definition: JMatrixND.hh:359
void set(const JMatrixND_t &A)
Set matrix.
Definition: JMatrixND.hh:107
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
static data_type & getInstance()
Get unique instance of template class.
Definition: JSingleton.hh:27
JMatrixND_t & transpose()
Transpose.
Definition: JMatrixND.hh:135
static const double C
Speed of light in vacuum [m/ns].
Definition: JConstants.hh:22
bool empty() const
Check emptyness.
Definition: JMatrixND.hh:176
Basic NxN matrix.
Definition: JMatrixND.hh:35
bool JMATH::JMatrixND::equals ( const JMatrixND A,
const double  eps = std::numeric_limits<double>::min() 
) const
inline

Equality.

Parameters
Amatrix
epsnumerical precision
Returns
true if matrices identical; else false

Definition at line 614 of file JMatrixND.hh.

616  {
617  if (this->size() == A.size()) {
618 
619  for (size_t row = 0; row != this->size(); ++row) {
620 
621  const double* p = (*this)[row];
622  const double* q = A [row];
623 
624  for (size_t i = this->size(); i != 0; --i, ++p, ++q) {
625  if (fabs(*p - *q) > eps) {
626  return false;
627  }
628  }
629  }
630 
631  return true;
632 
633  } else {
634  THROW(JException, "JMatrixND::equals() inconsistent matrix dimensions " << this->size() << ' ' << A.size());
635  }
636  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
bool JMATH::JMatrixND::isIdentity ( const double  eps = std::numeric_limits<double>::min()) const
inline

Test identity.

Parameters
epsnumerical precision
Returns
true if identity matrix; else false

Definition at line 645 of file JMatrixND.hh.

646  {
647  for (size_t i = 0; i != this->size(); ++i) {
648 
649  if (fabs(1.0 - (*this)(i,i)) > eps) {
650  return false;
651  };
652 
653  for (size_t j = 0; j != i; ++j) {
654  if (fabs((*this)(i,j)) > eps || fabs((*this)(j,i)) > eps) {
655  return false;
656  };
657  }
658  }
659 
660  return true;
661  }
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
int j
Definition: JPolint.hh:634
bool JMATH::JMatrixND::isSymmetric ( const double  eps = std::numeric_limits<double>::min()) const
inline

Test symmetry.

Parameters
epsnumerical precision
Returns
true if symmetric matrix; else false

Definition at line 670 of file JMatrixND.hh.

671  {
672  for (size_t i = 0; i != this->size(); ++i) {
673  for (size_t j = 0; j != i; ++j) {
674  if (fabs((*this)(i,j) - (*this)(j,i)) > eps) {
675  return false;
676  };
677  }
678  }
679 
680  return true;
681  }
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
int j
Definition: JPolint.hh:634
double JMATH::JMatrixND::getDot ( const JVectorND v) const
inline

Get dot product.

The dot product corresponds to

\[ v^{T} \times A \times v \]

.

Parameters
vvector
Returns
dot product

Definition at line 692 of file JMatrixND.hh.

693  {
694  double dot = 0.0;
695 
696  for (size_t i = 0; i != v.size(); ++i) {
697 
698  const double* p = (*this)[i];
699 
700  double w = 0.0;
701 
702  for (JVectorND::const_iterator y = v.begin(); y != v.end(); ++y, ++p) {
703  w += (*p) * (*y);
704  }
705 
706  dot += v[i] * w;
707  }
708 
709  return dot;
710  }
data_type w[N+1][M+1]
Definition: JPolint.hh:708
void JMATH::JMatrixND::rswap ( size_t  r1,
size_t  r2 
)
inlineprotected

Definition at line 792 of file JMatrixND.hh.

793  {
795 
796  memcpy(A.data(), (*this)[r1], this->size() * sizeof(double));
797  memcpy((*this)[r1], (*this)[r2], this->size() * sizeof(double));
798  memcpy((*this)[r2], A.data(), this->size() * sizeof(double));
799  }
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
static data_type & getInstance()
Get unique instance of template class.
Definition: JSingleton.hh:27
const double * data() const
Get pointer to data.
Definition: JMatrixND.hh:187
Basic NxN matrix.
Definition: JMatrixND.hh:35
source $JPP_DIR setenv csh $JPP_DIR eval JShellParser o a A
void JMATH::JMatrixND::cswap ( size_t  c1,
size_t  c2 
)
inlineprotected

Swap columns.

Parameters
c1column
c2column

Definition at line 808 of file JMatrixND.hh.

809  {
810  using std::swap;
811 
812  double* p1 = this->data() + c1;
813  double* p2 = this->data() + c2;
814 
815  for (size_t i = this->size(); i != 0; --i, p1 += this->size(), p2 += this->size()) {
816  swap(*p1, *p2);
817  }
818  }
TPaveText * p1
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
TCanvas * c1
Global variables to handle mouse events.
void swap(JMatrixND_t &A)
Swap matrices.
Definition: JMatrixND.hh:120
const double * data() const
Get pointer to data.
Definition: JMatrixND.hh:187
void JMATH::JMatrixND_t::clear ( )
inlineinherited

Clear memory.

Definition at line 60 of file JMatrixND.hh.

61  {
62  if (__p != NULL) {
63  delete [] __p;
64  }
65 
66  __p = NULL;
67  __n = 0;
68  __m = 0;
69  }
size_t __n
dimension of matrix
Definition: JMatrixND.hh:292
double * __p
pointer to data
Definition: JMatrixND.hh:291
size_t __m
capacity of matrix
Definition: JMatrixND.hh:293
void JMATH::JMatrixND_t::set ( const JMatrixND_t A)
inlineinherited

Set matrix.

Parameters
Amatrix

Definition at line 107 of file JMatrixND.hh.

108  {
109  this->resize(A.size());
110 
111  memcpy(this->data(), A.data(), A.size() * A.size() * sizeof(double));
112  }
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
void resize(const size_t size)
Resize matrix.
Definition: JMatrixND.hh:79
const double * data() const
Get pointer to data.
Definition: JMatrixND.hh:187
void JMATH::JMatrixND_t::swap ( JMatrixND_t A)
inlineinherited

Swap matrices.

Parameters
Amatrix

Definition at line 120 of file JMatrixND.hh.

121  {
122  using std::swap;
123 
124  swap(this->__p, A.__p);
125  swap(this->__n, A.__n);
126  swap(this->__m, A.__m);
127  }
size_t __n
dimension of matrix
Definition: JMatrixND.hh:292
double * __p
pointer to data
Definition: JMatrixND.hh:291
void swap(JMatrixND_t &A)
Swap matrices.
Definition: JMatrixND.hh:120
size_t __m
capacity of matrix
Definition: JMatrixND.hh:293
JMatrixND_t& JMATH::JMatrixND_t::transpose ( )
inlineinherited

Transpose.

Returns
this matrix

Definition at line 135 of file JMatrixND.hh.

136  {
137  using std::swap;
138 
139  for (size_t row = 0; row != this->size(); ++row) {
140  for (size_t col = 0; col != row; ++col) {
141  swap((*this)(row,col), (*this)(col,row));
142  }
143  }
144 
145  return *this;
146  }
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
void swap(JMatrixND_t &A)
Swap matrices.
Definition: JMatrixND.hh:120
size_t JMATH::JMatrixND_t::size ( ) const
inlineinherited

Get dimension of matrix.

Returns
dimension

Definition at line 154 of file JMatrixND.hh.

155  {
156  return __n;
157  }
size_t __n
dimension of matrix
Definition: JMatrixND.hh:292
size_t JMATH::JMatrixND_t::capacity ( ) const
inlineinherited

Get capacity of dimension.

Returns
capacity

Definition at line 165 of file JMatrixND.hh.

166  {
167  return __m;
168  }
size_t __m
capacity of matrix
Definition: JMatrixND.hh:293
bool JMATH::JMatrixND_t::empty ( ) const
inlineinherited

Check emptyness.

Returns
true if empty; else false

Definition at line 176 of file JMatrixND.hh.

177  {
178  return __n == 0;
179  }
size_t __n
dimension of matrix
Definition: JMatrixND.hh:292
const double* JMATH::JMatrixND_t::data ( ) const
inlineinherited

Get pointer to data.

Returns
pointer to data.

Definition at line 187 of file JMatrixND.hh.

188  {
189  return __p;
190  }
double * __p
pointer to data
Definition: JMatrixND.hh:291
double* JMATH::JMatrixND_t::data ( )
inlineinherited

Get pointer to data.

Returns
pointer to data.

Definition at line 198 of file JMatrixND.hh.

199  {
200  return __p;
201  }
double * __p
pointer to data
Definition: JMatrixND.hh:291
const double* JMATH::JMatrixND_t::operator[] ( size_t  row) const
inlineinherited

Get row data.

Parameters
rowrow number
Returns
pointer to row data

Definition at line 210 of file JMatrixND.hh.

211  {
212  return __p + row*__n;
213  }
size_t __n
dimension of matrix
Definition: JMatrixND.hh:292
double * __p
pointer to data
Definition: JMatrixND.hh:291
double* JMATH::JMatrixND_t::operator[] ( size_t  row)
inlineinherited

Get row data.

Parameters
rowrow number
Returns
pointer to row data

Definition at line 222 of file JMatrixND.hh.

223  {
224  return __p + row*__n;
225  }
size_t __n
dimension of matrix
Definition: JMatrixND.hh:292
double * __p
pointer to data
Definition: JMatrixND.hh:291
double JMATH::JMatrixND_t::operator() ( const size_t  row,
const size_t  col 
) const
inlineinherited

Get matrix element.

Parameters
rowrow number
colcolumn number
Returns
matrix element at (row,col)

Definition at line 235 of file JMatrixND.hh.

236  {
237  return *(__p + row*__n + col);
238  }
size_t __n
dimension of matrix
Definition: JMatrixND.hh:292
double * __p
pointer to data
Definition: JMatrixND.hh:291
double& JMATH::JMatrixND_t::operator() ( const size_t  row,
const size_t  col 
)
inlineinherited

Get matrix element.

Parameters
rowrow number
colcolumn number
Returns
matrix element at (row,col)

Definition at line 248 of file JMatrixND.hh.

249  {
250  return *(__p + row*__n + col);
251  }
size_t __n
dimension of matrix
Definition: JMatrixND.hh:292
double * __p
pointer to data
Definition: JMatrixND.hh:291
double JMATH::JMatrixND_t::at ( size_t  row,
size_t  col 
) const
inlineinherited

Get matrix element.

Parameters
rowrow number
colcolumn number
Returns
matrix element at (row,col)

Definition at line 261 of file JMatrixND.hh.

262  {
263  if (row >= this->size() ||
264  col >= this->size()) {
265  THROW(JIndexOutOfRange, "JMatrixND::at(" << row << "," << col << "): index out of range.");
266  }
267 
268  return (*this)(row, col);
269  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
double& JMATH::JMatrixND_t::at ( size_t  row,
size_t  col 
)
inlineinherited

Get matrix element.

Parameters
rowrow number
colcolumn number
Returns
matrix element at (row,col)

Definition at line 279 of file JMatrixND.hh.

280  {
281  if (row >= this->size() ||
282  col >= this->size()) {
283  THROW(JIndexOutOfRange, "JMatrixND::at(" << row << "," << col << "): index out of range.");
284  }
285 
286  return (*this)(row, col);
287  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
template<class T>
static data_type& JLANG::JSingleton< T >::getInstance ( )
inlinestaticinherited

Get unique instance of template class.

Returns
object

Definition at line 27 of file JSingleton.hh.

28  {
29  static data_type value;
30 
31  return value;
32  }
JMatrixND & JMATH::JMath< JMatrixND , JNullType >::mul ( const JNullType object)
inlineinherited

Multiply with object.

Parameters
objectobject
Returns
result object

Definition at line 273 of file JMath.hh.

274  {
275  return static_cast<JFirst_t&>(*this) = JCalculator<JFirst_t>::calculator.mul(static_cast<const JFirst_t&>(*this), object);
276  }
Auxiliary class for arithmetic operations on objects.
Definition: JCalculator.hh:18

Friends And Related Function Documentation

JReader& operator>> ( JReader in,
JMatrixND A 
)
friend

Read matrix from input.

Parameters
inreader
Amatrix
Returns
reader

Definition at line 720 of file JMatrixND.hh.

721  {
722  size_t size;
723 
724  in >> size;
725 
726  A.resize(size);
727 
728  size_t n = A.size() * A.size();
729 
730  for (double* p = A.data(); n != 0; --n, ++p) {
731  in >> *p;
732  }
733 
734  return in;
735  }
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
Definition: JSirene.sh:45
void resize(const size_t size)
Resize matrix.
Definition: JMatrixND.hh:359
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
alias put_queue eval echo n
Definition: qlib.csh:19
const double * data() const
Get pointer to data.
Definition: JMatrixND.hh:187
JWriter& operator<< ( JWriter out,
const JMatrixND A 
)
friend

Write matrix to output.

Parameters
outwriter
Amatrix
Returns
writer

Definition at line 745 of file JMatrixND.hh.

746  {
747  out << A.size();
748 
749  size_t n = A.size() * A.size();
750 
751  for (const double* p = A.data(); n != 0; --n, ++p) {
752  out << *p;
753  }
754 
755  return out;
756  }
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
alias put_queue eval echo n
Definition: qlib.csh:19
const double * data() const
Get pointer to data.
Definition: JMatrixND.hh:187
std::ostream& operator<< ( std::ostream &  out,
const JMatrixND A 
)
friend

Print ASCII formatted output.

Parameters
outoutput stream
Amatrix
Returns
output stream

Definition at line 766 of file JMatrixND.hh.

767  {
768  using namespace std;
769 
770  JFlags flags(out);
771 
772  for (size_t row = 0; row != A.size(); ++row) {
773 
774  for (size_t col = 0; col != A.size(); ++col) {
775  out << FIXED(10,3) << A(row,col) << ' ';
776  }
777 
778  out << endl;
779  }
780 
781  return out;
782  }
Auxiliary data structure for floating point format specification.
Definition: JPrint.hh:481
size_t size() const
Get dimension of matrix.
Definition: JMatrixND.hh:154
source $JPP_DIR setenv csh $JPP_DIR eval JShellParser o a A
Auxiliary class to temporarily modify format specifications.
Definition: JPrint.hh:617

Member Data Documentation

double* JMATH::JMatrixND_t::__p
protectedinherited

pointer to data

Definition at line 291 of file JMatrixND.hh.

size_t JMATH::JMatrixND_t::__n
protectedinherited

dimension of matrix

Definition at line 292 of file JMatrixND.hh.

size_t JMATH::JMatrixND_t::__m
protectedinherited

capacity of matrix

Definition at line 293 of file JMatrixND.hh.


The documentation for this struct was generated from the following file: