Rešitve
Uporabite jih za preverjanje po samostojnem poskusu reševanja. Če se kaj razlikuje, to obravnavajte kot uporabno izhodišče za razhroščevanje.
Naloga 1
C++:
Eigen::MatrixXd matmul(const Eigen::MatrixXd& A, const Eigen::MatrixXd& B) {
if (A.cols() != B.rows()) throw std::runtime_error("matmul: incompatible shapes");
return A * B;
}
Vezava:
m.def("matmul", &matmul);
Naloga 2
A[:, ::2] navadno ni zvezno v pomnilniku (spremenjen korak/stride). To pogosto prisili kopijo
v zvezni medpomnilnik, preden se podatki pretvorijo v Eigen tip.
Naloga 3
Glej preverjanje oblik v nalogi 1.