One great way to help is just to use the library, and give me feedback from your experience. What do you like? What don't you like? What is fast? What is slow? This stuff is really important for me to know. If you are interested in hacking on the library, there is tons of work to do. Here is a partial list. Let me know what you would like to work on, and I can give you some guidance on the best way to approach the task. Small projects -------------- * Write tests. Look at the HPC output (from `make hpc` in the `tests` directory), to find what functions are not being tested. * Write benchmarks, especially ones that allow comparisons with C or Fortran. The LU decomposition in the examples directory is a good starting point. * Write a tutorial or blog post about the library. * The tests for solving triangular systems fail when an ill-conditioned matrix gets generated. I have investigated some of the failing cases in R, and have determined this isn't a bug. Ideally, we should only test with well-conditioned systems. * Add conversions from Herm Matrix to Matrix. * Add conversions from Tri Matrix to Matrix. * investigate test failure weightedMeanVector (equal weights): [OK, passed 100 tests] VectorList 1 [fromList [0.0] :: Data.Vector.Storable.Vector] fromList [0.0] :: Data.Vector.Storable.Vector UnbiasedCov covMatrix: [Failed] * Check arguments in shiftDiagWithScale (Matrix) * Don't use conjugateTo with same argument in conjTransTo * Optimize unsafeGetRow (use BLAS1) Medium projects --------------- * I haven't really tested it, but probably the library doesn't build on Windows. See if it is possible to build the library on windows. If not, figure out how to do so. This may involve using something other than autoconf on windows. * Write tests for STBanded. The easiest way to do this is to mimic what is done in the STMatrix tests. Big Projects ------------ * Support for packed storage of symmetric and triangular matrices. Add a Data.Matrix.Packed class with a heirarchy similar to Data.Matrix.Banded. Provide MMatrix/IMatrix instances for Tri Packed and Herm Packed. * Switch over from error calls to extensible exceptions from base-4.0; Throw "dimension mismatch" exceptions rather than just calling error. This allows for better reporting. In particular, the covariance match computations should catch any dimension mismatch exceptions and then provide a more user-friendly message.