浏览代码

fixed dynamic array allocation; fixed member function signature

Johannes R 12 年之前
父节点
当前提交
c2ad0178ca
共有 1 个文件被更改,包括 4 次插入3 次删除
  1. 4 3
      core/vector/Eigen.tcc

+ 4 - 3
core/vector/Eigen.tcc

@@ -30,7 +30,7 @@ VectorT<T> maxEigenVector(const MatrixT<T>& a) {
 }
 
 template<class T>
-VectorT<T> *eigenvalues(const MatrixT<T> &A, VectorT<T> *evals=NULL)
+VectorT<T> *eigenvalues(const MatrixT<T> &A, VectorT<T> *evals)
 {
     size_t vsize=A.cols();
     if(A.rows()!=vsize)
@@ -61,17 +61,18 @@ void eigenvectorvalues(const MatrixT<T> &A, MatrixT<T> &evecs,  VectorT<T> &eval
         evecs.resize(vsize,vsize);
     if(evals.size()!=vsize)
         evals.resize(vsize);
-    T buffer[vsize*vsize];
+    T *buffer = new T[vsize*vsize];
     size_t tsize=sizeof(T);
     IppStatus ret = ippmEigenValuesVectorsSym_m(A.getDataPointer(), vsize*tsize, tsize, buffer,
                                                 evecs.getDataPointer(), vsize*tsize, tsize, evals.getDataPointer(), vsize);
     evecs.transposeInplace();
+	delete [] buffer;
 	if(ret!=ippStsNoErr)
 	   _THROW_EVector(ippGetStatusString(ret));
 }
 
 template<class T>
-VectorT<T> *eigenvalues(const RowMatrixT<T> &A, VectorT<T> *evals=NULL)
+VectorT<T> *eigenvalues(const RowMatrixT<T> &A, VectorT<T> *evals)
 {
     size_t vsize=A.cols();
     if(A.rows()!=vsize)