Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

It is hard to extract (exactly the intentioned) question, but i will try to cover all nuances.

First of all, not all points are shown with a $Z$-normalized component, as the following example is showing it.

sage: E = EllipticCurve( GF(7), [3, 4] )                                                                                      
sage: for P in E: 
....:     print(P) 
....:                                                                                                                         
(0 : 1 : 0)
(0 : 2 : 1)
(0 : 5 : 1)
(1 : 1 : 1)
(1 : 6 : 1)
(2 : 2 : 1)
(2 : 5 : 1)
(5 : 2 : 1)
(5 : 5 : 1)
(6 : 0 : 1)

And indeed, all but one points have a $Z$-component normalized to one, but the neutral point $O$ is shown as $(0:1:0)$. For all points we can initialize them using the $(x,y)$ notation (if the $Z$-component does not vanish), for instance:

sage: E.point( [2, 5] )                                                                                                       
(2 : 5 : 1)

but also using "projective components" (in a list), for instance for the above point:

sage: E.point( [2, 5] )                                                                                                       
(2 : 5 : 1)
sage: E.point( [2, 5, 1] )                                                                                                    
(2 : 5 : 1)
sage: E.point( [4, 10, 2] )                                                                                                   
(2 : 5 : 1)
sage: E.point( [6, 15, 3] )                                                                                                   
(2 : 5 : 1)
sage: E.point( [-1, 1, 3] )                                                                                                   
(2 : 5 : 1)

et caetera. The "infinity point" is

sage: E.point(0)                                                                                                              
(0 : 1 : 0)
sage: E.point( [0, 1, 0] )                                                                                                    
(0 : 1 : 0)
sage: E.point( [0, 2, 0] )                                                                                                    
(0 : 1 : 0)

so we can introduce it in either of the above ways.