MAGE  v0.171.0
Matthias Advanced Game Engine
mage::Dual< T, typename > Struct Template Reference

#include <dual.hpp>

Inheritance diagram for mage::Dual< T, typename >:
mage::Array< T, 2u >

Public Member Functions

constexpr Dual (T xy=T(0)) noexcept
 
constexpr Dual (T x, T y) noexcept
 
constexpr Dual (const Dual &v) noexcept=default
 
constexpr Dual (Dual &&v) noexcept=default
 
template<typename U >
constexpr Dual (const Dual< U > &v) noexcept
 
 ~Dual ()=default
 
Dualoperator= (const Dual &v) noexcept=default
 
Dualoperator= (Dual &&v) noexcept=default
 
T & Re () noexcept
 
constexpr const T Re () const noexcept
 
T & Du () noexcept
 
constexpr const T Du () const noexcept
 
constexpr const Dual operator+ () const noexcept
 
constexpr const Dual operator- () const noexcept
 
constexpr const Dual operator+ (const Dual &v) const noexcept
 
constexpr const Dual operator- (const Dual &v) const noexcept
 
constexpr const Dual operator* (const Dual &v) const noexcept
 
constexpr const Dual operator/ (const Dual &v) const noexcept
 
constexpr const Dual operator+ (T a) const noexcept
 
constexpr const Dual operator- (T a) const noexcept
 
constexpr const Dual operator* (T a) const noexcept
 
constexpr const Dual operator/ (T a) const noexcept
 
Dualoperator+= (const Dual &v) noexcept
 
Dualoperator-= (const Dual &v) noexcept
 
Dualoperator*= (const Dual &v) noexcept
 
Dualoperator/= (const Dual &v) noexcept
 
Dualoperator+= (T a) noexcept
 
Dualoperator-= (T a) noexcept
 
Dualoperator*= (T a) noexcept
 
Dualoperator/= (T a) noexcept
 
constexpr bool operator== (const Dual &v) const
 
constexpr bool operator!= (const Dual &v) const
 
- Public Member Functions inherited from mage::Array< T, 2u >
constexpr Array () noexcept
 
constexpr Array (const T &value) noexcept
 
constexpr Array (ArgsT &&... args) noexcept
 
constexpr Array (const Array< T, FromN, alignof(T) > &a) noexcept
 
constexpr Array (const Array< T, FromN, FromA > &a) noexcept
 
constexpr Array (const Array< T, FromN, alignof(T) > &a, ArgsT &&... args) noexcept
 
constexpr Array (const Array< T, FromN, FromA > &a, ArgsT &&... args) noexcept
 
constexpr Array (const Array &a) noexcept=default
 
constexpr Array (Array &&a) noexcept=default
 
constexpr Array (const Array< FromT, N, FromA > &a) noexcept
 
 ~Array ()=default
 
Arrayoperator= (const Array &a) noexcept=default
 
Arrayoperator= (Array &&a) noexcept=default
 

Additional Inherited Members

- Static Public Attributes inherited from mage::Array< T, 2u >
static constexpr std::size_t s_size
 

Constructor & Destructor Documentation

◆ Dual() [1/5]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr mage::Dual< T, typename >::Dual ( xy = T(0))
explicitnoexcept

◆ Dual() [2/5]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr mage::Dual< T, typename >::Dual ( x,
y 
)
noexcept

◆ Dual() [3/5]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr mage::Dual< T, typename >::Dual ( const Dual< T, typename > &  v)
defaultnoexcept

◆ Dual() [4/5]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr mage::Dual< T, typename >::Dual ( Dual< T, typename > &&  v)
defaultnoexcept

◆ Dual() [5/5]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
template<typename U >
constexpr mage::Dual< T, typename >::Dual ( const Dual< U > &  v)
explicitnoexcept

◆ ~Dual()

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
mage::Dual< T, typename >::~Dual ( )
default

Member Function Documentation

◆ Du() [1/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
T& mage::Dual< T, typename >::Du ( )
noexcept

◆ Du() [2/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const T mage::Dual< T, typename >::Du ( ) const
noexcept

◆ operator!=()

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr bool mage::Dual< T, typename >::operator!= ( const Dual< T, typename > &  v) const

◆ operator*() [1/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const Dual mage::Dual< T, typename >::operator* ( const Dual< T, typename > &  v) const
noexcept

◆ operator*() [2/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const Dual mage::Dual< T, typename >::operator* ( a) const
noexcept

◆ operator*=() [1/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
Dual& mage::Dual< T, typename >::operator*= ( const Dual< T, typename > &  v)
noexcept

◆ operator*=() [2/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
Dual& mage::Dual< T, typename >::operator*= ( a)
noexcept

◆ operator+() [1/3]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const Dual mage::Dual< T, typename >::operator+ ( ) const
noexcept

◆ operator+() [2/3]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const Dual mage::Dual< T, typename >::operator+ ( const Dual< T, typename > &  v) const
noexcept

◆ operator+() [3/3]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const Dual mage::Dual< T, typename >::operator+ ( a) const
noexcept

◆ operator+=() [1/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
Dual& mage::Dual< T, typename >::operator+= ( const Dual< T, typename > &  v)
noexcept

◆ operator+=() [2/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
Dual& mage::Dual< T, typename >::operator+= ( a)
noexcept

◆ operator-() [1/3]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const Dual mage::Dual< T, typename >::operator- ( ) const
noexcept

◆ operator-() [2/3]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const Dual mage::Dual< T, typename >::operator- ( const Dual< T, typename > &  v) const
noexcept

◆ operator-() [3/3]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const Dual mage::Dual< T, typename >::operator- ( a) const
noexcept

◆ operator-=() [1/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
Dual& mage::Dual< T, typename >::operator-= ( const Dual< T, typename > &  v)
noexcept

◆ operator-=() [2/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
Dual& mage::Dual< T, typename >::operator-= ( a)
noexcept

◆ operator/() [1/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const Dual mage::Dual< T, typename >::operator/ ( const Dual< T, typename > &  v) const
noexcept

◆ operator/() [2/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const Dual mage::Dual< T, typename >::operator/ ( a) const
noexcept

◆ operator/=() [1/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
Dual& mage::Dual< T, typename >::operator/= ( const Dual< T, typename > &  v)
noexcept

◆ operator/=() [2/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
Dual& mage::Dual< T, typename >::operator/= ( a)
noexcept

◆ operator=() [1/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
Dual& mage::Dual< T, typename >::operator= ( const Dual< T, typename > &  v)
defaultnoexcept

◆ operator=() [2/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
Dual& mage::Dual< T, typename >::operator= ( Dual< T, typename > &&  v)
defaultnoexcept

◆ operator==()

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr bool mage::Dual< T, typename >::operator== ( const Dual< T, typename > &  v) const

◆ Re() [1/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
T& mage::Dual< T, typename >::Re ( )
noexcept

◆ Re() [2/2]

template<typename T , typename = std::enable_if_t< std::is_floating_point_v< T > >>
constexpr const T mage::Dual< T, typename >::Re ( ) const
noexcept