constexpr math implementations More...
#include "Molassembler/Temple/Preprocessor.h"#include <cmath>#include <limits>#include <type_traits>Go to the source code of this file.
Namespaces | |
| Scine::Molassembler | |
| Central library namespace. | |
| Scine::Molassembler::Temple | |
| Template shorthands, optimizers and constexpr data types. | |
Functions | |
| template<typename FloatingPoint > | |
| PURITY_STRONG constexpr std::enable_if_t < std::is_floating_point < FloatingPoint >::value, bool > | Scine::Molassembler::Temple::Math::Traits::isnan (const FloatingPoint x) |
| template<typename... Bools> | |
| constexpr bool | Scine::Molassembler::Temple::Math::XOR (Bools...bools) |
| Template parameter-pack exclusive or of booleans. | |
| template<typename T > | |
| constexpr Traits::enableIfArithmeticWithReturn < T, T > | Scine::Molassembler::Temple::Math::abs (T x) noexcept |
| Absolute value. | |
| template<typename T > | |
| constexpr Traits::enableIfArithmeticWithReturn < T, T > | Scine::Molassembler::Temple::Math::max (T a, T b) noexcept |
| Maximum of two values. | |
| template<typename T > | |
| constexpr Traits::enableIfArithmeticWithReturn < T, T > | Scine::Molassembler::Temple::Math::min (T a, T b) noexcept |
| Minimum of two values. | |
| template<typename T > | |
| constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::toRadians (T inDegrees) noexcept |
| Convert angular degrees to radians. | |
| template<typename T > | |
| constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::toDegrees (T inRadians) noexcept |
| Convert angular radians to degrees. | |
| template<typename T , typename U > | |
| constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::fmod (T value, U divider) noexcept |
| module function for arbitrary types | |
| template<typename T > | |
| constexpr Traits::enableIfFloatingWithReturn < T, long > | Scine::Molassembler::Temple::Math::ceil (T value) noexcept |
| Ceiling function, no overflow check. | |
| template<typename T > | |
| constexpr Traits::enableIfFloatingWithReturn < T, int > | Scine::Molassembler::Temple::Math::floor (T value) noexcept |
| Floor function. | |
| template<typename T > | |
| constexpr Traits::enableIfArithmeticWithReturn < T, T > | Scine::Molassembler::Temple::Math::pow (T base, unsigned exponent) noexcept |
| Power of a number. | |
| template<typename T > | |
| constexpr Traits::enableIfArithmeticWithReturn < T, double > | Scine::Molassembler::Temple::Math::pow (T base, int exponent) noexcept |
| Integer version that just calls the unsigned power function and inverts the result. More... | |
| template<typename T > | |
| constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::sqrt (T x) |
| Square root. | |
| template<typename T > | |
| constexpr Traits::enableIfIntegralWithReturn < T, T > | Scine::Molassembler::Temple::Math::factorial (T x) |
| Factorial. | |
| template<typename T > | |
| constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::ln (T x) |
| Natural logarithm. | |
| template<typename T > | |
| constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::log10 (T x) |
| Base-10 logarithm. | |
| template<typename T > | |
| constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::log (T x, T base) |
| Arbitrary base logarithm. | |
| template<typename T > | |
| constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::asin (T x) |
| template<typename T > | |
| constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::acos (T x) |
| Inverse cosine. | |
| template<typename T > | |
| constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::atan (T x) |
| Inverse tangens. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfArithmeticWithReturn < T, T > | Scine::Molassembler::Temple::Math::abs (const T x) noexcept |
| Absolute value. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfArithmeticWithReturn < T, T > | Scine::Molassembler::Temple::Math::max (const T a, const T b) noexcept |
| Maximum of two values. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfArithmeticWithReturn < T, T > | Scine::Molassembler::Temple::Math::min (const T a, const T b) noexcept |
| Minimum of two values. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::toRadians (const T inDegrees) noexcept |
| Convert angular degrees to radians. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::toDegrees (const T inRadians) noexcept |
| Convert angular radians to degrees. | |
| template<typename T , typename U > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::fmod (const T value, const U divider) noexcept |
| module function for arbitrary types | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, long > | Scine::Molassembler::Temple::Math::ceil (const T value) noexcept |
| Ceiling function, no overflow check. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, int > | Scine::Molassembler::Temple::Math::floor (const T value) noexcept |
| Floor function. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfArithmeticWithReturn < T, T > | Scine::Molassembler::Temple::Math::pow (const T base, const unsigned exponent) noexcept |
| Power of a number. | |
| template<typename T > | |
| PURITY_STRONG constexpr T | Scine::Molassembler::Temple::Math::recPow (const T base, const unsigned exponent) noexcept |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfArithmeticWithReturn < T, double > | Scine::Molassembler::Temple::Math::pow (const T base, const int exponent) noexcept |
| Integer version that just calls the unsigned power function and inverts the result. More... | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::sqrt (const T x) |
| Square root. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfIntegralWithReturn < T, T > | Scine::Molassembler::Temple::Math::factorial (const T x) |
| Factorial. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::ln (const T x) |
| Natural logarithm. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::log10 (const T x) |
| Base-10 logarithm. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::log (const T x, const T base) |
| Arbitrary base logarithm. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::asin (const T x) |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::acos (const T x) |
| Inverse cosine. | |
| template<typename T > | |
| PURITY_STRONG constexpr Traits::enableIfFloatingWithReturn < T, T > | Scine::Molassembler::Temple::Math::atan (const T x) |
| Inverse tangens. | |
constexpr math implementations
constexpr basic mathematical function implementations, some logical functions and floating-point comparison helpers.