
I made the decision to make "herm" an O(1) operation. This means you don't have to pass transpose arguments to the multiplication routines. When you do, for example:
let a = listMatrix (2,3) [1..6] x = listVector 2 [1, -1] in herm a <*> x
this gets implemented as a call to gemv with transa set to "ConjTrans".
Ah, i see, i didn't see that function. That's pretty slick actually.
The new version is pretty typeclass-heavy, since that's the only way I know how to support both ST and IO. Consequently, there have been some performance regressions. I have some optimization ideas (in the "TODO") file, but I do not have time to implement them right now. If you or anyone else would like to help with this or anything else, I would be glad to have you aboard the development "team".
I would be glad to help. Its probably about time i learned the type system anyways. Anatoly