Do not catch wild animals.
esv::sqrt calculates the square root of a real value. The parameter passed to esv::sqrt can be any real type (esv::real_meric), but the returned result is always floating type. If the parameter is negative, it returns NaN value (esv::nan_v result).
constexpr auto result = esv::sqrt(value);
constexpr auto result = esv::sqrt.fn<return_type>(value);
esv::sqrt(value) :
esv::sqrt.fn<return_type>(value) :
#include <esvcpp/math.hpp>
#include <esvcpp/core.hpp> #include <esvcpp/math.hpp> int main() { constexpr auto a = esv::sqrt(3); constexpr auto b = esv::sqrt(3.4); constexpr auto c = esv::sqrt(esv::ix32{2}); constexpr auto d = esv::sqrt(esv::fx32{2.8}); constexpr auto e = esv::sqrt(-7); esv::print(a,b,c,d,e); /*output: 1.732051 1.843909 1.414214 1.673320 nan */ static_assert(esv::is_nan(e)); }