Celeritas 0.7+d9d378c
Loading...
Searching...
No Matches
Classes
Constant.hh File Reference
#include <type_traits>
#include "corecel/Macros.hh"
#include "corecel/Types.hh"

Classes

class  celeritas::Constant
 Full-precision floating point constant with automatic precision demotion. More...
 

Macros

#define CELER_DEFINE_CONSTANT_CMP(TOKEN)
 Comparison.
 
#define CELER_DEFINE_CONSTANT_OP(TOKEN)
 @!}
 
#define CELER_DEFINE_CONSTANT_OP(TOKEN)
 @!}
 

Macro Definition Documentation

◆ CELER_DEFINE_CONSTANT_CMP

#define CELER_DEFINE_CONSTANT_CMP (   TOKEN)
Value:
template<class T, EnableIfFloating<T> = true> \
CELER_CEF friend bool operator TOKEN(Constant lhs, T rhs) noexcept \
{ \
return static_cast<T>(lhs.value()) TOKEN rhs; \
} \
template<class T, EnableIfFloating<T> = true> \
CELER_CEF friend bool operator TOKEN(T lhs, Constant rhs) noexcept \
{ \
return lhs TOKEN static_cast<T>(rhs.value()); \
} \
\
template<class T, EnableIfIntegral<T> = true> \
CELER_CEF friend bool operator TOKEN(Constant lhs, T rhs) noexcept \
{ \
return lhs.value() TOKEN static_cast<Constant::real_type>(rhs); \
} \
template<class T, EnableIfIntegral<T> = true> \
CELER_CEF friend bool operator TOKEN(T lhs, Constant rhs) noexcept \
{ \
return static_cast<Constant::real_type>(lhs) TOKEN rhs.value(); \
} \
\
CELER_CEF friend bool operator TOKEN(Constant lhs, Constant rhs) noexcept \
{ \
return lhs.value() TOKEN rhs.value(); \
}
#define CELER_CEF
Decorate a function that works on both host and device, with and without NVCC.
Definition Macros.hh:85

Comparison.

◆ CELER_DEFINE_CONSTANT_OP [1/2]

#define CELER_DEFINE_CONSTANT_OP (   TOKEN)
Value:
template<class T, EnableIfFloating<T> = true> \
CELER_CEF friend T operator TOKEN(Constant lhs, T rhs) noexcept \
{ \
return static_cast<T>(lhs.value()) TOKEN rhs; \
} \
template<class T, EnableIfFloating<T> = true> \
CELER_CEF friend T operator TOKEN(T lhs, Constant rhs) noexcept \
{ \
return lhs TOKEN static_cast<T>(rhs.value()); \
} \
\
template<class T, EnableIfIntegral<T> = true> \
CELER_CEF friend Constant operator TOKEN(Constant lhs, T rhs) noexcept \
{ \
return Constant{lhs.value() TOKEN rhs}; \
} \
template<class T, EnableIfIntegral<T> = true> \
CELER_CEF friend Constant operator TOKEN(T lhs, Constant rhs) noexcept \
{ \
return Constant{lhs TOKEN rhs.value()}; \
} \
\
CELER_CEF friend Constant operator TOKEN(Constant lhs, \
Constant rhs) noexcept \
{ \
return Constant{lhs.value() TOKEN rhs.value()}; \
}

@!}

Arithmetic

In-place arithmetic

◆ CELER_DEFINE_CONSTANT_OP [2/2]

#define CELER_DEFINE_CONSTANT_OP (   TOKEN)
Value:
template<class T, EnableIfFloating<T> = true> \
CELER_CEF friend T& operator TOKEN(T & lhs, Constant rhs) noexcept \
{ \
return lhs TOKEN static_cast<T>(rhs.value()); \
}

@!}

Arithmetic

In-place arithmetic