fixed invert_lu() by initializing arrays to zero
The invert_lu method didn't work when the argument was a C-style array. The lower triangular part of the result could have some artifacts in it. These artifacts are removed and it gets the correct answer when the arrays at the top of the method are explicitly set to zero. I'm not entirely clear on which elements of which array(s) is the culprit, so we might be able to get away with not initializing some of them. However, what I have here works and I think is good enough for now.