fixed potential bug in cv::eigen()
This commit is contained in:
parent
9187739d18
commit
dbfa8408d2
@ -245,9 +245,7 @@ JacobiImpl_( _Tp* A, size_t astep, _Tp* W, _Tp* V, size_t vstep, int n, uchar* b
|
||||
|
||||
int iters, maxIters = n*n*30;
|
||||
|
||||
_Tp* maxSR = (_Tp*)alignPtr(buf, sizeof(_Tp));
|
||||
_Tp* maxSC = maxSR + n;
|
||||
int* indR = (int*)(maxSC + n);
|
||||
int* indR = (int*)alignPtr(buf, sizeof(int));
|
||||
int* indC = indR + n;
|
||||
_Tp mv = (_Tp)0;
|
||||
|
||||
@ -262,7 +260,6 @@ JacobiImpl_( _Tp* A, size_t astep, _Tp* W, _Tp* V, size_t vstep, int n, uchar* b
|
||||
if( mv < val )
|
||||
mv = val, m = i;
|
||||
}
|
||||
maxSR[k] = mv;
|
||||
indR[k] = m;
|
||||
}
|
||||
if( k > 0 )
|
||||
@ -273,7 +270,6 @@ JacobiImpl_( _Tp* A, size_t astep, _Tp* W, _Tp* V, size_t vstep, int n, uchar* b
|
||||
if( mv < val )
|
||||
mv = val, m = i;
|
||||
}
|
||||
maxSC[k] = mv;
|
||||
indC[k] = m;
|
||||
}
|
||||
}
|
||||
@ -281,16 +277,16 @@ JacobiImpl_( _Tp* A, size_t astep, _Tp* W, _Tp* V, size_t vstep, int n, uchar* b
|
||||
if( n > 1 ) for( iters = 0; iters < maxIters; iters++ )
|
||||
{
|
||||
// find index (k,l) of pivot p
|
||||
for( k = 0, mv = maxSR[0], i = 1; i < n-1; i++ )
|
||||
for( k = 0, mv = std::abs(A[indR[0]]), i = 1; i < n-1; i++ )
|
||||
{
|
||||
_Tp val = maxSR[i];
|
||||
_Tp val = std::abs(A[astep*i + indR[i]]);
|
||||
if( mv < val )
|
||||
mv = val, k = i;
|
||||
}
|
||||
int l = indR[k];
|
||||
for( i = 1; i < n; i++ )
|
||||
{
|
||||
_Tp val = maxSC[i];
|
||||
_Tp val = std::abs(A[astep*indC[i] + i]);
|
||||
if( mv < val )
|
||||
mv = val, k = indC[i], l = i;
|
||||
}
|
||||
@ -341,7 +337,6 @@ JacobiImpl_( _Tp* A, size_t astep, _Tp* W, _Tp* V, size_t vstep, int n, uchar* b
|
||||
if( mv < val )
|
||||
mv = val, m = i;
|
||||
}
|
||||
maxSR[idx] = mv;
|
||||
indR[idx] = m;
|
||||
}
|
||||
if( idx > 0 )
|
||||
@ -352,7 +347,6 @@ JacobiImpl_( _Tp* A, size_t astep, _Tp* W, _Tp* V, size_t vstep, int n, uchar* b
|
||||
if( mv < val )
|
||||
mv = val, m = i;
|
||||
}
|
||||
maxSC[idx] = mv;
|
||||
indC[idx] = m;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user