Skip to content

Commit

Permalink
Add matrix example
Browse files Browse the repository at this point in the history
  • Loading branch information
lbinria committed Dec 5, 2023
1 parent b2140ba commit 46f4d08
Showing 1 changed file with 49 additions and 4 deletions.
53 changes: 49 additions & 4 deletions examples/algebra.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,19 @@ int main(int argc, char** argv) {

// Create 2D vectors
std::cout << "--- 2D Vectors ---" << std::endl;
vec2 v2a = {1., 1.};
vec2 v2b = {3., 4.};
vec2 v2a{1., 1.};
vec2 v2b{3., 4.};
// Addition of vectors
std::cout << v2a << "+ " << v2b << "= " << v2a + v2b << std::endl;
// Subtraction of vectors
std::cout << v2a << "- " << v2b << "= " << v2a - v2b << std::endl;
double a = 2.;
// Vector scalar multiplication
std::cout << v2a << "* " << a << " = " << v2a * a << std::endl;
// Vector scalar division
std::cout << v2a << "/ " << a << " = " << v2a / a << std::endl;
// Negate
std::cout << "-( " << v2a << ")" << " = " << -v2a << std::endl;
// Dot product of vectors
std::cout << "dot product: " << v2a << ". " << v2b << "= " << v2a * v2b << std::endl;
// Compute the square of the norm (square of length) of vector
Expand All @@ -35,12 +42,18 @@ int main(int argc, char** argv) {

// Create 3D vectors
std::cout << "--- 3D Vectors ---" << std::endl;
vec3 v3a = {1., 2., 3.};
vec3 v3b = {3., 4., .5};
vec3 v3a{1., 2., 3.};
vec3 v3b{3., 4., .5};
// Addition of vectors
std::cout << v3a << "+ " << v3b << "= " << v3a + v3b << std::endl;
// Subtraction of vectors
std::cout << v3a << "- " << v3b << "= " << v3a - v3b << std::endl;
// Vector scalar multiplication
std::cout << v3a << "* " << a << " = " << v3a * a << std::endl;
// Vector scalar division
std::cout << v3a << "/ " << a << " = " << v3a / a << std::endl;
// Negate
std::cout << "-( " << v3a << ")" << " = " << -v3a << std::endl;
// Dot product of vectors
std::cout << "dot product: " << v3a << ". " << v3b << "= " << v3a * v3b << std::endl;
// Cross product of vectors
Expand All @@ -57,6 +70,38 @@ int main(int argc, char** argv) {

// --- 2x2 MAT ---

// Create 2x2 matrix
std::cout << "--- 2x2 Matrix ---" << std::endl;
mat2x2 m22a{{{0., 1.}, {1., 0.}}};
vec2 v2c{0., 1.};
// Create an identity matrix
std::cout << "identity: " << mat2x2::identity() << std::endl;
// Matrix / matrix multiplication
std::cout << m22a << "* " << m22a << "= " << m22a * m22a << std::endl;
// Matrix point-wise addition
std::cout << m22a << "+ " << m22a << "= " << m22a + m22a << std::endl;
// Matrix point-wise subtraction
std::cout << m22a << "- " << m22a << "= " << m22a - m22a << std::endl;
// Matrix / vector multiplication
std::cout << m22a << "* " << v2c << "= " << m22a * v2c << std::endl << std::endl;
// Matrix / scalar multiplication
std::cout << m22a << "* " << a << "= " << m22a * a << std::endl << std::endl;
// Matrix / scalar division
std::cout << m22a << "/ " << a << "= " << m22a / a << std::endl << std::endl;
// Compute the norm (length) of matrix
std::cout << "norm: " << m22a.norm() << std::endl;
// Get row 0 of matrix
std::cout << "Access row 0: " << m22a[0] << std::endl;
// Get row 1 of matrix
std::cout << "Access col 1: " << m22a.col(1) << std::endl;
// Get sum of square norm of rows of matrix
std::cout << "Sum square: " << m22a.sumsqr() << std::endl;
// Transpose matrix (swap rows & cols)
mat2x2 m22b{{{1., 2.}, {3., 4.}}};
std::cout << "Transpose: " << m22b << "=" << m22b.transpose() << std::endl;

// std::cout << "Sum square: " << m22b.get_minor() << std::endl;

// TODO

// --- END ---
Expand Down

0 comments on commit 46f4d08

Please sign in to comment.