|
| Array ()=default |
| Default constructor.
|
|
| Array (const Array< n, m, T > &v)=default |
| Copy constructor.
|
|
template<typename S , std::enable_if_t< hila::is_assignable< T &, S >::value, int > = 0> |
| Array (const S rhs) |
| Scalar constructor.
|
|
| Array (const std::nullptr_t &z) |
| Zero constructor.
|
|
template<typename S , std::enable_if_t< hila::is_assignable< T &, S >::value, int > = 0> |
| Array (std::initializer_list< S > rhs) |
| Initializer list constructor.
|
|
Matrix< n, m, T > & | asMatrix () |
| Cast Array to Matrix.
|
|
Vector< n, T > & | asVector () |
| Cast Array1D to Vector.
|
|
constexpr int | columns () const |
| Returns number of columns.
|
|
Array< n, m, T > | conj () const |
| Returns element wise Complex conjugate of Array.
|
|
template<int q = n, int p = m, std::enable_if_t<(q==1||p==1), int > = 0> |
T & | e (const int i) |
| Standard array indexing operation for 1D Array.
|
|
template<int q = n, int p = m, std::enable_if_t<(q==1||p==1), int > = 0> |
T | e (const int i) const |
| Const overload.
|
|
T & | e (const int i, const int j) |
| Const overload.
|
|
T | e (const int i, const int j) const |
| Standard array indexing operation for 2D Array.
|
|
Array< n, m, T > & | gaussian_random (double width=1.0) |
| Fill Array with Gaussian random elements.
|
|
Array< n, m, hila::arithmetic_type< T > > | imag () const |
| return imaginary part
|
|
template<typename S , int n1, int m1> |
bool | operator!= (const Array< n1, m1, S > &rhs) const |
| Compare non-equality of two Arrays.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | operator* (Array< n, m, T > a, const Array< n, m, T > &b) |
| Multiplication operator.
|
|
template<typename S , std::enable_if_t< std::is_convertible< hila::type_mul< T, S >, T >::value, int > = 0> |
Array< n, m, T > & | operator*= (const Array< n, m, S > &rhs) |
| Multiply assign scalar or array.
|
|
template<typename S , std::enable_if_t< std::is_convertible< hila::type_mul< T, S >, T >::value, int > = 0> |
Array< n, m, T > & | operator*= (const S rhs) |
| multiply assign with scalar
|
|
Array< n, m, T > | operator+ () const |
| Unary + operator.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | operator+ (Array< n, m, T > a, const Array< n, m, T > &b) |
| Addition operator.
|
|
template<typename S , std::enable_if_t< std::is_convertible< S, T >::value, int > = 0> |
Array< n, m, T > & | operator+= (const Array< n, m, S > &rhs) |
| Add assign operator with Array or scalar.
|
|
Array< n, m, T > | operator- () const |
| Unary - operator.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | operator- (Array< n, m, T > a, const Array< n, m, T > &b) |
| Subtraction operator.
|
|
template<typename S , std::enable_if_t< std::is_convertible< S, T >::value, int > = 0> |
Array< n, m, T > & | operator-= (const Array< n, m, S > &rhs) |
| Subtract assign operator with Array or scalar.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | operator/ (Array< n, m, T > a, const Array< n, m, T > &b) |
| Division operator.
|
|
template<typename S , std::enable_if_t< std::is_convertible< hila::type_div< T, S >, T >::value, int > = 0> |
Array< n, m, T > & | operator/= (const Array< n, m, S > &rhs) |
| Division assign with array or scalar.
|
|
template<typename S , std::enable_if_t< hila::is_assignable< T &, S >::value, int > = 0> |
Array< n, m, T > & | operator= (const S rhs) |
| Scalar assignment operator.
|
|
template<typename S , int n1, int m1> |
bool | operator== (const Array< n1, m1, S > &rhs) const |
| Compare equality of Arrays.
|
|
Array< n, m, T > & | random () |
| Fill Array with random elements.
|
|
Array< n, m, hila::arithmetic_type< T > > | real () const |
| Returns real part of Array.
|
|
constexpr int | rows () const |
| Returns number of rows.
|
|
template<int q = n, int p = m, std::enable_if_t< q==1, int > = 0> |
constexpr int | size () const |
| Returns size of Vector Array or square Array.
|
|
template<int N> |
Array< n, m, T > | sort (Vector< N, int > &permutation, hila::sort order=hila::sort::ascending) const |
| implement sort as casting to array
|
|
hila::arithmetic_type< T > | squarenorm () const |
| calculate square norm - sum of squared elements
|
|
std::string | str (int prec=8, char separator=' ') const |
| Convert to string for printing.
|
|
|
(Note that these are not member symbols.)
|
template<typename Ntype , typename T , int n, int m, std::enable_if_t< hila::is_arithmetic< T >::value, int > = 0> |
Array< n, m, Ntype > | cast_to (const Array< n, m, T > &mat) |
| Array casting operation.
|
|
|
all operations are applied linearly to the Array A
Most functions are self explanitory, but if necessary function will have a detailed section with additional information.
- Template Parameters
-
n | Number of rows |
m | Number of columns |
T | Array element type |
- Parameters
-
- Returns
- Array<n, m, T>
|
template<int n, int m, typename T > |
Array< n, m, T > | sqrt (Array< n, m, T > a) |
| Square root.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | cbrt (Array< n, m, T > a) |
| Cuberoot.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | exp (Array< n, m, T > a) |
| Exponential.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | log (Array< n, m, T > a) |
| Logarithm.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | sin (Array< n, m, T > a) |
| Sine.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | cos (Array< n, m, T > a) |
| Cosine.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | tan (Array< n, m, T > a) |
| Tangent.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | asin (Array< n, m, T > a) |
| Inverse Sine.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | acos (Array< n, m, T > a) |
| Inverse Cosine.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | atan (Array< n, m, T > a) |
| Inverse Tangent.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | sinh (Array< n, m, T > a) |
| Hyperbolic Sine.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | cosh (Array< n, m, T > a) |
| Hyperbolic Cosine.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | tanh (Array< n, m, T > a) |
| Hyperbolic tangent.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | asinh (Array< n, m, T > a) |
| Inverse Hyperbolic Sine.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | acosh (Array< n, m, T > a) |
| Inverse Hyperbolic Cosine.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | atanh (Array< n, m, T > a) |
| Inverse Hyperbolic Tangent.
|
|
template<int n, int m, typename T > |
Array< n, m, T > | pow (Array< n, m, T > a, int b) |
| Power.
|
|
template<int n, int m, typename T , std::enable_if_t< hila::is_arithmetic< T >::value, int > = 0> |
Array< n, m, T > | round (Array< n, m, T > a) |
| Rounding.
|
|
template<int n, int m, typename T , std::enable_if_t< hila::is_arithmetic< T >::value, int > = 0> |
Array< n, m, T > | floor (Array< n, m, T > a) |
| Floor.
|
|
template<int n, int m, typename T , std::enable_if_t< hila::is_arithmetic< T >::value, int > = 0> |
Array< n, m, T > | ceil (Array< n, m, T > a) |
| Ceiling.
|
|
template<int n, int m, typename T , std::enable_if_t< hila::is_arithmetic< T >::value, int > = 0> |
Array< n, m, T > | trunc (Array< n, m, T > a) |
| Truncation.
|
|
template<const int n, const int m, typename T>
class Array< n, m, T >
\( n\times m \) Array type
Acts as array class which stores data in a simple C style array.
Main functionality which the Array class offers is to supplement the fall backs of storing information in a Matrix data structure.
For example assigning a value to each element with the Matrix class is not directly possible using the assignment operator=. This is because assignment with matrices is defined as \( M = a = a*I \) where M is a general matrix, a is a scalar and I an identity matrix. The result would only assign a to the diagonal elements.
Unlike the Matrix object, the Array object assigns element wise. This allows filling the Array with the assignment operator. Additionally element wise operations are useable as long as they are defined for the Array type. For example the operation:
Array< n, m, T > & random()
Fill Array with random elements.
Array< n, m, T > sin(Array< n, m, T > a)
Sine.
is defined, since the \(sin\) function is defined for doubles.
The above operation would not work for matrices, but with casting operations. Matrix::asArray and Array::asMatrix one can take full advantage of element wise operations.
- Template Parameters
-
n | Number of rows |
m | Number of columns |
T | Array element type |
Definition at line 43 of file array.h.