max@0
|
1 // Copyright (C) 2009-2011 NICTA (www.nicta.com.au)
|
max@0
|
2 // Copyright (C) 2009-2011 Conrad Sanderson
|
max@0
|
3 // Copyright (C) 2009-2010 Dimitrios Bouzas
|
max@0
|
4 //
|
max@0
|
5 // This file is part of the Armadillo C++ library.
|
max@0
|
6 // It is provided without any warranty of fitness
|
max@0
|
7 // for any purpose. You can redistribute this file
|
max@0
|
8 // and/or modify it under the terms of the GNU
|
max@0
|
9 // Lesser General Public License (LGPL) as published
|
max@0
|
10 // by the Free Software Foundation, either version 3
|
max@0
|
11 // of the License or (at your option) any later version.
|
max@0
|
12 // (see http://www.opensource.org/licenses for more info)
|
max@0
|
13
|
max@0
|
14
|
max@0
|
15 //! \addtogroup fn_pinv
|
max@0
|
16 //! @{
|
max@0
|
17
|
max@0
|
18
|
max@0
|
19
|
max@0
|
20 template<typename T1>
|
max@0
|
21 inline
|
max@0
|
22 const Op<T1, op_pinv>
|
max@0
|
23 pinv
|
max@0
|
24 (
|
max@0
|
25 const Base<typename T1::elem_type,T1>& X,
|
max@0
|
26 const typename T1::elem_type tol = 0.0,
|
max@0
|
27 const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0
|
max@0
|
28 )
|
max@0
|
29 {
|
max@0
|
30 arma_extra_debug_sigprint();
|
max@0
|
31 arma_ignore(junk);
|
max@0
|
32
|
max@0
|
33 return Op<T1, op_pinv>(X.get_ref(), tol);
|
max@0
|
34 }
|
max@0
|
35
|
max@0
|
36
|
max@0
|
37
|
max@0
|
38 template<typename T1>
|
max@0
|
39 inline
|
max@0
|
40 bool
|
max@0
|
41 pinv
|
max@0
|
42 (
|
max@0
|
43 Mat<typename T1::elem_type>& out,
|
max@0
|
44 const Base<typename T1::elem_type,T1>& X,
|
max@0
|
45 const typename T1::elem_type tol = 0.0,
|
max@0
|
46 const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0
|
max@0
|
47 )
|
max@0
|
48 {
|
max@0
|
49 arma_extra_debug_sigprint();
|
max@0
|
50 arma_ignore(junk);
|
max@0
|
51
|
max@0
|
52 try
|
max@0
|
53 {
|
max@0
|
54 out = pinv(X,tol);
|
max@0
|
55 }
|
max@0
|
56 catch(std::runtime_error&)
|
max@0
|
57 {
|
max@0
|
58 return false;
|
max@0
|
59 }
|
max@0
|
60
|
max@0
|
61 return true;
|
max@0
|
62 }
|
max@0
|
63
|
max@0
|
64
|
max@0
|
65
|
max@0
|
66 //! @}
|