from sympy import *
from sympy.interactive import printing
printing.init_printing(use_latex=True)
var('x y x1 x2 y1 y2 t u a b')
E = y**2 - x**3 - a*x -b; E
X = x1+t*(x2-x1); Y = y1+t*(y2-y1); X,Y
E.subs({x:X, y:Y})
expand(_)
_ - E.subs({x:x1,y:y1})
simplify(_/t)
_.subs({t:1+u})
_ - _.subs({u:0})
simplify(_/u)
solve(_,u)
t = simplify(1+_[0]);t
t.factor()
x3 = simplify(x1+t*(x2-x1)); y3 = -simplify(y1+t*(y2-y1)); print x3;print y3
x3 = x3.factor();x3
y3 = y3.factor();y3
x3.as_numer_denom()
expand(_[0]-(y2-y1)**2)
_.factor()
%%latex
$$x_3 = -x_1-x_2 +s^2,\quad s=\frac{y_2-y_1}{x_2-x_1}$$
y3.as_numer_denom()
expand(_[0]-(y2-y1)**3)
_.factor()
%%latex
$$y_3= -s(s^2-x_1-x_2) -t,\quad t=\frac{x_1y_2-x_2y_1}{x_1-x_2}$$