`ecm_add_ff', `ecm_sub_ff', `ecm_chsgn_ff'
------------------------------------------

ecm_add_ff(P1,P2,EC)
ecm_sub_ff(P1,P2,EC)
ecm_chsgn_ff(P1)
     :: $BBJ1_6J@~>e$NE@$N2C;;(B, $B8:;;(B, $B5U85(B

RETURN
     $B%Y%/%H%k$^$?$O(B 0

P1,P2
     $BD9$5(B 3 $B$N%Y%/%H%k$^$?$O(B 0

EC
     $BD9$5(B 2 $B$N%Y%/%H%k(B

   * $B8=:_@_Dj$5$l$F$$$kM-8BBN>e$G(B,  EC $B$GDj5A$5$l$kBJ1_6J@~>e$N(B $BE@(B P1,
     P2 $B$NOB(B P1+P2, $B:9(B P1-P2, $B5U85(B -P1 $B$rJV$9(B.

   * EC $B$O(B, $B@_Dj$5$l$F$$$kM-8BBN$,4qI8?tAGBN$N>l9g(B,
     Y^2=X^3+EC[0]X+EC[1], $BI8?t(B 2 $B$N>l9g(B Y^2+XY=X^3+EC[0]X^2+EC[1]
     $B$rI=$9(B.

   * $B0z?t(B, $B7k2L$H$b$K(B, $BL58B1sE@$O(B 0 $B$GI=$5$l$k(B.

   * P1, P2 $B$,D9$5(B 3 $B$N%Y%/%H%k$N>l9g(B, $B@F<!:BI8$K$h$k6J@~>e$N(B $BE@$rI=$9(B.
     $B$3$N>l9g(B, $BBh(B 3 $B:BI8$O(B 0 $B$G$"$C$F$O$$$1$J$$(B.

   * $B7k2L$,D9$5(B 3 $B$N%Y%/%H%k$N>l9g(B, $BBh(B 3 $B:BI8$O(B 0 $B$G$J$$$,(B, 1
     $B$H$O8B$i$J$$(B.  $B%"%U%#%s:BI8$K$h$k7k2L$rF@$k$?$a$K$O(B, $BBh(B 1 $B:BI8(B, $BBh(B
     2 $B:BI8$rBh(B 3 $B:BI8(B $B$G3d$kI,MW$,$"$k(B.

   * P1, P2 $B$,BJ1_6J@~>e$NE@$+$I$&$+$N%A%'%C%/$O$7$J$$(B.

     [0] setmod_ff(1125899906842679)$
     [1] EC=newvect(2,[ptolmp(1),ptolmp(1)])$
     [2] Pt1=newvect(3,[1,-412127497938252,1])$
     [3] Pt2=newvect(3,[6,-252647084363045,1])$
     [4] Pt3=ecm_add_ff(Pt1,Pt2,EC);
     [ 560137044461222 184453736165476 125 ]
     [5] F=y^2-(x^3+EC[0]*x+EC[1])$
     [6] subst(F,x,Pt3[0]/Pt3[2],y,Pt3[1]/Pt3[2]);
     0
     [7] ecm_add_ff(Pt3,ecm_chsgn_ff(Pt3),EC);
     0
     [8] D=ecm_sub_ff(Pt3,Pt2,EC);
     [ 886545905133065 119584559149586 886545905133065 ]
     [9] D[0]/D[2]==Pt1[0]/Pt1[2];
     1
     [10] D[1]/D[2]==Pt1[1]/Pt1[2];
     1

$B;2>H(B
     *Note `setmod_ff': setmod_ff

