Commit af7dd944 authored by Artur Wojcik's avatar Artur Wojcik
Browse files

math

parent 08111cae
...@@ -213,13 +213,13 @@ cpp_generator::function cpp_generator::generate_module(const module& m, ...@@ -213,13 +213,13 @@ cpp_generator::function cpp_generator::generate_module(const module& m,
ins->get_literal().visit([&](auto v) { ins->get_literal().visit([&](auto v) {
assert(v.size() == 1); assert(v.size() == 1);
auto x = v.front(); auto x = v.front();
if(std::isinf(x)) if(std::isinf(static_cast<double>(x)))
{ {
string_literal = "__builtin_huge_val()"; string_literal = "__builtin_huge_val()";
if(x < 0) if(x < 0)
string_literal = "-__builtin_huge_val()"; string_literal = "-__builtin_huge_val()";
} }
else if(std::isnan(x)) else if(std::isnan(static_cast<double>(x)))
string_literal = "__builtin_nan()"; string_literal = "__builtin_nan()";
else else
string_literal = ins->get_literal().to_string(); string_literal = ins->get_literal().to_string();
......
...@@ -35,7 +35,7 @@ struct isnan : unary<isnan> ...@@ -35,7 +35,7 @@ struct isnan : unary<isnan>
{ {
auto apply() const auto apply() const
{ {
return [](auto x) { return std::isnan(x); }; return [](auto x) { return std::isnan(static_cast<double>(x)); };
} }
std::string name() const { return "isnan"; } std::string name() const { return "isnan"; }
......
...@@ -87,8 +87,7 @@ struct not_finite_fn ...@@ -87,8 +87,7 @@ struct not_finite_fn
template <class T> template <class T>
bool operator()(T x) const bool operator()(T x) const
{ {
using std::isfinite; return not std::isfinite(static_cast<double>(x));
return not isfinite(x);
} }
}; };
static constexpr not_finite_fn not_finite{}; static constexpr not_finite_fn not_finite{};
...@@ -98,8 +97,7 @@ struct compare_mag_fn ...@@ -98,8 +97,7 @@ struct compare_mag_fn
template <class T, class U> template <class T, class U>
bool operator()(T x, U y) const bool operator()(T x, U y) const
{ {
using std::fabs; return std::fabs(x) < std::fabs(y);
return fabs(x) < fabs(y);
} }
}; };
static constexpr compare_mag_fn compare_mag{}; static constexpr compare_mag_fn compare_mag{};
......
...@@ -346,7 +346,7 @@ void program::finalize() ...@@ -346,7 +346,7 @@ void program::finalize()
template <class T> template <class T>
std::string classify(T x) std::string classify(T x)
{ {
switch(std::fpclassify(x)) switch(std::fpclassify(static_cast<double>(x)))
{ {
case FP_INFINITE: return "inf"; case FP_INFINITE: return "inf";
case FP_NAN: return "nan"; case FP_NAN: return "nan";
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment