modular_arithmetic
- uint_fast64_t bsqrt(uint_fast64_t a) Π·Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΡΡΠ»Ρ ΡΠ°ΡΡΠΈΠ½Ρ Π²ΡΠ΄ ΠΊΠΎΡΠ΅Π½Ρ ΡΡΠ»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°
- bool isprime(uint_fast64_t a) ΠΏΠ΅ΡΠ΅Π²ΡΡΡΡ ΡΠΈ Ρ Π΄Π°Π½Π΅ Π½Π°ΡΡΡΠ°Π»ΡΠ½Π΅ ΡΠΈΡΠ»ΠΎ a ΠΏΡΠΎΡΡΠΈΠΌ
- class Galois - ΠΊΡΠ»ΡΡΠ΅ Π»ΠΈΡΠΊΡΠ² Π·Π° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ mod
poly_and_ratio
- class Poly - ΠΠ»Π°Ρ ΠΏΠΎΠ»ΡΠ½ΠΎΠΌ, Π² ΡΠΊΠΎΠΌΡ data - Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΅ΡΡΡΡΡΠ½ΡΡΠ² Galois, Π² ΡΠΊΡΠΉ ΠΊΠ»ΡΡ ΠΌΠ°Ρ ΠΌΠ°ΡΠΈ Π²ΠΈΠ³Π»ΡΠ΄ "m, k", ΡΠΎ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π°Ρ ΠΌΠΎΠ½ΠΎΠΌΡ x^m * y^k, Π΄Π΅ k, m Ρ Π½Π΅Π²ΡΠ΄'ΡΠΌΠ½ΠΈΠΌΠΈ ΡΡΠ»ΠΈΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ mod Π²ΠΈΠ·Π½Π°ΡΠ°Ρ ΡΠΊΠΎΠΌΡ ΠΊΡΠ»ΡΡΡ Π»ΠΈΡΠΊΡΠ² ΠΌΠ°ΡΡΡ Π½Π°Π»Π΅ΠΆΠ°ΡΠΈ ΠΊΠΎΠ΅ΡΡΡΡΡΠ½ΡΠΈ.
- class Ratio - ΠΠ»Π°Ρ ΡΠ°ΡΡΠΎΠ½Π°Π»ΡΠ½Π° ΡΡΠ½ΠΊΡΡΡ. numerator, denominator - ΠΏΠΎΠ»ΡΠ½ΠΎΠΌΠΈ, ΡΠΊΡ ΠΌΠ°ΡΡΡ ΠΊΠΎΠ΅ΡΡΡΡΡΠ½ΡΠΈ Π· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΡΠ»ΡΡΡ Π»ΠΈΡΠΊΡΠ²
elliptic_curve
- class Point Π’ΠΎΡΠΊΠ°, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈ ΡΠΊΠΎΡ x ΡΠ° y Π½Π°Π»Π΅ΠΆΠ°ΡΡ Π΄Π΅ΡΠΊΠΎΠΌΡ ΠΊΡΠ»ΡΡΡ Π»ΠΈΡΠΊΡΠ². Π―ΠΊΡΠΎ Π±ΡΠ»Π΅Π²Π° Π·ΠΌΡΠ½Π½Π° is_infinity = true, ΡΠΎ ΡΠ΅ Π½Π΅ΡΠΊΡΠ½ΡΠ΅Π½Π½ΠΎ Π²ΡΠ΄Π΄Π°Π»Π΅Π½Π° ΡΠΎΡΠΊΠ°
- class EllipticCurve ΠΠ»ΡΠΏΡΠΈΡΠ½Π° ΠΊΡΠΈΠ²Π°, ΡΠΊΠ° ΠΌΠ°Ρ Π²ΠΈΠ³Π»ΡΠ΄ y^2 = x^3 + a*x + b. ΠΠ»Ρ ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡ ΡΠΎΠ±ΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΡΠ² double_point, add_points, sub_points ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ q, ΡΠΊΠΈΠΉ Π²ΠΈΠ·Π½Π°ΡΠ°Ρ ΡΠΊΠΎΠΌΡ ΠΊΡΠ»ΡΡΡ Π»ΠΈΡΠΊΡΠ² ΠΌΠ°ΡΡΡ Π½Π°Π»Π΅ΠΆΠ°ΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈ ΡΠΎΡΠΎΠΊ ΠΊΡΠΈΠ²ΠΎΡ, ΠΌΠ°Ρ Π±ΡΡΠΈ ΠΏΡΠΎΡΡΠΈΠΌ
calc_lines
- Poly calc_line(Point& P, Point& Q, EllipticCurve& E) ΠΎΠ±ΡΠΈΡΠ»ΡΡ ΡΡΡΠ½Ρ, ΡΠΊΠ° ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΊΠΈ P ΡΠ° Q, ΡΠΊΡ Π½Π°Π»Π΅ΠΆΠ°ΡΡ Π΅Π»ΡΠΏΡΠΈΡΠ½ΡΠΉ ΠΊΡΠΈΠ²ΡΠΉ E
- Poly calc_tangent(Point& P, EllipticCurve& E) ΠΠ±ΡΠΈΡΠ»ΡΡ Π΄ΠΎΡΠΈΡΠ½Ρ Π΄ΠΎ Π΅Π»ΡΠΏΡΠΈΡΠ½ΠΎΡ ΠΊΡΠΈΠ²ΠΎΡ E Π² ΡΠΎΡΡΡ P
main
- Ratio miller_algorithm(EllipticCurve& E, Point& P, uint_fast32_t r) - Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΡΠ»Π»Π΅ΡΠ° Π· ΡΠΎΠ·Π΄ΡΠ»Ρ 4.3