![]() |
Reference to a specific row of a dense matrix.The DenseRow template represents a reference to a specific row of a dense matrix primitive. The type of the dense matrix is specified via the first template parameter: More...
#include <DenseRow.h>
Inherits blaze::DenseVector< DenseRow< MT, SO, SF >, true >, and blaze::Row.
Public Types | |
enum | { vectorizable = MT::vectorizable } |
Compilation switch for the expression template evaluation strategy. | |
enum | { smpAssignable = MT::smpAssignable } |
Compilation switch for the expression template assignment strategy. | |
typedef DenseRow< MT, SO, SF > | This |
Type of this DenseRow instance. | |
typedef RowTrait< MT >::Type | ResultType |
Result type for expression template evaluations. | |
typedef ResultType::TransposeType | TransposeType |
Transpose type for expression template evaluations. | |
typedef MT::ElementType | ElementType |
Type of the row elements. | |
typedef IT::Type | IntrinsicType |
Intrinsic type of the row elements. | |
typedef MT::ReturnType | ReturnType |
Return type for expression template evaluations. | |
typedef const DenseRow & | CompositeType |
Data type for composite expression templates. | |
typedef MT::ConstReference | ConstReference |
Reference to a constant row value. | |
typedef If< IsConst< MT >, ConstReference, typename MT::Reference >::Type | Reference |
Reference to a non-constant row value. | |
typedef const ElementType * | ConstPointer |
Pointer to a constant row value. | |
typedef If< Or< IsConst< MT >, Not< HasMutableDataAccess< MT > > >, ConstPointer, ElementType * >::Type | Pointer |
Pointer to a non-constant row value. | |
typedef MT::ConstIterator | ConstIterator |
Iterator over constant elements. | |
typedef If< IsConst< MT >, ConstIterator, typename MT::Iterator >::Type | Iterator |
Iterator over non-constant elements. | |
typedef VT | VectorType |
Type of the vector. | |
Public Member Functions | |
template<typename VT > | |
DenseRow< MT, SO, SF > & | operator= (const Vector< VT, true > &rhs) |
Assignment operator for different vectors. More... | |
template<typename VT > | |
DenseRow< MT, SO, SF > & | operator+= (const Vector< VT, true > &rhs) |
Addition assignment operator for the addition of a vector ( ![]() | |
template<typename VT > | |
DenseRow< MT, SO, SF > & | operator-= (const Vector< VT, true > &rhs) |
Subtraction assignment operator for the subtraction of a vector ( ![]() | |
template<typename VT > | |
DenseRow< MT, SO, SF > & | operator*= (const DenseVector< VT, true > &rhs) |
Multiplication assignment operator for the multiplication of a dense vector ( ![]() | |
template<typename VT > | |
DenseRow< MT, SO, SF > & | operator*= (const SparseVector< VT, true > &rhs) |
Multiplication assignment operator for the multiplication of a sparse vector ( ![]() | |
template<typename Other > | |
EnableIf< IsNumeric< Other >, DenseRow< MT, SO, SF > >::Type & | operator*= (Other rhs) |
Multiplication assignment operator for the multiplication between a dense row and a scalar value ( ![]() | |
template<typename Other > | |
EnableIf< IsNumeric< Other >, DenseRow< MT, SO, SF > >::Type & | operator/= (Other rhs) |
Division assignment operator for the division of a dense row by a scalar value ( ![]() | |
template<typename Other > | |
DenseRow< MT, SO, SF > & | scale (const Other &scalar) |
Scaling of the row by the scalar value scalar ( ![]() | |
template<typename VT > | |
DisableIf< typename DenseRow< MT, SO, SF >::BLAZE_TEMPLATE VectorizedAssign< VT > >::Type | assign (const DenseVector< VT, true > &rhs) |
Default implementation of the assignment of a dense vector. More... | |
template<typename VT > | |
EnableIf< typename DenseRow< MT, SO, SF >::BLAZE_TEMPLATE VectorizedAssign< VT > >::Type | assign (const DenseVector< VT, true > &rhs) |
Intrinsic optimized implementation of the assignment of a dense vector. More... | |
template<typename VT > | |
DisableIf< typename DenseRow< MT, SO, SF >::BLAZE_TEMPLATE VectorizedAddAssign< VT > >::Type | addAssign (const DenseVector< VT, true > &rhs) |
Default implementation of the addition assignment of a dense vector. More... | |
template<typename VT > | |
EnableIf< typename DenseRow< MT, SO, SF >::BLAZE_TEMPLATE VectorizedAddAssign< VT > >::Type | addAssign (const DenseVector< VT, true > &rhs) |
Intrinsic optimized implementation of the addition assignment of a dense vector. More... | |
template<typename VT > | |
DisableIf< typename DenseRow< MT, SO, SF >::BLAZE_TEMPLATE VectorizedSubAssign< VT > >::Type | subAssign (const DenseVector< VT, true > &rhs) |
Default implementation of the subtraction assignment of a dense vector. More... | |
template<typename VT > | |
EnableIf< typename DenseRow< MT, SO, SF >::BLAZE_TEMPLATE VectorizedSubAssign< VT > >::Type | subAssign (const DenseVector< VT, true > &rhs) |
Intrinsic optimized implementation of the subtraction assignment of a dense vector. More... | |
template<typename VT > | |
DisableIf< typename DenseRow< MT, SO, SF >::BLAZE_TEMPLATE VectorizedMultAssign< VT > >::Type | multAssign (const DenseVector< VT, true > &rhs) |
Default implementation of the multiplication assignment of a dense vector. More... | |
template<typename VT > | |
EnableIf< typename DenseRow< MT, SO, SF >::BLAZE_TEMPLATE VectorizedMultAssign< VT > >::Type | multAssign (const DenseVector< VT, true > &rhs) |
Intrinsic optimized implementation of the multiplication assignment of a dense vector. More... | |
BLAZE_ALWAYS_INLINE VectorType & | operator~ () |
Conversion operator for non-constant vectors. More... | |
BLAZE_ALWAYS_INLINE const VectorType & | operator~ () const |
Conversion operator for constant vectors. More... | |
Constructors | |
DenseRow (MT &matrix, size_t index) | |
The constructor for DenseRow. More... | |
Data access functions | |
Reference | operator[] (size_t index) |
Subscript operator for the direct access to the row elements. More... | |
ConstReference | operator[] (size_t index) const |
Subscript operator for the direct access to the row elements. More... | |
Reference | at (size_t index) |
Checked access to the row elements. More... | |
ConstReference | at (size_t index) const |
Checked access to the row elements. More... | |
Pointer | data () |
Low-level data access to the row elements. More... | |
ConstPointer | data () const |
Low-level data access to the row elements. More... | |
Iterator | begin () |
Returns an iterator to the first element of the row. More... | |
ConstIterator | begin () const |
Returns an iterator to the first element of the row. More... | |
ConstIterator | cbegin () const |
Returns an iterator to the first element of the row. More... | |
Iterator | end () |
Returns an iterator just past the last element of the row. More... | |
ConstIterator | end () const |
Returns an iterator just past the last element of the row. More... | |
ConstIterator | cend () const |
Returns an iterator just past the last element of the row. More... | |
Assignment operators | |
DenseRow & | operator= (const ElementType &rhs) |
Homogenous assignment to all row elements. More... | |
DenseRow & | operator= (const DenseRow &rhs) |
Copy assignment operator for DenseRow. More... | |
template<typename VT > | |
DenseRow & | operator= (const Vector< VT, true > &rhs) |
template<typename VT > | |
DenseRow & | operator+= (const Vector< VT, true > &rhs) |
template<typename VT > | |
DenseRow & | operator-= (const Vector< VT, true > &rhs) |
template<typename VT > | |
DenseRow & | operator*= (const DenseVector< VT, true > &rhs) |
template<typename VT > | |
DenseRow & | operator*= (const SparseVector< VT, true > &rhs) |
template<typename Other > | |
EnableIf< IsNumeric< Other >, DenseRow >::Type & | operator*= (Other rhs) |
template<typename Other > | |
EnableIf< IsNumeric< Other >, DenseRow >::Type & | operator/= (Other rhs) |
Utility functions | |
size_t | size () const |
Returns the current size/dimension of the row. More... | |
size_t | capacity () const |
Returns the maximum capacity of the dense row. More... | |
size_t | nonZeros () const |
Returns the number of non-zero elements in the row. More... | |
void | reset () |
Reset to the default initial values. More... | |
template<typename Other > | |
DenseRow & | scale (const Other &scalar) |
Expression template evaluation functions | |
template<typename Other > | |
bool | canAlias (const Other *alias) const |
Returns whether the dense row can alias with the given address alias. More... | |
template<typename MT2 , bool SO2, bool SF2> | |
bool | canAlias (const DenseRow< MT2, SO2, SF2 > *alias) const |
Returns whether the dense row can alias with the given dense row alias. More... | |
template<typename Other > | |
bool | isAliased (const Other *alias) const |
Returns whether the dense row is aliased with the given address alias. More... | |
template<typename MT2 , bool SO2, bool SF2> | |
bool | isAliased (const DenseRow< MT2, SO2, SF2 > *alias) const |
Returns whether the dense row is aliased with the given dense row alias. More... | |
bool | isAligned () const |
Returns whether the dense row is properly aligned in memory. More... | |
bool | canSMPAssign () const |
Returns whether the dense row can be used in SMP assignments. More... | |
BLAZE_ALWAYS_INLINE IntrinsicType | load (size_t index) const |
Load of an intrinsic element of the dense row. More... | |
BLAZE_ALWAYS_INLINE IntrinsicType | loada (size_t index) const |
Aligned load of an intrinsic element of the dense row. More... | |
BLAZE_ALWAYS_INLINE IntrinsicType | loadu (size_t index) const |
Unaligned load of an intrinsic element of the dense row. More... | |
BLAZE_ALWAYS_INLINE void | store (size_t index, const IntrinsicType &value) |
Store of an intrinsic element of the dense row. More... | |
BLAZE_ALWAYS_INLINE void | storea (size_t index, const IntrinsicType &value) |
Aligned store of an intrinsic element of the dense row. More... | |
BLAZE_ALWAYS_INLINE void | storeu (size_t index, const IntrinsicType &value) |
Unligned store of an intrinsic element of the dense row. More... | |
BLAZE_ALWAYS_INLINE void | stream (size_t index, const IntrinsicType &value) |
Aligned, non-temporal store of an intrinsic element of the dense row. More... | |
template<typename VT > | |
DisableIf< VectorizedAssign< VT > >::Type | assign (const DenseVector< VT, true > &rhs) |
template<typename VT > | |
EnableIf< VectorizedAssign< VT > >::Type | assign (const DenseVector< VT, true > &rhs) |
template<typename VT > | |
void | assign (const SparseVector< VT, true > &rhs) |
Default implementation of the assignment of a sparse vector. More... | |
template<typename VT > | |
DisableIf< VectorizedAddAssign< VT > >::Type | addAssign (const DenseVector< VT, true > &rhs) |
template<typename VT > | |
EnableIf< VectorizedAddAssign< VT > >::Type | addAssign (const DenseVector< VT, true > &rhs) |
template<typename VT > | |
void | addAssign (const SparseVector< VT, true > &rhs) |
Default implementation of the addition assignment of a sparse vector. More... | |
template<typename VT > | |
DisableIf< VectorizedSubAssign< VT > >::Type | subAssign (const DenseVector< VT, true > &rhs) |
template<typename VT > | |
EnableIf< VectorizedSubAssign< VT > >::Type | subAssign (const DenseVector< VT, true > &rhs) |
template<typename VT > | |
void | subAssign (const SparseVector< VT, true > &rhs) |
Default implementation of the subtraction assignment of a sparse vector. More... | |
template<typename VT > | |
DisableIf< VectorizedMultAssign< VT > >::Type | multAssign (const DenseVector< VT, true > &rhs) |
template<typename VT > | |
EnableIf< VectorizedMultAssign< VT > >::Type | multAssign (const DenseVector< VT, true > &rhs) |
template<typename VT > | |
void | multAssign (const SparseVector< VT, true > &rhs) |
Default implementation of the multiplication assignment of a sparse vector. More... | |
Private Types | |
typedef If< IsExpression< MT >, MT, MT & >::Type | Operand |
Composite data type of the dense matrix expression. | |
typedef IntrinsicTrait< typename MT::ElementType > | IT |
Intrinsic trait for the row element type. | |
Private Attributes | |
Member variables | |
Operand | matrix_ |
The dense matrix containing the row. | |
const size_t | row_ |
The index of the row in the matrix. | |
Reference to a specific row of a dense matrix.
The DenseRow template represents a reference to a specific row of a dense matrix primitive. The type of the dense matrix is specified via the first template parameter:
A reference to a dense row can be created very conveniently via the row()
function. This reference can be treated as any other row vector, i.e. it can be assigned to, it can be copied from, and it can be used in arithmetic operations. The reference can also be used on both sides of an assignment: The row can either be used as an alias to grant write access to a specific row of a matrix primitive on the left-hand side of an assignment or to grant read-access to a specific row of a matrix primitive or expression on the right-hand side of an assignment. The following example demonstrates this in detail:
A dense row can be used like any other row vector. For instance, the elements of the dense row can be directly accessed with the subscript operator.
The numbering of the row elements is
where N is the number of columns of the referenced matrix. Alternatively, the elements of a row can be traversed via iterators. Just as with vectors, in case of non-const rows, begin()
and end()
return an Iterator, which allows a manipulation of the non-zero values, in case of constant rows a ConstIterator is returned:
The current number of row elements can be obtained via the size()
function, the current capacity via the capacity()
function, and the number of non-zero elements via the nonZeros()
function. However, since rows are references to specific rows of a matrix, several operations are not possible on views, such as resizing and swapping:
The following example gives an impression of the use of DenseRow within arithmetic operations. All operations (addition, subtraction, multiplication, scaling, ...) can be performed on all possible combinations of dense and sparse vectors with fitting element types:
It is especially noteworthy that row views can be created for both row-major and column-major matrices. Whereas the interface of a row-major matrix only allows to traverse a row directly and the interface of a column-major matrix only allows to traverse a column, via views it is also possible to traverse a row of a column-major matrix. For instance:
However, please note that creating a row view on a matrix stored in a column-major fashion can result in a considerable performance decrease in comparison to a row view on a matrix with row-major storage format. This is due to the non-contiguous storage of the matrix elements. Therefore care has to be taken in the choice of the most suitable storage order:
Although Blaze performs the resulting vector/matrix multiplication as efficiently as possible using a row-major storage order for matrix A would result in a more efficient evaluation.
|
inlineexplicit |
The constructor for DenseRow.
matrix | The matrix containing the row. |
index | The index of the row. |
std::invalid_argument | Invalid row access index. |
|
inline |
Default implementation of the addition assignment of a sparse vector.
rhs | The right-hand side sparse vector to be added. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Default implementation of the addition assignment of a dense vector.
rhs | The right-hand side dense vector to be added. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Intrinsic optimized implementation of the addition assignment of a dense vector.
rhs | The right-hand side dense vector to be added. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Default implementation of the assignment of a sparse vector.
rhs | The right-hand side sparse vector to be assigned. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Default implementation of the assignment of a dense vector.
rhs | The right-hand side dense vector to be assigned. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Intrinsic optimized implementation of the assignment of a dense vector.
rhs | The right-hand side dense vector to be assigned. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Checked access to the row elements.
index | Access index. The index must be smaller than the number of matrix columns. |
std::out_of_range | Invalid row access index. |
In contrast to the subscript operator this function always performs a check of the given access index.
|
inline |
Checked access to the row elements.
index | Access index. The index must be smaller than the number of matrix columns. |
std::out_of_range | Invalid row access index. |
In contrast to the subscript operator this function always performs a check of the given access index.
|
inline |
Returns an iterator to the first element of the row.
This function returns an iterator to the first element of the row.
|
inline |
Returns an iterator to the first element of the row.
This function returns an iterator to the first element of the row.
|
inline |
Returns whether the dense row can alias with the given address alias.
alias | The alias to be checked. |
This function returns whether the given address can alias with the dense row. In contrast to the isAliased() function this function is allowed to use compile time expressions to optimize the evaluation.
|
inline |
Returns whether the dense row can alias with the given dense row alias.
alias | The alias to be checked. |
This function returns whether the given address can alias with the dense row. In contrast to the isAliased() function this function is allowed to use compile time expressions to optimize the evaluation.
|
inline |
Returns whether the dense row can be used in SMP assignments.
This function returns whether the dense row can be used in SMP assignments. In contrast to the smpAssignable member enumeration, which is based solely on compile time information, this function additionally provides runtime information (as for instance the current size of the dense row).
|
inline |
Returns the maximum capacity of the dense row.
|
inline |
Returns an iterator to the first element of the row.
This function returns an iterator to the first element of the row.
|
inline |
Returns an iterator just past the last element of the row.
This function returns an iterator just past the last element of the row.
|
inline |
Low-level data access to the row elements.
This function returns a pointer to the internal storage of the dense row. Note that in case of a column-major matrix you can NOT assume that the row elements lie adjacent to each other!
|
inline |
Low-level data access to the row elements.
This function returns a pointer to the internal storage of the dense row. Note that in case of a column-major matrix you can NOT assume that the row elements lie adjacent to each other!
|
inline |
Returns an iterator just past the last element of the row.
This function returns an iterator just past the last element of the row.
|
inline |
Returns an iterator just past the last element of the row.
This function returns an iterator just past the last element of the row.
|
inline |
Returns whether the dense row is aliased with the given address alias.
alias | The alias to be checked. |
This function returns whether the given address is aliased with the dense row. In contrast to the canAlias() function this function is not allowed to use compile time expressions to optimize the evaluation.
|
inline |
Returns whether the dense row is aliased with the given dense row alias.
alias | The alias to be checked. |
This function returns whether the given address is aliased with the dense row. In contrast to the canAlias() function this function is not allowed to use compile time expressions to optimize the evaluation.
|
inline |
Returns whether the dense row is properly aligned in memory.
This function returns whether the dense row is guaranteed to be properly aligned in memory, i.e. whether the beginning and the end of the dense row are guaranteed to conform to the alignment restrictions of the element type Type.
BLAZE_ALWAYS_INLINE DenseRow< MT, SO, SF >::IntrinsicType blaze::DenseRow< MT, SO, SF >::load | ( | size_t | index | ) | const |
Load of an intrinsic element of the dense row.
index | Access index. The index must be smaller than the number of matrix columns. |
This function performs a load of a specific intrinsic element of the dense row. The index must be smaller than the number of matrix columns. This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
BLAZE_ALWAYS_INLINE DenseRow< MT, SO, SF >::IntrinsicType blaze::DenseRow< MT, SO, SF >::loada | ( | size_t | index | ) | const |
Aligned load of an intrinsic element of the dense row.
index | Access index. The index must be smaller than the number of matrix columns. |
This function performs an aligned load of a specific intrinsic element of the dense row. The index must be smaller than the number of matrix columns. This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
BLAZE_ALWAYS_INLINE DenseRow< MT, SO, SF >::IntrinsicType blaze::DenseRow< MT, SO, SF >::loadu | ( | size_t | index | ) | const |
Unaligned load of an intrinsic element of the dense row.
index | Access index. The index must be smaller than the number of matrix columns. |
This function performs an unaligned load of a specific intrinsic element of the dense row. The index must be smaller than the number of matrix columns. This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
|
inline |
Default implementation of the multiplication assignment of a sparse vector.
rhs | The right-hand side sparse vector to be multiplied. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Default implementation of the multiplication assignment of a dense vector.
rhs | The right-hand side dense vector to be multiplied. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Intrinsic optimized implementation of the multiplication assignment of a dense vector.
rhs | The right-hand side dense vector to be multiplied. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Returns the number of non-zero elements in the row.
Note that the number of non-zero elements is always less than or equal to the current number of columns of the matrix containing the row.
|
inline |
Multiplication assignment operator for the multiplication of a dense vector ( ).
rhs | The right-hand side dense vector to be multiplied with the dense row. |
std::invalid_argument | Vector sizes do not match. |
std::invalid_argument | Invalid assignment to restricted matrix. |
In case the current sizes of the two vectors don't match, a std::invalid_argument exception is thrown.
|
inline |
Multiplication assignment operator for the multiplication of a sparse vector ( ).
rhs | The right-hand side sparse vector to be multiplied with the dense row. |
std::invalid_argument | Vector sizes do not match. |
std::invalid_argument | Invalid assignment to restricted matrix. |
In case the current sizes of the two vectors don't match, a std::invalid_argument exception is thrown.
|
inline |
Multiplication assignment operator for the multiplication between a dense row and a scalar value ( ).
rhs | The right-hand side scalar value for the multiplication. |
This operator cannot be used for rows on lower or upper unitriangular matrices. The attempt to scale such a row results in a compilation error!
|
inline |
Addition assignment operator for the addition of a vector ( ).
rhs | The right-hand side vector to be added to the dense row. |
std::invalid_argument | Vector sizes do not match. |
std::invalid_argument | Invalid assignment to restricted matrix. |
In case the current sizes of the two vectors don't match, a std::invalid_argument exception is thrown. Also, if the underlying matrix MT is a lower or upper triangular matrix and the assignment would violate its lower or upper property, respectively, a std::invalid_argument exception is thrown.
|
inline |
Subtraction assignment operator for the subtraction of a vector ( ).
rhs | The right-hand side vector to be subtracted from the dense row. |
std::invalid_argument | Vector sizes do not match. |
std::invalid_argument | Invalid assignment to restricted matrix. |
In case the current sizes of the two vectors don't match, a std::invalid_argument exception is thrown. Also, if the underlying matrix MT is a lower or upper triangular matrix and the assignment would violate its lower or upper property, respectively, a std::invalid_argument exception is thrown.
|
inline |
Division assignment operator for the division of a dense row by a scalar value ( ).
rhs | The right-hand side scalar value for the division. |
This operator cannot be used for rows on lower or upper unitriangular matrices. The attempt to scale such a row results in a compilation error!
|
inline |
Homogenous assignment to all row elements.
rhs | Scalar value to be assigned to all row elements. |
This function homogeneously assigns the given value to all elements of the row. Note that in case the underlying dense matrix is a lower/upper matrix only lower/upper and diagonal elements of the underlying matrix are modified.
|
inline |
Copy assignment operator for DenseRow.
rhs | Dense row to be copied. |
std::invalid_argument | Row sizes do not match. |
std::invalid_argument | Invalid assignment to restricted matrix. |
In case the current sizes of the two rows don't match, a std::invalid_argument exception is thrown. Also, if the underlying matrix MT is a lower or upper triangular matrix and the assignment would violate its lower or upper property, respectively, a std::invalid_argument exception is thrown.
|
inline |
Assignment operator for different vectors.
rhs | Vector to be assigned. |
std::invalid_argument | Vector sizes do not match. |
std::invalid_argument | Invalid assignment to restricted matrix. |
In case the current sizes of the two vectors don't match, a std::invalid_argument exception is thrown. Also, if the underlying matrix MT is a lower or upper triangular matrix and the assignment would violate its lower or upper property, respectively, a std::invalid_argument exception is thrown.
|
inline |
Subscript operator for the direct access to the row elements.
index | Access index. The index must be smaller than the number of matrix columns. |
This function only performs an index check in case BLAZE_USER_ASSERT() is active. In contrast, the at() function is guaranteed to perform a check of the given access index.
|
inline |
Subscript operator for the direct access to the row elements.
index | Access index. The index must be smaller than the number of matrix columns. |
This function only performs an index check in case BLAZE_USER_ASSERT() is active. In contrast, the at() function is guaranteed to perform a check of the given access index.
|
inlineinherited |
Conversion operator for non-constant vectors.
|
inlineinherited |
Conversion operator for constant vectors.
|
inline |
Reset to the default initial values.
|
inline |
Scaling of the row by the scalar value scalar ( ).
scalar | The scalar value for the row scaling. |
This function scales all elements of the row by the given scalar value scalar. Note that the function cannot be used to scale a row on a lower or upper unitriangular matrix. The attempt to scale such a row results in a compile time error!
|
inline |
Returns the current size/dimension of the row.
BLAZE_ALWAYS_INLINE void blaze::DenseRow< MT, SO, SF >::store | ( | size_t | index, |
const IntrinsicType & | value | ||
) |
Store of an intrinsic element of the dense row.
index | Access index. The index must be smaller than the number of matrix columns. |
value | The intrinsic element to be stored. |
This function performs a store a specific intrinsic element of the dense row. The index must be smaller than the number of matrix columns. This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
BLAZE_ALWAYS_INLINE void blaze::DenseRow< MT, SO, SF >::storea | ( | size_t | index, |
const IntrinsicType & | value | ||
) |
Aligned store of an intrinsic element of the dense row.
index | Access index. The index must be smaller than the number of matrix columns. |
value | The intrinsic element to be stored. |
This function performs an aligned store a specific intrinsic element of the dense row. The index must be smaller than the number of matrix columns. This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
BLAZE_ALWAYS_INLINE void blaze::DenseRow< MT, SO, SF >::storeu | ( | size_t | index, |
const IntrinsicType & | value | ||
) |
Unligned store of an intrinsic element of the dense row.
index | Access index. The index must be smaller than the number of matrix columns. |
value | The intrinsic element to be stored. |
This function performs an unaligned store a specific intrinsic element of the dense row. The index must be smaller than the number of matrix columns. This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
BLAZE_ALWAYS_INLINE void blaze::DenseRow< MT, SO, SF >::stream | ( | size_t | index, |
const IntrinsicType & | value | ||
) |
Aligned, non-temporal store of an intrinsic element of the dense row.
index | Access index. The index must be smaller than the number of matrix columns. |
value | The intrinsic element to be stored. |
This function performs an aligned, non-temporal store a specific intrinsic element of the dense row. The index must be smaller than the number of matrix columns. This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
|
inline |
Default implementation of the subtraction assignment of a sparse vector.
rhs | The right-hand side sparse vector to be subtracted. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Default implementation of the subtraction assignment of a dense vector.
rhs | The right-hand side dense vector to be subtracted. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Intrinsic optimized implementation of the subtraction assignment of a dense vector.
rhs | The right-hand side dense vector to be subtracted. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.