I'm not sure either. In `roots()`, I added Float64 to the promote list. But I don't know that was entirely correct. Possibly, it might be reasonable to convert all of these methods to the following form:
`function /{T}(num::Poly{T}, den::Poly{T}) ... end`
`/{T, S}(num::Poly{T}, den::Poly{S}) = /{T}(promote(num, den)...)`

And then also adding the appropriate promotion operators.