cMHN 1.1
C++ library for learning MHNs with pRC
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
pRC::Float< W > Class Template Reference

#include <float.hpp>

Public Types

using Fundamental
 
using Value = Float<W>
 
template<class V , If< IsValue< V > > = 0>
using ChangeValue = V
 
using Signed = True<>
 
template<Bool R>
using ChangeSigned = Conditional<IsSatisfied<(R)>, Float<W>, Undefined>
 
using Width = pRC::Constant<Size, W>
 
template<Size Q>
using ChangeWidth = Float<Q>
 
using IsComplexified = False<>
 
using Complexify = Complex<Float<W>>
 
using NonComplex = Float<W>
 

Public Member Functions

 ~Float ()=default
 
constexpr Float (Float const &)=default
 
constexpr Float (Float &&)=default
 
constexpr Floatoperator= (Float const &) &=default
 
constexpr Floatoperator= (Float &&) &=default
 
constexpr Float ()=default
 
template<class U , If< IsConstructible< Fundamental, U > > = 0>
constexpr Float (U const basic)
 
template<class U , If< IsValue< U > > = 0>
constexpr Float (U const &value)
 
template<class U , If< IsValue< U > > = 0>
constexpr Float (Complex< U > const &value)
 
constexpr Float (Zero<> const)
 
constexpr Float (Unit<> const)
 
constexpr Float (Identity<> const)
 
template<class U , If< IsAssignable< Fundamental, U > > = 0>
constexpr autooperator= (U const basic) &
 
template<class U , If< IsValue< U > > = 0>
constexpr autooperator= (U const &value) &
 
template<class U , If< IsValue< U > > = 0>
constexpr autooperator= (Complex< U > const &value) &
 
constexpr autooperator= (Zero<> const) &
 
constexpr autooperator= (Unit<> const) &
 
constexpr autooperator= (Identity<> const) &
 
constexpr decltype(autooperator() () &&
 
constexpr decltype(autooperator() () const &&
 
constexpr autooperator() () &
 
constexpr autooperator() () const &
 
constexpr operator Fundamental () const
 
template<class X , If< IsInvocable< Add, Float &, X > > = 0>
constexpr autooperator+= (X &&rhs) &
 
template<class X , If< IsInvocable< Sub, Float &, X > > = 0>
constexpr autooperator-= (X &&rhs) &
 
template<class X , If< IsInvocable< Mul, Float &, X > > = 0>
constexpr autooperator*= (X &&rhs) &
 
template<class X , If< IsInvocable< Div, Float &, X > > = 0>
constexpr autooperator/= (X &&rhs) &
 

Member Typedef Documentation

◆ ChangeSigned

template<Size W>
template<Bool R>
using pRC::Float< W >::ChangeSigned = Conditional<IsSatisfied<(R)>, Float<W>, Undefined>

◆ ChangeValue

template<Size W>
template<class V , If< IsValue< V > > = 0>
using pRC::Float< W >::ChangeValue = V

◆ ChangeWidth

template<Size W>
template<Size Q>
using pRC::Float< W >::ChangeWidth = Float<Q>

◆ Complexify

template<Size W>
using pRC::Float< W >::Complexify = Complex<Float<W>>

◆ Fundamental

template<Size W>
using pRC::Float< W >::Fundamental
Initial value:
Conditional<IsSatisfied<(W == 16)>, BFloat16,
Conditional<IsSatisfied<(W == 32)>, float,
Conditional<IsSatisfied<(W == 64)>, double, Undefined>>>
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
Constant< Bool, B > IsSatisfied
Definition type_traits.hpp:71

◆ IsComplexified

template<Size W>
using pRC::Float< W >::IsComplexified = False<>

◆ NonComplex

template<Size W>
using pRC::Float< W >::NonComplex = Float<W>

◆ Signed

template<Size W>
using pRC::Float< W >::Signed = True<>

◆ Value

template<Size W>
using pRC::Float< W >::Value = Float<W>

◆ Width

template<Size W>
using pRC::Float< W >::Width = pRC::Constant<Size, W>

Constructor & Destructor Documentation

◆ ~Float()

template<Size W>
pRC::Float< W >::~Float ( )
default

◆ Float() [1/9]

template<Size W>
constexpr pRC::Float< W >::Float ( Float< W > const & )
constexprdefault

◆ Float() [2/9]

template<Size W>
constexpr pRC::Float< W >::Float ( Float< W > && )
constexprdefault

◆ Float() [3/9]

template<Size W>
constexpr pRC::Float< W >::Float ( )
constexprdefault

◆ Float() [4/9]

template<Size W>
template<class U , If< IsConstructible< Fundamental, U > > = 0>
constexpr pRC::Float< W >::Float ( U const basic)
inlineconstexpr

◆ Float() [5/9]

template<Size W>
template<class U , If< IsValue< U > > = 0>
constexpr pRC::Float< W >::Float ( U const & value)
inlineconstexpr

◆ Float() [6/9]

template<Size W>
template<class U , If< IsValue< U > > = 0>
constexpr pRC::Float< W >::Float ( Complex< U > const & value)
inlineconstexpr

◆ Float() [7/9]

template<Size W>
constexpr pRC::Float< W >::Float ( Zero<> const )
inlineconstexpr

◆ Float() [8/9]

template<Size W>
constexpr pRC::Float< W >::Float ( Unit<> const )
inlineconstexpr

◆ Float() [9/9]

template<Size W>
constexpr pRC::Float< W >::Float ( Identity<> const )
inlineconstexpr

Member Function Documentation

◆ operator Fundamental()

template<Size W>
constexpr pRC::Float< W >::operator Fundamental ( ) const
inlineexplicitconstexpr

◆ operator()() [1/4]

template<Size W>
constexpr auto & pRC::Float< W >::operator() ( ) &
inlineconstexpr

◆ operator()() [2/4]

template<Size W>
constexpr decltype(auto) pRC::Float< W >::operator() ( ) &&
inlineconstexpr

◆ operator()() [3/4]

template<Size W>
constexpr auto & pRC::Float< W >::operator() ( ) const &
inlineconstexpr

◆ operator()() [4/4]

template<Size W>
constexpr decltype(auto) pRC::Float< W >::operator() ( ) const &&
inlineconstexpr

◆ operator*=()

template<Size W>
template<class X , If< IsInvocable< Mul, Float &, X > > = 0>
constexpr auto & pRC::Float< W >::operator*= ( X && rhs) &
inlineconstexpr

◆ operator+=()

template<Size W>
template<class X , If< IsInvocable< Add, Float &, X > > = 0>
constexpr auto & pRC::Float< W >::operator+= ( X && rhs) &
inlineconstexpr

◆ operator-=()

template<Size W>
template<class X , If< IsInvocable< Sub, Float &, X > > = 0>
constexpr auto & pRC::Float< W >::operator-= ( X && rhs) &
inlineconstexpr

◆ operator/=()

template<Size W>
template<class X , If< IsInvocable< Div, Float &, X > > = 0>
constexpr auto & pRC::Float< W >::operator/= ( X && rhs) &
inlineconstexpr

◆ operator=() [1/8]

template<Size W>
template<class U , If< IsValue< U > > = 0>
constexpr auto & pRC::Float< W >::operator= ( Complex< U > const & value) &
inlineconstexpr

◆ operator=() [2/8]

template<Size W>
constexpr Float & pRC::Float< W >::operator= ( Float< W > && ) &
constexprdefault

◆ operator=() [3/8]

template<Size W>
constexpr Float & pRC::Float< W >::operator= ( Float< W > const & ) &
constexprdefault

◆ operator=() [4/8]

template<Size W>
constexpr auto & pRC::Float< W >::operator= ( Identity<> const ) &
inlineconstexpr

◆ operator=() [5/8]

template<Size W>
template<class U , If< IsValue< U > > = 0>
constexpr auto & pRC::Float< W >::operator= ( U const & value) &
inlineconstexpr

◆ operator=() [6/8]

template<Size W>
template<class U , If< IsAssignable< Fundamental, U > > = 0>
constexpr auto & pRC::Float< W >::operator= ( U const basic) &
inlineconstexpr

◆ operator=() [7/8]

template<Size W>
constexpr auto & pRC::Float< W >::operator= ( Unit<> const ) &
inlineconstexpr

◆ operator=() [8/8]

template<Size W>
constexpr auto & pRC::Float< W >::operator= ( Zero<> const ) &
inlineconstexpr

The documentation for this class was generated from the following file: