doyubkim / fluid-engine-dev

Fluid simulation engine for computer graphics applications
https://fluidenginedevelopment.org/
MIT License
1.88k stars 263 forks source link

bug in void Matrix<T, M, N>::invert() in "include/detail/matrix-inl.h" #329

Open superbignut opened 1 year ago

superbignut commented 1 year ago

Function invert() use four parts(search, swap, compute, scale) in a loop to solve the inverse of a matrix. But the a(j, j) in the code "T c = 1 / a(j, j);" of the scale part sometimes equals to 0. for example: [[3,1,0],[2,1,1],[1,0,0]]
In my opinion, scale part need to be used after the loop to ensure all a(j,j)!=0.

doyubkim commented 9 months ago

Thanks for reporting this! Let me take a look