Мне было интересно, почему это не работает с Эйгеном:
MatrixXd A = MatrixXd::Random(3, 10);
Array<double, 1, Dynamic> x = Array<double, 1, Dynamic>::Random(10);
MatrixXd y = x.matrix() * A.transpose();
пока это работает:
MatrixXd A = MatrixXd::Random(3, 10);
Array<double, 1, Dynamic> x = Array<double, 1, Dynamic>::Random(10);
MatrixXd y = MatrixXd(x) * A.transpose();
и это тоже работает:
MatrixXd A = MatrixXd::Random(3, 10);
ArrayXXd x = Array<double, 1, Dynamic>::Random(10);
MatrixXd y = x.matrix() * A.transpose();
Мой компилятор выдает мне следующее сообщение об ошибке для первого примера (clang-500.2.79):
code / Eigen / src / Core / ArrayWrapper.h: 178: 56: ошибка: не может инициализировать возвращаемый объект типа «ScalarWithConstIfNotLvalue *» (он же «double *») со значением типа «const Scalar *» (он же «const double *») встроенный ScalarWithConstIfNotLvalue * data () {return m_expression.data (); }
Задача ещё не решена.
Других решений пока нет …