Quellcode durchsuchen

bug fix in eigs; orthogonality check was totally wrong

Former-commit-id: 95f704df80d211ad6bdac9e1964e6f96ef62b4de
Alec Jacobson vor 8 Jahren
Ursprung
Commit
617ca88591
1 geänderte Dateien mit 5 neuen und 3 gelöschten Zeilen
  1. 5 3
      include/igl/eigs.cpp

+ 5 - 3
include/igl/eigs.cpp

@@ -137,7 +137,7 @@ IGL_INLINE bool igl::eigs(
     if(
       i==0 || 
       (S.head(i).array()-sigma).abs().maxCoeff()>1e-14 ||
-      ((S.transpose()*B*x).array().abs()>=1e-7).all()
+      ((U.leftCols(i).transpose()*B*x).array().abs()<=1e-7).all()
       )
     {
       //cout<<"Found "<<i<<"th mode"<<endl;
@@ -150,8 +150,10 @@ IGL_INLINE bool igl::eigs(
       }
     }else
     {
-      std::cout<<(S.head(i).array()-sigma).abs().maxCoeff()<<std::endl;
-      std::cout<<(S.transpose()*B*x).array().abs().transpose()<<std::endl;
+      //std::cout<<"i: "<<i<<std::endl;
+      //std::cout<<"  "<<S.head(i).transpose()<<" << "<<sigma<<std::endl;
+      //std::cout<<"  "<<(S.head(i).array()-sigma).abs().maxCoeff()<<std::endl;
+      //std::cout<<"  "<<(U.leftCols(i).transpose()*B*x).array().abs().transpose()<<std::endl;
       // restart with new random guess.
       cout<<"igl::eigs RESTART"<<endl;
     }