https://www.unige.ch/~gander/poly.pdf