Mercurial > hg > octave-nkf
comparison liboctave/CmplxSVD.cc @ 10185:455759a5fcbe
fix norm and svd on empty matrices
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 22 Jan 2010 12:37:03 +0100 |
parents | 4c0cdbe0acca |
children | e317791645c4 |
comparison
equal
deleted
inserted
replaced
10184:b39bd23019eb | 10185:455759a5fcbe |
---|---|
139 | 139 |
140 octave_idx_type lwork = -1; | 140 octave_idx_type lwork = -1; |
141 | 141 |
142 Array<Complex> work (1); | 142 Array<Complex> work (1); |
143 | 143 |
144 octave_idx_type m1 = std::max (m, 1), nrow_vt1 = std::max (nrow_vt, 1); | |
145 | |
144 F77_XFCN (zgesvd, ZGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1), | 146 F77_XFCN (zgesvd, ZGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1), |
145 F77_CONST_CHAR_ARG2 (&jobv, 1), | 147 F77_CONST_CHAR_ARG2 (&jobv, 1), |
146 m, n, tmp_data, m, s_vec, u, m, vt, | 148 m, n, tmp_data, m1, s_vec, u, m1, vt, |
147 nrow_vt, work.fortran_vec (), lwork, | 149 nrow_vt1, work.fortran_vec (), lwork, |
148 rwork.fortran_vec (), info | 150 rwork.fortran_vec (), info |
149 F77_CHAR_ARG_LEN (1) | 151 F77_CHAR_ARG_LEN (1) |
150 F77_CHAR_ARG_LEN (1))); | 152 F77_CHAR_ARG_LEN (1))); |
151 | 153 |
152 lwork = static_cast<octave_idx_type> (work(0).real ()); | 154 lwork = static_cast<octave_idx_type> (work(0).real ()); |
153 work.resize (lwork); | 155 work.resize (lwork); |
154 | 156 |
155 F77_XFCN (zgesvd, ZGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1), | 157 F77_XFCN (zgesvd, ZGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1), |
156 F77_CONST_CHAR_ARG2 (&jobv, 1), | 158 F77_CONST_CHAR_ARG2 (&jobv, 1), |
157 m, n, tmp_data, m, s_vec, u, m, vt, | 159 m, n, tmp_data, m1, s_vec, u, m1, vt, |
158 nrow_vt, work.fortran_vec (), lwork, | 160 nrow_vt1, work.fortran_vec (), lwork, |
159 rwork.fortran_vec (), info | 161 rwork.fortran_vec (), info |
160 F77_CHAR_ARG_LEN (1) | 162 F77_CHAR_ARG_LEN (1) |
161 F77_CHAR_ARG_LEN (1))); | 163 F77_CHAR_ARG_LEN (1))); |
162 | 164 |
163 if (! (jobv == 'N' || jobv == 'O')) | 165 if (! (jobv == 'N' || jobv == 'O')) |