35 int CASADI_LINSOL_LSQR_EXPORT
38 plugin->name =
"lsqr";
40 plugin->version = CASADI_VERSION;
72 std::copy(A, A+m->A.size(),
get_ptr(m->A));
77 casadi_int nrhs,
bool tr)
const {
83 g.
comment(
"FIXME(@jaeandersson): Memory allocation can be avoided");
84 g <<
"casadi_real w[" <<
nrow() + 4*
ncol() <<
"];\n";
87 g << g.
lsqr_solve(A, x, nrhs, tr, sp,
"w") <<
"\n";
94 int Lsqr::solve(
void* mem,
const double* A,
double* x, casadi_int nrhs,
bool tr)
const {
96 return casadi_lsqr_solve(A, x, nrhs, tr,
sp_,
get_ptr(m->w));
Helper class for C code generation.
std::string lsqr_solve(const std::string &A, const std::string &x, casadi_int nrhs, bool tr, const std::string &sp, const std::string &w)
void comment(const std::string &s)
Write a comment line (ignored if not verbose)
std::string sparsity(const Sparsity &sp, bool canonical=true)
casadi_int nrow() const
Get sparsity pattern.
int init_mem(void *mem) const override
Initalize memory block.
void generate(CodeGenerator &g, const std::string &A, const std::string &x, casadi_int nrhs, bool tr) const override
Generate C code.
static const std::string meta_doc
A documentation string.
int init_mem(void *mem) const override
Initalize memory block.
static LinsolInternal * creator(const std::string &name, const Sparsity &sp)
Create a new Linsol.
Lsqr(const std::string &name, const Sparsity &sp)
int nfact(void *mem, const double *A) const override
Numeric factorization.
static ProtoFunction * deserialize(DeserializingStream &s)
Deserialize with type disambiguation.
int solve(void *mem, const double *A, double *x, casadi_int nrhs, bool tr) const override
static void registerPlugin(const Plugin &plugin, bool needs_lock=true)
Register an integrator in the factory.
static const Options options_
Options.
void clear_mem()
Clear all memory (called from destructor)
casadi_int nnz() const
Get the number of (structural) non-zeros.
void CASADI_LINSOL_LSQR_EXPORT casadi_load_linsol_lsqr()
T * get_ptr(std::vector< T > &v)
Get a pointer to the data contained in the vector.
int CASADI_LINSOL_LSQR_EXPORT casadi_register_linsol_lsqr(LinsolInternal::Plugin *plugin)