Код: Выделить всё
#pragma once
#include
#include
#include
Eigen::MatrixXcf otimes(Eigen::MatrixXcf& A, Eigen::MatrixXcf& B) {
//Get Number of Columns
int C_col = A.cols() * B.cols();
int C_row = A.rows() * B.rows();
//Define new matrix
Eigen::MatrixXcf C(C_row, C_col);
//Populate C
Eigen::Index i_A = 0;
Eigen::Index i_B = 0;
Eigen::Index j_A = 0;
Eigen::Index j_B = 0;
for (int i = 0; i < C_row; i++) {
for (int j = 0; j < C_col; j++) {
i_A = Eigen::Index(floor(i / B.cols()));
j_A = Eigen::Index(floor(j / B.cols()));
i_B = Eigen::Index(i % A.cols());
j_B = Eigen::Index(j % A.cols());
C(i,j) = A(i_A,j_A)* B(i_B,j_B);
}
}
return C;
}
Однако всякий раз, когда я пытаюсь поместите некоторые другие типы матриц, например. один «Matrix2cf» я получаю ошибки компиляции. Например,
Код: Выделить всё
#pragma once
#include
#include
using namespace std::complex_literals;
namespace Pauli {
Eigen::Matrix2cf Px{
{0, 1},
{1, 0}
};
Eigen::Matrix2cf Py{
{0, -1.0if},
{1.0if, 0}
};
Eigen::Matrix2cf Pz{
{1, 0},
{0, -1}
};
}
otimes(Pauli::Pz, Pauli::Pz)
Код: Выделить всё
Severity Code Description Project File Line Suppression State Details
Error (active) E0434 a reference of type "Eigen::MatrixXcf &" (aka "Eigen::Matrix &") (not const-qualified) cannot be initialized with a value of type "Eigen::Matrix2cf" (aka "Eigen::Matrix") DMRG.exe - x64 Debug
Кроме того, попытка пройти через единичную матрицу
Код: Выделить всё
int n = 2;
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79369941/eigen-writing-a-function-that-takes-all-complex-matrices-as-inputs[/url]