A hierarchical matrix C/C++ library