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>
43 struct LinsolQrMemory :
public LinsolMemory {
44 std::vector<double> v, r, beta, w;
45 std::vector<double> cache;
48 std::vector<int> cache_loc;
55 class LinsolQr :
public LinsolInternal {
59 LinsolQr(
const std::string& name,
const Sparsity& sp);
62 static LinsolInternal* creator(
const std::string& name,
const Sparsity& sp) {
63 return new LinsolQr(name, sp);
70 void init(
const Dict& opts)
override;
73 void finalize()
override;
77 static const Options options_;
78 const Options& get_options()
const override {
return options_;}
82 void* alloc_mem()
const override {
return new LinsolQrMemory();}
85 int init_mem(
void* mem)
const override;
88 void free_mem(
void *mem)
const override {
delete static_cast<LinsolQrMemory*
>(mem);}
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 void generate(CodeGenerator& g,
const std::string& A,
const std::string& x,
101 casadi_int nrhs,
bool tr)
const override;
104 const char* plugin_name()
const override {
return "qr";}
107 std::string class_name()
const override {
return "LinsolQr";}
110 static const std::string meta_doc;
113 std::vector<casadi_int> prinv_, pc_;
114 Sparsity sp_v_, sp_r_;
119 casadi_int cache_stride_;
122 void serialize_body(SerializingStream &s)
const override;
125 static ProtoFunction* deserialize(DeserializingStream& s) {
return new LinsolQr(s); }
129 explicit LinsolQr(DeserializingStream& s);
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.