|
| template<typename T, ValidAccessor< T > Accessor> |
| std::ostream & | mundy::operator<< (std::ostream &os, const AScalar< T, Accessor > &s) |
| template<typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | mundy::is_close (const AScalar< U, Accessor1 > &a, const AScalar< T, Accessor2 > &b, const decltype(get_comparison_tolerance< T, U >())&tol=get_comparison_tolerance< T, U >()) |
| template<typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | mundy::is_approx_close (const AScalar< U, Accessor1 > &a, const AScalar< T, Accessor2 > &b, const decltype(get_relaxed_comparison_tolerance< T, U >())&tol=get_relaxed_comparison_tolerance< T, U >()) |
| template<typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::operator+ (const U &scalar, const AScalar< T, Accessor > &s) |
| template<typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::operator- (const U &scalar, const AScalar< T, Accessor > &s) |
| template<typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::operator* (const U &scalar, const AScalar< T, Accessor > &s) |
| template<typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::operator/ (const U &scalar, const AScalar< T, Accessor > &s) |
| | scalar / AScalar — integral/integral pairs promote to double.
|
| template<typename T> |
| T | mundy::atomic_load (T *const s) |
| | Atomic load: s_copy = *s.
|
| template<typename T, typename U> |
| void | mundy::atomic_store (T *const s, const U &value) |
| | Atomic store: *s = value.
|
| template<typename T, typename U> |
| void | mundy::atomic_add (T *const s, const U &value) |
| | Atomic *s += value.
|
| template<typename T, typename Acc, typename U> |
| void | mundy::atomic_add (AScalar< T, Acc > *const s, const U &value) |
| | Atomic *s += value — AScalar overload: operates on the underlying scalar, bypassing AScalar's operator+ (which returns a different storage type incompatible with CAS loops).
|
| template<typename T, typename U> |
| void | mundy::atomic_sub (T *const s, const U &value) |
| | Atomic *s -= value.
|
| template<typename T, typename Acc, typename U> |
| void | mundy::atomic_sub (AScalar< T, Acc > *const s, const U &value) |
| | Atomic *s -= value — AScalar overload.
|
| template<typename T, typename U> |
| void | mundy::atomic_mul (T *const s, const U &value) |
| | Atomic *s *= value.
|
| template<typename T, typename Acc, typename U> |
| void | mundy::atomic_mul (AScalar< T, Acc > *const s, const U &value) |
| | Atomic *s *= value — AScalar overload.
|
| template<typename T, typename U> |
| void | mundy::atomic_div (T *const s, const U &value) |
| | Atomic *s /= value.
|
| template<typename T, typename Acc, typename U> |
| void | mundy::atomic_div (AScalar< T, Acc > *const s, const U &value) |
| | Atomic *s /= value — AScalar overload.
|
| template<typename T, typename U> |
| T | mundy::atomic_fetch_add (T *const s, const U &value) |
| | Atomic *s += value; returns old *s.
|
| template<typename T, typename U> |
| T | mundy::atomic_fetch_sub (T *const s, const U &value) |
| | Atomic *s -= value; returns old *s.
|
| template<typename T, typename U> |
| T | mundy::atomic_fetch_mul (T *const s, const U &value) |
| | Atomic *s *= value; returns old *s.
|
| template<typename T, typename U> |
| T | mundy::atomic_fetch_div (T *const s, const U &value) |
| | Atomic *s /= value; returns old *s.
|
| template<typename T, typename U> |
| T | mundy::atomic_add_fetch (T *const s, const U &value) |
| | Atomic *s += value; returns new *s.
|
| template<typename T, typename U> |
| T | mundy::atomic_sub_fetch (T *const s, const U &value) |
| | Atomic *s -= value; returns new *s.
|
| template<typename T, typename U> |
| T | mundy::atomic_mul_fetch (T *const s, const U &value) |
| | Atomic *s *= value; returns new *s.
|
| template<typename T, typename U> |
| T | mundy::atomic_div_fetch (T *const s, const U &value) |
| | Atomic *s /= value; returns new *s.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr auto | mundy::get_scalar (Accessor &&data) |
| | Create a non-owning AScalar view over an existing accessor.
|