Core semantic modifiers
Many core functions accept one or more of these options to change what they compute or how. Each is documented below; which functions accept which is stated on the page of every function that does.
Variables | |
| constexpr auto | eve::saturated = ::rbr::flag( saturated_mode{} ) |
| Keeps the result inside the range of its type instead of wrapping or overflowing. | |
| constexpr auto | eve::pedantic = ::rbr::flag( pedantic_mode{} ) |
| Follows the corner cases of the corresponding standard function. | |
| constexpr auto | eve::numeric = ::rbr::flag( numeric_mode{} ) |
| Makes NaN lose against any definite value. | |
| constexpr auto | eve::almost = {} |
| Turns an equality or an ordering into its tolerant form. | |
| constexpr auto | eve::definitely = {} |
| Requires a strict comparison to hold by a margin. | |
| constexpr auto | eve::raw = ::rbr::flag( raw_mode{} ) |
| Performs the operation minimally, trading accuracy for speed. | |
| constexpr auto | eve::fast = ::rbr::flag( fast_mode{} ) |
| Performs the operation faster than the regular call while keeping more accuracy than raw. | |
| constexpr auto | eve::lower = ::rbr::flag( lower_mode{} ) |
| Guarantees a result no greater than the exact mathematical one. | |
| constexpr auto | eve::upper = ::rbr::flag( upper_mode{} ) |
| Guarantees a result no smaller than the exact mathematical one. | |
| constexpr auto | eve::strict = ::rbr::flag( strict_mode{} ) |
| Turns the guarantee of lower or upper into a strict inequality. | |
| constexpr auto | eve::widen = ::rbr::flag( widen_mode{} ) |
| Computes the result in the upgraded element type. | |
| constexpr auto | eve::to_nearest = ::rbr::flag( to_nearest_mode{} ) |
| Rounds to the nearest integer, ties going to the even one. | |
| constexpr auto | eve::downward = ::rbr::flag( downward_mode{} ) |
| Rounds toward \(-\infty\). | |
| constexpr auto | eve::upward = ::rbr::flag( upward_mode{} ) |
| Rounds toward \(+\infty\). | |
| constexpr auto | eve::toward_zero = ::rbr::flag( toward_zero_mode{} ) |
| Rounds toward zero. | |
| constexpr auto | eve::to_nearest_odd = ::rbr::flag( to_nearest_odd_mode{} ) |
| Rounds to the nearest integer, ties going to the odd one. | |
| constexpr auto | eve::left = ::rbr::flag( left_mode{} ) |
| Swaps the two operands before applying the operation. | |
| constexpr auto | eve::right = ::rbr::flag( right_mode{} ) |
| Applies the operation in the order the operands are written. | |
| constexpr auto | eve::spherical = ::rbr::flag( spherical_mode{} ) |
| Selects the spherical form of a Bessel function. | |
| constexpr auto | eve::cylindrical = ::rbr::flag( cylindrical_mode{} ) |
| Selects the cylindrical form of a Bessel function. | |