qpOASES  3.2.1
An Implementation of the Online Active Set Strategy
Matrices.hpp
Go to the documentation of this file.
1 /*
2  * This file is part of qpOASES.
3  *
4  * qpOASES -- An Implementation of the Online Active Set Strategy.
5  * Copyright (C) 2007-2017 by Hans Joachim Ferreau, Andreas Potschka,
6  * Christian Kirches et al. All rights reserved.
7  *
8  * qpOASES is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * qpOASES is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16  * See the GNU Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with qpOASES; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  *
22  */
23 
24 
37 #ifndef QPOASES_MATRICES_HPP
38 #define QPOASES_MATRICES_HPP
39 
40 
41 #include <qpOASES/Utils.hpp>
42 #include <qpOASES/Indexlist.hpp>
43 
44 
46 
47 
59 class Matrix
60 {
61  public:
64 
66  virtual ~Matrix( ) { };
67 
69  virtual void free( ) = 0;
70 
73  virtual Matrix* duplicate( ) const = 0;
74 
77  virtual real_t diag( int_t i
78  ) const = 0;
79 
83  virtual BooleanType isDiag( ) const = 0;
84 
88  virtual real_t getNorm( int_t type = 2
89  ) const = 0;
90 
94  virtual real_t getRowNorm( int_t rNum,
95  int_t type = 2
96  ) const = 0;
97 
100  virtual returnValue getRowNorm( real_t* norm,
101  int_t type = 2
102  ) const = 0;
103 
106  virtual returnValue getRow( int_t rNum,
107  const Indexlist* const icols,
108  real_t alpha,
109  real_t* row
110  ) const = 0;
111 
114  virtual returnValue getCol( int_t cNum,
115  const Indexlist* const irows,
116  real_t alpha,
117  real_t* col
118  ) const = 0;
119 
126  const Indexlist* const irows,
127  const Indexlist* const icols,
128  int_t rowoffset,
129  int_t coloffset,
130  int_t& numNonzeros,
131  int_t* irn,
132  int_t* jcn,
133  real_t* avals,
134  BooleanType only_lower_triangular = BT_FALSE
135  ) const;
136 
144  const Indexlist* const irows,
145  int_t idx_icol,
146  int_t rowoffset,
147  int_t coloffset,
148  int_t& numNonzeros,
149  int_t* irn,
150  int_t* jcn,
151  real_t* avals,
152  BooleanType only_lower_triangular = BT_FALSE
153  ) const;
154 
161  int_t idx_row,
162  const Indexlist* const icols,
163  int_t rowoffset,
164  int_t coloffset,
165  int_t& numNonzeros,
166  int_t* irn,
167  int_t* jcn,
168  real_t* avals,
169  BooleanType only_lower_triangular = BT_FALSE
170  ) const;
171 
178  int_t irowsLength,
179  const int_t* const irowsNumber,
180  int_t icolsLength,
181  const int_t* const icolsNumber,
182  int_t rowoffset,
183  int_t coloffset,
184  int_t& numNonzeros,
185  int_t* irn,
186  int_t* jcn,
187  real_t* avals,
188  BooleanType only_lower_triangular = BT_FALSE
189  ) const = 0;
190 
193  virtual returnValue times ( int_t xN,
194  real_t alpha,
195  const real_t* x,
196  int_t xLD,
197  real_t beta,
198  real_t* y,
199  int_t yLD
200  ) const = 0;
201 
204  virtual returnValue transTimes ( int_t xN,
205  real_t alpha,
206  const real_t* x,
207  int_t xLD,
208  real_t beta,
209  real_t* y,
210  int_t yLD
211  ) const = 0;
212 
215  virtual returnValue times ( const Indexlist* const irows,
216  const Indexlist* const icols,
217  int_t xN,
218  real_t alpha,
219  const real_t* x,
220  int_t xLD,
221  real_t beta,
222  real_t* y,
223  int_t yLD,
224  BooleanType yCompr = BT_TRUE
225  ) const = 0;
226 
229  virtual returnValue transTimes ( const Indexlist* const irows,
230  const Indexlist* const icols,
231  int_t xN,
232  real_t alpha,
233  const real_t* x,
234  int_t xLD,
235  real_t beta,
236  real_t* y,
237  int_t yLD
238  ) const = 0;
239 
243  virtual returnValue addToDiag( real_t alpha
244  ) = 0;
245 
252  virtual real_t* full() const = 0;
253 
254 
257  virtual returnValue print( const char* name = 0
258  ) const = 0;
259 
262  virtual returnValue writeToFile( FILE* output_file, const char* prefix ) const = 0;
263 
268 
271 
274 
275 
276  protected:
279 };
280 
281 
292 class SymmetricMatrix : public virtual Matrix
293 {
294  public:
297 
299  virtual ~SymmetricMatrix( ) { };
300 
303  virtual SymmetricMatrix* duplicateSym( ) const = 0;
304 
305 
308  virtual returnValue bilinear( const Indexlist* const icols,
309  int_t xN,
310  const real_t* x,
311  int_t xLD,
312  real_t* y,
313  int_t yLD
314  ) const = 0;
315 
316 };
317 
318 
328 class DenseMatrix : public virtual Matrix
329 {
330  public:
332  DenseMatrix( ) : nRows(0), nCols(0), leaDim(0), val(0) { };
333 
338  int_t n,
339  int_t lD,
340  real_t* v
341  ) : nRows(m), nCols(n), leaDim(lD), val(v) {}
342 
343 
345  virtual ~DenseMatrix( );
346 
348  virtual void free( );
349 
352  virtual Matrix *duplicate( ) const;
353 
356  virtual real_t diag( int_t i
357  ) const;
358 
362  virtual BooleanType isDiag( ) const;
363 
367  virtual real_t getNorm( int_t type = 2
368  ) const;
369 
373  virtual real_t getRowNorm( int_t rNum,
374  int_t type = 2
375  ) const;
376 
379  virtual returnValue getRowNorm( real_t* norm,
380  int_t type = 2
381  ) const;
382 
385  virtual returnValue getRow( int_t rNum,
386  const Indexlist* const icols,
387  real_t alpha,
388  real_t* row
389  ) const;
390 
393  virtual returnValue getCol(
394  int_t cNum,
395  const Indexlist* const irows,
396  real_t alpha,
397  real_t* col
398  ) const;
399 
406  int_t irowsLength,
407  const int_t* const irowsNumber,
408  int_t icolsLength,
409  const int_t* const icolsNumber,
410  int_t rowoffset,
411  int_t coloffset,
412  int_t& numNonzeros,
413  int_t* irn,
414  int_t* jcn,
415  real_t* avals,
416  BooleanType only_lower_triangular = BT_FALSE
417  ) const;
418 
419 
422  virtual returnValue times( int_t xN,
423  real_t alpha,
424  const real_t* x,
425  int_t xLD,
426  real_t beta,
427  real_t* y,
428  int_t yLD
429  ) const;
430 
433  virtual returnValue transTimes( int_t xN,
434  real_t alpha,
435  const real_t* x,
436  int_t xLD,
437  real_t beta,
438  real_t* y,
439  int_t yLD
440  ) const;
441 
444  virtual returnValue times( const Indexlist* const irows,
445  const Indexlist* const icols,
446  int_t xN,
447  real_t alpha,
448  const real_t* x,
449  int_t xLD,
450  real_t beta,
451  real_t* y,
452  int_t yLD,
453  BooleanType yCompr = BT_TRUE
454  ) const;
455 
458  virtual returnValue transTimes( const Indexlist* const irows,
459  const Indexlist* const icols,
460  int_t xN,
461  real_t alpha,
462  const real_t* x,
463  int_t xLD,
464  real_t beta,
465  real_t* y,
466  int_t yLD
467  ) const;
468 
472  virtual returnValue addToDiag( real_t alpha
473  );
474 
475 
482  virtual real_t* full() const;
483 
484 
487  virtual returnValue print( const char* name = 0
488  ) const;
489 
492  virtual returnValue writeToFile( FILE* output_file, const char* prefix ) const;
493 
494  protected:
499 };
500 
501 
512 {
513  public:
516 
519  int_t n,
520  int_t lD,
521  real_t* v
522  ) : DenseMatrix(m, n, lD, v) { };
523 
525  virtual ~SymDenseMat() { };
526 
529  virtual Matrix *duplicate( ) const;
530 
533  virtual SymmetricMatrix* duplicateSym( ) const;
534 
535 
538  virtual returnValue bilinear( const Indexlist* const icols,
539  int_t xN,
540  const real_t* x,
541  int_t xLD,
542  real_t* y,
543  int_t yLD
544  ) const;
545 };
546 
547 
557 class SparseMatrix : public virtual Matrix
558 {
559  public:
561  SparseMatrix( );
562 
564  SparseMatrix( int_t nr,
565  int_t nc,
566  sparse_int_t* r,
567  sparse_int_t* c,
568  real_t* v
569  );
570 
572  SparseMatrix( int_t nr,
573  int_t nc,
574  int_t ld,
575  const real_t* const v
576  );
577 
579  virtual ~SparseMatrix( );
580 
582  virtual void free( );
583 
586  virtual Matrix *duplicate( ) const;
587 
588 
593  virtual void setVal( const real_t* newVal
594  );
595 
598  virtual real_t diag( int_t i
599  ) const;
600 
604  virtual BooleanType isDiag( ) const;
605 
606 
610  virtual real_t getNorm( int_t type = 2
611  ) const;
612 
616  virtual real_t getRowNorm( int_t rNum,
617  int_t type = 2
618  ) const;
619 
622  virtual returnValue getRowNorm( real_t* norm,
623  int_t type = 2
624  ) const;
625 
627  virtual returnValue getRow( int_t rNum,
628  const Indexlist* const icols,
629  real_t alpha,
630  real_t* row
631  ) const;
632 
634  virtual returnValue getCol( int_t cNum,
635  const Indexlist* const irows,
636  real_t alpha,
637  real_t* col
638  ) const;
639 
646  int_t irowsLength,
647  const int_t* const irowsNumber,
648  int_t icolsLength,
649  const int_t* const icolsNumber,
650  int_t rowoffset,
651  int_t coloffset,
652  int_t& numNonzeros,
653  int_t* irn,
654  int_t* jcn,
655  real_t* avals,
656  BooleanType only_lower_triangular = BT_FALSE
657  ) const;
658 
660  virtual returnValue times ( int_t xN,
661  real_t alpha,
662  const real_t* x,
663  int_t xLD,
664  real_t beta,
665  real_t* y,
666  int_t yLD
667  ) const;
668 
670  virtual returnValue transTimes ( int_t xN,
671  real_t alpha,
672  const real_t* x,
673  int_t xLD,
674  real_t beta,
675  real_t* y,
676  int_t yLD
677  ) const;
678 
680  virtual returnValue times ( const Indexlist* const irows,
681  const Indexlist* const icols,
682  int_t xN,
683  real_t alpha,
684  const real_t* x,
685  int_t xLD,
686  real_t beta,
687  real_t* y,
688  int_t yLD,
689  BooleanType yCompr = BT_TRUE
690  ) const;
691 
693  virtual returnValue transTimes ( const Indexlist* const irows,
694  const Indexlist* const icols,
695  int_t xN,
696  real_t alpha,
697  const real_t* x,
698  int_t xLD,
699  real_t beta,
700  real_t* y,
701  int_t yLD
702  ) const;
703 
707  virtual returnValue addToDiag( real_t alpha
708  );
709 
713 
720  virtual real_t* full() const;
721 
724  virtual returnValue print( const char* name = 0
725  ) const;
726 
729  virtual returnValue writeToFile( FILE* output_file, const char* prefix ) const;
730 
731 
732  protected:
739 };
740 
741 
751 class SparseMatrixRow : public virtual Matrix
752 {
753  public:
755  SparseMatrixRow( );
756 
758  SparseMatrixRow( int_t nr,
759  int_t nc,
760  sparse_int_t* r,
761  sparse_int_t* c,
762  real_t* v
763  );
764 
766  SparseMatrixRow( int_t nr,
767  int_t nc,
768  int_t ld,
769  const real_t* const v
770  );
771 
773  virtual ~SparseMatrixRow( );
774 
776  virtual void free( );
777 
780  virtual Matrix *duplicate( ) const;
781 
784  virtual real_t diag( int_t i
785  ) const;
786 
790  virtual BooleanType isDiag( ) const;
791 
792 
796  virtual real_t getNorm( int_t type = 2
797  ) const;
798 
802  virtual real_t getRowNorm( int_t rNum,
803  int_t type = 2
804  ) const;
805 
808  virtual returnValue getRowNorm( real_t* norm,
809  int_t type = 2
810  ) const;
811 
813  virtual returnValue getRow ( int_t rNum,
814  const Indexlist* const icols,
815  real_t alpha,
816  real_t* row
817  ) const;
818 
820  virtual returnValue getCol ( int_t cNum,
821  const Indexlist* const irows,
822  real_t alpha,
823  real_t* col
824  ) const;
825 
832  int_t irowsLength,
833  const int_t* const irowsNumber,
834  int_t icolsLength,
835  const int_t* const icolsNumber,
836  int_t rowoffset,
837  int_t coloffset,
838  int_t& numNonzeros,
839  int_t* irn,
840  int_t* jcn,
841  real_t* avals,
842  BooleanType only_lower_triangular = BT_FALSE
843  ) const;
844 
846  virtual returnValue times( int_t xN,
847  real_t alpha,
848  const real_t* x,
849  int_t xLD,
850  real_t beta,
851  real_t* y,
852  int_t yLD
853  ) const;
854 
856  virtual returnValue transTimes( int_t xN,
857  real_t alpha,
858  const real_t* x,
859  int_t xLD,
860  real_t beta,
861  real_t* y,
862  int_t yLD
863  ) const;
864 
866  virtual returnValue times( const Indexlist* const irows,
867  const Indexlist* const icols,
868  int_t xN,
869  real_t alpha,
870  const real_t* x,
871  int_t xLD,
872  real_t beta,
873  real_t* y,
874  int_t yLD,
875  BooleanType yCompr = BT_TRUE
876  ) const;
877 
879  virtual returnValue transTimes( const Indexlist* const irows,
880  const Indexlist* const icols,
881  int_t xN,
882  real_t alpha,
883  const real_t* x,
884  int_t xLD,
885  real_t beta,
886  real_t* y,
887  int_t yLD
888  ) const;
889 
893  virtual returnValue addToDiag( real_t alpha
894  );
895 
899 
906  virtual real_t* full() const;
907 
910  virtual returnValue print( const char* name = 0
911  ) const;
912 
915  virtual returnValue writeToFile( FILE* output_file, const char* prefix ) const;
916 
917  protected:
924 };
925 
926 
937 {
938  public:
941 
944  int_t nc,
945  sparse_int_t* r,
946  sparse_int_t* c,
947  real_t* v
948  ) : SparseMatrix(nr, nc, r, c, v) { };
949 
952  int_t nc,
953  int_t ld,
954  const real_t* const v
955  ) : SparseMatrix(nr, nc, ld, v) { };
956 
958  virtual ~SymSparseMat( ) { };
959 
962  virtual Matrix *duplicate( ) const;
963 
966  virtual SymmetricMatrix* duplicateSym( ) const;
967 
968 
971  virtual returnValue bilinear( const Indexlist* const icols,
972  int_t xN,
973  const real_t* x,
974  int_t xLD,
975  real_t* y,
976  int_t yLD
977  ) const;
978 };
979 
980 
982 
983 
984 #endif /* QPOASES_MATRICES_HPP */
sparse_int_t * jd
Definition: Matrices.hpp:922
#define BEGIN_NAMESPACE_QPOASES
Definition: Types.hpp:107
virtual returnValue writeToFile(FILE *output_file, const char *prefix) const
Definition: Matrices.cpp:2105
virtual real_t getNorm(int_t type=2) const =0
#define END_NAMESPACE_QPOASES
Definition: Types.hpp:110
virtual returnValue bilinear(const Indexlist *const icols, int_t xN, const real_t *x, int_t xLD, real_t *y, int_t yLD) const =0
Interfaces matrix-vector operations tailored to symmetric sparse matrices.
Definition: Matrices.hpp:936
virtual real_t * full() const =0
int_t nRows
Definition: Matrices.hpp:495
virtual returnValue print(const char *name=0) const
Definition: Matrices.cpp:2096
sparse_int_t * jc
Definition: Matrices.hpp:736
virtual Matrix * duplicate() const =0
virtual SymmetricMatrix * duplicateSym() const
Definition: Matrices.cpp:2116
virtual returnValue getCol(int_t cNum, const Indexlist *const irows, real_t alpha, real_t *col) const
Definition: Matrices.cpp:208
virtual Matrix * duplicate() const
Definition: Matrices.cpp:2110
virtual real_t diag(int_t i) const
Definition: Matrices.cpp:1508
SymDenseMat(int_t m, int_t n, int_t lD, real_t *v)
Definition: Matrices.hpp:518
real_t * val
Definition: Matrices.hpp:923
int int_t
Definition: Types.hpp:180
virtual returnValue print(const char *name=0) const
Definition: Matrices.cpp:1397
virtual returnValue addToDiag(real_t alpha)
Definition: Matrices.cpp:572
virtual returnValue transTimes(int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const =0
Matrix()
Definition: Matrices.hpp:63
virtual returnValue getSparseSubmatrix(int_t irowsLength, const int_t *const irowsNumber, int_t icolsLength, const int_t *const icolsNumber, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const
Definition: Matrices.cpp:225
DenseMatrix()
Definition: Matrices.hpp:332
virtual real_t getRowNorm(int_t rNum, int_t type=2) const
Definition: Matrices.cpp:809
virtual returnValue writeToFile(FILE *output_file, const char *prefix) const
Definition: Matrices.cpp:582
virtual Matrix * duplicate() const
Definition: Matrices.cpp:728
int_t nRows
Definition: Matrices.hpp:733
virtual void free()
Definition: Matrices.cpp:715
virtual BooleanType isDiag() const =0
virtual BooleanType isDiag() const
Definition: Matrices.cpp:1521
virtual real_t * full() const
Definition: Matrices.cpp:588
Interfaces matrix-vector operations tailored to symmetric dense matrices.
Definition: Matrices.hpp:511
virtual ~SparseMatrixRow()
Definition: Matrices.cpp:1452
virtual returnValue getSparseSubmatrix(int_t irowsLength, const int_t *const irowsNumber, int_t icolsLength, const int_t *const icolsNumber, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const
Definition: Matrices.cpp:955
virtual ~SymmetricMatrix()
Definition: Matrices.hpp:299
BooleanType needToFreeMemory() const
Definition: Matrices.hpp:267
Definition: Types.hpp:206
virtual returnValue getRow(int_t rNum, const Indexlist *const icols, real_t alpha, real_t *row) const
Definition: Matrices.cpp:1570
virtual ~SymSparseMat()
Definition: Matrices.hpp:958
virtual BooleanType isDiag() const
Definition: Matrices.cpp:780
sparse_int_t * createDiagInfo()
Definition: Matrices.cpp:1362
int_t leaDim
Definition: Matrices.hpp:497
sparse_int_t * ic
Definition: Matrices.hpp:921
virtual returnValue writeToFile(FILE *output_file, const char *prefix) const
Definition: Matrices.cpp:1406
virtual void free()
Definition: Matrices.cpp:107
Interfaces matrix-vector operations tailored to general sparse matrices.
Definition: Matrices.hpp:751
virtual SymmetricMatrix * duplicateSym() const
Definition: Matrices.cpp:609
virtual SymmetricMatrix * duplicateSym() const =0
virtual ~SymDenseMat()
Definition: Matrices.hpp:525
int_t nCols
Definition: Matrices.hpp:496
SparseMatrixRow()
Definition: Matrices.cpp:1422
virtual returnValue transTimes(int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const
Definition: Matrices.cpp:318
virtual real_t getNorm(int_t type=2) const
Definition: Matrices.cpp:1542
virtual returnValue getSparseSubmatrix(int_t irowsLength, const int_t *const irowsNumber, int_t icolsLength, const int_t *const icolsNumber, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const
Definition: Matrices.cpp:1682
virtual void free()
Definition: Matrices.cpp:1465
sparse_int_t * createDiagInfo()
Definition: Matrices.cpp:2062
Interfaces matrix-vector operations tailored to general dense matrices.
Definition: Matrices.hpp:328
virtual returnValue getCol(int_t cNum, const Indexlist *const irows, real_t alpha, real_t *col) const =0
int_t nCols
Definition: Matrices.hpp:919
virtual real_t getRowNorm(int_t rNum, int_t type=2) const =0
virtual returnValue writeToFile(FILE *output_file, const char *prefix) const =0
virtual returnValue print(const char *name=0) const =0
virtual returnValue getRow(int_t rNum, const Indexlist *const icols, real_t alpha, real_t *row) const
Definition: Matrices.cpp:864
virtual returnValue times(int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const =0
sparse_int_t * ir
Definition: Matrices.hpp:735
Interfaces matrix-vector operations tailored to general sparse matrices.
Definition: Matrices.hpp:557
virtual real_t getNorm(int_t type=2) const
Definition: Matrices.cpp:155
Definition: Types.hpp:205
virtual real_t * full() const
Definition: Matrices.cpp:2080
SymDenseMat()
Definition: Matrices.hpp:515
virtual real_t diag(int_t i) const
Definition: Matrices.cpp:133
virtual Matrix * duplicate() const
Definition: Matrices.cpp:114
virtual real_t * full() const
Definition: Matrices.cpp:1381
virtual real_t diag(int_t i) const =0
virtual returnValue addToDiag(real_t alpha)
Definition: Matrices.cpp:1340
virtual void setVal(const real_t *newVal)
Definition: Matrices.cpp:757
virtual void free()=0
returnValue
Defines all symbols for global return values.
Definition: MessageHandling.hpp:64
virtual returnValue transTimes(int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const
Definition: Matrices.cpp:1731
Abstract base class for interfacing tailored matrix-vector operations.
Definition: Matrices.hpp:59
virtual returnValue print(const char *name=0) const
Definition: Matrices.cpp:596
virtual BooleanType isDiag() const
Definition: Matrices.cpp:139
virtual returnValue bilinear(const Indexlist *const icols, int_t xN, const real_t *x, int_t xLD, real_t *y, int_t yLD) const
Definition: Matrices.cpp:630
virtual returnValue getRow(int_t rNum, const Indexlist *const icols, real_t alpha, real_t *row) const =0
sparse_int_t * jr
Definition: Matrices.hpp:920
int_t nRows
Definition: Matrices.hpp:918
virtual returnValue addToDiag(real_t alpha)
Definition: Matrices.cpp:2040
virtual ~Matrix()
Definition: Matrices.hpp:66
real_t * val
Definition: Matrices.hpp:498
DenseMatrix(int_t m, int_t n, int_t lD, real_t *v)
Definition: Matrices.hpp:337
virtual real_t diag(int_t i) const
Definition: Matrices.cpp:767
real_t * val
Definition: Matrices.hpp:738
SymSparseMat(int_t nr, int_t nc, int_t ld, const real_t *const v)
Definition: Matrices.hpp:951
Stores and manages index lists.
Definition: Indexlist.hpp:55
virtual ~SparseMatrix()
Definition: Matrices.cpp:702
int_t nCols
Definition: Matrices.hpp:734
virtual Matrix * duplicate() const
Definition: Matrices.cpp:603
virtual returnValue getCol(int_t cNum, const Indexlist *const irows, real_t alpha, real_t *col) const
Definition: Matrices.cpp:1627
virtual returnValue addToDiag(real_t alpha)=0
virtual returnValue bilinear(const Indexlist *const icols, int_t xN, const real_t *x, int_t xLD, real_t *y, int_t yLD) const
Definition: Matrices.cpp:2146
sparse_int_t * jd
Definition: Matrices.hpp:737
virtual real_t getNorm(int_t type=2) const
Definition: Matrices.cpp:801
SparseMatrix()
Definition: Matrices.cpp:671
SymSparseMat()
Definition: Matrices.hpp:940
void doNotFreeMemory()
Definition: Matrices.hpp:273
SymmetricMatrix()
Definition: Matrices.hpp:296
virtual Matrix * duplicate() const
Definition: Matrices.cpp:1478
virtual returnValue times(int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const
Definition: Matrices.cpp:1049
virtual returnValue getRow(int_t rNum, const Indexlist *const icols, real_t alpha, real_t *row) const
Definition: Matrices.cpp:177
virtual returnValue times(int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const
Definition: Matrices.cpp:1693
virtual returnValue times(int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const
Definition: Matrices.cpp:304
virtual returnValue getCol(int_t cNum, const Indexlist *const irows, real_t alpha, real_t *col) const
Definition: Matrices.cpp:917
virtual returnValue getSparseSubmatrix(const Indexlist *const irows, const Indexlist *const icols, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const
Definition: Matrices.cpp:47
BooleanType freeMemory
Definition: Matrices.hpp:273
virtual real_t getRowNorm(int_t rNum, int_t type=2) const
Definition: Matrices.cpp:1551
void doFreeMemory()
Definition: Matrices.hpp:270
virtual real_t getRowNorm(int_t rNum, int_t type=2) const
Definition: Matrices.cpp:162
virtual returnValue transTimes(int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const
Definition: Matrices.cpp:1087
BooleanType
Definition: Types.hpp:203
BEGIN_NAMESPACE_QPOASES typedef double real_t
Definition: Types.hpp:171
virtual ~DenseMatrix()
Definition: Matrices.cpp:101
SymSparseMat(int_t nr, int_t nc, sparse_int_t *r, sparse_int_t *c, real_t *v)
Definition: Matrices.hpp:943
int_t sparse_int_t
Definition: Types.hpp:199
Abstract base class for interfacing matrix-vector operations tailored to symmetric matrices...
Definition: Matrices.hpp:292