1 #ifndef VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_
2 #define VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_
46 template<
typename LHS,
typename RHS,
typename OP>
56 template<
typename ScalarType>
57 struct MATRIX_SIZE_DEDUCER<const viennacl::
vector_base<ScalarType>,
70 template<
typename LHS,
typename RHS,
typename OP,
typename ScalarType>
71 struct MATRIX_SIZE_DEDUCER<const viennacl::matrix_expression<const LHS, const RHS, OP>,
83 template<
typename T,
typename ScalarType>
84 struct MATRIX_SIZE_DEDUCER<const viennacl::matrix_base<T>,
97 template<
typename LHS,
typename RHS,
typename OP,
typename ScalarType>
98 struct MATRIX_SIZE_DEDUCER<const viennacl::matrix_expression<const LHS, const RHS, OP>,
110 template<
typename T,
typename ScalarType>
111 struct MATRIX_SIZE_DEDUCER<const viennacl::matrix_base<T>,
124 struct MATRIX_SIZE_DEDUCER<const viennacl::vector_base<T>,
129 const int k) {
return lhs.
size() +
static_cast<vcl_size_t>(std::fabs(
double(k))); }
132 const int k) {
return lhs.
size() +
static_cast<vcl_size_t>(std::fabs(
double(k))); }
136 template<
typename MatrixType>
137 struct MATRIX_SIZE_DEDUCER<MatrixType,
142 const MatrixType & ) {
return lhs.size2(); }
144 const MatrixType & ) {
return lhs.size1(); }
148 template<
typename ScalarType,
typename T1>
149 struct MATRIX_SIZE_DEDUCER<const viennacl::matrix_expression<T1,
156 op_trans>
const & lhs,
166 template<
typename ScalarType,
typename T2>
167 struct MATRIX_SIZE_DEDUCER<const viennacl::matrix_base<ScalarType>,
175 op_trans>
const & ) {
return lhs.
size1(); }
179 op_trans>
const & rhs) {
return rhs.lhs().size1(); }
183 template<
typename T1,
typename T2>
184 struct MATRIX_SIZE_DEDUCER<const viennacl::matrix_expression<T1,
194 RHSType
const & ) {
return lhs.lhs().size2(); }
196 RHSType
const & rhs) {
return rhs.lhs().size1(); }
A tag class representing multiplication by a scalar.
Adapter classes for sparse matrices made of the STL type std::vector >
A tag class representing a matrix given by a vector placed on a certain (off-)diagonal.
Expression template class for representing a tree of expressions which ultimately result in a matrix...
This file provides the forward declarations for the main types used within ViennaCL.
A tag class representing division.
Common base class for dense vectors, vector ranges, and vector slices.
A tag class representing matrix-matrix products.
size_type size2() const
Returns the number of columns.
size_type size1() const
Returns the number of rows.
RHS & rhs() const
Get right hand side operand.
A tag class representing matrix-vector products and element-wise multiplications. ...
size_type size() const
Returns the length of the vector (cf. std::vector)
LHS & lhs() const
Get left hand side operand.