Sparsity Switch::get_sparsity_out(casadi_int i) { Sparsity ret; for (auto&& fk : f_) { if (!fk.is_null()) { const Sparsity& s = fk.sparsity_out(i); ret = ret.is_null() ? s : ret.unite(s); } } casadi_assert_dev(!f_def_.is_null()); const Sparsity& s = f_def_.sparsity_out(i); ret = ret.is_null() ? s : ret.unite(s); return ret; }
Sparsity Switch::get_sparsity_in(casadi_int i) { if (i==0) { return Sparsity::scalar(); } else { Sparsity ret; for (auto&& fk : f_) { if (!fk.is_null()) { const Sparsity& s = fk.sparsity_in(i-1); ret = ret.is_null() ? s : ret.unite(s); } } casadi_assert_dev(!f_def_.is_null()); const Sparsity& s = f_def_.sparsity_in(i-1); ret = ret.is_null() ? s : ret.unite(s); return ret; } }