Elliptic Curve Applet draws curve given in a generic form:

y^{2} = x^{3} + a_{2}*x^{2} + a_{4}*x + a_{6}

One can search for Integer and Rational (from v4.0) points on a curve, multiply (from v5.0) and add points, get discriminant and j-invariant.

**Version 7.0** (11 November 2017): implements **new ABC algorithm** for Elliptic Curve Rational Points search based on Elliptic Curve ABC ansatz paper by George Matveev.

Version 7.0 also implements **"mixed mode"** which allows for search and addition/multiplication of *BOTH Integer and Rational* points on the same curve, found by new ABC algorithm.

To use new algorithm and "mixed mode" click ABC check box on UI, select curves coefficients, click "Points" button to find Integer and Rational points, click/select points on UI for addition (or multiplication), then click "Add" button to get the result.

ABC algorithm (or rather points *generation* method) replaced less effective GYM algorithm which required exhaustive search among ALL valid (k,l,m) triplets involved in **Elliptic Curve triangulation** method described in earlier paper "Rational Points on Elliptic Curve and GYM algorithm" by George Matveev.

Images below give you an idea how Elliptic Curve Applet works when run using **appletviewer** Java tool:

Add Both Integer and Rational points (aka **"mixed mode"**) found by ABC algorithm:

Multiply points (in **"mixed mode"**):

Add 3 Integer points on Elliptic curve:

Multiply points:

Triangulate curve (see Triangulation of Elliptic curve for details):

Using mod(p) arithmetics on the curve:

*Any form of financial assistance (research grant, scholarship, contract, etc) will be much appreciated and may lead to further progress in this research!*

Past releases

Version 6.5 (8 March 2017): code refactoring, some bugs fixed

Version 6.4 (21 August 2016): re-factored code, fixed minor bugs

Version 6.3 (12 August 2016): Elliptic curve now accepts Rational coefficients

*Example*: select A2 = 3/1, A4 = 5/1, A6 = 7/1:
found 7 integer points, j invariant = 30.245317

Click points (-2, 1), (-1, 2) and (1, 4) on GridPanel, then Add button.

Result: (-1, 2) + (-2, 1) + (1, 4) = (-4, -1)

To confirm/verify this result use the same curve with Integer coefficients (3,5,7), click the same points and get the same Result.

Version 6.1 (20 July 2016):

Check box GYM (for George Yury Matveev algorithm) is added to UI instead of RatPoints button. CopyOnWriteArrayList thread safe container is now used for both Integer and Rational points. Fixed minor bugs in initial implementation of Matveev GYM algorithm.

Version 6.0 (15 March 2016) implements George Yury Matveev GYM algorithm for Rational points search described in my paper

Rational Points on Elliptic Curve via Triangulation

At the moment the algorithm only works for Elliptic Curves that allow for triangulation
of the form: y^{2} = x(x^{2} + Ax + B), where A and B are Rational numbers.

Needless to say, this is still Work in Progress like many other subjects related to Elliptic Curve/NT, but it looks rather interesting and promising somehow.

Version 5.0 (26 April 2015) implemented *multiplication* and addition of *several* points selected via clicks on GridPanel:

To add two or more points select points by clicking on the grid panel then "Add" button.

*Example*: select curve y^{2} = x^{3} + 17.

Click point (-2, 3) three times, then "Add" button.

Result: (-2, 3)*3 = (0, 7).

Click point (-2, 3) four times, then "Add" button.

Result: (-2, 3)*4 = (-174/19, -8693/361).

Click "Points", then click points (-2, 3), (-1, 4) and (2, 5) three times each, then "Add" button.

Result: (-2, 3)*3 + (-1, 4)*3 + (2, 5)*3 = (-2, 3).

Click "Points", then click points (-2, 3), (-1, 4) and (2, 5) two times each, then "Add" button.

Result: (-2, 3)*3 + (-1, 4)*3 + (2, 5)*3 = (-2231/576, 11609/13824).

Version 4.0 implemented *Rational points* arithmetic on Elliptic Curves using Java BigInteger class with (potentially) unlimited size of (numerator/denominator) of Rational points coordinates.

*Example*: select curve y^{2} = x^{3} + 17.

Click "Points", then click point (4, 9) twice, then "Add" button.

Result: (4, 9) + (4, 9) = (-16/3, -143/9).

*Example*: select curve y^{2} = x^{3} + 17.

Click "Points", then click points (-1, 4) and (2, 5), then "Add" button.

Result: (-1, 4) + (2, 5) = (-8/9, 109/27).

*Example*: select curve y^{2} = x^{3} + 36*x^{2} + 5*x + 34.

Click "Points", then click points (51, 476) and (94, 1072), then "Add" button.

Result: (51, 476) + (94, 1072) = (87111/1849, 33561284/79507).

*Example*: select curve y^{2} = x^{3} + 36*x^{2} + 5*x + 34.

Click "Points", then click points (94, 1072) and (1115, 37828), then "Add" button.

Result: (94, 1072) + (1115, 37828)= (87, 820).

Applet also does Elliptic curve triangulation described in the article "Triangulation of Elliptic Curve".

If your project needs help (e.g. with ECC/PKI algorithms, C++, Java, Unix/Linux, etc), you are welcome to get in touch using contact email on my Resume page.

It is worth mentioning that "new Java" (i.e. after Oracle acquired Sun Microsystems) is NOT exactly what Java meant when first released in 1995. Sometimes it takes several restarts of the application to see the result announced above! Complexity of the application considerably increased in version 7.0.

Also if you come across a bug or would like to provide comments/suggestions regarding this project, you are welcome to get in touch via email on Resume page or simply submit a bug on projects Source Forge page

Release Notes provides more info and examples.