26 #ifndef CASADI_MATRIX_DECL_HPP
27 #define CASADI_MATRIX_DECL_HPP
29 #include "matrix_fwd.hpp"
30 #include "exception.hpp"
31 #include "casadi_limits.hpp"
32 #include "runtime/casadi_runtime.hpp"
33 #include "generic_matrix.hpp"
34 #include "generic_expression.hpp"
35 #include "printable.hpp"
40 #include <initializer_list>
41 #ifdef CASADI_WITH_THREAD
42 #ifdef CASADI_WITH_THREAD_MINGW
43 #include <mingw.mutex.h>
63 template <
typename Scalar>
inline std::string
matrixName()
64 {
return std::string(
"Matrix<") +
typeid(Scalar).name() + std::string(
">");}
94 template<
typename Scalar>
97 public SWIG_IF_ELSE(GenericExpressionCommon, GenericExpression<Matrix<Scalar> >),
99 public SWIG_IF_ELSE(PrintableCommon, Printable<Matrix<Scalar> >) {
119 Matrix(casadi_int nrow, casadi_int ncol);
125 explicit Matrix(
const std::pair<casadi_int, casadi_int>& rc);
130 std::vector<Scalar>* operator->();
135 const std::vector<Scalar>* operator->()
const;
153 #if !(defined(SWIG) && defined(SWIGMATLAB))
155 explicit Matrix(
const std::vector< std::vector<double> >& m);
162 nonzeros_(
std::vector<Scalar>(x.size())) {
163 auto x_it = x.begin();
164 for (
auto&& d : nonzeros_) d =
static_cast<Scalar
>(*x_it++);
175 auto x_it = x->begin();
176 for (
auto&& d : nonzeros_) d =
static_cast<Scalar
>(*x_it++);
181 Matrix(
const std::vector<Scalar>& x);
226 bool has_nz(casadi_int rr, casadi_int cc)
const;
229 bool __nonzero__()
const;
296 static std::vector< Scalar >
call(
const Function& f,
const std::vector< Scalar > &x);
323 static std::vector<Matrix<Scalar> >
333 const std::string& lsolver,
const Dict& opts);
338 const std::string& lsolver,
const Dict& opts);
341 const std::string& lsolver,
const Dict& opts);
345 const std::vector<std::string>& args);
351 const std::string& v_prefix,
352 const std::string& v_suffix);
363 bool short_circuit=
false);
367 bool short_circuit=
false);
392 const Sparsity& sp,
bool intersect=
false);
398 const std::vector<casadi_int>& dim_a,
const std::vector<casadi_int>& dim_b,
399 const std::vector<casadi_int>& dim_c,
400 const std::vector<casadi_int>& a,
const std::vector<casadi_int>& b,
401 const std::vector<casadi_int>& c);
404 const std::vector<casadi_int>& dim_a,
const std::vector<casadi_int>& dim_b,
405 const std::vector<casadi_int>& dim_c,
406 const std::vector<casadi_int>& a,
const std::vector<casadi_int>& b,
407 const std::vector<casadi_int>& c);
417 static std::vector<Matrix<Scalar> >
419 const std::vector<casadi_int>& offset);
421 static std::vector< Matrix<Scalar> >
423 const std::vector<casadi_int>& offset);
424 static std::vector< Matrix<Scalar> >
426 const std::vector<casadi_int>& offset1,
427 const std::vector<casadi_int>& offset2);
468 static std::vector<std::vector<Matrix<Scalar> > >
473 static std::vector<std::vector<Matrix<Scalar> > >
479 casadi_int order=1,
bool tr=
false);
487 const std::vector<casadi_int>& order_contributions);
494 std::vector<casadi_int>& pc,
bool amd=
true);
497 const std::vector<casadi_int>& prinv,
498 const std::vector<casadi_int>& pc,
bool tr=
false);
501 std::vector<casadi_int>& p,
bool amd=
true);
521 #if !defined(SWIG) || defined(DOXYGEN)
566 std::vector<casadi_int>& pc,
bool amd=
true) {
576 const std::vector<casadi_int>& prinv,
577 const std::vector<casadi_int>& pc,
bool tr=
false) {
599 std::vector<casadi_int>& p,
bool amd=
true) {
608 const std::vector<casadi_int>& p) {
753 casadi_int order=5) {
836 const std::vector<casadi_int>& order_contributions) {
885 static void set_max_depth(casadi_int eq_depth=1);
890 static casadi_int get_max_depth();
895 static std::vector<Matrix<Scalar> > get_input(
const Function& f);
900 static std::vector<Matrix<Scalar> > get_free(
const Function& f);
903 static std::string type_name();
906 void print_split(std::vector<std::string>& SWIG_OUTPUT(nz),
907 std::vector<std::string>& SWIG_OUTPUT(inter))
const;
910 void disp(std::ostream& stream,
bool more=
false)
const;
916 void print_scalar(std::ostream &stream)
const;
919 void print_vector(std::ostream &stream,
bool truncate=
true)
const;
922 void print_dense(std::ostream &stream,
bool truncate=
true)
const;
925 void print_sparse(std::ostream &stream,
bool truncate=
true)
const;
929 static void print_default(std::ostream &stream,
const Sparsity& sp,
const Scalar* nonzeros,
933 static void print_scalar(std::ostream &stream,
const Scalar& e);
936 static void print_vector(std::ostream &stream,
const Sparsity& sp,
const Scalar* nonzeros,
940 static void print_sparse(std::ostream &stream,
const Sparsity& sp,
const Scalar* nonzeros,
944 static void print_split(casadi_int nnz,
const Scalar* nonzeros, std::vector<std::string>& nz,
945 std::vector<std::string>& inter);
948 static void print_dense(std::ostream &stream,
const Sparsity& sp,
const Scalar* nonzeros,
953 void resize(casadi_int nrow, casadi_int ncol);
955 void reserve(casadi_int nnz, casadi_int ncol);
962 void erase(
const std::vector<casadi_int>& rr,
const std::vector<casadi_int>& cc,
970 void erase(
const std::vector<casadi_int>& rr,
bool ind1=
false);
977 void remove(
const std::vector<casadi_int>& rr,
const std::vector<casadi_int>& cc);
985 void enlarge(casadi_int nrow, casadi_int ncol,
986 const std::vector<casadi_int>& rr,
const std::vector<casadi_int>& cc,
999 const Scalar*
ptr()
const;
1026 const std::vector<casadi_int>& col,
1029 const std::vector<casadi_int>& col,
1032 const std::vector<casadi_int>& col,
1034 const std::pair<casadi_int, casadi_int>& rc);
1065 casadi_int element_hash()
const;
1073 bool is_smooth()
const;
1080 bool is_leaf()
const;
1087 bool is_commutative()
const;
1103 bool is_symbolic()
const;
1116 bool is_valid_input()
const;
1127 bool has_duplicates()
const;
1132 void reset_input()
const;
1143 bool is_call()
const;
1148 bool is_output()
const;
1153 bool has_output()
const;
1158 casadi_int which_output()
const;
1195 casadi_int op()
const;
1198 bool is_op(casadi_int op)
const;
1219 template<
typename A>
1226 explicit operator double()
const;
1231 explicit operator casadi_int()
const;
1237 template<
typename A>
1238 explicit operator std::vector<A>()
const;
1244 std::string name()
const;
1259 casadi_int n_dep()
const;
1263 static void set_precision(casadi_int precision);
1264 static void set_width(casadi_int width);
1265 static void set_scientific(
bool scientific);
1269 static void rng(casadi_int seed);
1280 const std::pair<casadi_int, casadi_int>& rc);
1350 const Scalar* nonzeros,
const std::string& format=
"");
1367 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
1368 static std::mutex& get_mutex_temp();
1376 std::vector<Scalar> nonzeros_;
1379 static casadi_int stream_precision_;
1380 static casadi_int stream_width_;
1381 static bool stream_scientific_;
1384 static std::default_random_engine rng_;
1390 template<
typename Scalar>
1391 template<
typename A>
1393 std::vector<A> ret(nnz());
1394 auto r = ret.begin();
1395 for (
auto&& e : nonzeros()) *r++ =
static_cast<A
>(e);
1400 template<
typename Scalar>
1401 template<
typename A>
1404 casadi_int size1 = this->size1(), size2 = this->size2();
1405 const casadi_int *colind = this->colind(), *row = this->row();
1407 auto it = nonzeros().begin();
1408 std::vector<A> ret(numel(), 0);
1409 for (casadi_int cc=0; cc<size2; ++cc) {
1410 for (casadi_int el=colind[cc]; el<colind[cc+1]; ++el) {
1411 ret[row[el] + cc*size1] =
static_cast<A
>(*it++);
Helper class for Serialization.
Sparse matrix class. SX and DM are specializations.
static Matrix< Scalar > minor(const Matrix< Scalar > &x, casadi_int i, casadi_int j)
static std::string print_operator(const Matrix< Scalar > &x, const std::vector< std::string > &args)
std::vector< Scalar > & nonzeros()
static Matrix< Scalar > qr_solve(const Matrix< Scalar > &b, const Matrix< Scalar > &v, const Matrix< Scalar > &r, const Matrix< Scalar > &beta, const std::vector< casadi_int > &prinv, const std::vector< casadi_int > &pc, bool tr=false)
static Matrix< Scalar > mtaylor(const Matrix< Scalar > &ex, const Matrix< Scalar > &x, const Matrix< Scalar > &a, casadi_int order, const std::vector< casadi_int > &order_contributions)
static void qr(const Matrix< Scalar > &A, Matrix< Scalar > &Q, Matrix< Scalar > &R)
static Matrix< Scalar > chol(const Matrix< Scalar > &A)
static std::vector< std::vector< Matrix< Scalar > > > reverse(const std::vector< Matrix< Scalar > > &ex, const std::vector< Matrix< Scalar > > &arg, const std::vector< std::vector< Matrix< Scalar > > > &v, const Dict &opts=Dict())
static Matrix< Scalar > simplify(const Matrix< Scalar > &x)
Matrix(const Matrix< A > &x)
Create a matrix from another matrix with a different entry type.
static Matrix< Scalar > sparsity_cast(const Matrix< Scalar > &x, const Sparsity &sp)
static void extract_parametric(const Matrix< Scalar > &expr, const Matrix< Scalar > &par, Matrix< Scalar > &expr_ret, std::vector< Matrix< Scalar > > &symbols, std::vector< Matrix< Scalar >> ¶metric, const Dict &opts)
static Matrix< Scalar > nan(const std::pair< casadi_int, casadi_int > &rc)
create a matrix with all nan
bool has_zeros() const
Check if the matrix has any zero entries which are not structural zeros.
static Matrix< Scalar > deserialize(const std::string &s)
Build Sparsity from serialization.
static Matrix< Scalar > mtimes(const Matrix< Scalar > &x, const Matrix< Scalar > &y)
static Matrix< Scalar > if_else(const Matrix< Scalar > &x, const Matrix< Scalar > &if_true, const Matrix< Scalar > &if_false, bool short_circuit=false)
static std::vector< bool > which_depends(const Matrix< Scalar > &expr, const Matrix< Scalar > &var, casadi_int order=1, bool tr=false)
static Matrix< Scalar > rectangle(const Matrix< Scalar > &x)
static Matrix< Scalar > gauss_quadrature(const Matrix< Scalar > &f, const Matrix< Scalar > &x, const Matrix< Scalar > &a, const Matrix< Scalar > &b, casadi_int order, const Matrix< Scalar > &w)
void serialize(std::ostream &stream) const
Serialize an object.
bool is_one() const
check if the matrix is 1 (note that false negative answers are possible)
void remove(const std::vector< casadi_int > &rr, const std::vector< casadi_int > &cc)
Remove columns and rows.
static Matrix< Scalar > unite(const Matrix< Scalar > &A, const Matrix< Scalar > &B)
Matrix(double val)
This constructor enables implicit type conversion from a numeric type.
Matrix< Scalar > T() const
Transpose the matrix.
static void separate_linear(const Matrix< Scalar > &expr, const Matrix< Scalar > &sym_lin, const Matrix< Scalar > &sym_const, Matrix< Scalar > &expr_const, Matrix< Scalar > &expr_lin, Matrix< Scalar > &expr_nonlin)
static Matrix< Scalar > det(const Matrix< Scalar > &x)
static Matrix< Scalar > conditional(const Matrix< Scalar > &ind, const std::vector< Matrix< Scalar > > &x, const Matrix< Scalar > &x_default, bool short_circuit=false)
static Matrix< Scalar > solve(const Matrix< Scalar > &A, const Matrix< Scalar > &b, const std::string &lsolver, const Dict &opts)
static Matrix< Scalar > diagcat(const std::vector< Matrix< Scalar > > &A)
static Matrix< Scalar > reshape(const Matrix< Scalar > &x, casadi_int nrow, casadi_int ncol)
static std::vector< Matrix< Scalar > > call(const Function &f, const std::vector< Matrix< Scalar > > &x)
Create nodes by their ID.
static Matrix< Scalar > scalar_matrix(casadi_int op, const Matrix< Scalar > &x, const Matrix< Scalar > &y)
Create nodes by their ID.
Scalar ScalarType
Scalar type.
static Matrix< Scalar > pinv(const Matrix< Scalar > &A, const std::string &lsolver, const Dict &opts)
static Matrix< Scalar > _rank1(const Matrix< Scalar > &A, const Matrix< Scalar > &alpha, const Matrix< Scalar > &x, const Matrix< Scalar > &y)
static Matrix< Scalar > diag(const Matrix< Scalar > &x)
static Matrix< Scalar > mac(const Matrix< Scalar > &x, const Matrix< Scalar > &y, const Matrix< Scalar > &z)
static Matrix< Scalar > rand(const Sparsity &sp)
Create a matrix with uniformly distributed random numbers.
static Matrix< Scalar > sum1(const Matrix< Scalar > &x)
void resize(casadi_int nrow, casadi_int ncol)
friend Scalar * get_ptr(Matrix< Scalar > &v)
Sparsity get_sparsity() const
Get an owning reference to the sparsity pattern.
static Matrix< Scalar > expm_const(const Matrix< Scalar > &A, const Matrix< Scalar > &t)
static Matrix< Scalar > deserialize(std::istream &stream)
Build Sparsity from serialization.
static Matrix< Scalar > mrdivide(const Matrix< Scalar > &x, const Matrix< Scalar > &y)
void erase(const std::vector< casadi_int > &rr, bool ind1=false)
Erase a submatrix (leaving structural zeros in its place)
static std::vector< Matrix< Scalar > > symvar(const Matrix< Scalar > &x)
void export_code(const std::string &lang, std::ostream &stream=casadi::uout(), const Dict &options=Dict()) const
Export matrix in specific language.
static void ldl(const Matrix< Scalar > &A, Matrix< Scalar > &D, Matrix< Scalar > <, std::vector< casadi_int > &p, bool amd=true)
static Matrix< Scalar > ramp(const Matrix< Scalar > &x)
const Sparsity & sparsity() const
Const access the sparsity - reference to data member.
static Matrix< Scalar > expm(const Matrix< Scalar > &A)
void serialize(SerializingStream &s) const
Serialize an object.
static Matrix< Scalar > mmax(const Matrix< Scalar > &x)
static Matrix< Scalar > inv(const Matrix< Scalar > &A)
static Matrix< Scalar > hessian(const Matrix< Scalar > &f, const Matrix< Scalar > &x, const Dict &opts=Dict())
static void shared(std::vector< Matrix< Scalar > > &ex, std::vector< Matrix< Scalar > > &v, std::vector< Matrix< Scalar > > &vdef, const std::string &v_prefix, const std::string &v_suffix)
static std::vector< Matrix< Scalar > > substitute(const std::vector< Matrix< Scalar > > &ex, const std::vector< Matrix< Scalar > > &v, const std::vector< Matrix< Scalar > > &vdef)
static Matrix< Scalar > inv_minor(const Matrix< Scalar > &x)
Matrix(const Sparsity &sp)
Create a sparse matrix from a sparsity pattern.
static Matrix< Scalar > matrix_matrix(casadi_int op, const Matrix< Scalar > &x, const Matrix< Scalar > &y)
Create nodes by their ID.
Matrix(casadi_int nrow, casadi_int ncol)
Create a sparse matrix with all structural zeros.
static Matrix< Scalar > heaviside(const Matrix< Scalar > &x)
static casadi_int n_nodes(const Matrix< Scalar > &x)
static std::vector< Matrix< Scalar > > diagsplit(const Matrix< Scalar > &x, const std::vector< casadi_int > &offset1, const std::vector< casadi_int > &offset2)
Matrix< Scalar > operator+() const
static Matrix< Scalar > hessian(const Matrix< Scalar > &f, const Matrix< Scalar > &x, Matrix< Scalar > &g, const Dict &opts=Dict())
Matrix(const std::pair< casadi_int, casadi_int > &rc)
Create a sparse matrix with all structural zeros.
static std::vector< Matrix< Scalar > > horzsplit(const Matrix< Scalar > &x, const std::vector< casadi_int > &offset)
static Matrix< Scalar > nan(const Sparsity &sp)
create a matrix with all nan
static Matrix< Scalar > gauss_quadrature(const Matrix< Scalar > &f, const Matrix< Scalar > &x, const Matrix< Scalar > &a, const Matrix< Scalar > &b, casadi_int order=5)
static Matrix< Scalar > pw_lin(const Matrix< Scalar > &t, const Matrix< Scalar > &tval, const Matrix< Scalar > &val)
static Matrix< Scalar > taylor(const Matrix< Scalar > &ex, const Matrix< Scalar > &x, const Matrix< Scalar > &a, casadi_int order)
static Matrix< Scalar > triplet(const std::vector< casadi_int > &row, const std::vector< casadi_int > &col, const Matrix< Scalar > &d, casadi_int nrow, casadi_int ncol)
Construct a sparse matrix from triplet form.
static Matrix< Scalar > mldivide(const Matrix< Scalar > &x, const Matrix< Scalar > &y)
bool is_minus_one() const
check if the matrix is -1 (note that false negative answers are possible)
static Matrix< Scalar > all(const Matrix< Scalar > &x)
static Matrix< Scalar > binary(casadi_int op, const Matrix< Scalar > &x, const Matrix< Scalar > &y)
Create nodes by their ID.
friend const Scalar * get_ptr(const Matrix< Scalar > &v)
void to_file(const std::string &filename, const std::string &format="") const
static Matrix< Scalar > norm_2(const Matrix< Scalar > &x)
static std::vector< std::vector< Matrix< Scalar > > > forward(const std::vector< Matrix< Scalar > > &ex, const std::vector< Matrix< Scalar > > &arg, const std::vector< std::vector< Matrix< Scalar > > > &v, const Dict &opts=Dict())
static Matrix< Scalar > triplet(const std::vector< casadi_int > &row, const std::vector< casadi_int > &col, const Matrix< Scalar > &d)
Construct a sparse matrix from triplet form.
static void expand(const Matrix< Scalar > &x, Matrix< Scalar > &weights, Matrix< Scalar > &terms)
static Matrix< Scalar > adj(const Matrix< Scalar > &x)
static Matrix< Scalar > matrix_scalar(casadi_int op, const Matrix< Scalar > &x, const Matrix< Scalar > &y)
Create nodes by their ID.
static Matrix< Scalar > _logsumexp(const Matrix< Scalar > &x)
static bool depends_on(const Matrix< Scalar > &x, const Matrix< Scalar > &arg)
static Matrix< Scalar > unary(casadi_int op, const Matrix< Scalar > &x)
Create nodes by their ID.
void disp(std::ostream &stream, bool more=false) const
Print a representation of the object.
static Matrix< Scalar > rand(casadi_int nrow=1, casadi_int ncol=1)
Create a matrix with uniformly distributed random numbers.
static Matrix< Scalar > inv(const Matrix< Scalar > &A, const std::string &lsolver, const Dict &opts)
Matrix(const Sparsity &sp, const Scalar &val, bool dummy)
Sparse matrix with a given sparsity with all values same.
bool is_eye() const
check if the matrix is an identity matrix (note that false negative answers
static Matrix< Scalar > solve(const Matrix< Scalar > &A, const Matrix< Scalar > &b)
static void substitute_inplace(const std::vector< Matrix< Scalar > > &v, std::vector< Matrix< Scalar > > &vdef, std::vector< Matrix< Scalar > > &ex, bool revers)
static Matrix< Scalar > ldl_solve(const Matrix< Scalar > &b, const Matrix< Scalar > &D, const Matrix< Scalar > <, const std::vector< casadi_int > &p)
static Matrix< Scalar > mmin(const Matrix< Scalar > &x)
static Matrix< Scalar > any(const Matrix< Scalar > &x)
static Matrix< Scalar > sparsify(const Matrix< Scalar > &x, double tol=0)
const std::vector< Scalar > & nonzeros() const
void erase(const std::vector< casadi_int > &rr, const std::vector< casadi_int > &cc, bool ind1=false)
Erase a submatrix (leaving structural zeros in its place)
static Matrix< Scalar > polyval(const Matrix< Scalar > &p, const Matrix< Scalar > &x)
static Matrix< Scalar > norm_1(const Matrix< Scalar > &x)
static Matrix< Scalar > nullspace(const Matrix< Scalar > &x)
static Matrix< Scalar > inf(casadi_int nrow=1, casadi_int ncol=1)
create a matrix with all inf
const Scalar * ptr() const
static Matrix< Scalar > _bilin(const Matrix< Scalar > &A, const Matrix< Scalar > &x, const Matrix< Scalar > &y)
static Matrix< Scalar > cofactor(const Matrix< Scalar > &A, casadi_int i, casadi_int j)
static Matrix< Scalar > blockcat(const std::vector< std::vector< Matrix< Scalar > > > &v)
std::vector< Scalar > get_elements() const
Get all elements.
static bool contains_any(const std::vector< Matrix< Scalar > > &v, const std::vector< Matrix< Scalar > > &n)
static Matrix< Scalar > substitute(const Matrix< Scalar > &ex, const Matrix< Scalar > &v, const Matrix< Scalar > &vdef)
static Matrix< Scalar > triplet(const std::vector< casadi_int > &row, const std::vector< casadi_int > &col, const Matrix< Scalar > &d, const std::pair< casadi_int, casadi_int > &rc)
Construct a sparse matrix from triplet form.
static Matrix< Scalar > eig_symbolic(const Matrix< Scalar > &m)
Matrix(const std::vector< std::vector< double > > &m)
Dense matrix constructor with data given as vector of vectors.
static bool contains(const std::vector< Matrix< Scalar > > &v, const Matrix< Scalar > &n)
bool is_zero() const
check if the matrix is 0 (note that false negative answers are possible)
static Matrix< Scalar > dot(const Matrix< Scalar > &x, const Matrix< Scalar > &y)
static Matrix< Scalar > norm_fro(const Matrix< Scalar > &x)
static Matrix< Scalar > vertcat(const std::vector< Matrix< Scalar > > &v)
static Matrix< Scalar > inf(const Sparsity &sp)
create a matrix with all inf
Matrix(std::initializer_list< Scalar > x)
Construct from initializer list.
static bool contains_all(const std::vector< Matrix< Scalar > > &v, const std::vector< Matrix< Scalar > > &n)
static Matrix< double > from_file(const std::string &filename, const std::string &format_hint="")
static void extract(std::vector< Matrix< Scalar >> &ex, std::vector< Matrix< Scalar >> &v, std::vector< Matrix< Scalar >> &vdef, const Dict &opts=Dict())
std::string serialize() const
Serialize.
void enlarge(casadi_int nrow, casadi_int ncol, const std::vector< casadi_int > &rr, const std::vector< casadi_int > &cc, bool ind1=false)
Enlarge matrix.
static std::vector< Matrix< Scalar > > cse(const std::vector< Matrix< Scalar > > &e)
static Matrix< Scalar > deserialize(DeserializingStream &s)
static Matrix< Scalar > reshape(const Matrix< Scalar > &x, const Sparsity &sp)
static Matrix< Scalar > norm_inf_mul(const Matrix< Scalar > &x, const Matrix< Scalar > &y)
bool is_constant() const
Check if the matrix is constant (note that false negative answers are possible)
static Matrix< Scalar > horzcat(const std::vector< Matrix< Scalar > > &v)
GenericMatrix< Matrix< Scalar > > B
Base class.
static Matrix< Scalar > sum2(const Matrix< Scalar > &x)
static Matrix< double > evalf(const Matrix< Scalar > &m)
Matrix(const std::vector< A > &x)
Create an expression from a vector.
void reserve(casadi_int nnz)
static Matrix< Scalar > norm_inf(const Matrix< Scalar > &x)
std::vector< A > get_nonzeros() const
Get all nonzeros.
static Matrix< Scalar > trace(const Matrix< Scalar > &x)
static std::vector< Scalar > call(const Function &f, const std::vector< Scalar > &x)
Create nodes by their ID.
void reserve(casadi_int nnz, casadi_int ncol)
static Matrix< Scalar > eye(casadi_int n)
create an n-by-n identity matrix
static Matrix< Scalar > jacobian(const Matrix< Scalar > &f, const Matrix< Scalar > &x, const Dict &opts=Dict())
static Matrix< Scalar > mtaylor(const Matrix< Scalar > &ex, const Matrix< Scalar > &x, const Matrix< Scalar > &a, casadi_int order)
Matrix(const Sparsity &sp, const Matrix< Scalar > &d)
Construct matrix with a given sparsity and nonzeros.
static Matrix< Scalar > rand(const std::pair< casadi_int, casadi_int > &rc)
Create a matrix with uniformly distributed random numbers.
bool is_integer() const
Check if the matrix is integer-valued.
static bool is_equal(const Matrix< Scalar > &x, const Matrix< Scalar > &y, casadi_int depth=0)
Matrix< Scalar > operator-() const
static Matrix< Scalar > triangle(const Matrix< Scalar > &x)
static Sparsity jacobian_sparsity(const Matrix< Scalar > &f, const Matrix< Scalar > &x)
static Matrix< Scalar > project(const Matrix< Scalar > &x, const Sparsity &sp, bool intersect=false)
static void qr_sparse(const Matrix< Scalar > &A, Matrix< Scalar > &V, Matrix< Scalar > &R, Matrix< Scalar > &beta, std::vector< casadi_int > &prinv, std::vector< casadi_int > &pc, bool amd=true)
static Matrix< Scalar > pw_const(const Matrix< Scalar > &t, const Matrix< Scalar > &tval, const Matrix< Scalar > &val)
static Matrix< Scalar > poly_coeff(const Matrix< Scalar > &ex, const Matrix< Scalar > &x)
static std::vector< Matrix< Scalar > > vertsplit(const Matrix< Scalar > &x, const std::vector< casadi_int > &offset)
Matrix(const Sparsity &sp, const std::vector< Scalar > &d, bool dummy)
Sparse matrix with a given sparsity and non-zero elements.
static Matrix< Scalar > nan(casadi_int nrow=1, casadi_int ncol=1)
create a matrix with all nan
static Matrix< Scalar > poly_roots(const Matrix< Scalar > &p)
static Matrix< Scalar > inf(const std::pair< casadi_int, casadi_int > &rc)
create a matrix with all inf
std::string get_str(bool more=false) const
Get string representation.
Matrix< Scalar > printme(const Matrix< Scalar > &y) const
const Scalar scalar() const
Convert to scalar type.
std::vector< Scalar > get_nonzeros() const
Get all nonzeros.
static Matrix< Scalar > pinv(const Matrix< Scalar > &x)
static Matrix< Scalar > kron(const Matrix< Scalar > &x, const Matrix< Scalar > &y)
static void to_file(const std::string &filename, const Sparsity &sp, const Scalar *nonzeros, const std::string &format="")
Helper class for Serialization.
Class representing a Slice.
std::string matrixName()
Get typename.
std::string matrixName< casadi_int >()
Get typename.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
std::vector< T > cumsum(const std::vector< T > &values)
cumulative sum
bool is_regular(const std::vector< T > &v)
Checks if array does not contain NaN or Inf.
std::string matrixName< double >()
Get typename.
std::string filename(const std::string &path)