Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

F_p上の楕円曲線のオーダーをrustでbrute-force(力任せ)に計算する

F_p上の楕円曲線のオーダーをrustでbrute-force(力任せ)に計算してみました。
以前 pythonで実装しましたがだいぶ速くなっています。

GitHub - pebble8888/ellipticcurve

F_5, y^2 = x^3 + x + 1, order:9, j:2
F_7, y^2 = x^3 + x + 1, order:5, j:1 order is prime
F_11, y^2 = x^3 + x + 1, order:14, j:9
F_13, y^2 = x^3 + x + 1, order:18, j:7
F_17, y^2 = x^3 + x + 1, order:18, j:8
F_19, y^2 = x^3 + x + 1, order:21, j:6
F_23, y^2 = x^3 + x + 1, order:28, j:13
F_29, y^2 = x^3 + x + 1, order:36, j:5
F_31, y^2 = x^3 + x + 1, order:33, j:0
F_37, y^2 = x^3 + x + 1, order:48, j:32
F_41, y^2 = x^3 + x + 1, order:35, j:14
F_43, y^2 = x^3 + x + 1, order:34, j:26
F_47, y^2 = x^3 + x + 1, order:60, j:38
F_53, y^2 = x^3 + x + 1, order:58, j:52
F_59, y^2 = x^3 + x + 1, order:63, j:6
F_61, y^2 = x^3 + x + 1, order:50, j:38
F_67, y^2 = x^3 + x + 1, order:56, j:9
F_71, y^2 = x^3 + x + 1, order:59, j:26 order is prime
F_73, y^2 = x^3 + x + 1, order:72, j:44
F_79, y^2 = x^3 + x + 1, order:86, j:14
F_83, y^2 = x^3 + x + 1, order:90, j:65
F_89, y^2 = x^3 + x + 1, order:100, j:22
F_97, y^2 = x^3 + x + 1, order:97, j:54 order is prime
F_101, y^2 = x^3 + x + 1, order:105, j:34
F_103, y^2 = x^3 + x + 1, order:87, j:7
F_107, y^2 = x^3 + x + 1, order:105, j:78
F_109, y^2 = x^3 + x + 1, order:123, j:12
F_113, y^2 = x^3 + x + 1, order:125, j:48
F_127, y^2 = x^3 + x + 1, order:126, j:55
F_131, y^2 = x^3 + x + 1, order:128, j:130

目的は理解を深めるために楕円曲線の計算ライブラリを作ることです。
SageMathはどうも思ったように動いてくれないためrustで自作することにしました。
楕円曲線上の有理点を求めるschoof法は実装済みなのですが、遅いので、あまり実用的ではありません。
最終目標はSEA法を実装することですが、まだまだ先は長いです。