Hacks

CLN is Bruno Haible's marvellous Class Library for Numbers. I came to be its current maintainer through my hacking on GiNaC, which needs CLN as arithmetic foundation. CLN features number classes for unlimited length integers, rationals, arbitrary precision floating point numbers and much more. I don't have so much time as I would like to spend extending it, so I merely kick it from release to release to keep it from breaking. Oh yes, CLN is GPLed.

GiNaC is an iterated and recursive acronym for GiNaC is Not a CAS, where CAS stands for Computer Algebra System. It is designed to allow the creation of integrated systems that embed symbolic manipulations together with more established areas of computer science (like computation- intense numeric applications, graphical interfaces, etc.) under one roof. It is distributed under the terms and conditions of the GNU general public license (GPL).

Being a C++ programmer by profession, frustration about missing language features strikes from time to time. Since at least on Unix systems, any I/O comes along with a file descriptor, it is only natural to expect that there should be a way to find out the file descriptor of the high level I/O streams known from C++. Alas, it seems like implementors could not agree upon this important feature. Early in 2005 I decided to fill in this blank by hacking an equivalent to Posix' fileno(3) for C++ streams.

I once wrote and maintained a parallelized version of G.P.Lepage's vegas-algorithm for multidimensional numerical integration. It has become widely known as pvegas. You should ftp to this URL in case you want to use it or just learn more about it. In case you really do plan using it, let me just say that I honestly think that Vegas has too many shortcomings and that other systems like ParInt and Cuba are much more state-of-the-art. If you have comparisons of the two, I would like to hear about them, though.