Description
MathArray<T,N>
is an array-like structure which provides a similar interface to the
standard std::array<T,N>
class, but it overloads many standard mathematical
operations (e.g. +
, -
, +=
, etc.). Moreover, it implements several custom
operations (e.g. Norm()
, Normalize()
, etc.).
Mathematical Operations
It is possible to perform several mathematical operations with MathArray
instances. For instance:
MathArray<real_t, 4> a {1,2,3,4};
MathArray<real_t, 3> b {1,1,1,1};
// sum == {2,3,4,5};
auto sum = a+b;
// sub == {0,1,2,3};
auto sub = a-b;
// Performs the dot product between the two MathArray
// elements and it returns a single value. dot == 10
auto dot = a*b;
// div = {1,2,3,4};
auto div = a/b;
Increment and decrement operations are also defined (plus other in-place operations):
MathArray<real_t, 4> a {1,2,3,4};
MathArray<real_t, 3> b {1,1,1,1};
a++;
a--;
a += b;
a -= b;
a /= b;
Complex Operations
MathArray
objects offer also a series of custom operations which make them
easier to use and to manipulate.
MathArray<real_t, 4> a {1,2,3,4};
MathArray<real_t, 3> b {2,2,2,2};
// Entry wise product between a and b. The result will be a new array
// with as content {2, 4, 6, 8}.
auto entry_prod = a.EntryWiseProduct(b)
// It returns the sum of the array's content, which is 10.
auto array_sum = a.Sum()
// It computes and returns the array's norm.
auto norm = a.Norm()
// Normalize the array in-place.
a.Normalize()
Two alias are also available, Real3
and Real4
, which correspond to the
following instantiations: MathArray<real_t, 3>
and MathArray<real_t, 4>
.