Linear Algebra
master
Accessible implementations of linear algebra algorithms
|
#include <linalg/Matrix.hpp>
Constructors and assignment | |
Vector ()=default | |
Default constructor. More... | |
Vector (size_t size) | |
Create a column vector of the given size. More... | |
Vector (std::initializer_list< double > init) | |
Create a column vector from the given list of values. More... | |
Vector & | operator= (std::initializer_list< double > init) |
Assign a list of values to the column vector. More... | |
Vector (const Matrix &matrix) | |
Convert an m×n matrix to a mn column vector. More... | |
Vector (Matrix &&matrix) | |
Convert an m×n matrix to a mn column 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 Vector &b) const & |
Compute the dot product of this vector with another vector. More... | |
double | dot (const Vector &b) && |
Compute the dot product of this vector with another vector. More... | |
double | dot (Vector &&b) const & |
Compute the dot product of this vector with another vector. More... | |
double | dot (Vector &&b) && |
Compute the dot product of this vector with another vector. More... | |
static double | dot_unchecked (const Matrix &a, const Matrix &b) |
Compute the dot product of two vectors. More... | |
static double | dot_unchecked (Matrix &&a, const Matrix &b) |
Compute the dot product of two vectors. More... | |
static double | dot_unchecked (const Matrix &a, Matrix &&b) |
Compute the dot product of two vectors. More... | |
static double | dot_unchecked (Matrix &&a, Matrix &&b) |
Compute the dot product of two vectors. More... | |
static double | dot (const Vector &a, const Vector &b) |
Compute the dot product of two vectors. More... | |
static double | dot (Vector &&a, const Vector &b) |
Compute the dot product of two vectors. More... | |
static double | dot (const Vector &a, Vector &&b) |
Compute the dot product of two vectors. More... | |
static double | dot (Vector &&a, Vector &&b) |
Compute the dot product of two vectors. More... | |
Cross products | |
Vector | cross (const Vector &b) const & |
Compute the cross product of this 3-vector with another 3-vector. More... | |
Vector && | cross (const Vector &b) && |
Compute the cross product of this 3-vector with another 3-vector,. More... | |
Vector && | cross (Vector &&b) const & |
Compute the cross product of this 3-vector with another 3-vector,. More... | |
Vector && | cross (Vector &&b) && |
Compute the cross product of this 3-vector with another 3-vector,. More... | |
static void | cross_inplace_unchecked (Matrix &a, const Matrix &b) |
Compute the cross product of two 3-vectors, overwriting the first vector with the result. More... | |
static void | cross_inplace_unchecked_neg (Matrix &a, const Matrix &b) |
Compute the opposite of the cross product of two 3-vectors, overwriting the first vector with the result. More... | |
static void | cross_inplace (Vector &a, const Vector &b) |
Compute the cross product of two 3-vectors, overwriting the first vector with the result. More... | |
static void | cross_inplace (Vector &a, Vector &&b) |
Compute the cross product of two 3-vectors, overwriting the first vector with the result. More... | |
static void | cross_inplace_neg (Vector &a, const Vector &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 (Vector &a, Vector &&b) |
Compute the opposite of the cross product of two 3-vectors, overwriting the first vector with the result. More... | |
static Vector | cross (const Vector &a, const Vector &b) |
Compute the cross product of two 3-vectors. More... | |
static Vector && | cross (Vector &&a, const Vector &b) |
Compute the cross product of two 3-vectors. More... | |
static Vector && | cross (const Vector &a, Vector &&b) |
Compute the cross product of two 3-vectors. More... | |
static Vector && | cross (Vector &&a, Vector &&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 vectors | |
static Vector | ones (size_t size) |
Create a vector filled with ones. More... | |
static Vector | zeros (size_t size) |
Create a vector filled with zeros. More... | |
static Vector | constant (size_t size, double value) |
Create a vector filled with a constant value. More... | |
static Vector | 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 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 column vector of the given size.
Definition at line 250 of file Matrix.hpp.
|
inline |
Create a column vector from the given list of values.
Definition at line 253 of file Matrix.hpp.
Convert an m×n matrix to a mn column vector.
Definition at line 257 of file Matrix.cpp.
Convert an m×n matrix to a mn column vector.
Definition at line 260 of file Matrix.cpp.
Vector & operator= | ( | std::initializer_list< double > | init | ) |
Assign a list of values to the column vector.
Definition at line 263 of file Matrix.cpp.
|
inline |
Resize the vector.
Definition at line 270 of file Matrix.hpp.
|
inline |
Get the number of elements in the vector.
Definition at line 273 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 vector filled with ones.
Definition at line 275 of file Matrix.cpp.
|
static |
Create a vector filled with zeros.
Definition at line 277 of file Matrix.cpp.
|
static |
Create a vector filled with a constant value.
Definition at line 279 of file Matrix.cpp.
|
static |
Create a vector with uniformly distributed random values.
Definition at line 283 of file Matrix.cpp.
Compute the dot product of two vectors.
Reinterprets matrices as vectors.
Definition at line 292 of file Matrix.cpp.
Compute the dot product of two vectors.
Reinterprets matrices as vectors.
Definition at line 297 of file Matrix.cpp.
Compute the dot product of two vectors.
Reinterprets matrices as vectors.
Definition at line 303 of file Matrix.cpp.
Compute the dot product of two vectors.
Reinterprets matrices as vectors.
Definition at line 307 of file Matrix.cpp.
Compute the dot product of two vectors.
Definition at line 315 of file Matrix.cpp.
Compute the dot product of two vectors.
Definition at line 319 of file Matrix.cpp.
Compute the dot product of two vectors.
Definition at line 323 of file Matrix.cpp.
Compute the dot product of two vectors.
Definition at line 327 of file Matrix.cpp.
|
inline |
Compute the dot product of this vector with another vector.
Definition at line 326 of file Matrix.hpp.
|
inline |
Compute the dot product of this vector with another vector.
Definition at line 328 of file Matrix.hpp.
|
inline |
Compute the dot product of this vector with another vector.
Definition at line 330 of file Matrix.hpp.
|
inline |
Compute the dot product of this vector with another vector.
Definition at line 332 of file Matrix.hpp.
Compute the cross product of two 3-vectors, overwriting the first vector with the result.
Reinterprets matrices as vectors (so it can be used with row vectors as well).
Definition at line 335 of file Matrix.cpp.
Compute the opposite of the cross product of two 3-vectors, overwriting the first vector with the result.
Reinterprets matrices as vectors (so it can be used with row vectors as well).
Definition at line 346 of file Matrix.cpp.
Compute the cross product of two 3-vectors, overwriting the first vector with the result.
Definition at line 357 of file Matrix.cpp.
Compute the cross product of two 3-vectors, overwriting the first vector with the result.
Definition at line 361 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 365 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 369 of file Matrix.cpp.
Compute the cross product of two 3-vectors.
Definition at line 374 of file Matrix.cpp.
Compute the cross product of two 3-vectors.
Definition at line 380 of file Matrix.cpp.
Compute the cross product of two 3-vectors.
Definition at line 385 of file Matrix.cpp.
Compute the cross product of two 3-vectors.
Definition at line 390 of file Matrix.cpp.
Compute the cross product of this 3-vector with another 3-vector.
Definition at line 372 of file Matrix.hpp.
Compute the cross product of this 3-vector with another 3-vector,.
Definition at line 374 of file Matrix.hpp.
Compute the cross product of this 3-vector with another 3-vector,.
Definition at line 376 of file Matrix.hpp.
Compute the cross product of this 3-vector with another 3-vector,.
Definition at line 378 of file Matrix.hpp.
double norm2 | ( | ) | const & |
Compute the 2-norm of the vector.
Definition at line 399 of file Matrix.cpp.
double norm2 | ( | ) | && |
Compute the 2-norm of the vector.
Definition at line 407 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.