|
Celeritas 0.7+d9d378c
|
Full-precision floating point constant with automatic precision demotion. More...
#include <Constant.hh>
Public Types | |
Type aliases | |
| using | real_type = double |
Public Member Functions | |
| constexpr | Constant (real_type v) |
| Explicitly construct from a full-precision value. | |
| constexpr real_type | value () const |
| Access the value explicitly. | |
| constexpr | operator float () const |
| Explicit conversion of stored value. | |
| constexpr | operator double () const |
| Explicit access to stored value. | |
Friends | |
| constexpr friend Constant | operator- (Constant lhs) noexcept |
| Unary negation. | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator== (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator== (T lhs, Constant rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator== (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator== (T lhs, Constant rhs) noexcept |
| constexpr friend bool | operator== (Constant lhs, Constant rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator!= (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator!= (T lhs, Constant rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator!= (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator!= (T lhs, Constant rhs) noexcept |
| constexpr friend bool | operator!= (Constant lhs, Constant rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator< (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator< (T lhs, Constant rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator< (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator< (T lhs, Constant rhs) noexcept |
| constexpr friend bool | operator< (Constant lhs, Constant rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator> (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator> (T lhs, Constant rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator> (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator> (T lhs, Constant rhs) noexcept |
| constexpr friend bool | operator> (Constant lhs, Constant rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator<= (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator<= (T lhs, Constant rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator<= (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator<= (T lhs, Constant rhs) noexcept |
| constexpr friend bool | operator<= (Constant lhs, Constant rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator>= (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend bool | operator>= (T lhs, Constant rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator>= (Constant lhs, T rhs) noexcept |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend bool | operator>= (T lhs, Constant rhs) noexcept |
| constexpr friend bool | operator>= (Constant lhs, Constant rhs) noexcept |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T | operator* (Constant lhs, T rhs) noexcept |
| @!} | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T | operator* (T lhs, Constant rhs) noexcept |
| @!} | |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend Constant | operator* (Constant lhs, T rhs) noexcept |
| @!} | |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend Constant | operator* (T lhs, Constant rhs) noexcept |
| @!} | |
| constexpr friend Constant | operator* (Constant lhs, Constant rhs) noexcept |
| @!} | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T | operator/ (Constant lhs, T rhs) noexcept |
| @!} | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T | operator/ (T lhs, Constant rhs) noexcept |
| @!} | |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend Constant | operator/ (Constant lhs, T rhs) noexcept |
| @!} | |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend Constant | operator/ (T lhs, Constant rhs) noexcept |
| @!} | |
| constexpr friend Constant | operator/ (Constant lhs, Constant rhs) noexcept |
| @!} | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T | operator+ (Constant lhs, T rhs) noexcept |
| @!} | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T | operator+ (T lhs, Constant rhs) noexcept |
| @!} | |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend Constant | operator+ (Constant lhs, T rhs) noexcept |
| @!} | |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend Constant | operator+ (T lhs, Constant rhs) noexcept |
| @!} | |
| constexpr friend Constant | operator+ (Constant lhs, Constant rhs) noexcept |
| @!} | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T | operator- (Constant lhs, T rhs) noexcept |
| @!} | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T | operator- (T lhs, Constant rhs) noexcept |
| @!} | |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend Constant | operator- (Constant lhs, T rhs) noexcept |
| @!} | |
| template<class T , EnableIfIntegral< T > = true> | |
| constexpr friend Constant | operator- (T lhs, Constant rhs) noexcept |
| @!} | |
| constexpr friend Constant | operator- (Constant lhs, Constant rhs) noexcept |
| @!} | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T & | operator*= (T &lhs, Constant rhs) noexcept |
| @!} | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T & | operator/= (T &lhs, Constant rhs) noexcept |
| @!} | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T & | operator+= (T &lhs, Constant rhs) noexcept |
| @!} | |
| template<class T , EnableIfFloating< T > = true> | |
| constexpr friend T & | operator-= (T &lhs, Constant rhs) noexcept |
| @!} | |
Full-precision floating point constant with automatic precision demotion.
We want two behaviors from constants in Celeritas:
This class stores a full-precision (double) value as its "real type" and defines explicit conversion operators that allow it to automatically convert to a lower-precision or real-precision type.
Operations with a floating point value returns a value of that precision (performed at that precision level); operations with integers return a full-precision Constant; and operations with Constants return a Constant.