8 |
|
#include <cmath> |
9 |
|
// for abs() below |
10 |
|
|
11 |
< |
using namespace oopse; |
11 |
> |
using namespace OpenMD; |
12 |
|
using namespace std; |
13 |
|
|
14 |
|
namespace JAMA |
42 |
|
|
43 |
|
|
44 |
|
SVD (const DynamicRectMatrix<Real> &Arg) { |
45 |
– |
|
45 |
|
m = Arg.getNRow(); |
46 |
|
n = Arg.getNCol(); |
47 |
|
int nu = min(m,n); |
51 |
|
DynamicVector<Real> e(n); |
52 |
|
DynamicVector<Real> work(m); |
53 |
|
DynamicRectMatrix<Real> A(Arg); |
54 |
< |
int wantu = 1; /* boolean */ |
55 |
< |
int wantv = 1; /* boolean */ |
54 |
> |
|
55 |
> |
int wantu = 1; /* boolean */ |
56 |
> |
int wantv = 1; /* boolean */ |
57 |
|
int i=0, j=0, k=0; |
58 |
|
|
59 |
|
// Reduce A to bidiagonal form, storing the diagonal elements |
61 |
|
|
62 |
|
int nct = min(m-1,n); |
63 |
|
int nrt = max(0,min(n-2,m)); |
64 |
+ |
|
65 |
|
for (k = 0; k < max(nct,nrt); k++) { |
66 |
|
if (k < nct) { |
67 |
|
|