|
| template<typename T, size_t N, size_t M, ValidAccessor< T > Accessor> |
| std::ostream & | mundy::operator<< (std::ostream &os, const AMatrix< T, N, M, Accessor > &mat) |
| | Write the matrix to an output stream.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | mundy::is_close (const AMatrix< U, N, M, Accessor1 > &mat1, const AMatrix< T, N, M, Accessor2 > &mat2, const decltype(get_comparison_tolerance< T, U >())&tol=get_comparison_tolerance< T, U >()) |
| | AMatrix-matrix equality (element-wise within a tolerance).
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | mundy::is_approx_close (const AMatrix< U, N, M, Accessor1 > &mat1, const AMatrix< T, N, M, Accessor2 > &mat2, const decltype(get_relaxed_comparison_tolerance< T, U >())&tol=get_relaxed_comparison_tolerance< T, U >()) |
| | AMatrix-matrix equality (element-wise within a relaxed tolerance).
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::operator+ (const U &scalar, const AMatrix< T, N, M, Accessor > &mat) -> AMatrix< std::common_type_t< T, U >, N, M > |
| | Scalar-matrix addition.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::operator- (const U &scalar, const AMatrix< T, N, M, Accessor > &mat) -> AMatrix< std::common_type_t< T, U >, N, M > |
| | Scalar-matrix subtraction.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::operator* (const U &scalar, const AMatrix< T, N, M, Accessor > &mat) -> AMatrix< std::common_type_t< T, U >, N, M > |
| | Scalar-matrix multiplication.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< T > Accessor1, ValidAccessor< U > Accessor2> |
| constexpr auto | mundy::operator* (const AVector< U, N, Accessor1 > &vec, const AMatrix< T, N, M, Accessor2 > &mat) -> Vector< std::common_type_t< T, U >, M > |
| | Vector matrix multiplication (v^T M).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::determinant (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix determinant.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::trace (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix trace.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::sum (const AMatrix< T, N, M, Accessor > &mat) |
| | Sum of all elements.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::product (const AMatrix< T, N, M, Accessor > &mat) |
| | Product of all elements.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::min (const AMatrix< T, N, M, Accessor > &mat) |
| | Minimum element of the matrix.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::max (const AMatrix< T, N, M, Accessor > &mat) |
| | Maximum element of the matrix.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| constexpr OutputType | mundy::mean (const AMatrix< T, N, M, Accessor > &mat) |
| | Mean of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr OutputType | mundy::mean_f (const AMatrix< T, N, M, Accessor > &mat) |
| | Mean of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| constexpr OutputType | mundy::variance (const AMatrix< T, N, M, Accessor > &mat) |
| | Variance of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr OutputType | mundy::variance_f (const AMatrix< T, N, M, Accessor > &mat) |
| | Variance of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| constexpr OutputType | mundy::stddev (const AMatrix< T, N, M, Accessor > &mat) |
| | Standard deviation of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr OutputType | mundy::stddev_f (const AMatrix< T, N, M, Accessor > &mat) |
| | Standard deviation of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<ValidMatrixType MatrixType> |
| constexpr auto | mundy::copy (const MatrixType &m) |
| | Get a deep copy of the given matrix.
|
| template<typename U, ValidMatrixType MatrixType> |
| constexpr auto | mundy::cast (const MatrixType &m) |
| | Cast a matrix to a different arithmetic type.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr AMatrix< T, M, N > | mundy::transpose (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix transpose.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| AMatrix< T, N, N > constexpr | mundy::cofactors (const AMatrix< T, N, N, Accessor > &mat) |
| | AMatrix cofactors.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| AMatrix< T, N, N > constexpr | mundy::adjugate (const AMatrix< T, N, N, Accessor > &mat) |
| | AMatrix adjugate.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| AMatrix< OutputType, N, N > constexpr | mundy::inverse (const AMatrix< T, N, N, Accessor > &mat) |
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputElementType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr auto | mundy::inverse_f (const AMatrix< T, N, N, Accessor > &mat) |
| | AMatrix inverse (returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | mundy::frobenius_inner_product (const AMatrix< U, N, M, Accessor1 > &a, const AMatrix< T, N, M, Accessor2 > &b) |
| | AMatrix Frobenius inner product.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | mundy::elementwise_mul (const AMatrix< U, N, M, Accessor1 > &a, const AMatrix< T, N, M, Accessor2 > &b) |
| | Element-wise product.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | mundy::elementwise_div (const AMatrix< U, N, M, Accessor1 > &a, const AMatrix< T, N, M, Accessor2 > &b) |
| | Element-wise product.
|
| template<typename Func, size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::apply (Func &&func, const AMatrix< T, N, M, Accessor > &mat) |
| | Apply a function to each element of the matrix.
|
| template<typename Func, size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::apply_row (Func &&func, const AMatrix< T, N, M, Accessor > &mat) |
| | Apply a function to each row of the matrix.
|
| template<typename Func, size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::apply_column (Func &&func, const AMatrix< T, N, M, Accessor > &mat) |
| | Apply a function to each column of the matrix.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | mundy::outer_product (const AVector< U, N, Accessor1 > &a, const AVector< T, M, Accessor2 > &b) |
| | Outer product of two vectors.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::frobenius_norm (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix Frobenius norm.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::inf_norm (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix infinity norm.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::one_norm (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix 1-norm (maximum absolute column sum).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::two_norm (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix 2-norm.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > A> |
| AMatrix< T, N, M > | mundy::atomic_load (AMatrix< T, N, M, A > *const m) |
| | Atomic m_copy = m.
|
| template<size_t N, size_t M, typename T1, ValidAccessor< T1 > A, typename T2> |
| void | mundy::atomic_store (AMatrix< T1, N, M, A > *const m, const T2 &s) |
| | Atomic m[i, j] = s.
|
| template<size_t N, size_t M, typename T1, ValidAccessor< T1 > A1, typename T2, ValidAccessor< T2 > A2> |
| void | mundy::atomic_store (AMatrix< T1, N, M, A1 > *const m1, const AMatrix< T2, N, M, A2 > &m2) |
| | Atomic m1[i, j] = m2[i, j].
|