Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Classes | Namespaces | Functions | Variables
conjugate_accessor.hpp File Reference

Mdspan accessor adaptor for lazy complex conjugation. More...

#include <uni20/core/compiler_attributes.hpp>
#include <uni20/core/math.hpp>
#include <uni20/mdspan/concepts.hpp>
#include <uni20/mdspan/mdspec.hpp>
#include <concepts>
#include <type_traits>
#include <utility>
Include dependency graph for conjugate_accessor.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  uni20::accessor_applies_conjugation< Accessor >
 Trait used by mdspan accessors that present conjugated values on read. More...
 
struct  uni20::accessor_applies_conjugation< conjugated_accessor< Accessor > >
 
class  uni20::conjugated_accessor< Accessor >
 Read-only accessor that returns uni20::conj of the wrapped accessor value. More...
 

Namespaces

namespace  uni20
 

Functions

template<MdspanLike Span>
requires (uni20::Complex<std::remove_cv_t<typename Span::element_type>> && !accessor_applies_conjugation_v<typename std::remove_cvref_t<Span>::accessor_type>)
constexpr auto uni20::conj (Span const &span)
 Return a read-only mdspan view that presents conjugated complex values.
 
template<MdspecLike Span>
requires (!MdspanLike<Span> && uni20::Complex<std::remove_cv_t<typename Span::element_type>> && !accessor_applies_conjugation_v<typename std::remove_cvref_t<Span>::accessor_type>)
constexpr auto uni20::conj (Span const &span)
 Return a read-only deferred view that presents conjugated complex values.
 
template<MdspanLike Span>
requires (uni20::Complex<std::remove_cv_t<typename Span::element_type>> && accessor_applies_conjugation_v<typename std::remove_cvref_t<Span>::accessor_type>)
constexpr auto uni20::conj (Span const &span)
 Cancel a conjugating mdspan accessor and return the underlying view.
 
template<MdspecLike Span>
requires (!MdspanLike<Span> && uni20::Complex<std::remove_cv_t<typename Span::element_type>> && accessor_applies_conjugation_v<typename std::remove_cvref_t<Span>::accessor_type>)
constexpr auto uni20::conj (Span const &span)
 Cancel conjugation on a deferred multidimensional view.
 
template<MdspanLike Span>
requires (!uni20::Complex<std::remove_cv_t<typename Span::element_type>>)
constexpr auto uni20::conj (Span const &span)
 Return a read-only identity view for non-complex mdspan-like views.
 
template<MdspecLike Span>
requires (!MdspanLike<Span> && !uni20::Complex<std::remove_cv_t<typename Span::element_type>>)
constexpr auto uni20::conj (Span const &span)
 Return a read-only identity view for a non-complex deferred view.
 

Variables

template<class Accessor >
constexpr bool uni20::accessor_applies_conjugation_v
 True when an accessor presents conjugated values.
 
template<AccessorPolicy Accessor, class Domain >
constexpr bool uni20::enable_accessor_in_domain< conjugated_accessor< Accessor >, Domain >
 Conjugation preserves the execution domains of the wrapped accessor.
 
template<class Mdspan >
constexpr bool uni20::mdspan_needs_conjugation_v
 True when an mdspan-like type's accessor presents conjugated values.
 

Detailed Description

Mdspan accessor adaptor for lazy complex conjugation.