aboutsummaryrefslogtreecommitdiffstats
path: root/buch/chapters/90-crypto/rechnungen/elliptic.maxima
blob: 8c43e6cc12e61f60ff7bc1ea623d310ae572b573 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
 * elliptic.maxima
 *
 * (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
 */

p: Y^2+X*Y - X^3 - a*X -b;

x: x1*t+(1-t)*x2;
y: y1*t+(1-t)*y2;

q: subst(x,X,p);
q: subst(y,Y,q);
q: ratsimp(expand(q));
tex(q);

qr: divide(q,t*(t-1),t);
r: qr[2];
q: qr[1];
tex(q);

subst(0,t,r);
subst(1,t,r);

tex(r);

polydecomp(qr[2], t);

s: solve(q = 0, t);
tex(s);

x3: ratsimp(expand(subst(s, x)));
y3: ratsimp(expand(subst(s, y)));

tex(x3);
tex(y3);

Y3: expand(y3 * (x2-x1)^3 - (y2-y1)^3 - (x2-x1)*(y2-y1)^2 );
Y3: factor(expand(Y3));
tex(Y3);