[eigen] Bug in SVD applied to specific matrix sizes

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

I have stumbled upon a bug in SVD when applying it to certain matrix sizes.
The particular problem occured when doing a simple four-point Direct
Linear Transform in reduced form, providing a matrix of size 8x9.
In this case an attempt to set a value to an index out of bounds, in
the array m_sigma.
The particular code is shown here:
  // Set up the final bidiagonal matrix or order p.
  int p = std::min(n,m+1);
  if (nct < n)
    m_sigma[nct] = matA(nct,nct);
  if (m < p)
    m_sigma[p-1] = 0.0;

m_sigma has size m, whereas p is set to n=m+1. In this particular case
m_sigma[8] will be set, but m_sigma's highest index is 7.

A quick test shows that this will consistently happen whenever the
number of columns is greater than the number of rows.

Unfortunately I don't know enough of Eigen's internal to create a
reasonable fix.

Jens Andersen

Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/