Я пытаюсь выяснить, является ли это ошибкой в Eigen или что-то, что я делаю неправильно. Я просто хочу, чтобы произведение точек двух комплексных векторов [1, i] и [1, -i]. Ответ 1 * 1 + i * (- i) = 2. Но Eigen дает нуль в качестве ответа. См код ниже:.dot() продукт для VectorXcd в Eigen C++
#include <iostream>
#include <sstream>
#include <vector>
#include <fstream>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <map>
#include <sys/sysinfo.h>
#include <algorithm>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main(void){
VectorXcd xd0(2);
complex<double> c_i(0.0 , 1.0);
xd0[0] = 1.0 ;
xd0[1] = c_i;
VectorXcd xd0conj = xd0.conjugate();
cout <<" vec is \n" << xd0 <<endl;
cout <<" conj vec is \n" << xd0conj <<endl;
cout << "eigen dot = " << (xd0conj).dot(xd0) <<endl;
complex<double> outVal = 0.0;
for(int a=0; a<xd0.size(); a++){
outVal += xd0[a]*xd0conj[a];
}
cout << "naive dot = " << outVal<<endl;
};