1 #ifndef MPQC_MATH_TENSOR_CAST_HPP
2 #define MPQC_MATH_TENSOR_CAST_HPP
4 #include "mpqc/math/tensor/ref.hpp"
5 #include "mpqc/math/tensor/order.hpp"
10 template<
int N,
typename T>
11 Eigen::Map< Eigen::Matrix<T, Eigen::Dynamic, 1> >
12 vector_cast(TensorRef<T,N,TensorColumnMajor> &r) {
14 for (
int j = 0; j < N; ++j) {
17 return Eigen::Matrix<T, Eigen::Dynamic, 1>::Map(r.data(), n);
20 template<
int M,
int N,
typename T>
21 Eigen::Map< Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> >
22 matrix_cast(TensorRef<T,M+N,TensorRowMajor> &r) {
25 for (
int i = 0; i < M; ++i) {
28 for (
int j = 0; j < N; ++j) {
32 T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor
33 >::Map(r.data(), m, n);
36 template<
int M,
int N,
typename T>
37 Eigen::Map< Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> >
38 matrix_cast(TensorRef<T,M+N,TensorColumnMajor> &r) {
41 for (
int i = 0; i < M; ++i) {
44 for (
int j = 0; j < N; ++j) {
48 T, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor
49 >::Map(r.data(), m, n);