35#ifndef _BLAZE_MATH_ADAPTORS_UNILOWERMATRIX_UNILOWERVALUE_H_
36#define _BLAZE_MATH_ADAPTORS_UNILOWERMATRIX_UNILOWERVALUE_H_
106template<
typename MT >
108 :
public Proxy< UniLowerValue<MT> >
115 template<
typename T >
116 struct BuiltinType {
using Type = INVALID_TYPE; };
124 template<
typename T >
125 struct ComplexType {
using Type =
typename T::value_type; };
135 , ComplexType<RepresentedType>
136 , BuiltinType<RepresentedType> >::Type;
162 template<
typename T >
inline UniLowerValue& operator+=(
const T& value );
163 template<
typename T >
inline UniLowerValue& operator-=(
const T& value );
164 template<
typename T >
inline UniLowerValue& operator*=(
const T& value );
165 template<
typename T >
inline UniLowerValue& operator/=(
const T& value );
172 inline void invert()
const;
234 if( !value.diagonal_ ) {
235 reset( *value.value_ );
279template<
typename MT >
302template<
typename MT >
309 *value_ = *ulv.value;
323template<
typename MT >
324template<
typename T >
345template<
typename MT >
346template<
typename T >
367template<
typename MT >
368template<
typename T >
389template<
typename MT >
390template<
typename T >
411template<
typename MT >
412template<
typename T >
439template<
typename MT >
455template<
typename MT >
468template<
typename MT >
489template<
typename MT >
513template<
typename MT >
516 return value_->real();
530template<
typename MT >
533 if( isRestricted() ) {
537 value_->real( value );
550template<
typename MT >
553 return value_->imag();
569template<
typename MT >
572 if( isRestricted() ) {
576 value_->imag( value );
592template<
typename MT >
605template<
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
Representation of a value within a sparse lower unitriangular matrix.
Definition: UniLowerValue.h:109
void invert() const
In-place inversion of the unilower value.
Definition: UniLowerValue.h:440
RepresentedType get() const noexcept
Access to the represented value.
Definition: UniLowerValue.h:456
bool isRestricted() const noexcept
Returns whether the value represents a restricted matrix element..
Definition: UniLowerValue.h:469
RepresentedType * value_
The represented value.
Definition: UniLowerValue.h:198
UniLowerValue & operator=(const UniLowerValue &ulv)
Copy assignment operator for UniLowerValue.
Definition: UniLowerValue.h:303
ValueType imag() const
Returns the imaginary part of the represented complex number.
Definition: UniLowerValue.h:551
ElementType_t< MT > RepresentedType
Type of the represented matrix element.
Definition: UniLowerValue.h:131
bool diagonal_
true in case the element is on the diagonal, false if not.
Definition: UniLowerValue.h:199
ValueType real() const
Returns the real part of the represented complex number.
Definition: UniLowerValue.h:514
typename If_t< IsComplex_v< RepresentedType >, ComplexType< RepresentedType >, BuiltinType< RepresentedType > >::Type ValueType
Value type of the represented complex element.
Definition: UniLowerValue.h:136
ValueType value_type
Value type of the represented complex element.
Definition: UniLowerValue.h:138
UniLowerValue(RepresentedType &value, bool diagonal)
Constructor for the UniLowerValue class.
Definition: UniLowerValue.h:280
Constraint on the data type.
Constraint on the data type.
Constraint on the data type.
decltype(auto) diagonal(Matrix< MT, SO > &matrix, RDAs... args)
Creating a view on the diagonal of the given matrix.
Definition: Band.h:380
#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_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_BE_SPARSE_MATRIX_TYPE(T)
Constraint on the data type.
Definition: SparseMatrix.h:61
#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
void invert(const UniLowerValue< MT > &value)
In-place inversion of the unilower value.
Definition: UniLowerValue.h:606
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.