Source: http://math.univ-lyon1.fr/~omarguin/sage/polySageMath3_3.pdf