Mercurial > hg > octave-lyh
diff src/DLD-FUNCTIONS/svd.cc @ 15887:8ced82e96b48 stable
Fix segfaults with gesdd driver for svd (bug #37998).
* liboctave/CmplxSVD.cc(init): Correctly size rwork array for gesdd driver.
* liboctave/fCmplxSVD.cc(init): Correctly size rwork array for gesdd driver.
* liboctave/dbleSVD.cc(init): Tweak coding style to match CmplxSVD.cc.
* liboctave/floatSVD.cc(init): Tweak coding style to match fCmplxSVD.cc.
* src/DLD-FUNCTIONS/svd.cc: Add %!test for gesdd driver and complex matrices.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 03 Jan 2013 10:05:03 -0800 |
parents | 72c96de7a403 |
children |
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/svd.cc +++ b/src/DLD-FUNCTIONS/svd.cc @@ -423,3 +423,16 @@ return SET_INTERNAL_VARIABLE_CHOICES (svd_driver, driver_names); } + +/* +%!test +%! A = [1+1i, 1-1i, 0; 0, 2, 0; 1i, 1i, 1+2i]; +%! old_driver = svd_driver ("gesvd"); +%! [U1, S1, V1] = svd (A); +%! svd_driver ("gesdd"); +%! [U2, S2, V2] = svd (A); +%! assert (U1, U2, 5*eps); +%! assert (S1, S2, 5*eps); +%! assert (V1, V2, 5*eps); +%! svd_driver (old_driver); +*/