|
| template<typename T, size_t N, ValidAccessor< T > Accessor> |
| std::ostream & | mundy::operator<< (std::ostream &os, const AVector< T, N, Accessor > &vec) |
| | Write the vector to an output stream.
|
| template<typename U, typename T> |
| constexpr bool | mundy::is_close (const U &scalar1, const T &scalar2, const decltype(get_comparison_tolerance< T, U >())&tol=get_comparison_tolerance< T, U >()) |
| | Scalar-scalar equality (within a tolerance).
|
| template<typename U, typename T> |
| constexpr bool | mundy::is_approx_close (const U &scalar1, const T &scalar2, const decltype(get_relaxed_comparison_tolerance< T, U >())&tol=get_relaxed_comparison_tolerance< T, U >()) |
| | Scalar-scalar equality (within a relaxed tolerance).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | mundy::is_close (const AVector< U, N, Accessor1 > &vec1, const AVector< T, N, Accessor2 > &vec2, const decltype(get_comparison_tolerance< T, U >())&tol=get_comparison_tolerance< T, U >()) |
| | AVector-vector equality (element-wise within a tolerance).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | mundy::is_approx_close (const AVector< U, N, Accessor1 > &vec1, const AVector< T, N, Accessor2 > &vec2, const decltype(get_relaxed_comparison_tolerance< T, U >())&tol=get_relaxed_comparison_tolerance< T, U >()) |
| | AVector-vector equality (element-wise within a relaxed tolerance).
|
| template<size_t N, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::operator+ (const U &scalar, const AVector< T, N, Accessor > &vec) -> AVector< scalar_sum_result_t< T, U >, N > |
| | Scalar-vector addition.
|
| template<size_t N, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::operator- (const U &scalar, const AVector< T, N, Accessor > &vec) -> AVector< scalar_difference_result_t< T, U >, N > |
| | Scalar-vector subtraction.
|
| template<size_t N, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::operator* (const U &scalar, const AVector< T, N, Accessor > &vec) -> AVector< scalar_product_result_t< T, U >, N > |
| | Scalar-vector multiplication.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr T | mundy::sum (const AVector< T, N, Accessor > &vec) |
| | Sum of all elements.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr T | mundy::product (const AVector< T, N, Accessor > &vec) |
| | Product of all elements.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr T | mundy::min (const AVector< T, N, Accessor > &vec) |
| | Minimum element.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr T | mundy::max (const AVector< T, N, Accessor > &vec) |
| | Maximum element.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = typename NumTraits<T>::NonInteger> |
| constexpr OutputType | mundy::mean (const AVector< T, N, Accessor > &vec) |
| | Mean of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<NumTraits<T>::IsInteger, float, T>> |
| constexpr OutputType | mundy::mean_f (const AVector< T, N, Accessor > &vec) |
| | Mean of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = typename NumTraits<T>::NonInteger> |
| constexpr OutputType | mundy::variance (const AVector< T, N, Accessor > &vec) |
| | Variance of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<NumTraits<T>::IsInteger, float, T>> |
| constexpr OutputType | mundy::variance_f (const AVector< T, N, Accessor > &vec) |
| | Variance of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = typename NumTraits<T>::NonInteger> |
| constexpr OutputType | mundy::stddev (const AVector< T, N, Accessor > &vec) |
| | Standard deviation of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<NumTraits<T>::IsInteger, float, T>> |
| constexpr OutputType | mundy::stddev_f (const AVector< T, N, Accessor > &vec) |
| | Standard deviation of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<ValidVectorType VectorType> |
| constexpr auto | mundy::copy (const VectorType &v) |
| | Get a deep copy of the given vector.
|
| template<typename U, ValidVectorType VectorType> |
| constexpr auto | mundy::cast (const VectorType &v) |
| | Cast a vector to a different type.
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | mundy::dot (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Dot product of two vectors.
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | mundy::elementwise_mul (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Element-wise product.
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | mundy::elementwise_div (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Element-wise division.
|
| template<typename Func, size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::apply (Func &&func, const AVector< T, N, Accessor > &vec) |
| | Apply a function to each element of the vector.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::abs (const AVector< T, N, Accessor > &vec) |
| | AVector component-wise absolute value.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::inf_norm (const AVector< T, N, Accessor > &vec) |
| | AVector infinity norm.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::one_norm (const AVector< T, N, Accessor > &vec) |
| | AVector 1-norm.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = typename NumTraits<T>::NonInteger> |
| constexpr OutputType | mundy::two_norm (const AVector< T, N, Accessor > &vec) |
| | AVector 2-norm (Returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<NumTraits<T>::IsInteger, float, T>> |
| constexpr OutputType | mundy::two_norm_f (const AVector< T, N, Accessor > &vec) |
| | AVector 2-norm (Returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::two_norm_squared (const AVector< T, N, Accessor > &vec) |
| | AVector squared 2-norm.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = typename NumTraits<T>::NonInteger> |
| constexpr OutputType | mundy::norm (const AVector< T, N, Accessor > &vec) |
| | Default vector norm (2-norm, returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<NumTraits<T>::IsInteger, float, T>> |
| constexpr OutputType | mundy::norm_f (const AVector< T, N, Accessor > &vec) |
| | Default vector norm (2-norm, returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::norm_squared (const AVector< T, N, Accessor > &vec) |
| | Default vector norm squared (2-norm).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2, typename OutputType = typename NumTraits<scalar_product_result_t<U, T>>::NonInteger> |
| constexpr OutputType | mundy::minor_angle (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Minor angle between two vectors, in radians (integral inputs promote to double).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2, typename OutputType = std::conditional_t<NumTraits<scalar_product_result_t<U, T>>::IsInteger, float, scalar_product_result_t<U, T>>> |
| constexpr OutputType | mundy::minor_angle_f (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Minor angle between two vectors, in radians (integral inputs promote to float).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2, typename OutputType = typename NumTraits<scalar_product_result_t<U, T>>::NonInteger> |
| constexpr OutputType | mundy::major_angle (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Major angle between two vectors, in radians (integral inputs promote to double).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2, typename OutputType = std::conditional_t<NumTraits<scalar_product_result_t<U, T>>::IsInteger, float, scalar_product_result_t<U, T>>> |
| constexpr OutputType | mundy::major_angle_f (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Major angle between two vectors, in radians (integral inputs promote to float).
|
| template<size_t N, typename T, ValidAccessor< T > A> |
| AVector< T, N > | mundy::atomic_load (AVector< T, N, A > *const v) |
| | Atomic v_copy = v.
|
| template<size_t N, typename T1, ValidAccessor< T1 > A, typename T2> |
| void | mundy::atomic_store (AVector< T1, N, A > *const v, const T2 &s) |
| | Atomic v[i] = s.
|
| template<size_t N, typename T1, ValidAccessor< T1 > A1, typename T2, ValidAccessor< T2 > A2> |
| void | mundy::atomic_store (AVector< T1, N, A1 > *const v1, const AVector< T2, N, A2 > &v2) |
| | Atomic v1[i] = v2[i].
|
| template<size_t N, typename T, typename U, ValidAccessor< T > Accessor1, ValidAccessor< U > Accessor2> |
| constexpr auto | mundy::operator* (const AVector< T, N, Accessor1 > &vec, const AScalar< U, Accessor2 > &s) -> AVector< scalar_product_result_t< T, U >, N > |
| | AVector * AScalar.
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | mundy::operator* (const AScalar< U, Accessor1 > &s, const AVector< T, N, Accessor2 > &vec) -> AVector< scalar_product_result_t< T, U >, N > |
| | AScalar * AVector (commutative).
|
| template<size_t N, typename T, typename U, ValidAccessor< T > Accessor1, ValidAccessor< U > Accessor2> |
| constexpr auto | mundy::operator/ (const AVector< T, N, Accessor1 > &vec, const AScalar< U, Accessor2 > &s) |
| | AVector / AScalar.
|