6 Eigen::VectorXd
const& x2)
const
12 Eigen::VectorXd x1Part(
dimInds.size());
13 Eigen::VectorXd x2Part(
dimInds.size());
15 for(
int i=0; i<
dimInds.size(); ++i){
26 Eigen::MatrixXd output(
coDim*x.cols(),
coDim*x.cols());
32 Eigen::MatrixXd
const& x2)
const
34 Eigen::MatrixXd output(
coDim*x1.cols(),
coDim*x2.cols());
40 Eigen::Ref<Eigen::MatrixXd> output)
const
42 assert(output.rows()==x.cols()*
coDim);
43 assert(output.cols()==x.cols()*
coDim);
45 const int numPts = x.cols();
47 Eigen::MatrixXd xParts(
dimInds.size(), x.cols());
48 for(
int i=0; i<
dimInds.size(); ++i)
49 xParts.row(i) = x.row(
dimInds.at(i));
51 #pragma omp parallel for
52 for(
int i=0; i<numPts; ++i){
54 for(
int j=0; j<i; ++j){
65 Eigen::MatrixXd
const& x2,
66 Eigen::Ref<Eigen::MatrixXd> output)
const
68 int numRows = x1.cols();
69 int numCols = x2.cols();
71 assert(output.rows()==numRows*
coDim);
72 assert(output.cols()==numCols*
coDim);
74 Eigen::MatrixXd x1Parts(
dimInds.size(), x1.cols());
75 Eigen::MatrixXd x2Parts(
dimInds.size(), x2.cols());
76 for(
int i=0; i<
dimInds.size(); ++i){
77 x1Parts.row(i) = x1.row(
dimInds.at(i));
78 x2Parts.row(i) = x2.row(
dimInds.at(i));
80 #pragma omp parallel for
81 for(
int i=0; i<numRows; ++i){
82 for(
int j=0; j<numCols; ++j)
88 Eigen::MatrixXd
const& x2,
89 std::vector<int>
const& wrts,
90 Eigen::Ref<Eigen::MatrixXd> output)
const
92 int numRows = x1.cols();
93 int numCols = x2.cols();
97 Eigen::MatrixXd x1Parts(
dimInds.size(), x1.cols());
98 Eigen::MatrixXd x2Parts(
dimInds.size(), x2.cols());
99 for(
int i=0; i<
dimInds.size(); ++i){
100 x1Parts.row(i) = x1.row(
dimInds.at(i));
101 x2Parts.row(i) = x2.row(
dimInds.at(i));
104 #pragma omp parallel for
105 for(
int i=0; i<numRows; ++i){
106 for(
int j=0; j<numCols; ++j){
113 Eigen::VectorXd
const& x2,
114 std::vector<int>
const& wrts)
const
116 int numRows = x1.cols();
117 int numCols = x2.cols();
119 Eigen::MatrixXd output(numRows*
coDim,numCols*
coDim);
virtual Eigen::MatrixXd BuildCovariance(Eigen::MatrixXd const &x) const
virtual Eigen::MatrixXd GetPosDerivative(Eigen::VectorXd const &x1, Eigen::VectorXd const &x2, std::vector< int > const &wrts) const
Returns derivatives of the kernel with respect to the first input, x1.
virtual void FillPosDerivBlock(Eigen::Ref< const Eigen::VectorXd > const &x1, Eigen::Ref< const Eigen::VectorXd > const &x2, Eigen::Ref< const Eigen::VectorXd > const ¶ms, std::vector< int > const &wrts, Eigen::Ref< Eigen::MatrixXd > block) const =0
virtual Eigen::MatrixXd Evaluate(Eigen::VectorXd const &x1, Eigen::VectorXd const &x2) const
Eigen::VectorXd cachedParams
const std::vector< unsigned int > dimInds
virtual void FillDerivCovariance(Eigen::MatrixXd const &xs, Eigen::MatrixXd const &ys, std::vector< int > const &wrts, Eigen::Ref< Eigen::MatrixXd > cov) const
virtual void FillCovariance(Eigen::MatrixXd const &xs, Eigen::MatrixXd const &ys, Eigen::Ref< Eigen::MatrixXd > cov) const
virtual void FillBlock(Eigen::Ref< const Eigen::VectorXd > const &x1, Eigen::Ref< const Eigen::VectorXd > const &x2, Eigen::Ref< const Eigen::VectorXd > const ¶ms, Eigen::Ref< Eigen::MatrixXd > block) const =0