11#include "mspass/utility/MsPASSError.h"
12#include <boost/archive/binary_iarchive.hpp>
13#include <boost/archive/binary_oarchive.hpp>
14#include <boost/serialization/vector.hpp>
41 std::ostringstream oss;
42 oss <<
"dmatrix object: indexing error" << std::endl
43 <<
"Matrix index (" << row <<
"," << column
44 <<
")is outside range = " << nrr <<
"," << ncc << std::endl;
46 badness = ErrorSeverity::Invalid;
76 std::ostringstream oss;
77 oss <<
"dmatrix class: size mismatch error in binary operator"
79 <<
"matrix on left is " << nrow1 <<
"X" << ncol1
80 <<
" while matrix on right is " << nrow2 <<
"X" << ncol2 << std::endl;
82 badness = ErrorSeverity::Invalid;
88 size_t nrow1, ncol1, nrow2, ncol2;
115 dmatrix(
const size_t nr,
const size_t nc);
129 double operator()(
const size_t rowindex,
const size_t colindex)
const;
144 std::swap(
nrr, other.
nrr);
145 std::swap(
ncc, other.
ncc);
277 std::vector<size_t>
size()
const;
292 friend class boost::serialization::access;
293 template <
class Archive>
294 void serialize(Archive &ar,
const unsigned int version) {
Base class for error object thrown by MsPASS library routines.
Definition MsPASSError.h:38
std::string message
Definition MsPASSError.h:108
ErrorSeverity badness
Definition MsPASSError.h:110
special convenience class for matrix indexing errors.
Definition dmatrix.h:26
dmatrix_index_error(const size_t nrmax, const size_t ncmax, const size_t ir, const size_t ic)
Definition dmatrix.h:35
Convenience class for dmatrix use errors.
Definition dmatrix.h:61
dmatrix_size_error(const size_t nr1, const size_t nc1, const size_t nr2, const size_t nc2)
Definition dmatrix.h:70
Lightweight, simple matrix object.
Definition dmatrix.h:105
dmatrix & operator=(const dmatrix &other)
Definition dmatrix.cc:93
bool storage_is_consistent() const noexcept
Definition dmatrix.h:148
size_t rows() const
Definition dmatrix.cc:215
dmatrix & operator-=(const dmatrix &other)
Subtract one matrix to another.
Definition dmatrix.cc:112
dmatrix & operator+=(const dmatrix &other)
Add one matrix to another.
Definition dmatrix.cc:103
friend std::ostream & operator<<(std::ostream &os, dmatrix &A)
Text output operator.
size_t nrr
Definition dmatrix.h:287
friend dmatrix operator*(const dmatrix &A, const dmatrix &B)
Procedure to multiply two matrices. This could be implemented with a dmatrix::operator but this was a...
Definition dmatrix.cc:140
std::vector< size_t > size() const
Return a vector with 2 elements giving the size.
Definition dmatrix.cc:207
dmatrix operator+(const dmatrix &other) const
Definition dmatrix.cc:121
void zero()
Definition dmatrix.cc:203
size_t ncc
Definition dmatrix.h:289
size_t columns() const
Definition dmatrix.cc:216
dmatrix operator-(const dmatrix &other) const
Definition dmatrix.cc:130
friend dmatrix tr(const dmatrix &A) noexcept
Transpose a matrix.
Definition dmatrix.cc:183
double operator()(const size_t rowindex, const size_t colindex) const
Definition dmatrix.cc:39
void swap(dmatrix &other) noexcept
Definition dmatrix.h:141
double * get_address(size_t r, size_t c) const
Get a pointer to the location of a matrix component.
Definition dmatrix.cc:72
dmatrix()
Definition dmatrix.cc:8
~dmatrix()
Definition dmatrix.cc:35
std::vector< double > ary
Definition dmatrix.h:283
size_t length
Definition dmatrix.h:285
A vector compatible with dmatrix objects.
Definition dmatrix.h:307
dvector & operator=(const dvector &other)
Definition dmatrix.cc:219
dvector()
Definition dmatrix.h:310
friend dvector operator*(const dmatrix &A, const dvector &x)
Definition dmatrix.cc:239
double & operator()(size_t rowindex)
Definition dmatrix.cc:234
dvector(size_t nrv)
Definition dmatrix.h:312