I include here a number of software projects. I would like to thank the NSF for providing support whilst the more mathematical of this sofware was being developed.

There is a Romanian translation courtesy of Science Spaces, a Polish translation coutesy of Valeria Aleksandrova, a Kazakh translation courtesy of John Vorohovsky, and a Russian translation courtesy of Nikolay Pershikov.

Code for the complex arcsine, arccosine and arctangent functions

I have written code to implement the complex arcsine, arccosine and arctangent functions casinh, casin, cacosh, cacos, catanh, catan. Currently I intend for these to become part of the FreeBSD operating system, but I would be willing to work with anyone who wants to add it to other systems (e.g. glibc). The code is based on the paper "Implementing the complex arcsine and arccosine functions using exception handling" by T. E. Hull, Thomas F. Fairgrieve, and Ping Tak Peter Tang, published in ACM Transactions on Mathematical Software, Volume 23 Issue 3, 1997, Pages 299-335,

The code is available at in the files catrig.c, catrigf.c, catrigl.c. Tests indicate that both the real and imaginary parts of the results are good to within 4 ULP (units in the last place). They are certainly much more accurate than the current implementations in glibc or NetBSD. The code catrig.c is fully commented, and the code catrigf.c and catrigl.c are float and long double (80 bit and 128 bit) versions respectively. (The float version has occasionally given results whose accuracy is slightly worse than 4 ULP.) See for progress on numerics in FreeBSD.

The algorithm in the paper by Hull, Fairgrieve and Tang is also used in the Boost libraries: Their implementation is more faithful to the original algorithm then my code. The Boost libraries also contain code for atanh and acos. The last two algorithms needed fixes to be accurate in some edge cases: see and


This is a program to help manage many of the XKB features of X window. This includes such features as MouseKeys, AccessX, StickyKeys, BounceKeys, and SlowKeys, as described below. It includes a gui program to help with MouseKeys acceleration management. The program is available in source form here.

You may also like to look at other similar programs:

(MouseKeys is buggy with respect to acceleration: see bugfix-for-mousekeys. This is partially fixed in XFree86 version 4.0.2, and fully fixed in version 4.0.3.)

Fluids Programs

Here are some programs to simulate fluids. They are all written for Unix.

AccessX for X Window

Note added August 2012: the information in this section is very old and mostly out of date.

Here I describe AccessX, an option built into X Window version R6 and above. This helps users who have certain disabilites with respect to their abilities to use the keyboard or a mice. If you have other info to put on this page, please tell me about it:

For certain versions of X Window you may find a built in program called accessx that allows you switch these options on and off. This includes IRIX 6.5 for the SGI, possibly something on the Sun, and DECwindows.

For other versions of X, there are now a number of other programs that do the same task:

There are very nice instructions on the use of the various accessx features at, and also a detailed description (including many details about MouseKeys Acceleration) in the document In particular, if the accessx feature of X is switched on, many features of accessx can be switched on without running any special program, viz: There are several ways to switch this accessx feature on. For example:

Natural Math

This is a program that allows one to write mathematics as it is spoken, and converts it to LaTeX so that it may be beautifully typeset. This was originally written to help disabled people to write mathematics. It is called Natural Math.

Polyomino Puzzles

Here is a suite of programs to solve puzzles in which polyominoes are placed in a geometric shape (usually a rectangle). Some of these were used to solve some of the problems at If anyone finds bugs in my programs, or can provide some independent verification of some of my numbers, I would appreciate it.

The screensaver xlockmore contains the mode polyominoes, which solves various polyomino puzzles in real time. Use version 5.01 or above (but version 5.00 has a smaller problem set called pentominoes). It may be obtained from here. This has now also been incorporated into the xscreensaver program.

Picture of Polyominoes

The Spherical Package

This computes PDE on spheres using spherical harmonics. It is described at

The "Fast Exact Closure" Package

This computes the "Fast Exact Closure" for Jeffery's type equations. It is described at

Home page