http://www.math.vt.edu/people/embree/cmda3606/notes.html