GNU Octave  3.8.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
base-lu.h
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 1996-2013 John W. Eaton
4 Copyright (C) 2009 VZLU Prague
5 
6 This file is part of Octave.
7 
8 Octave is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by the
10 Free Software Foundation; either version 3 of the License, or (at your
11 option) any later version.
12 
13 Octave is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 for more details.
17 
18 You should have received a copy of the GNU General Public License
19 along with Octave; see the file COPYING. If not, see
20 <http://www.gnu.org/licenses/>.
21 
22 */
23 
24 #if !defined (octave_base_lu_h)
25 #define octave_base_lu_h 1
26 
27 #include "MArray.h"
28 #include "dColVector.h"
29 #include "PermMatrix.h"
30 
31 template <class lu_type>
32 class
33 base_lu
34 {
35 public:
36 
37  typedef typename lu_type::element_type lu_elt_type;
38 
39  base_lu (void)
40  : a_fact (), l_fact (), ipvt () { }
41 
42  base_lu (const base_lu& a)
43  : a_fact (a.a_fact), l_fact (a.l_fact), ipvt (a.ipvt) { }
44 
45  base_lu (const lu_type& l, const lu_type& u,
46  const PermMatrix& p);
47 
48  base_lu& operator = (const base_lu& a)
49  {
50  if (this != &a)
51  {
52  a_fact = a.a_fact;
53  l_fact = a.l_fact;
54  ipvt = a.ipvt;
55  }
56  return *this;
57  }
58 
59  virtual ~base_lu (void) { }
60 
61  bool packed (void) const;
62 
63  void unpack (void);
64 
65  lu_type L (void) const;
66 
67  lu_type U (void) const;
68 
69  lu_type Y (void) const;
70 
71  PermMatrix P (void) const;
72 
73  ColumnVector P_vec (void) const;
74 
75  bool regular (void) const;
76 
77 protected:
78 
79  Array<octave_idx_type> getp (void) const;
80 
81  lu_type a_fact;
82  lu_type l_fact;
83 
85 };
86 
87 #endif