41 [[nodiscard]]
Precision default_precision() const
44 return this->
base().default_precision();
48 [[nodiscard]] std::optional<Precision> default_precision_if_set() const
51 return this->
base().default_precision_if_set();
57 noexcept(
noexcept(std::declval<tensor_type const&>().backend_selector()))
59 return this->
base().backend_selector();
63 [[nodiscard]]
constexpr decltype(
auto)
mdspan()
const
64 noexcept(
noexcept(std::declval<tensor_type const&>().mdspan()))
67 return this->
base().mdspan();
71 [[nodiscard]]
constexpr decltype(
auto)
mdspec()
const
72 noexcept(
noexcept(
mdspec_of(std::declval<tensor_type const&>())))
78 [[nodiscard]]
constexpr decltype(
auto)
extents()
const
79 noexcept(
noexcept(std::declval<tensor_type const&>().extents()))
81 return this->
base().extents();
85 [[nodiscard]]
constexpr decltype(
auto)
extent(std::size_t axis)
const
86 noexcept(
noexcept(std::declval<tensor_type const&>().extent(axis)))
88 return this->
base().extent(axis);
92 [[nodiscard]]
constexpr tensor_type const&
base() const noexcept {
return *std::launder(tensor_); }
120 [[nodiscard]]
Precision default_precision() const
123 return this->
base().default_precision();
127 [[nodiscard]] std::optional<Precision> default_precision_if_set() const
130 return this->
base().default_precision_if_set();
136 noexcept(
noexcept(std::declval<tensor_type const&>().backend_selector()))
138 return this->
base().backend_selector();
142 [[nodiscard]]
constexpr auto mdspan() const
150 [[nodiscard]]
constexpr auto mdspec() const
157 [[nodiscard]]
constexpr decltype(
auto)
extents()
const
158 noexcept(
noexcept(std::declval<tensor_type const&>().extents()))
160 return this->
base().extents();
164 [[nodiscard]]
constexpr decltype(
auto)
extent(std::size_t axis)
const
165 noexcept(
noexcept(std::declval<tensor_type const&>().extent(axis)))
167 return this->
base().extent(axis);
171 [[nodiscard]]
constexpr tensor_type const&
base() const noexcept {
return *std::launder(tensor_); }
178template <TensorView Tensor>
179 requires(std::is_lvalue_reference_v<Tensor &&> && Complex<tensor_element_t<Tensor>>)
204template <TensorView Tensor>
205 requires Complex<tensor_element_t<Tensor>>
212template <TensorView Tensor>
213 requires Complex<tensor_element_t<Tensor>>
220template <TensorView Tensor>
221 requires Complex<tensor_element_t<Tensor>>
228template <TensorView Tensor>
229 requires(std::is_lvalue_reference_v<Tensor &&> && !Complex<tensor_element_t<Tensor>>)
230[[nodiscard]]
constexpr auto conj(
Tensor&& tensor)
noexcept -> std::remove_reference_t<Tensor>
const&
Non-owning tensor view whose immediate or deferred metadata presents conjugated values.
Definition conjugate.hpp:102
constexpr decltype(auto) backend_selector() const noexcept(noexcept(std::declval< tensor_type const & >().backend_selector()))
Return the underlying tensor's backend selector.
Definition conjugate.hpp:135
constexpr decltype(auto) extent(std::size_t axis) const noexcept(noexcept(std::declval< tensor_type const & >().extent(axis)))
Return one underlying tensor extent.
Definition conjugate.hpp:164
constexpr ConjugatedTensorView(tensor_type const *tensor) noexcept
Bind a conjugating view to externally retained tensor storage.
Definition conjugate.hpp:115
constexpr ConjugatedTensorView(tensor_type const &tensor) noexcept
Bind a lazy conjugating view to an existing tensor.
Definition conjugate.hpp:110
constexpr decltype(auto) extents() const noexcept(noexcept(std::declval< tensor_type const & >().extents()))
Return the underlying tensor extents.
Definition conjugate.hpp:157
constexpr auto mdspan() const noexcept(noexcept(uni20::conj(std::declval< tensor_type const & >().mdspan())))
Resolve the conjugating mdspan view.
Definition conjugate.hpp:142
constexpr tensor_type const & base() const noexcept
Return the tensor referenced by this view.
Definition conjugate.hpp:171
std::remove_cvref_t< Tensor > tensor_type
Definition conjugate.hpp:104
tensor_storage_policy_t< tensor_type > storage_policy
Definition conjugate.hpp:105
constexpr auto mdspec() const noexcept(noexcept(uni20::conj(mdspec_of(std::declval< tensor_type const & >()))))
Return conjugated immediate or deferred multidimensional metadata.
Definition conjugate.hpp:150
void async_alias_tag
Marks this descriptor as a structurally copied async alias.
Definition conjugate.hpp:107
Non-owning read-only view of a tensor-level object.
Definition conjugate.hpp:23
constexpr ConstTensorView(tensor_type const *tensor) noexcept
Bind a read-only view to externally retained tensor storage.
Definition conjugate.hpp:36
constexpr decltype(auto) mdspec() const noexcept(noexcept(mdspec_of(std::declval< tensor_type const & >())))
Return the underlying tensor's read-only immediate or deferred metadata.
Definition conjugate.hpp:71
constexpr decltype(auto) extent(std::size_t axis) const noexcept(noexcept(std::declval< tensor_type const & >().extent(axis)))
Return one underlying tensor extent.
Definition conjugate.hpp:85
constexpr decltype(auto) backend_selector() const noexcept(noexcept(std::declval< tensor_type const & >().backend_selector()))
Return the underlying tensor's backend selector.
Definition conjugate.hpp:56
constexpr decltype(auto) extents() const noexcept(noexcept(std::declval< tensor_type const & >().extents()))
Return the underlying tensor extents.
Definition conjugate.hpp:78
constexpr ConstTensorView(tensor_type const &tensor) noexcept
Bind a read-only view to an existing tensor.
Definition conjugate.hpp:31
void async_alias_tag
Marks this descriptor as a structurally copied async alias.
Definition conjugate.hpp:28
constexpr tensor_type const & base() const noexcept
Return the tensor referenced by this view.
Definition conjugate.hpp:92
constexpr decltype(auto) mdspan() const noexcept(noexcept(std::declval< tensor_type const & >().mdspan()))
Resolve the underlying tensor's read-only mdspan.
Definition conjugate.hpp:63
tensor_storage_policy_t< tensor_type > storage_policy
Definition conjugate.hpp:26
std::remove_cvref_t< Tensor > tensor_type
Definition conjugate.hpp:25
Exact arithmetic or an explicit binary working precision.
Definition core/precision.hpp:13
General-purpose owning tensor with immediate or deferred mdspan metadata.
Definition basic_tensor.hpp:109
Mdspan accessor adaptor for lazy complex conjugation.
uni20::complex< T > conj(detail::standard_complex< T > x)
Returns the complex conjugate for complex-valued scalars.
Definition math.hpp:70
Definition async/async.hpp:26
typename detail::TensorStoragePolicy< std::remove_cvref_t< Tensor > >::type tensor_storage_policy_t
Storage-policy type exposed by a tensor-level object, or void.
Definition tensor/concepts.hpp:40
constexpr bool has_runtime_precision_v
Whether numerical values of this scalar family carry runtime precision.
Definition runtime_precision.hpp:10
constexpr decltype(auto) mdspec_of(Tensor &tensor) noexcept(noexcept(tensor.mdspec()))
Return a tensor's immediate or descriptor-backed multidimensional metadata.
Definition tensor/concepts.hpp:50
std::remove_cv_t< typename tensor_mdspec_t< T >::element_type > tensor_element_t
Scalar value type exposed by a tensor-level object.
Definition tensor/concepts.hpp:126
Concepts for tensor-level objects that resolve mdspan kernel operands.