From 8bcc3371698898c6f095816ee954063b4d2e0d5a Mon Sep 17 00:00:00 2001 From: Nikita Grigorian Date: Mon, 28 Apr 2025 01:03:07 -0700 Subject: [PATCH 1/2] Update imag to use a constant value of 0 for real-valued dtypes --- .../include/kernels/elementwise_functions/imag.hpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/dpctl/tensor/libtensor/include/kernels/elementwise_functions/imag.hpp b/dpctl/tensor/libtensor/include/kernels/elementwise_functions/imag.hpp index 89adabff41..7e577f7926 100644 --- a/dpctl/tensor/libtensor/include/kernels/elementwise_functions/imag.hpp +++ b/dpctl/tensor/libtensor/include/kernels/elementwise_functions/imag.hpp @@ -53,14 +53,16 @@ using dpctl::tensor::ssize_t; namespace td_ns = dpctl::tensor::type_dispatch; using dpctl::tensor::type_utils::is_complex; +using dpctl::tensor::type_utils::is_complex_v; template struct ImagFunctor { // is function constant for given argT - using is_constant = typename std::false_type; + using is_constant = + typename std::is_same, std::false_type>; // constant value, if constant - // constexpr resT constant_value = resT{}; + static constexpr resT constant_value = resT{0}; // is function defined for sycl::vec using supports_vec = typename std::false_type; // do both argTy and resTy support sugroup store/load operation @@ -74,7 +76,7 @@ template struct ImagFunctor } else { static_assert(std::is_same_v); - return resT{0}; + return constant_value; } } }; From b909228e5330b52b71bb22e8373d405481809b50 Mon Sep 17 00:00:00 2001 From: Nikita Grigorian Date: Mon, 28 Apr 2025 09:27:41 -0700 Subject: [PATCH 2/2] Use is_complex_v in real and imag --- .../libtensor/include/kernels/elementwise_functions/imag.hpp | 2 +- .../libtensor/include/kernels/elementwise_functions/real.hpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/dpctl/tensor/libtensor/include/kernels/elementwise_functions/imag.hpp b/dpctl/tensor/libtensor/include/kernels/elementwise_functions/imag.hpp index 7e577f7926..c5e0feea12 100644 --- a/dpctl/tensor/libtensor/include/kernels/elementwise_functions/imag.hpp +++ b/dpctl/tensor/libtensor/include/kernels/elementwise_functions/imag.hpp @@ -71,7 +71,7 @@ template struct ImagFunctor resT operator()(const argT &in) const { - if constexpr (is_complex::value) { + if constexpr (is_complex_v) { return std::imag(in); } else { diff --git a/dpctl/tensor/libtensor/include/kernels/elementwise_functions/real.hpp b/dpctl/tensor/libtensor/include/kernels/elementwise_functions/real.hpp index bb22352907..9ecb822a20 100644 --- a/dpctl/tensor/libtensor/include/kernels/elementwise_functions/real.hpp +++ b/dpctl/tensor/libtensor/include/kernels/elementwise_functions/real.hpp @@ -53,6 +53,7 @@ using dpctl::tensor::ssize_t; namespace td_ns = dpctl::tensor::type_dispatch; using dpctl::tensor::type_utils::is_complex; +using dpctl::tensor::type_utils::is_complex_v; template struct RealFunctor { @@ -69,7 +70,7 @@ template struct RealFunctor resT operator()(const argT &in) const { - if constexpr (is_complex::value) { + if constexpr (is_complex_v) { return std::real(in); } else {