| 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 |
|
|