1 #ifndef VIENNACL_LINALG_TOEPLITZ_MATRIX_OPERATIONS_HPP_
2 #define VIENNACL_LINALG_TOEPLITZ_MATRIX_OPERATIONS_HPP_
47 template<
class SCALARTYPE,
unsigned int ALIGNMENT,
unsigned int VECTOR_ALIGNMENT>
48 vector_expression<const toeplitz_matrix<SCALARTYPE, ALIGNMENT>,
49 const vector<SCALARTYPE, VECTOR_ALIGNMENT>,
67 template<
class SCALARTYPE,
unsigned int ALIGNMENT,
unsigned int VECTOR_ALIGNMENT>
76 viennacl::op_prod >(mat, vec);
87 template<
class SCALARTYPE,
unsigned int ALIGNMENT,
unsigned int VECTOR_ALIGNMENT>
96 viennacl::detail::fft::real_to_complex(mat.
elements(), tep, mat.
elements().size());
103 viennacl::detail::fft::real_to_complex(tmp, tmp2, vec.
size() * 2);
104 viennacl::linalg::convolve(tep, tmp2, tmp);
105 viennacl::detail::fft::complex_to_real(tmp, tmp2, vec.
size() * 2);
106 copy(tmp2.begin(), tmp2.begin() + vec.
size(), result.
begin());
117 template <
typename SCALARTYPE,
unsigned int ALIGNMENT>
118 template <
unsigned int MAT_ALIGNMENT>
122 viennacl::op_prod> & proxy)
125 if (proxy.rhs().handle() == this->
handle())
145 template <
typename SCALARTYPE,
unsigned int ALIGNMENT>
146 template <
unsigned int MAT_ALIGNMENT>
162 template <
typename SCALARTYPE,
unsigned int ALIGNMENT>
163 template <
unsigned int MAT_ALIGNMENT>
181 template <
typename SCALARTYPE,
unsigned int ALIGNMENT>
182 template <
unsigned int MAT_ALIGNMENT>
188 assert(proxy.get_lhs().size1() ==
size());
199 template <
typename SCALARTYPE,
unsigned int ALIGNMENT>
200 template <
unsigned int MAT_ALIGNMENT>
206 assert(proxy.get_lhs().size1() ==
size());
209 result = *
this - result;