comparison liboctave/floatSVD.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
135 135
136 octave_idx_type lwork = -1; 136 octave_idx_type lwork = -1;
137 137
138 Array<float> work (1); 138 Array<float> work (1);
139 139
140 octave_idx_type m1 = std::max (m, 1), nrow_vt1 = std::max (nrow_vt, 1);
141
140 F77_XFCN (sgesvd, SGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1), 142 F77_XFCN (sgesvd, SGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1),
141 F77_CONST_CHAR_ARG2 (&jobv, 1), 143 F77_CONST_CHAR_ARG2 (&jobv, 1),
142 m, n, tmp_data, m, s_vec, u, m, vt, 144 m, n, tmp_data, m1, s_vec, u, m1, vt,
143 nrow_vt, work.fortran_vec (), lwork, info 145 nrow_vt1, work.fortran_vec (), lwork, info
144 F77_CHAR_ARG_LEN (1) 146 F77_CHAR_ARG_LEN (1)
145 F77_CHAR_ARG_LEN (1))); 147 F77_CHAR_ARG_LEN (1)));
146 148
147 lwork = static_cast<octave_idx_type> (work(0)); 149 lwork = static_cast<octave_idx_type> (work(0));
148 work.resize (lwork); 150 work.resize (lwork);
149 151
150 F77_XFCN (sgesvd, SGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1), 152 F77_XFCN (sgesvd, SGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1),
151 F77_CONST_CHAR_ARG2 (&jobv, 1), 153 F77_CONST_CHAR_ARG2 (&jobv, 1),
152 m, n, tmp_data, m, s_vec, u, m, vt, 154 m, n, tmp_data, m1, s_vec, u, m1, vt,
153 nrow_vt, work.fortran_vec (), lwork, info 155 nrow_vt1, work.fortran_vec (), lwork, info
154 F77_CHAR_ARG_LEN (1) 156 F77_CHAR_ARG_LEN (1)
155 F77_CHAR_ARG_LEN (1))); 157 F77_CHAR_ARG_LEN (1)));
156 158
157 if (! (jobv == 'N' || jobv == 'O')) 159 if (! (jobv == 'N' || jobv == 'O'))
158 right_sm = right_sm.transpose (); 160 right_sm = right_sm.transpose ();