35#ifndef _BLAZE_MATH_ADAPTORS_UNIUPPERMATRIX_UPPERPROXY_H_
36#define _BLAZE_MATH_ADAPTORS_UNIUPPERMATRIX_UPPERPROXY_H_
102template<
typename MT >
104 :
public Proxy< UniUpperProxy<MT> >
116 template<
typename T >
117 struct BuiltinType {
using Type = INVALID_TYPE; };
125 template<
typename T >
126 struct ComplexType {
using Type =
typename T::value_type; };
137 , ComplexType<RepresentedType>
138 , BuiltinType<RepresentedType> >::Type;
164 template<
typename T >
inline const UniUpperProxy& operator+=(
const T& value )
const;
165 template<
typename T >
inline const UniUpperProxy& operator-=(
const T& value )
const;
166 template<
typename T >
inline const UniUpperProxy& operator*=(
const T& value )
const;
167 template<
typename T >
inline const UniUpperProxy& operator/=(
const T& value )
const;
168 template<
typename T >
inline const UniUpperProxy& operator%=(
const T& value )
const;
182 inline
void invert() const;
249 if( proxy.row_ < proxy.column_ ) {
250 reset( proxy.value_ );
296template<
typename MT >
323template<
typename MT >
326 if( isRestricted() ) {
347template<
typename MT >
348template<
typename T >
351 if( isRestricted() ) {
372template<
typename MT >
373template<
typename T >
376 if( isRestricted() ) {
397template<
typename MT >
398template<
typename T >
401 if( isRestricted() ) {
422template<
typename MT >
423template<
typename T >
426 if( isRestricted() ) {
447template<
typename MT >
448template<
typename T >
451 if( isRestricted() ) {
472template<
typename MT >
473template<
typename T >
476 if( isRestricted() ) {
500template<
typename MT >
524template<
typename MT >
529 if( column_ < row_ ) {
544template<
typename MT >
557template<
typename MT >
560 return column_ <= row_;
578template<
typename MT >
602template<
typename MT >
605 return value_.real();
621template<
typename MT >
624 if( isRestricted() ) {
628 value_.real( value );
641template<
typename MT >
644 return value_.imag();
660template<
typename MT >
663 if( isRestricted() ) {
667 value_.imag( value );
683template<
typename MT >
696template<
typename MT >
Header file for auxiliary alias declarations.
typename T::ElementType ElementType_t
Alias declaration for nested ElementType type definitions.
Definition: Aliases.h:190
Constraint on the data type.
Constraint on the data type.
Header file for the If class template.
Utility type for generic codes.
Header file for the invert shim.
Header file for the IsComplex type trait.
Header file for the isDefault shim.
Header file for the isOne shim.
Header file for the isReal shim.
Constraint on the data type.
Constraint on the data type.
Constraint on the data type.
Header file for the relaxation flag enumeration.
Constraint on the data type.
Constraint on the data type.
Constraint on the data type.
Constraint on the data type.
Proxy base class.
Definition: Proxy.h:169
Access proxy for upper unitriangular matrices.
Definition: UniUpperProxy.h:105
ValueType value_type
Value type of the represented complex element.
Definition: UniUpperProxy.h:140
void invert() const
In-place inversion of the represented element.
Definition: UniUpperProxy.h:525
bool isRestricted() const noexcept
Returns whether the proxy represents a restricted matrix element..
Definition: UniUpperProxy.h:558
size_t column_
Column index of the accessed matrix element.
Definition: UniUpperProxy.h:212
const UniUpperProxy * operator->() const noexcept
Direct access to the accessed matrix element.
Definition: UniUpperProxy.h:501
typename MT::Reference ReferenceType
Reference type of the underlying matrix type.
Definition: UniUpperProxy.h:109
ReferenceType value_
Reference to the accessed matrix element.
Definition: UniUpperProxy.h:210
size_t row_
Row index of the accessed matrix element.
Definition: UniUpperProxy.h:211
const UniUpperProxy & operator=(const UniUpperProxy &uup) const
Copy assignment operator for UniUpperProxy.
Definition: UniUpperProxy.h:324
ValueType imag() const
Returns the imaginary part of the represented complex number.
Definition: UniUpperProxy.h:642
typename If_t< IsComplex_v< RepresentedType >, ComplexType< RepresentedType >, BuiltinType< RepresentedType > >::Type ValueType
Value type of the represented complex element.
Definition: UniUpperProxy.h:138
RepresentedType get() const noexcept
Returning the value of the accessed matrix element.
Definition: UniUpperProxy.h:545
ElementType_t< MT > RepresentedType
Type of the represented matrix element.
Definition: UniUpperProxy.h:133
ValueType real() const
Returns the real part of the represented complex number.
Definition: UniUpperProxy.h:603
UniUpperProxy(MT &matrix, size_t row, size_t column)
Initialization constructor for a UniUpperProxy.
Definition: UniUpperProxy.h:297
Constraint on the data type.
Constraint on the data type.
Constraint on the data type.
decltype(auto) column(Matrix< MT, SO > &matrix, RCAs... args)
Creating a view on a specific column of the given matrix.
Definition: Column.h:137
#define BLAZE_CONSTRAINT_MUST_NOT_BE_VOLATILE(T)
Constraint on the data type.
Definition: Volatile.h:79
#define BLAZE_CONSTRAINT_MUST_NOT_BE_POINTER_TYPE(T)
Constraint on the data type.
Definition: Pointer.h:79
#define BLAZE_CONSTRAINT_MUST_NOT_BE_CONST(T)
Constraint on the data type.
Definition: Const.h:79
#define BLAZE_CONSTRAINT_MUST_NOT_BE_REFERENCE_TYPE(T)
Constraint on the data type.
Definition: Reference.h:79
#define BLAZE_CONSTRAINT_MUST_NOT_BE_SYMMETRIC_MATRIX_TYPE(T)
Constraint on the data type.
Definition: Symmetric.h:79
#define BLAZE_CONSTRAINT_MUST_BE_MATRIX_TYPE(T)
Constraint on the data type.
Definition: Matrix.h:61
#define BLAZE_CONSTRAINT_MUST_NOT_BE_VIEW_TYPE(T)
Constraint on the data type.
Definition: View.h:81
#define BLAZE_CONSTRAINT_MUST_NOT_BE_HERMITIAN_MATRIX_TYPE(T)
Constraint on the data type.
Definition: Hermitian.h:79
#define BLAZE_CONSTRAINT_MUST_NOT_BE_UPPER_MATRIX_TYPE(T)
Constraint on the data type.
Definition: Upper.h:81
#define BLAZE_CONSTRAINT_MUST_NOT_BE_COMPUTATION_TYPE(T)
Constraint on the data type.
Definition: Computation.h:81
#define BLAZE_CONSTRAINT_MUST_NOT_BE_LOWER_MATRIX_TYPE(T)
Constraint on the data type.
Definition: Lower.h:81
#define BLAZE_CONSTRAINT_MUST_BE_SCALAR_TYPE(T)
Constraint on the data type.
Definition: Scalar.h:61
#define BLAZE_CONSTRAINT_MUST_NOT_BE_TRANSFORMATION_TYPE(T)
Constraint on the data type.
Definition: Transformation.h:81
constexpr void clear(Matrix< MT, SO > &matrix)
Clearing the given matrix.
Definition: Matrix.h:960
constexpr void reset(Matrix< MT, SO > &matrix)
Resetting the given matrix.
Definition: Matrix.h:806
decltype(auto) row(Matrix< MT, SO > &, RRAs...)
Creating a view on a specific row of the given matrix.
Definition: Row.h:137
constexpr Type & get(StaticVector< Type, N, TF, AF, PF, Tag > &v) noexcept
Tuple-like index-based access the contents of a static vector.
Definition: StaticVector.h:3052
void invert(const UniUpperProxy< MT > &proxy)
In-place inversion of the represented element.
Definition: UniUpperProxy.h:697
typename If< Condition >::template Type< T1, T2 > If_t
Auxiliary alias template for the If class template.
Definition: If.h:108
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.
Definition: Exception.h:235
Header file for the exception macros of the math module.
Header file for the Proxy class.
Header file for the clear shim.
Header file for the isZero shim.
Header file for the reset shim.
Header file for basic type definitions.