|
|
constexpr | numeric_array (numeric_array const &rhs) noexcept=default |
| |
|
constexpr | numeric_array (numeric_array &&rhs) noexcept=default |
| |
|
constexpr numeric_array & | operator= (numeric_array const &rhs) noexcept=default |
| |
|
constexpr numeric_array & | operator= (numeric_array &&rhs) noexcept=default |
| |
|
template<numeric_limited U, std::size_t M> |
| constexpr | numeric_array (numeric_array< U, M > const &other) noexcept |
| |
|
template<numeric_limited U, std::size_t M> |
| constexpr | numeric_array (numeric_array< U, M > const &other1, numeric_array< U, M > const &other2) noexcept |
| |
|
constexpr | numeric_array (T const &x) noexcept |
| |
|
constexpr | numeric_array (T const &x, T const &y) noexcept |
| |
|
constexpr | numeric_array (T const &x, T const &y, T const &z) noexcept |
| |
|
constexpr | numeric_array (T const &x, T const &y, T const &z, T const &w) noexcept |
| |
|
| numeric_array (std::array< T, N > const &rhs) noexcept |
| |
|
numeric_array & | operator= (std::array< T, N > const &rhs) noexcept |
| |
|
| operator std::array< T, N > () const noexcept |
| |
|
__m128i | reg () const noexcept |
| |
|
__m128i | reg () const noexcept |
| |
|
__m128 | reg () const noexcept |
| |
|
__m128d | reg () const noexcept |
| |
|
| numeric_array (__m128i const &rhs) noexcept |
| |
|
| numeric_array (__m128 const &rhs) noexcept |
| |
|
| numeric_array (__m128d const &rhs) noexcept |
| |
|
numeric_array & | operator= (__m128i const &rhs) noexcept |
| |
|
numeric_array & | operator= (__m128 const &rhs) noexcept |
| |
|
numeric_array & | operator= (__m128d const &rhs) noexcept |
| |
|
template<std::size_t S> |
| constexpr void | store (std::byte *ptr) const noexcept |
| |
| constexpr void | store (std::byte *ptr) const noexcept |
| | Store a numeric array into memory.
|
| |
| constexpr | operator bool () const noexcept |
| | Check if the vector is non-zero.
|
| |
|
constexpr T const & | operator[] (std::size_t i) const noexcept |
| |
|
constexpr T & | operator[] (std::size_t i) noexcept |
| |
|
constexpr reference | front () noexcept |
| |
|
constexpr const_reference | front () const noexcept |
| |
|
constexpr reference | back () noexcept |
| |
|
constexpr const_reference | back () const noexcept |
| |
|
constexpr pointer | data () noexcept |
| |
|
constexpr const_pointer | data () const noexcept |
| |
|
constexpr iterator | begin () noexcept |
| |
|
constexpr const_iterator | begin () const noexcept |
| |
|
constexpr const_iterator | cbegin () const noexcept |
| |
|
constexpr iterator | end () noexcept |
| |
|
constexpr const_iterator | end () const noexcept |
| |
|
constexpr const_iterator | cend () const noexcept |
| |
|
constexpr bool | empty () const noexcept |
| |
|
constexpr size_type | size () const noexcept |
| |
|
constexpr size_type | max_size () const noexcept |
| |
|
constexpr bool | is_point () const noexcept |
| |
|
constexpr bool | is_vector () const noexcept |
| |
|
constexpr bool | is_opaque () const noexcept |
| |
|
constexpr bool | is_transparent () const noexcept |
| |
|
constexpr T const & | x () const noexcept |
| |
|
constexpr T const & | y () const noexcept |
| |
|
constexpr T const & | z () const noexcept |
| |
|
constexpr T const & | w () const noexcept |
| |
|
constexpr T & | x () noexcept |
| |
|
constexpr T & | y () noexcept |
| |
|
constexpr T & | z () noexcept |
| |
|
constexpr T & | w () noexcept |
| |
|
constexpr T const & | r () const noexcept |
| |
|
constexpr T const & | g () const noexcept |
| |
|
constexpr T const & | b () const noexcept |
| |
|
constexpr T const & | a () const noexcept |
| |
|
constexpr T & | r () noexcept |
| |
|
constexpr T & | g () noexcept |
| |
|
constexpr T & | b () noexcept |
| |
|
constexpr T & | a () noexcept |
| |
|
constexpr T const & | width () const noexcept |
| |
|
constexpr T const & | height () const noexcept |
| |
|
constexpr T const & | depth () const noexcept |
| |
|
constexpr T & | width () noexcept |
| |
|
constexpr T & | height () noexcept |
| |
|
constexpr T & | depth () noexcept |
| |
|
constexpr numeric_array & | operator<<= (unsigned int rhs) noexcept |
| |
|
constexpr numeric_array & | operator>>= (unsigned int rhs) noexcept |
| |
|
constexpr numeric_array & | operator|= (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator|= (T const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator&= (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator&= (T const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator^= (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator^= (T const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator+= (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator+= (T const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator-= (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator-= (T const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator*= (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator*= (T const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator/= (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator/= (T const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator%= (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array & | operator%= (T const &rhs) noexcept |
| |
| template<ssize_t... Elements> |
| constexpr numeric_array | swizzle () const |
| | swizzle around the elements of the numeric array.
|
| |
|
template<ssize_t I, ssize_t FirstElement, ssize_t... RestElements> |
| constexpr void | swizzle_detail (numeric_array &r) const noexcept |
| |
|
|
static constexpr bool | is_i8x1 = std::is_same_v<T, int8_t> && N == 1 |
| |
|
static constexpr bool | is_i8x2 = std::is_same_v<T, int8_t> && N == 2 |
| |
|
static constexpr bool | is_i8x4 = std::is_same_v<T, int8_t> && N == 4 |
| |
|
static constexpr bool | is_i8x8 = std::is_same_v<T, int8_t> && N == 8 |
| |
|
static constexpr bool | is_i8x16 = std::is_same_v<T, int8_t> && N == 16 |
| |
|
static constexpr bool | is_i8x32 = std::is_same_v<T, int8_t> && N == 32 |
| |
|
static constexpr bool | is_i8x64 = std::is_same_v<T, int8_t> && N == 64 |
| |
|
static constexpr bool | is_u8x1 = std::is_same_v<T, uint8_t> && N == 1 |
| |
|
static constexpr bool | is_u8x2 = std::is_same_v<T, uint8_t> && N == 2 |
| |
|
static constexpr bool | is_u8x4 = std::is_same_v<T, uint8_t> && N == 4 |
| |
|
static constexpr bool | is_u8x8 = std::is_same_v<T, uint8_t> && N == 8 |
| |
|
static constexpr bool | is_u8x16 = std::is_same_v<T, uint8_t> && N == 16 |
| |
|
static constexpr bool | is_u8x32 = std::is_same_v<T, uint8_t> && N == 32 |
| |
|
static constexpr bool | is_u8x64 = std::is_same_v<T, uint8_t> && N == 64 |
| |
|
static constexpr bool | is_i16x1 = std::is_same_v<T, int16_t> && N == 1 |
| |
|
static constexpr bool | is_i16x2 = std::is_same_v<T, int16_t> && N == 2 |
| |
|
static constexpr bool | is_i16x4 = std::is_same_v<T, int16_t> && N == 4 |
| |
|
static constexpr bool | is_i16x8 = std::is_same_v<T, int16_t> && N == 8 |
| |
|
static constexpr bool | is_i16x16 = std::is_same_v<T, int16_t> && N == 16 |
| |
|
static constexpr bool | is_i16x32 = std::is_same_v<T, int16_t> && N == 32 |
| |
|
static constexpr bool | is_u16x1 = std::is_same_v<T, uint16_t> && N == 1 |
| |
|
static constexpr bool | is_u16x2 = std::is_same_v<T, uint16_t> && N == 2 |
| |
|
static constexpr bool | is_u16x4 = std::is_same_v<T, uint16_t> && N == 4 |
| |
|
static constexpr bool | is_u16x8 = std::is_same_v<T, uint16_t> && N == 8 |
| |
|
static constexpr bool | is_u16x16 = std::is_same_v<T, uint16_t> && N == 16 |
| |
|
static constexpr bool | is_u16x32 = std::is_same_v<T, uint16_t> && N == 32 |
| |
|
static constexpr bool | is_f16x4 = std::is_same_v<T, float16> && N == 4 |
| |
|
static constexpr bool | is_i32x1 = std::is_same_v<T, int32_t> && N == 1 |
| |
|
static constexpr bool | is_i32x2 = std::is_same_v<T, int32_t> && N == 2 |
| |
|
static constexpr bool | is_i32x4 = std::is_same_v<T, int32_t> && N == 4 |
| |
|
static constexpr bool | is_i32x8 = std::is_same_v<T, int32_t> && N == 8 |
| |
|
static constexpr bool | is_i32x16 = std::is_same_v<T, int32_t> && N == 16 |
| |
|
static constexpr bool | is_u32x1 = std::is_same_v<T, uint32_t> && N == 1 |
| |
|
static constexpr bool | is_u32x2 = std::is_same_v<T, uint32_t> && N == 2 |
| |
|
static constexpr bool | is_u32x4 = std::is_same_v<T, uint32_t> && N == 4 |
| |
|
static constexpr bool | is_u32x8 = std::is_same_v<T, uint32_t> && N == 8 |
| |
|
static constexpr bool | is_u32x16 = std::is_same_v<T, uint32_t> && N == 16 |
| |
|
static constexpr bool | is_f32x1 = std::is_same_v<T, float> && N == 1 |
| |
|
static constexpr bool | is_f32x2 = std::is_same_v<T, float> && N == 2 |
| |
|
static constexpr bool | is_f32x4 = std::is_same_v<T, float> && N == 4 |
| |
|
static constexpr bool | is_f32x8 = std::is_same_v<T, float> && N == 8 |
| |
|
static constexpr bool | is_f32x16 = std::is_same_v<T, float> && N == 16 |
| |
|
static constexpr bool | is_i64x1 = std::is_same_v<T, int64_t> && N == 1 |
| |
|
static constexpr bool | is_i64x2 = std::is_same_v<T, int64_t> && N == 2 |
| |
|
static constexpr bool | is_i64x4 = std::is_same_v<T, int64_t> && N == 4 |
| |
|
static constexpr bool | is_i64x8 = std::is_same_v<T, int64_t> && N == 8 |
| |
|
static constexpr bool | is_u64x1 = std::is_same_v<T, uint64_t> && N == 1 |
| |
|
static constexpr bool | is_u64x2 = std::is_same_v<T, uint64_t> && N == 2 |
| |
|
static constexpr bool | is_u64x4 = std::is_same_v<T, uint64_t> && N == 4 |
| |
|
static constexpr bool | is_u64x8 = std::is_same_v<T, uint64_t> && N == 8 |
| |
|
static constexpr bool | is_f64x1 = std::is_same_v<T, double> && N == 1 |
| |
|
static constexpr bool | is_f64x2 = std::is_same_v<T, double> && N == 2 |
| |
|
static constexpr bool | is_f64x4 = std::is_same_v<T, double> && N == 4 |
| |
|
static constexpr bool | is_f64x8 = std::is_same_v<T, double> && N == 8 |
| |
|
static constexpr ssize_t | get_zero = -1 |
| |
|
static constexpr ssize_t | get_one = -2 |
| |
|
template<typename Other >
requires (sizeof(Other) == sizeof(container_type)) |
| constexpr friend Other | bit_cast (numeric_array const &rhs) noexcept |
| |
| template<std::size_t I> |
| constexpr T & | get (numeric_array &rhs) noexcept |
| | Get a element from the numeric array.
|
| |
| template<ssize_t I> |
| constexpr T | get (numeric_array &&rhs) noexcept |
| | Get a element from the numeric array.
|
| |
| template<std::size_t I> |
| constexpr friend T | extract (numeric_array const &rhs) noexcept |
| | Extract an element from the array.
|
| |
template<std::size_t I, std::size_t ZeroMask = 0>
requires (is_f32x4 or is_i32x4 or is_u32x4) |
| constexpr friend numeric_array | insert (numeric_array const &lhs, T rhs) noexcept |
| | Insert a value in the array.
|
| |
| template<ssize_t I> |
| constexpr T | get (numeric_array const &rhs) noexcept |
| | Get a element from the numeric array.
|
| |
| template<std::size_t Mask = ~std::size_t{0}> |
| constexpr numeric_array | zero (numeric_array rhs) noexcept |
| | Set individual elements to zero.
|
| |
|
template<std::size_t Mask> |
| constexpr numeric_array | blend (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
| constexpr numeric_array | blend (numeric_array const &a, numeric_array const &b, numeric_array const &mask) |
| | Blend the values using a dynamic mask.
|
| |
| template<std::size_t Mask> |
| constexpr numeric_array | neg (numeric_array rhs) noexcept |
| | Negate individual elements.
|
| |
|
constexpr numeric_array | operator- (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | abs (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | rcp (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | sqrt (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | rcp_sqrt (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | floor (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | ceil (numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | round (numeric_array const &rhs) noexcept |
| |
| template<std::size_t Mask> |
| hi_force_inline friend constexpr T | dot (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| | Take a dot product.
|
| |
| template<std::size_t Mask> |
| constexpr T | hypot (numeric_array const &rhs) noexcept |
| | Take the length of the vector.
|
| |
| template<std::size_t Mask> |
| hi_force_inline friend constexpr T | squared_hypot (numeric_array const &rhs) noexcept |
| | Take the squared length of the vector.
|
| |
| template<std::size_t Mask> |
| constexpr T | rcp_hypot (numeric_array const &rhs) noexcept |
| | Take a reciprocal of the length.
|
| |
| template<std::size_t Mask> |
| constexpr numeric_array | normalize (numeric_array const &rhs) noexcept |
| | Normalize a vector.
|
| |
|
constexpr std::size_t | eq (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr std::size_t | ne (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr std::size_t | gt (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr std::size_t | lt (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr std::size_t | ge (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr std::size_t | le (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | gt_mask (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr bool | operator== (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator<< (numeric_array const &lhs, unsigned int rhs) noexcept |
| |
|
constexpr numeric_array | operator>> (numeric_array const &lhs, unsigned int rhs) noexcept |
| |
|
constexpr numeric_array | operator| (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator| (numeric_array const &lhs, T const &rhs) noexcept |
| |
|
constexpr numeric_array | operator| (T const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator& (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator& (numeric_array const &lhs, T const &rhs) noexcept |
| |
|
constexpr numeric_array | operator& (T const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator^ (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator^ (numeric_array const &lhs, T const &rhs) noexcept |
| |
|
constexpr numeric_array | operator^ (T const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator+ (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator+ (numeric_array const &lhs, T const &rhs) noexcept |
| |
|
constexpr numeric_array | operator+ (T const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator- (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator- (numeric_array const &lhs, T const &rhs) noexcept |
| |
|
constexpr numeric_array | operator- (T const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator* (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator* (numeric_array const &lhs, T const &rhs) noexcept |
| |
|
constexpr numeric_array | operator* (T const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator/ (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator/ (numeric_array const &lhs, T const &rhs) noexcept |
| |
|
constexpr numeric_array | operator/ (T const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator% (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | operator% (numeric_array const &lhs, T const &rhs) noexcept |
| |
|
constexpr numeric_array | operator% (T const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | min (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | max (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | clamp (numeric_array const &lhs, numeric_array const &low, numeric_array const &high) noexcept |
| |
|
constexpr numeric_array | hadd (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
|
constexpr numeric_array | hsub (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
| template<std::size_t Mask> |
| constexpr numeric_array | addsub (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| | Add or subtract individual elements.
|
| |
| constexpr numeric_array | cross_2D (numeric_array const &rhs) noexcept |
| | Calculate the 2D normal on a 2D vector.
|
| |
| constexpr numeric_array | normal_2D (numeric_array const &rhs) noexcept |
| | Calculate the 2D unit-normal on a 2D vector.
|
| |
| constexpr float | cross_2D (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| | Calculate the cross-product between two 2D vectors.
|
| |
|
constexpr friend numeric_array | cross_3D (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| |
| constexpr numeric_array | shuffle (numeric_array const &lhs, numeric_array const &rhs) noexcept |
| | Shuffle a 16x byte array, using the indices from the right-hand-side.
|
| |
| constexpr numeric_array | midpoint (numeric_array const &p1, numeric_array const &p2) noexcept |
| | Find a point at the midpoint between two points.
|
| |
| constexpr numeric_array | reflect_point (numeric_array const &p, numeric_array const anchor) noexcept |
| | Find the point on the other side and at the same distance of an anchor-point.
|
| |
|
template<typename... Columns> |
| constexpr std::array< numeric_array, N > | transpose (Columns const &...columns) noexcept |
| |
|
constexpr friend numeric_array | composit (numeric_array const &under, numeric_array const &over) noexcept |
| |
|
constexpr friend numeric_array | composit (numeric_array const &under, numeric_array const &over) noexcept |
| |
|
std::string | to_string (numeric_array const &rhs) noexcept |
| |
|
std::ostream & | operator<< (std::ostream &lhs, numeric_array const &rhs) |
| |
| template<std::size_t FromElement, std::size_t ToElement> |
| constexpr friend numeric_array | insert (numeric_array const &lhs, numeric_array const &rhs) |
| | Insert an element from rhs into the result.
|
| |
|
template<int I, typename First , typename... Rest> |
| constexpr void | transpose_detail (First const &first, Rest const &...rest, std::array< numeric_array, N > &r) noexcept |
| |