26 #ifndef CASADI_LINSOL_QR_HPP
27 #define CASADI_LINSOL_QR_HPP
39 #include "casadi/core/linsol_internal.hpp"
40 #include <casadi/solvers/casadi_linsol_qr_export.h>
44 std::vector<double> v, r,
beta, w;
70 void init(
const Dict& opts)
override;
73 void finalize()
override;
85 int init_mem(
void* mem)
const override;
91 int nfact(
void* mem,
const double* A)
const override;
94 int sfact(
void* mem,
const double* A)
const override;
97 int solve(
void* mem,
const double* A,
double* x, casadi_int nrhs,
bool tr)
const override;
100 double det(
void* mem,
const double* A)
const override;
103 void generate(
CodeGenerator& g,
const std::string& A,
const std::string& x,
104 casadi_int nrhs,
bool tr)
const override;
108 const std::string& d)
const override;
112 void generate_factorize(
CodeGenerator& g,
const std::string& A)
const;
116 return sp_v_.nnz() + sp_r_.nnz() + ncol() + nrow() + ncol();
123 std::string
class_name()
const override {
return "LinsolQr";}
129 std::vector<casadi_int> prinv_,
pc_;
Helper class for C code generation.
Helper class for Serialization.
static const std::string meta_doc
A documentation string.
std::string class_name() const override
Readable name of the internal class.
const Options & get_options() const override
Options.
static ProtoFunction * deserialize(DeserializingStream &s)
Deserialize with type disambiguation.
const char * plugin_name() const override
std::vector< casadi_int > pc_
void free_mem(void *mem) const override
Free memory block.
size_t sz_w_fact() const override
Workspace generate/generate_det carve from w: v + r + beta + qr work.
static LinsolInternal * creator(const std::string &name, const Sparsity &sp)
Create a new LinsolInternal.
double pivot_sign_
Sign of the row/column pivoting permutations (data-independent)
casadi_int n_cache_
Cache size.
static const Options options_
Options.
void * alloc_mem() const override
Create memory block.
Base class for FunctionInternal and LinsolInternal.
Helper class for Serialization.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
std::vector< double > beta
std::vector< double > cache
std::vector< int > cache_loc
Options metadata for a class.