Skoči na vsebino

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.