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
59class 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
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
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
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
292class 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
328class 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
557class 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
751class SparseMatrixRow : public virtual Matrix
752{
753 public:
756
759 int_t nc,
760 sparse_int_t* r,
761 sparse_int_t* c,
762 real_t* v
763 );
764
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 */
returnValue
Defines all symbols for global return values.
Definition: MessageHandling.hpp:65
BooleanType
Definition: Types.hpp:204
@ BT_TRUE
Definition: Types.hpp:206
@ BT_FALSE
Definition: Types.hpp:205
int_t sparse_int_t
Definition: Types.hpp:199
int int_t
Definition: Types.hpp:180
BEGIN_NAMESPACE_QPOASES typedef double real_t
Definition: Types.hpp:171
#define END_NAMESPACE_QPOASES
Definition: Types.hpp:110
#define BEGIN_NAMESPACE_QPOASES
Definition: Types.hpp:107
Interfaces matrix-vector operations tailored to general dense matrices.
Definition: Matrices.hpp:329
int_t nCols
Definition: Matrices.hpp:496
virtual real_t diag(int_t i) const
Definition: Matrices.cpp:133
virtual returnValue print(const char *name=0) const
Definition: Matrices.cpp:596
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 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
int_t nRows
Definition: Matrices.hpp:495
virtual real_t getNorm(int_t type=2) const
Definition: Matrices.cpp:155
virtual ~DenseMatrix()
Definition: Matrices.cpp:101
real_t * val
Definition: Matrices.hpp:498
virtual returnValue writeToFile(FILE *output_file, const char *prefix) const
Definition: Matrices.cpp:582
DenseMatrix()
Definition: Matrices.hpp:332
virtual real_t getRowNorm(int_t rNum, int_t type=2) const
Definition: Matrices.cpp:162
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 real_t * full() const
Definition: Matrices.cpp:588
DenseMatrix(int_t m, int_t n, int_t lD, real_t *v)
Definition: Matrices.hpp:337
virtual Matrix * duplicate() const
Definition: Matrices.cpp:114
virtual returnValue addToDiag(real_t alpha)
Definition: Matrices.cpp:572
virtual void free()
Definition: Matrices.cpp:107
virtual returnValue getRow(int_t rNum, const Indexlist *const icols, real_t alpha, real_t *row) const
Definition: Matrices.cpp:177
virtual returnValue getCol(int_t cNum, const Indexlist *const irows, real_t alpha, real_t *col) const
Definition: Matrices.cpp:208
virtual BooleanType isDiag() const
Definition: Matrices.cpp:139
int_t leaDim
Definition: Matrices.hpp:497
Stores and manages index lists.
Definition: Indexlist.hpp:56
Abstract base class for interfacing tailored matrix-vector operations.
Definition: Matrices.hpp:60
virtual returnValue writeToFile(FILE *output_file, const char *prefix) const =0
void doNotFreeMemory()
Definition: Matrices.hpp:273
virtual BooleanType isDiag() const =0
Matrix()
Definition: Matrices.hpp:63
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
BooleanType needToFreeMemory() const
Definition: Matrices.hpp:267
BooleanType freeMemory
Definition: Matrices.hpp:277
virtual returnValue times(const Indexlist *const irows, const Indexlist *const icols, int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD, BooleanType yCompr=BT_TRUE) const =0
virtual returnValue transTimes(const Indexlist *const irows, const Indexlist *const icols, int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const =0
virtual real_t * full() const =0
virtual returnValue getCol(int_t cNum, const Indexlist *const irows, real_t alpha, real_t *col) const =0
virtual returnValue getRowNorm(real_t *norm, int_t type=2) const =0
virtual returnValue getRow(int_t rNum, const Indexlist *const icols, real_t alpha, real_t *row) const =0
virtual returnValue addToDiag(real_t alpha)=0
virtual real_t diag(int_t i) const =0
virtual real_t getNorm(int_t type=2) const =0
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
void doFreeMemory()
Definition: Matrices.hpp:270
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 =0
virtual real_t getRowNorm(int_t rNum, int_t type=2) const =0
virtual ~Matrix()
Definition: Matrices.hpp:66
virtual returnValue print(const char *name=0) const =0
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
virtual void free()=0
virtual Matrix * duplicate() const =0
Interfaces matrix-vector operations tailored to general sparse matrices.
Definition: Matrices.hpp:752
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
virtual real_t diag(int_t i) const
Definition: Matrices.cpp:1508
virtual Matrix * duplicate() const
Definition: Matrices.cpp:1478
real_t * val
Definition: Matrices.hpp:923
sparse_int_t * createDiagInfo()
Definition: Matrices.cpp:2062
virtual ~SparseMatrixRow()
Definition: Matrices.cpp:1452
sparse_int_t * ic
Definition: Matrices.hpp:921
virtual returnValue print(const char *name=0) const
Definition: Matrices.cpp:2096
virtual BooleanType isDiag() const
Definition: Matrices.cpp:1521
virtual void free()
Definition: Matrices.cpp:1465
virtual real_t getNorm(int_t type=2) const
Definition: Matrices.cpp:1542
virtual returnValue addToDiag(real_t alpha)
Definition: Matrices.cpp:2040
virtual real_t getRowNorm(int_t rNum, int_t type=2) const
Definition: Matrices.cpp:1551
int_t nCols
Definition: Matrices.hpp:919
sparse_int_t * jr
Definition: Matrices.hpp:920
sparse_int_t * jd
Definition: Matrices.hpp:922
virtual returnValue getRow(int_t rNum, const Indexlist *const icols, real_t alpha, real_t *row) const
Definition: Matrices.cpp:1570
virtual returnValue getCol(int_t cNum, const Indexlist *const irows, real_t alpha, real_t *col) const
Definition: Matrices.cpp:1627
virtual returnValue writeToFile(FILE *output_file, const char *prefix) const
Definition: Matrices.cpp:2105
SparseMatrixRow()
Definition: Matrices.cpp:1422
virtual real_t * full() const
Definition: Matrices.cpp:2080
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 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
int_t nRows
Definition: Matrices.hpp:918
Interfaces matrix-vector operations tailored to general sparse matrices.
Definition: Matrices.hpp:558
virtual real_t diag(int_t i) const
Definition: Matrices.cpp:767
virtual void setVal(const real_t *newVal)
Definition: Matrices.cpp:757
virtual returnValue addToDiag(real_t alpha)
Definition: Matrices.cpp:1340
virtual returnValue getCol(int_t cNum, const Indexlist *const irows, real_t alpha, real_t *col) const
Definition: Matrices.cpp:917
sparse_int_t * jd
Definition: Matrices.hpp:737
sparse_int_t * ir
Definition: Matrices.hpp:735
virtual returnValue getRow(int_t rNum, const Indexlist *const icols, real_t alpha, real_t *row) const
Definition: Matrices.cpp:864
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
int_t nCols
Definition: Matrices.hpp:734
virtual ~SparseMatrix()
Definition: Matrices.cpp:702
virtual Matrix * duplicate() const
Definition: Matrices.cpp:728
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
virtual void free()
Definition: Matrices.cpp:715
virtual returnValue writeToFile(FILE *output_file, const char *prefix) const
Definition: Matrices.cpp:1406
virtual real_t * full() const
Definition: Matrices.cpp:1381
virtual returnValue print(const char *name=0) const
Definition: Matrices.cpp:1397
real_t * val
Definition: Matrices.hpp:738
int_t nRows
Definition: Matrices.hpp:733
SparseMatrix()
Definition: Matrices.cpp:671
sparse_int_t * createDiagInfo()
Definition: Matrices.cpp:1362
virtual real_t getRowNorm(int_t rNum, int_t type=2) const
Definition: Matrices.cpp:809
virtual BooleanType isDiag() const
Definition: Matrices.cpp:780
virtual real_t getNorm(int_t type=2) const
Definition: Matrices.cpp:801
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
sparse_int_t * jc
Definition: Matrices.hpp:736
Interfaces matrix-vector operations tailored to symmetric dense matrices.
Definition: Matrices.hpp:512
SymDenseMat(int_t m, int_t n, int_t lD, real_t *v)
Definition: Matrices.hpp:518
virtual Matrix * duplicate() const
Definition: Matrices.cpp:603
SymDenseMat()
Definition: Matrices.hpp:515
virtual SymmetricMatrix * duplicateSym() const
Definition: Matrices.cpp:609
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 ~SymDenseMat()
Definition: Matrices.hpp:525
Interfaces matrix-vector operations tailored to symmetric sparse matrices.
Definition: Matrices.hpp:937
SymSparseMat(int_t nr, int_t nc, int_t ld, const real_t *const v)
Definition: Matrices.hpp:951
virtual Matrix * duplicate() const
Definition: Matrices.cpp:2110
virtual SymmetricMatrix * duplicateSym() const
Definition: Matrices.cpp:2116
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
SymSparseMat()
Definition: Matrices.hpp:940
virtual ~SymSparseMat()
Definition: Matrices.hpp:958
SymSparseMat(int_t nr, int_t nc, sparse_int_t *r, sparse_int_t *c, real_t *v)
Definition: Matrices.hpp:943
Abstract base class for interfacing matrix-vector operations tailored to symmetric matrices.
Definition: Matrices.hpp:293
virtual ~SymmetricMatrix()
Definition: Matrices.hpp:299
SymmetricMatrix()
Definition: Matrices.hpp:296
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
virtual SymmetricMatrix * duplicateSym() const =0