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.