26 #include "inverse.hpp"
32 "Inverse: matrix must be square, but you supllied " + x.
dim());
38 return "inv(" + arg.at(0) +
")";
46 std::vector<std::vector<MX> >& fsens)
const {
47 MX inv_X = shared_from_this<MX>();
48 for (casadi_int d=0; d<fsens.size(); ++d) {
49 fsens[d][0] = -mtimes(inv_X, mtimes(fseed[d][0], inv_X));
54 std::vector<std::vector<MX> >& asens)
const {
55 MX inv_X = shared_from_this<MX>();
56 MX trans_inv_X = inv_X.
T();
57 for (casadi_int d=0; d<aseed.size(); ++d) {
58 asens[d][0] -= mtimes(trans_inv_X, mtimes(aseed[d][0], trans_inv_X));
casadi_int size2() const
Get the second dimension (i.e. number of columns)
casadi_int size1() const
Get the first dimension (i.e. number of rows)
std::string dim(bool with_nz=false) const
Get string representation of dimensions.
void eval_mx(const std::vector< MX > &arg, std::vector< MX > &res) const override
Evaluate symbolically (MX)
void ad_reverse(const std::vector< std::vector< MX > > &aseed, std::vector< std::vector< MX > > &asens) const override
Calculate reverse mode directional derivatives.
void ad_forward(const std::vector< std::vector< MX > > &fseed, std::vector< std::vector< MX > > &fsens) const override
Calculate forward mode directional derivatives.
Inverse(const MX &x)
Constructor.
std::string disp(const std::vector< std::string > &arg) const override
Print expression.
void set_sparsity(const Sparsity &sparsity)
Set the sparsity.
void set_dep(const MX &dep)
Set unary dependency.
MX T() const
Transpose the matrix.
static Sparsity dense(casadi_int nrow, casadi_int ncol=1)
Create a dense rectangular sparsity pattern *.