28 return Select(a >= T{}, sqrt, -sqrt);
34 std::is_integral_v<T> && !std::is_same_v<std::remove_cv_t<T>,
bool>,
"Unsupported type");
48 T md = (lo + hi + 1) / 2;
72 if (x4 < std::numeric_limits<T>::epsilon())
74 return T(1) - x2 / T(6);
constexpr T Select(bool condition, T a, T b)
constexpr T SignedSqrt(T a)
constexpr T IntegralSqrt(T a)