1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
#pragma once
namespace torch {
namespace jit {
namespace tensorexpr {
constexpr auto cpp_intrinsics_definition = R"(
namespace std {
template <typename T,
typename std::enable_if<std::is_floating_point<T>::value, int>::type = 0>
T rsqrt(T v) {
return 1.0f / std::sqrt(v);
}
template <typename T,
typename std::enable_if<std::is_floating_point<T>::value, int>::type = 0>
T frac(T v) {
T intpart;
return std::modf(v, &intpart);
}
template <typename From, typename To>
To bitcast(const From& v) {
assert(sizeof(To) == sizeof(From));
To res;
std::memcpy(&res, &v, sizeof(From));
return res;
}
} // namespace std
)";
} // namespace tensorexpr
} // namespace jit
} // namespace torch
|