Fork me on GitHub

Another thing: (ev! m nil (fge 3 3) nil) doesn't work and neither does (ev! m (fge 3 2) (fge 3 3) nil)


@justalanm with-release releases the objects whatever happens. let-release releases them only if exception happens. You'd use with-release for temporary objects that you want to clean up, and let-release for object that you want to return as the result, unless something happens, in which case you'd want to clean them up.


@justalanm Regarding ev!, you'd have to give me specific examples. How do you decide what does work and does not work mean, what you see when it doesn't work, and what do you expect to see.


Ok I guess I'm understanding, though it is not clear why I should see a correct println and not a correct return


For ev! I mean that it gives me an error by putting nils in those positions (we were discussing this the other day), but I solved the issue by using es! which gives just evals and evecs simple_smile


@justalanm I am not sure what do you mean about ev!. Can you please create a minimal example that I could try?


(ev! matrix nil l-evecs nil)


If I wanted only evecs and not evals for instance


@justalanm I understand that. But I have a test for that, and all those nil combinatios work. I guessed that you misunderstood how this api works. See this test and play with it:


@justalanm Another quick update: First implementation of ev for symmetric matrices is in the snapshot, and it is 10x faster than the version for general matrices (in case when only eigenvalues are computed). Tomorrow I'll add an even faster method. It is very likely that Nenderthal's PCA will perform at least 2x faster than Numpy's, if not more...