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