http://hal.ucr.edu/~cathy/reg3.html