comparison liboctave/CmplxQR.cc @ 1251:97eac19837dc

[project @ 1995-04-11 15:58:32 by jwe]
author jwe
date Tue, 11 Apr 1995 15:58:32 +0000
parents b6360f2d4fa6
children bb67a902760b
comparison
equal deleted inserted replaced
1250:5cca5ae20299 1251:97eac19837dc
30 #include "lo-error.h" 30 #include "lo-error.h"
31 #include "f77-uscore.h" 31 #include "f77-uscore.h"
32 32
33 extern "C" 33 extern "C"
34 { 34 {
35 int F77_FCN (zgeqrf) (const int*, const int*, Complex*, const int*, 35 int F77_FCN (zgeqrf) (const int&, const int&, Complex*, const int&,
36 Complex*, Complex*, const int*, int*); 36 Complex*, Complex*, const int&, int&);
37 37
38 int F77_FCN (zungqr) (const int*, const int*, const int*, Complex*, 38 int F77_FCN (zungqr) (const int&, const int&, const int&, Complex*,
39 const int*, Complex*, Complex*, const int*, int*); 39 const int&, Complex*, Complex*, const int&, int&);
40 } 40 }
41 41
42 ComplexQR::ComplexQR (const ComplexMatrix& a, QR::type qr_type) 42 ComplexQR::ComplexQR (const ComplexMatrix& a, QR::type qr_type)
43 { 43 {
44 int m = a.rows (); 44 int m = a.rows ();
64 copy (tmp_data, a.data (), a.length ()); 64 copy (tmp_data, a.data (), a.length ());
65 } 65 }
66 else 66 else
67 tmp_data = dup (a.data (), a.length ()); 67 tmp_data = dup (a.data (), a.length ());
68 68
69 F77_FCN (zgeqrf) (&m, &n, tmp_data, &m, tau, work, &lwork, &info); 69 F77_FCN (zgeqrf) (m, n, tmp_data, m, tau, work, lwork, info);
70 70
71 delete [] work; 71 delete [] work;
72 72
73 if (qr_type == QR::raw) 73 if (qr_type == QR::raw)
74 { 74 {
101 } 101 }
102 102
103 lwork = 32*m; 103 lwork = 32*m;
104 work = new Complex[lwork]; 104 work = new Complex[lwork];
105 105
106 F77_FCN (zungqr) (&m, &m, &min_mn, tmp_data, &m, tau, work, 106 F77_FCN (zungqr) (m, m, min_mn, tmp_data, m, tau, work, lwork, info);
107 &lwork, &info);
108 107
109 q = ComplexMatrix (tmp_data, m, m); 108 q = ComplexMatrix (tmp_data, m, m);
110 q.resize (m, n2); 109 q.resize (m, n2);
111 110
112 delete [] tau; 111 delete [] tau;