The Black-Box Toolbox is in an early stage of development. There is plenty of room for improvements and added functionality. There are also some improvements that should be made to its internal infrastructure.
The base functionality of the toolbox is completed. This by no means imply that the functionality can not be expanded, just that it is sufficiently complete to be useful for a number of problems.
In particular, BBTools is well equiped to handle the kind of problems most concerning the author. However, anyone who would like to expand it to care for the problems they are dealing with is encouraged to chip in by donating code.
As such, the main current deficiency is the documentation, which is sorely missing. The plan is to improve this gradually over several releases.
The functionality most needed by BBTools is a good library of standard operators. If someone is ready to create a good implementation of a general operator, e.g. a block-Topelitz operator, this kind of work would be greatly appreciated. Hopefully a number of such operators will emerge, as BBTools starts to mature.
Currently, the toolbox includes precompiled versions for the following platforms:
Windows/PC
Linux/PC
HP/HPUX
At least the following platforms should also be supported in the future:
Solaris/SPARC
Mac OS X/PowerPC
Clean up the code
Add adaptive strategies for expanding subspaces
Change to reverse communication (as ARPACK)
Implement the beast in C99
bbigs
This should probably be implemented as a mex-file. A lot of work is done here.
Add adaptive strategies for expanding subspaces
Allow orthogonalization of several matrices.
This is not the same as calling bbigs
, as it would be inside the inner loop.
bbiter
Allow locking a set of the first triplets. This mechanism should replace the explicit deflation of tail-triplets (mostly a level-2 operation). Apart from improving performance to use more level-3 operations, this will allow the program to swap space between the tail and the work-space.
There are several obvious places where performance is ignored
(like taking abs
of a growing matrix in a loop).
bbsvdf
When bbiter
implements locking, an intelligent mechanism should
be made so triplets with high singular values are deflated first.
This would make the software more roboust against long clusters.
Explore whether it is possible to eliminate the difference between one- and two-sided deflation.
Allow one to use an explicit starting vector as an option.
This should be called v0
to match eigs
.
bbsvds
Avoid storing triplets already stored by bbsvdf
.
Finding a good interface between the two functions is rather challenging.
Allow one to save the triplets to disk instead of memory.
The main problem here is to find a good storage format. We really
don't want to introduce yet another special format, but the MATLAB format is not well
suited either. The problem is that you can't load
"column 100..200 of the matrix X
".
A collage (created e.g. by horzcat
) should detect when no parts overlap.
In this case tauamp
could be sharper (the 2-norm of the components instead of
the sum).
The product of two index-operators should be merged by bbsimplify
Test the software more thoroughly
Create a regression test suite to automate testing on different platforms.
Compare with dense solvers (LAPACK)
Compare with other iterative methods (ARPACK and SVDPACK)
Write a user manual including:
Write a theoretical book. This is expected to be a condensed from the Ph.D. thesis and papers.
Fix up the MATLAB typesetter and distillate typographical conventions into separate files.
Write more demos (particularly spectacular ones with images)