From 894ed518c83364e29131216be6b02efd2ae423ff Mon Sep 17 00:00:00 2001 From: Michel Juillard Date: Fri, 14 May 2010 15:03:15 +0200 Subject: [PATCH 1/2] mjdgges.c: eliminates bogus imaginary NaNs in eigenvalues --- mex/sources/mjdgges/mjdgges.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mex/sources/mjdgges/mjdgges.c b/mex/sources/mjdgges/mjdgges.c index ecdec0546..8569cb20e 100644 --- a/mex/sources/mjdgges/mjdgges.c +++ b/mex/sources/mjdgges/mjdgges.c @@ -61,7 +61,10 @@ mjdgges(double *a, double *b, double *z, double *n, double *sdim, double *eval_r for (per = eval_r; per <= &eval_r[i_n-1]; ++per) { *per = *par / *pb; - *pei = *pai / *pb; + if (*pai == 0.0 && *pb == 0.0) + *pei = 0.0; + else + *pei = *pai / *pb; ++par; ++pai; ++pb; From 399d66d81cf3eb194f182a530b8914800f176479 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Fri, 14 May 2010 19:26:52 +0200 Subject: [PATCH 2/2] Estimation DLL, generalized Schur decomposition: fix bug with complex part of infinite generalized eigenvalue (was NaN instead of zero) --- .../estimation/libmat/GeneralizedSchurDecomposition.hh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mex/sources/estimation/libmat/GeneralizedSchurDecomposition.hh b/mex/sources/estimation/libmat/GeneralizedSchurDecomposition.hh index ca7ddc903..f776ba333 100644 --- a/mex/sources/estimation/libmat/GeneralizedSchurDecomposition.hh +++ b/mex/sources/estimation/libmat/GeneralizedSchurDecomposition.hh @@ -102,8 +102,14 @@ GeneralizedSchurDecomposition::getGeneralizedEigenvalues(Vec1 &eig_real, Vec2 &e *per = eig_real.getData(), *pei = eig_cmplx.getData(); while (par < alphar + n) { - *per = *par++ / *pb; - *pei = *pai++ / *pb++; + *per = *par / *pb; + if (*pai == 0.0 && *pb == 0.0) + *pei = 0.0; + else + *pei = *pai / *pb; + par++; + pai++; + pb++; per += eig_real.getStride(); pei += eig_cmplx.getStride(); }