How do the results change if you use multiplicative error rather than additive error? That is, rather than |x-p/q|, you use max(x/(p/q), (p/q)/x). This is sometimes useful when trying to approximate rationals.
Hopefully someone else chime in on this thread. ;)