/usr/local/lib64/python3.6/site-packages/torch/include/c10/util
NameSizeModeActions
accumulate.h42050644editdlrm
AlignOf.h48350644editdlrm
Array.h113540644editdlrm
ArrayRef.h90580644editdlrm
Backtrace.h3640644editdlrm
BFloat16-inl.h92220644editdlrm
BFloat16-math.h52170644editdlrm
BFloat16.h23720644editdlrm
Bitset.h34140644editdlrm
C++17.h133290644editdlrm
complex.h175420644editdlrm
complex_math.h109020644editdlrm
complex_utils.h9580644editdlrm
ConstexprCrc.h66330644editdlrm
copysign.h8660644editdlrm
DeadlockDetection.h19200644editdlrm
Deprecated.h35790644editdlrm
either.h64230644editdlrm
env.h8350644editdlrm
Exception.h247230644editdlrm
ExclusivelyOwned.h47590644editdlrm
Flags.h100560644editdlrm
flat_hash_map.h616550644editdlrm
FunctionRef.h23010644editdlrm
Half-inl.h86740644editdlrm
Half.h189650644editdlrm
hash.h50840644editdlrm
IdWrapper.h23480644editdlrm
intrusive_ptr.h355630644editdlrm
in_place.h3500644editdlrm
irange.h26790644editdlrm
LeftRight.h60160644editdlrm
llvmMathExtras.h291680644editdlrm
Logging.h112560644editdlrm
logging_is_google_glog.h20310644editdlrm
logging_is_not_google_glog.h82710644editdlrm
MathConstants.h8580644editdlrm
math_compat.h72960644editdlrm
MaybeOwned.h66890644editdlrm
Metaprogramming.h152880644editdlrm
numa.h6960644editdlrm
Optional.h355920644editdlrm
order_preserving_flat_hash_map.h654820644editdlrm
overloaded.h7090644editdlrm
python_stub.h560644editdlrm
qint8.h4720644editdlrm
qint32.h3190644editdlrm
quint4x2.h3660644editdlrm
quint8.h3200644editdlrm
Registry.h122420644editdlrm
reverse_iterator.h87960644editdlrm
ScopeExit.h13450644editdlrm
signal_handler.h31540644editdlrm
SmallBuffer.h12430644editdlrm
SmallVector.h344560644editdlrm
sparse_bitset.h265110644editdlrm
StringUtil.h45380644editdlrm
string_utils.h39890644editdlrm
string_view.h201890644editdlrm
tempfile.h60290644editdlrm
ThreadLocal.h38830644editdlrm
ThreadLocalDebugInfo.h26030644editdlrm
thread_name.h1480644editdlrm
Type.h6070644editdlrm
TypeCast.h69720644editdlrm
typeid.h187930644editdlrm
TypeIndex.h52510644editdlrm
TypeList.h169010644editdlrm
TypeTraits.h53680644editdlrm
Unicode.h2950644editdlrm
UniqueVoidPtr.h41170644editdlrm
Unroll.h6670644editdlrm
variant.h951820644editdlrm
win32-headers.h8580644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/include/c10/util/BFloat16-math.h (5217B)
#pragma once #include #include namespace std { /// Used by vec256::map inline c10::BFloat16 acos(c10::BFloat16 a) { return std::acos(float(a)); } inline c10::BFloat16 asin(c10::BFloat16 a) { return std::asin(float(a)); } inline c10::BFloat16 atan(c10::BFloat16 a) { return std::atan(float(a)); } inline c10::BFloat16 erf(c10::BFloat16 a) { return std::erf(float(a)); } inline c10::BFloat16 erfc(c10::BFloat16 a) { return std::erfc(float(a)); } inline c10::BFloat16 exp(c10::BFloat16 a) { return std::exp(float(a)); } inline c10::BFloat16 expm1(c10::BFloat16 a) { return std::expm1(float(a)); } inline c10::BFloat16 log(c10::BFloat16 a) { return std::log(float(a)); } inline c10::BFloat16 log10(c10::BFloat16 a) { return std::log10(float(a)); } inline c10::BFloat16 log1p(c10::BFloat16 a) { return std::log1p(float(a)); } inline c10::BFloat16 log2(c10::BFloat16 a) { return std::log2(float(a)); } inline c10::BFloat16 ceil(c10::BFloat16 a) { return std::ceil(float(a)); } inline c10::BFloat16 cos(c10::BFloat16 a) { return std::cos(float(a)); } inline c10::BFloat16 floor(c10::BFloat16 a) { return std::floor(float(a)); } inline c10::BFloat16 nearbyint(c10::BFloat16 a) { return std::nearbyint(float(a)); } inline c10::BFloat16 sin(c10::BFloat16 a) { return std::sin(float(a)); } inline c10::BFloat16 tan(c10::BFloat16 a) { return std::tan(float(a)); } inline c10::BFloat16 sinh(c10::BFloat16 a) { return std::sinh(float(a)); } inline c10::BFloat16 cosh(c10::BFloat16 a) { return std::cosh(float(a)); } inline c10::BFloat16 tanh(c10::BFloat16 a) { return std::tanh(float(a)); } inline c10::BFloat16 trunc(c10::BFloat16 a) { return std::trunc(float(a)); } inline c10::BFloat16 lgamma(c10::BFloat16 a) { return std::lgamma(float(a)); } inline c10::BFloat16 sqrt(c10::BFloat16 a) { return std::sqrt(float(a)); } inline c10::BFloat16 rsqrt(c10::BFloat16 a) { return 1.0 / std::sqrt(float(a)); } inline c10::BFloat16 abs(c10::BFloat16 a) { return std::abs(float(a)); } #if defined(_MSC_VER) && defined(__CUDACC__) inline c10::BFloat16 pow(c10::BFloat16 a, double b) { return std::pow(float(a), float(b)); } #else inline c10::BFloat16 pow(c10::BFloat16 a, double b) { return std::pow(float(a), b); } #endif inline c10::BFloat16 pow(c10::BFloat16 a, c10::BFloat16 b) { return std::pow(float(a), float(b)); } inline c10::BFloat16 fmod(c10::BFloat16 a, c10::BFloat16 b) { return std::fmod(float(a), float(b)); } /* The following function is inspired from the implementation in `musl` Link to License: https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT ---------------------------------------------------------------------- Copyright © 2005-2020 Rich Felker, et al. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------------------- */ C10_HOST_DEVICE inline c10::BFloat16 nextafter( c10::BFloat16 from, c10::BFloat16 to) { // Reference: // https://git.musl-libc.org/cgit/musl/tree/src/math/nextafter.c using int_repr_t = uint16_t; using float_t = c10::BFloat16; constexpr uint8_t bits = 16; union { float_t f; int_repr_t i; } ufrom = {from}, uto = {to}; // get a mask to get the sign bit i.e. MSB int_repr_t sign_mask = int_repr_t{1} << (bits - 1); // short-circuit: if either is NaN, return NaN if (from != from || to != to) { return from + to; } // short-circuit: if they are exactly the same. if (ufrom.i == uto.i) { return from; } // mask the sign-bit to zero i.e. positive // equivalent to abs(x) int_repr_t abs_from = ufrom.i & ~sign_mask; int_repr_t abs_to = uto.i & ~sign_mask; if (abs_from == 0) { // if both are zero but with different sign, // preserve the sign of `to`. if (abs_to == 0) { return to; } // smallest subnormal with sign of `to`. ufrom.i = (uto.i & sign_mask) | int_repr_t{1}; return ufrom.f; } // if abs(from) > abs(to) or sign(from) != sign(to) if (abs_from > abs_to || ((ufrom.i ^ uto.i) & sign_mask)) { ufrom.i--; } else { ufrom.i++; } return ufrom.f; } } // namespace std