annotate liboctave/MatrixType.h @ 7789:82be108cc558

First attempt at single precision tyeps * * * corrections to qrupdate single precision routines * * * prefer demotion to single over promotion to double * * * Add single precision support to log2 function * * * Trivial PROJECT file update * * * Cache optimized hermitian/transpose methods * * * Add tests for tranpose/hermitian and ChangeLog entry for new transpose code
author David Bateman <dbateman@free.fr>
date Sun, 27 Apr 2008 22:34:17 +0200
parents a1dbe9d80eee
children 72c332d2db3c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5785
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
1 /*
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
2
7017
a1dbe9d80eee [project @ 2007-10-12 21:27:11 by jwe]
jwe
parents: 7016
diff changeset
3 Copyright (C) 2006, 2007 David Bateman
5785
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
4 Copyright (C) 2006 Andy Adler
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
5
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6376
diff changeset
6 This file is part of Octave.
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6376
diff changeset
7
5785
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
8 Octave is free software; you can redistribute it and/or modify it
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6376
diff changeset
10 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6376
diff changeset
11 option) any later version.
5785
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
12
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
13 Octave is distributed in the hope that it will be useful, but WITHOUT
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
16 for more details.
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
17
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6376
diff changeset
19 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6376
diff changeset
20 <http://www.gnu.org/licenses/>.
5785
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
21
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
22 */
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
23
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
24 #if !defined (octave_MatrixType_h)
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
25 #define octave_MatrixType_h
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
26
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
27 class Matrix;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
28 class ComplexMatrix;
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
29 class FloatMatrix;
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
30 class FloatComplexMatrix;
5785
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
31 class SparseMatrix;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
32 class SparseComplexMatrix;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
33
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
34 class
6108
143b556ce725 [project @ 2006-10-27 01:45:54 by jwe]
jwe
parents: 5785
diff changeset
35 OCTAVE_API
5785
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
36 MatrixType
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
37 {
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
38 public:
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
39 enum matrix_type {
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
40 Unknown = 0,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
41 Full,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
42 Diagonal,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
43 Permuted_Diagonal,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
44 Upper,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
45 Lower,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
46 Permuted_Upper,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
47 Permuted_Lower,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
48 Banded,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
49 Hermitian,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
50 Banded_Hermitian,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
51 Tridiagonal,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
52 Tridiagonal_Hermitian,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
53 Rectangular
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
54 };
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
55
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
56 MatrixType (void);
6376
0eac3484e8df [project @ 2007-03-02 02:18:37 by jwe]
jwe
parents: 6108
diff changeset
57
5785
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
58 MatrixType (const MatrixType &a);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
59
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
60 MatrixType (const Matrix &a);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
61
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
62 MatrixType (const ComplexMatrix &a);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
63
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
64 MatrixType (const FloatMatrix &a);
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
65
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
66 MatrixType (const FloatComplexMatrix &a);
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
67
5785
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
68 MatrixType (const SparseMatrix &a);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
69
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
70 MatrixType (const SparseComplexMatrix &a);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
71
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
72 MatrixType (const matrix_type t, bool _full = false);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
73
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
74 MatrixType (const matrix_type t, const octave_idx_type np,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
75 const octave_idx_type *p, bool _full = false);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
76
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
77 MatrixType (const matrix_type t, const octave_idx_type ku,
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
78 const octave_idx_type kl, bool _full = false);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
79
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
80 ~MatrixType (void);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
81
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
82 MatrixType& operator = (const MatrixType& a);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
83
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
84 int type (bool quiet = true);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
85
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
86 int type (const Matrix &a);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
87
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
88 int type (const ComplexMatrix &a);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
89
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
90 int type (const FloatMatrix &a);
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
91
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
92 int type (const FloatComplexMatrix &a);
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
93
5785
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
94 int type (const SparseMatrix &a);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
95
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
96 int type (const SparseComplexMatrix &a);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
97
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
98 double band_density (void) const { return bandden; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
99
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
100 int nupper (void) const { return upper_band; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
101
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
102 int nlower (void) const { return lower_band; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
103
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
104 bool is_dense (void) const { return dense; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
105
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
106 bool is_diagonal (void) const
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
107 { return (typ == Diagonal || typ == Permuted_Diagonal); }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
108
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
109 bool is_upper_triangular (void) const
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
110 { return (typ == Upper || typ == Permuted_Upper); }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
111
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
112 bool is_lower_triangular (void) const
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
113 { return (typ == Lower || typ == Permuted_Lower); }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
114
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
115 bool is_banded (void)
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
116 { return (typ == Banded || typ == Banded_Hermitian); }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
117
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
118 bool is_tridiagonal (void) const
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
119 { return (typ == Tridiagonal || typ == Tridiagonal_Hermitian); }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
120
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
121 bool is_hermitian (void) const
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
122 { return (typ == Banded_Hermitian || typ == Tridiagonal_Hermitian ||
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
123 typ == Hermitian); }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
124
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
125 bool is_rectangular (void) const { return (typ == Rectangular); }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
126
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
127 bool is_known (void) const { return (typ != Unknown); }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
128
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
129 bool is_unknown (void) const { return (typ == Unknown); }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
130
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
131 void info (void) const;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
132
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
133 octave_idx_type * triangular_perm (void) const { return perm; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
134
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
135 void invalidate_type (void) { typ = Unknown; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
136
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
137 void mark_as_diagonal (void) { typ = Diagonal; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
138
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
139 void mark_as_permuted_diagonal (void) { typ = Permuted_Diagonal; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
140
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
141 void mark_as_upper_triangular (void) { typ = Upper; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
142
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
143 void mark_as_lower_triangular (void) { typ = Lower; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
144
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
145 void mark_as_tridiagonal (void) {typ = Tridiagonal; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
146
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
147 void mark_as_banded (const octave_idx_type ku, const octave_idx_type kl)
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
148 { typ = Banded; upper_band = ku; lower_band = kl; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
149
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
150 void mark_as_full (void) { typ = Full; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
151
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
152 void mark_as_rectangular (void) { typ = Rectangular; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
153
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
154 void mark_as_dense (void) { dense = true; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
155
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
156 void mark_as_not_dense (void) { dense = false; }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
157
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
158 void mark_as_symmetric (void);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
159
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
160 void mark_as_unsymmetric (void);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
161
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
162 void mark_as_permuted (const octave_idx_type np, const octave_idx_type *p);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
163
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
164 void mark_as_unpermuted (void);
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
165
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
166 MatrixType transpose (void) const;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
167
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
168 private:
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
169 void type (int new_typ) { typ = static_cast<matrix_type>(new_typ); }
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
170
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
171 matrix_type typ;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
172 double sp_bandden;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
173 double bandden;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
174 octave_idx_type upper_band;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
175 octave_idx_type lower_band;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
176 bool dense;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
177 bool full;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
178 octave_idx_type nperm;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
179 octave_idx_type *perm;
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
180 };
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
181
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
182 #endif
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
183
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
184 /*
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
185 ;;; Local Variables: ***
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
186 ;;; mode: C++ ***
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
187 ;;; End: ***
6b9cec830d72 [project @ 2006-05-03 19:32:46 by dbateman]
dbateman
parents:
diff changeset
188 */