#include "common.hpp" #include "array.hpp" #include "action.hpp" using namespace std::complex_literals; using namespace array; template <typename Scalar, typename Shape> void dump(Array<Scalar,Shape> Q) { for (size_t i = 0; i < Q.dim(0); ++i) { for (size_t j = 0; j < Q.dim(1); ++j) { for (size_t k = 0; k < Q.dim(2); ++k) { for (size_t l = 0; l < Q.dim(3); ++l) { std::cout << i << "," << j << "," << k << "," << l << " = " << Q(i,j,k,l) << std::endl; } } } } for (size_t i = 0; i < Q.size(); ++i) { std::cout << Q.data()[i] << std::endl; } } int main() { std::vector<double> v(10*10*2*2); Array<double,Shape<Dynamic,Dynamic,2,2> > Q0(v.data(), v.size(), {10,10,2,2}); auto Q = Q0.part(0u,1u); S_2(Q0); std::cout << "size = " << Q.size() << std::endl; dump(Q0); auto mat = Q.matrix(); mat = mat * mat * mat; static_assert(std::is_same<decltype(mat), Eigen::Map<Eigen::Matrix<double, 2, 2, Eigen::RowMajor>, Eigen::Aligned8 > >::value, "wrong type"); dump(Q0); return 0; }