Loading...
Searching...
No Matches
eonc::safemath Namespace Reference

Functions

constexpr double safe_div (double num, double denom, double fallback=0.0)
constexpr double safe_recip (double x, double fallback=0.0)
double safe_acos (double x)
double safe_sqrt (double x)
double safe_atan_ratio (double num, double denom, double fallback=0.0)

Variables

constexpr double eps = 1e-300

Function Documentation

◆ safe_acos()

double eonc::safemath::safe_acos ( double x)
inlinenodiscard

Definition at line 34 of file SafeMath.h.

34 {
35 return std::acos(std::clamp(x, -1.0, 1.0));
36}

◆ safe_atan_ratio()

double eonc::safemath::safe_atan_ratio ( double num,
double denom,
double fallback = 0.0 )
inlinenodiscard

Definition at line 42 of file SafeMath.h.

43 {
44 if ((denom < 0.0 ? -denom : denom) < eps) [[unlikely]] {
45 return fallback;
46 }
47 return std::atan(num / denom);
48}
constexpr double eps
Definition SafeMath.h:19

◆ safe_div()

double eonc::safemath::safe_div ( double num,
double denom,
double fallback = 0.0 )
inlinenodiscardconstexpr

Definition at line 21 of file SafeMath.h.

22 {
23 if ((denom < 0.0 ? -denom : denom) < eps) [[unlikely]] {
24 return fallback;
25 }
26 return num / denom;
27}

◆ safe_recip()

double eonc::safemath::safe_recip ( double x,
double fallback = 0.0 )
inlinenodiscardconstexpr

Definition at line 29 of file SafeMath.h.

30 {
31 return safe_div(1.0, x, fallback);
32}
constexpr double safe_div(double num, double denom, double fallback=0.0)
Definition SafeMath.h:21

◆ safe_sqrt()

double eonc::safemath::safe_sqrt ( double x)
inlinenodiscard

Definition at line 38 of file SafeMath.h.

38 {
39 return std::sqrt(std::max(0.0, x));
40}

Variable Documentation

◆ eps

double eonc::safemath::eps = 1e-300
inlineconstexpr

Definition at line 19 of file SafeMath.h.