Имея вектор вещественных чисел c
и вектор целых чисел rw
, я хочу создать вектор z
с элементами z_i=c_i^rw_i
. Я пытался сделать это с помощью покомпонентной функции pow
, но получаю ошибку компилятора.
#include <Eigen/Core>
typedef Eigen::VectorXd RealVector;
typedef Eigen::VectorXi IntVector; // dynamically-sized vector of integers
RealVector c; c << 2, 3, 4, 5;
IntVector rw; rw << 6, 7, 8, 9;
RealVector z = c.pow(rw); **compile error**
Ошибка компилятора
error C2664: 'const Eigen::MatrixComplexPowerReturnValue<Derived> Eigen::MatrixBase<Derived>::pow(const std::complex<double> &) const': cannot convert argument 1 from 'IntVector' to 'const double &'
with
[
Derived=Eigen::Matrix<double,-1,1,0,-1,1>
]
c:\auc\sedanal\LammSolve.h(117): note: Reason: cannot convert from 'IntVector' to 'const double'
c:\auc\sedanal\LammSolve.h(117): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Что не так с этим кодом? И, предполагая, что это можно исправить, как мне выполнить ту же операцию, когда с является реальной матрицей, а не вектором, чтобы вычислить c_ij^b_i
для всех элементов с?
Компилятор — Visual Studio 2015, работающий под 64-битной Windows 7.