#include namespace c10 { Scalar Scalar::operator-() const { TORCH_CHECK( !isBoolean(), "torch boolean negative, the `-` operator, is not supported."); if (isFloatingPoint()) { TORCH_CHECK(!isSymbolic(), "NYI negate symbolic float"); return Scalar(-v.d); } else if (isComplex()) { TORCH_INTERNAL_ASSERT(!isSymbolic()); return Scalar(-v.z); } else if (isIntegral(false)) { TORCH_CHECK(!isSymbolic(), "NYI negate symbolic int"); return Scalar(-v.i); } TORCH_INTERNAL_ASSERT(false, "unknown ivalue tag ", static_cast(tag)); } Scalar Scalar::conj() const { if (isComplex()) { TORCH_INTERNAL_ASSERT(!isSymbolic()); return Scalar(std::conj(v.z)); } else { return *this; } } Scalar Scalar::log() const { if (isComplex()) { TORCH_INTERNAL_ASSERT(!isSymbolic()); return std::log(v.z); } else if (isFloatingPoint()) { TORCH_CHECK(!isSymbolic(), "NYI log symbolic float"); return std::log(v.d); } else if (isIntegral(false)) { TORCH_CHECK(!isSymbolic(), "NYI log symbolic int"); return std::log(v.i); } TORCH_INTERNAL_ASSERT(false, "unknown ivalue tag ", static_cast(tag)); } } // namespace c10