source: trunk/src/SVD.cc @ 227

Last change on this file since 227 was 227, checked in by Jari Häkkinen, 18 years ago

Started reimplementation of the vector class.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.3 KB
Line 
1// $Id: SVD.cc 227 2005-02-01 00:52:27Z jari $
2
3#include "SVD.h"
4
5
6namespace theplu {
7namespace cpptools {
8
9
10  SVD::SVD(const gslapi::matrix& Ain)
11    : U_(Ain), V_(Ain.columns(),Ain.columns()), s_(Ain.columns())
12  {
13  }
14
15
16
17  SVD::~SVD(void)
18  {
19  }
20
21
22
23  int SVD::decompose(SVDalgorithm algo)
24  {
25    switch (algo) {
26        case GolubReinsch:
27          return golub_reinsch();
28        case ModifiedGolubReinsch:
29          return modified_golub_reinsch();
30        case Jacobi:
31          return jacobi();
32    }
33    // the program should never end up here, return values should be
34    // something different from normal GSL return values, or maybe
35    // throw an exception.
36    return 0;
37  }
38
39
40
41  int SVD::golub_reinsch(void)
42  {
43    gslapi::vector w(U_.columns());
44    return gsl_linalg_SV_decomp(U_.gsl_matrix_pointer(),
45                                V_.gsl_matrix_pointer(),
46                                s_.TEMP_gsl_vector_pointer(),
47                                w.TEMP_gsl_vector_pointer());
48  }
49
50
51
52  int SVD::modified_golub_reinsch(void)
53  {
54    gslapi::vector w(U_.columns());
55    gslapi::matrix X(U_.columns(),U_.columns());
56    return gsl_linalg_SV_decomp_mod(U_.gsl_matrix_pointer(),
57                                    X.gsl_matrix_pointer(), 
58                                    V_.gsl_matrix_pointer(),
59                                    s_.TEMP_gsl_vector_pointer(),
60                                    w.TEMP_gsl_vector_pointer());
61  }
62
63
64}} // of namespace cpptools and namespace theplu
Note: See TracBrowser for help on using the repository browser.