Cayley-Dickson algebra main abstraction It is built so that all operation over C, Q and other such algebra can be done in a streamlined fashion based on the Cayley–Dickson construction. More...
#include <kyosu/types/cayley_dickson.hpp>
Cayley-Dickson algebra main abstraction It is built so that all operation over C, Q and other such algebra can be done in a streamlined fashion based on the Cayley–Dickson construction.
Public Member Functions | |
| constexpr | cayley_dickson () noexcept |
| Default Cayley-Dickson constructor. | |
|
template<unsigned int M> requires (M > 1 && M == N/2) (N>1) | |
| constexpr | cayley_dickson (cayley_dickson< Type, M > const &a) noexcept |
| Constructs a Cayley-Dickson instance from an Cayley-Dickson of smaller dimension. | |
|
template<unsigned int M> requires (M > 1 && M == N/2) | |
| constexpr | cayley_dickson (cayley_dickson< Type, M > const &a, cayley_dickson< Type, M > const &b) noexcept |
| Constructs a Cayley-Dickson instance by aggregating two Cayley-Dickson of smaller dimension. | |
| constexpr | cayley_dickson (kumi::sized_product_type< N > auto const &vs) |
| Construct a Cayley-Dickson instance from a properly sized product_type. | |
| template<std::convertible_to< Type > T> | |
| constexpr | cayley_dickson (T v) noexcept |
| Construct a Cayley-Dickson from a real value. | |
|
template<std::convertible_to< Type > T0, std::convertible_to< Type >... Ts> requires ( (1+sizeof...(Ts)) <= static_dimension ) | |
| constexpr | cayley_dickson (T0 v0, Ts... vs) noexcept |
| Construct a Cayley-Dickson instance from a sequences of real values. | |
| KYOSU_FORCEINLINE auto & | operator++ () noexcept |
| Pre-incrementation operator. | |
| KYOSU_FORCEINLINE auto | operator++ (int) noexcept |
| Post-incrementation operator. | |
| KYOSU_FORCEINLINE auto & | operator-- () noexcept |
| Pre-decrementation operator. | |
| KYOSU_FORCEINLINE auto | operator-- (int) noexcept |
| Post-decrementation operator. | |
|
template<concepts::cayley_dickson T> requires (T::static_dimension<N) | |
| constexpr cayley_dickson & | operator= (T const &a) noexcept |
| Assign a smaller Cayley-Dickson to another. | |
Related Functions | |
(Note that these are not member functions.) | |
Deduction Guides | |
| template<kumi::product_type Tuple> | |
| cayley_dickson (Tuple const &) -> cayley_dickson< kumi::element_t< 0, Tuple >, kumi::size_v< Tuple > > | |
| Deduction guide for constructing from product type. | |
| template<typename T0 , std::convertible_to< T0 >... Ts> | |
| cayley_dickson (T0, Ts...) -> cayley_dickson< T0, 1+sizeof...(Ts)> | |
| Deduction guide for constructing from sequence of values. | |
Compound Assignment Operators | |
| constexpr auto & | operator+= (concepts::cayley_dickson auto &self, concepts::real auto other) noexcept |
Adds the real value other to self and returns the new value of self. | |
| template<concepts::cayley_dickson Self, concepts::cayley_dickson Other> | |
| constexpr auto & | operator+= (Self &self, Other const &other) noexcept |
Adds the Cayley-dickson value other to self and returns the new value of self. | |
| constexpr auto & | operator-= (concepts::cayley_dickson auto &self, concepts::real auto other) noexcept |
Substracts the real value other from self and returns the new value of self. | |
| template<concepts::cayley_dickson Self, concepts::cayley_dickson Other> | |
| constexpr auto & | operator-= (Self &self, Other const &other) noexcept |
Substracts the Cayley-dickson value other from self and returns the new value of self. | |
| constexpr auto & | operator*= (concepts::cayley_dickson auto &self, concepts::real auto other) noexcept |
Multiplies self by the real value other and returns the new value of self. | |
| template<concepts::cayley_dickson Self, concepts::cayley_dickson Other> | |
| constexpr Self & | operator*= (Self &self, Other const &other) noexcept |
Multiplies self by the Cayley-dickson value other and returns the new value of self. | |
| constexpr auto & | operator/= (concepts::cayley_dickson auto &self, concepts::real auto other) noexcept |
Divides self by the real value other and returns the new value of self. | |
| template<concepts::cayley_dickson Self, concepts::cayley_dickson Other> | |
| constexpr Self & | operator/= (Self &self, Other const &other) noexcept |
Divides self by the Cayley-dickson value other and returns the new value of self. | |
Streaming Operators | |
| template<concepts::cayley_dickson CD> | |
| std::ostream & | operator<< (std::ostream &os, CD const &z) |
| Stream insertion for Cayley-dickson based types. | |
User-defined Literals | |
| constexpr kyosu::complex_t< double > | operator""_i (long double d) noexcept |
Forms a kyosu::complex_t<double> with real part zero and imaginary part d | |
| constexpr kyosu::complex_t< float > | operator""_if (long double d) noexcept |
Forms a kyosu::complex_t<float> with real part zero and imaginary part d | |
| constexpr kyosu::quaternion_t< double > | operator""_j (long double d) noexcept |
Forms a kyosu::quaternion_t<double> with all parts zero and \(j\) part equals to d | |
| constexpr kyosu::quaternion_t< float > | operator""_jf (long double d) noexcept |
Forms a kyosu::quaternion_t<float> with all parts zero and \(j\) part equals to d | |
| constexpr kyosu::quaternion_t< double > | operator""_k (long double d) noexcept |
Forms a kyosu::quaternion_t<double> with all parts zero and \(k\) part equals to d | |
| constexpr kyosu::quaternion_t< float > | operator""_kf (long double d) noexcept |
Forms a kyosu::quaternion_t<float> with all parts zero and \(k\) part equals to d | |
Unary Operators | |
| template<concepts::cayley_dickson Z> | |
| constexpr auto | operator+ (Z const &z) noexcept |
| Identity for Cayley-Dickson value. | |
| template<concepts::cayley_dickson Z> | |
| constexpr auto | operator- (Z const &z) noexcept |
| Compute the negation of a given Cayley-Dickson value. | |
Binary Operators | |
| template<eve::value T1, eve::value T2> | |
| as_cayley_dickson_t< T1, T2 > | operator+ (T1 const &a, T2 const &b) noexcept |
| Returns the sum of a Cayley-Dickson value and a real value in any order. | |
| template<eve::value T1, eve::value T2> | |
| as_cayley_dickson_t< T1, T2 > | operator- (T1 const &a, T2 const &b) noexcept |
| Returns the difference of two Cayley-Dickson values. | |
| template<eve::value T1, eve::value T2> | |
| as_cayley_dickson_t< T1, T2 > | operator* (T1 const &a, T2 const &b) noexcept |
| Returns the product of two Cayley-Dickson values. | |
| template<eve::value T1, eve::value T2> | |
| as_cayley_dickson_t< T1, T2 > | operator/ (T1 const &a, T2 const &b) noexcept |
| Returns the ration of two Cayley-Dickson values. | |
| template<concepts::cayley_dickson T1, concepts::real T2> | |
| constexpr auto | operator== (T1 const &a, T2 b) |
| Compares a Cayley-Dickson value and a real for equality. | |
| template<concepts::real T1, concepts::cayley_dickson T2> | |
| constexpr auto | operator== (T1 const &a, T2 b) |
| Compares a real and a Cayley-Dickson value for equality. | |
| template<concepts::cayley_dickson T1, concepts::real T2> | |
| constexpr auto | operator!= (T1 const &a, T2 b) |
| Compares a Cayley-Dickson value and a real for inequality. | |
| template<concepts::real T1, concepts::cayley_dickson T2> | |
| constexpr auto | operator!= (T1 const &a, T2 b) |
| Compares a real and a Cayley-Dickson value for inequality. | |