Linear Algebra
master
Accessible implementations of linear algebra algorithms
|
#include <linalg/Matrix.hpp>
Constructors and assignment | |
RowVector ()=default | |
Default constructor. More... | |
RowVector (size_t size) | |
Create a row vector of the given size. More... | |
RowVector (std::initializer_list< double > init) | |
Create a row vector from the given list of values. More... | |
RowVector & | operator= (std::initializer_list< double > init) |
Assign a list of values to the column vector. More... | |
RowVector (const Matrix &matrix) | |
Convert an m×n matrix to a mn row vector. More... | |
RowVector (Matrix &&matrix) | |
Convert an m×n matrix to a mn row vector. More... | |
Vector size | |
void | resize (size_t size) |
Resize the vector. More... | |
size_t | size () const |
Get the number of elements in the vector. More... | |
void | reshape (size_t, size_t)=delete |
Reshaping a vector to a matrix requires an explicit cast. More... | |
Matrix | reshaped (size_t, size_t)=delete |
Reshaping a vector to a matrix requires an explicit cast. More... | |
Dot products | |
double | dot (const RowVector &b) const & |
Compute the dot product of this vector with another vector. More... | |
double | dot (const RowVector &b) && |
Compute the dot product of this vector with another vector. More... | |
double | dot (RowVector &&b) const & |
Compute the dot product of this vector with another vector. More... | |
double | dot (RowVector &&b) && |
Compute the dot product of this vector with another vector. More... | |
static double | dot (const RowVector &a, const RowVector &b) |
Compute the dot product of two vectors. More... | |
static double | dot (RowVector &&a, const RowVector &b) |
Compute the dot product of two vectors. More... | |
static double | dot (const RowVector &a, RowVector &&b) |
Compute the dot product of two vectors. More... | |
static double | dot (RowVector &&a, RowVector &&b) |
Compute the dot product of two vectors. More... | |
Cross products | |
RowVector | cross (const RowVector &b) const & |
Compute the cross product of this 3-vector with another 3-vector. More... | |
RowVector && | cross (const RowVector &b) && |
Compute the cross product of this 3-vector with another 3-vector,. More... | |
RowVector && | cross (RowVector &&b) const & |
Compute the cross product of this 3-vector with another 3-vector,. More... | |
RowVector && | cross (RowVector &&b) && |
Compute the cross product of this 3-vector with another 3-vector,. More... | |
static void | cross_inplace (RowVector &a, const RowVector &b) |
Compute the cross product of two 3-vectors, overwriting the first vector with the result. More... | |
static void | cross_inplace (RowVector &a, RowVector &&b) |
Compute the cross product of two 3-vectors, overwriting the first vector with the result. More... | |
static void | cross_inplace_neg (RowVector &a, const RowVector &b) |
Compute the opposite of the cross product of two 3-vectors, overwriting the first vector with the result. More... | |
static void | cross_inplace_neg (RowVector &a, RowVector &&b) |
Compute the opposite of the cross product of two 3-vectors, overwriting the first vector with the result. More... | |
static RowVector | cross (const RowVector &a, const RowVector &b) |
Compute the cross product of two 3-vectors. More... | |
static RowVector && | cross (RowVector &&a, const RowVector &b) |
Compute the cross product of two 3-vectors. More... | |
static RowVector && | cross (const RowVector &a, RowVector &&b) |
Compute the cross product of two 3-vectors. More... | |
static RowVector && | cross (RowVector &&a, RowVector &&b) |
Compute the cross product of two 3-vectors. More... | |
Vector norms | |
double | norm2 () const & |
Compute the 2-norm of the vector. More... | |
double | norm2 () && |
Compute the 2-norm of the vector. More... | |
Matrix size | |
size_t | rows () const |
Get the number of rows of the matrix. More... | |
size_t | cols () const |
Get the number of columns of the matrix. More... | |
size_t | num_elems () const |
Get the number of elements in the matrix: More... | |
Matrix | reshaped (size_t newrows, size_t newcols) const |
Create a reshaped copy of the matrix. More... | |
Element access | |
double & | operator() (size_t row, size_t col) |
Get the element at the given position in the matrix. More... | |
const double & | operator() (size_t row, size_t col) const |
Get the element at the given position in the matrix. More... | |
double & | operator() (size_t index) |
Get the element at the given position in the linearized matrix. More... | |
const double & | operator() (size_t index) const |
Get the element at the given position in the linearized matrix. More... | |
Memory management | |
void | clear_and_deallocate () |
Set the number of rows and columns to zero, and deallocate the storage. More... | |
Filling matrices | |
void | fill (double value) |
Fill the matrix with a constant value. More... | |
void | fill_identity () |
Fill the matrix as an identity matrix (all zeros except the diagonal which is one). More... | |
void | fill_random (double min=0, double max=1, std::default_random_engine::result_type seed=std::default_random_engine::default_seed) |
Fill the matrix with uniformly distributed random values. More... | |
Swapping rows and columns | |
void | swap_rows (size_t a, size_t b) |
Swap two rows of the matrix. More... | |
void | swap_columns (size_t a, size_t b) |
Swap two columns of the matrix. More... | |
Comparison | |
bool | operator== (const Matrix &other) const |
Check for equality of two matrices. More... | |
bool | operator!= (const Matrix &other) const |
Check for inequality of two matrices. More... | |
Matrix norms | |
double | normFro () const & |
Compute the Frobenius norm of the matrix. More... | |
double | normFro () && |
Compute the Frobenius norm of the matrix. More... | |
Iterators | |
storage_t::iterator | begin () |
Get the iterator to the first element of the matrix. More... | |
storage_t::const_iterator | begin () const |
Get the iterator to the first element of the matrix. More... | |
storage_t::const_iterator | cbegin () const |
Get the iterator to the first element of the matrix. More... | |
storage_t::iterator | end () |
Get the iterator to the element past the end of the matrix. More... | |
storage_t::const_iterator | end () const |
Get the iterator to the element past the end of the matrix. More... | |
storage_t::const_iterator | cend () const |
Get the iterator to the element past the end of the matrix. More... | |
Printing | |
void | print (std::ostream &os, uint8_t precision=0, uint8_t width=0) const |
Print a matrix. More... | |
Creating special row vectors | |
static RowVector | ones (size_t size) |
Create a row vector filled with ones. More... | |
static RowVector | zeros (size_t size) |
Create a row vector filled with zeros. More... | |
static RowVector | constant (size_t size, double value) |
Create a row vector filled with a constant value. More... | |
static RowVector | random (size_t size, double min=0, double max=1, std::default_random_engine::result_type seed=std::default_random_engine::default_seed) |
Create a row vector with uniformly distributed random values. More... | |
Create special matrices | |
static Matrix | ones (size_t rows, size_t cols) |
Create a matrix filled with ones. More... | |
static Matrix | zeros (size_t rows, size_t cols) |
Create a matrix filled with zeros. More... | |
static Matrix | constant (size_t rows, size_t cols, double value) |
Create a matrix filled with a constant value. More... | |
static Matrix | identity (size_t rows, size_t cols) |
Create an identity matrix. More... | |
static Matrix | identity (size_t rows) |
Create a square identity matrix. More... | |
static Matrix | random (size_t rows, size_t cols, double min=0, double max=1, std::default_random_engine::result_type seed=std::default_random_engine::default_seed) |
Create a matrix with uniformly distributed random values. More... | |
Protected Attributes | |
size_t | rows_ = 0 |
size_t | cols_ = 0 |
storage_t | storage |
Private Types | |
using | storage_t = util::storage_t< double > |
Container to store the elements of the matrix internally. More... | |
Related Functions | |
(Note that these are not member functions.) | |
std::ostream & | operator<< (std::ostream &os, const Matrix &M) |
Print a matrix. More... | |
|
privateinherited |
Container to store the elements of the matrix internally.
Definition at line 28 of file Matrix.hpp.
|
default |
Default constructor.
|
inline |
Create a row vector of the given size.
Definition at line 406 of file Matrix.hpp.
|
inline |
Create a row vector from the given list of values.
Definition at line 409 of file Matrix.hpp.
Convert an m×n matrix to a mn row vector.
Definition at line 419 of file Matrix.cpp.
Convert an m×n matrix to a mn row vector.
Definition at line 422 of file Matrix.cpp.
RowVector & operator= | ( | std::initializer_list< double > | init | ) |
Assign a list of values to the column vector.
Definition at line 425 of file Matrix.cpp.
|
inline |
Resize the vector.
Definition at line 426 of file Matrix.hpp.
|
inline |
Get the number of elements in the vector.
Definition at line 429 of file Matrix.hpp.
|
delete |
Reshaping a vector to a matrix requires an explicit cast.
|
delete |
Reshaping a vector to a matrix requires an explicit cast.
|
static |
Create a row vector filled with ones.
Definition at line 434 of file Matrix.cpp.
|
static |
Create a row vector filled with zeros.
Definition at line 438 of file Matrix.cpp.
|
static |
Create a row vector filled with a constant value.
Definition at line 442 of file Matrix.cpp.
|
static |
Create a row vector with uniformly distributed random values.
Definition at line 446 of file Matrix.cpp.
Compute the dot product of two vectors.
Definition at line 455 of file Matrix.cpp.
Compute the dot product of two vectors.
Definition at line 459 of file Matrix.cpp.
Compute the dot product of two vectors.
Definition at line 463 of file Matrix.cpp.
Compute the dot product of two vectors.
Definition at line 467 of file Matrix.cpp.
|
inline |
Compute the dot product of this vector with another vector.
Definition at line 469 of file Matrix.hpp.
|
inline |
Compute the dot product of this vector with another vector.
Definition at line 471 of file Matrix.hpp.
|
inline |
Compute the dot product of this vector with another vector.
Definition at line 473 of file Matrix.hpp.
|
inline |
Compute the dot product of this vector with another vector.
Definition at line 475 of file Matrix.hpp.
Compute the cross product of two 3-vectors, overwriting the first vector with the result.
Definition at line 475 of file Matrix.cpp.
Compute the cross product of two 3-vectors, overwriting the first vector with the result.
Definition at line 478 of file Matrix.cpp.
Compute the opposite of the cross product of two 3-vectors, overwriting the first vector with the result.
Definition at line 482 of file Matrix.cpp.
Compute the opposite of the cross product of two 3-vectors, overwriting the first vector with the result.
Definition at line 485 of file Matrix.cpp.
Compute the cross product of two 3-vectors.
Definition at line 490 of file Matrix.cpp.
Compute the cross product of two 3-vectors.
Definition at line 495 of file Matrix.cpp.
Compute the cross product of two 3-vectors.
Definition at line 499 of file Matrix.cpp.
Compute the cross product of two 3-vectors.
Definition at line 503 of file Matrix.cpp.
Compute the cross product of this 3-vector with another 3-vector.
Definition at line 508 of file Matrix.cpp.
Compute the cross product of this 3-vector with another 3-vector,.
Definition at line 511 of file Matrix.cpp.
Compute the cross product of this 3-vector with another 3-vector,.
Definition at line 514 of file Matrix.cpp.
Compute the cross product of this 3-vector with another 3-vector,.
Definition at line 517 of file Matrix.cpp.
double norm2 | ( | ) | const & |
Compute the 2-norm of the vector.
Definition at line 525 of file Matrix.cpp.
double norm2 | ( | ) | && |
Compute the 2-norm of the vector.
Definition at line 527 of file Matrix.cpp.
|
inlineinherited |
|
inlineinherited |
Get the number of columns of the matrix.
Definition at line 71 of file Matrix.hpp.
|
inlineinherited |
Get the number of elements in the matrix:
Definition at line 73 of file Matrix.hpp.
|
inherited |
|
inherited |
Get the element at the given position in the matrix.
Definition at line 90 of file Matrix.cpp.
|
inherited |
Get the element at the given position in the matrix.
Definition at line 98 of file Matrix.cpp.
|
inlineinherited |
Get the element at the given position in the linearized matrix.
Definition at line 95 of file Matrix.hpp.
|
inlineinherited |
Get the element at the given position in the linearized matrix.
Definition at line 97 of file Matrix.hpp.
|
inherited |
Set the number of rows and columns to zero, and deallocate the storage.
Definition at line 110 of file Matrix.cpp.
|
inherited |
Fill the matrix with a constant value.
Definition at line 121 of file Matrix.cpp.
|
inherited |
Fill the matrix as an identity matrix (all zeros except the diagonal which is one).
Definition at line 125 of file Matrix.cpp.
|
inherited |
Fill the matrix with uniformly distributed random values.
Definition at line 131 of file Matrix.cpp.
|
staticinherited |
|
staticinherited |
|
staticinherited |
Create a matrix filled with a constant value.
Definition at line 151 of file Matrix.cpp.
|
staticinherited |
|
staticinherited |
Create a square identity matrix.
Definition at line 163 of file Matrix.cpp.
|
staticinherited |
Create a matrix with uniformly distributed random values.
Definition at line 165 of file Matrix.cpp.
|
inherited |
Swap two rows of the matrix.
Definition at line 181 of file Matrix.cpp.
|
inherited |
Swap two columns of the matrix.
Definition at line 176 of file Matrix.cpp.
|
inherited |
Check for equality of two matrices.
Definition at line 190 of file Matrix.cpp.
|
inlineinherited |
Check for inequality of two matrices.
Definition at line 177 of file Matrix.hpp.
|
inherited |
Compute the Frobenius norm of the matrix.
Definition at line 211 of file Matrix.cpp.
|
inherited |
Compute the Frobenius norm of the matrix.
Definition at line 220 of file Matrix.cpp.
|
inlineinherited |
Get the iterator to the first element of the matrix.
Definition at line 197 of file Matrix.hpp.
|
inlineinherited |
Get the iterator to the first element of the matrix.
Definition at line 199 of file Matrix.hpp.
|
inlineinherited |
Get the iterator to the first element of the matrix.
Definition at line 201 of file Matrix.hpp.
|
inlineinherited |
Get the iterator to the element past the end of the matrix.
Definition at line 204 of file Matrix.hpp.
|
inlineinherited |
Get the iterator to the element past the end of the matrix.
Definition at line 206 of file Matrix.hpp.
|
inlineinherited |
Get the iterator to the element past the end of the matrix.
Definition at line 208 of file Matrix.hpp.
|
inherited |
Print a matrix.
os | The stream to print to. |
precision | The number of significant figures to print. (0 = auto) |
width | The width of each element (number of characters). (0 = auto) |
Definition at line 232 of file Matrix.cpp.
|
related |
Print a matrix.
Definition at line 245 of file Matrix.cpp.
|
protectedinherited |
Definition at line 231 of file Matrix.hpp.
|
protectedinherited |
Definition at line 231 of file Matrix.hpp.
|
protectedinherited |
Definition at line 232 of file Matrix.hpp.