From 333be083aa35a1798fecd8bdced24634a8338f24 Mon Sep 17 00:00:00 2001
From: J08nY
Date: Mon, 31 Mar 2025 17:59:33 +0200
Subject: Update formula results.
---
epare/formulas.ipynb | 652 ++++++++++++++++++++++++++++-----------------------
1 file changed, 362 insertions(+), 290 deletions(-)
diff --git a/epare/formulas.ipynb b/epare/formulas.ipynb
index e63d295..1fa305f 100644
--- a/epare/formulas.ipynb
+++ b/epare/formulas.ipynb
@@ -5,7 +5,9 @@
"id": "672213e3-f426-4113-b5b6-304002474ce3",
"metadata": {},
"source": [
- "# Formula analysis"
+ "# Formula analysis\n",
+ "\n",
+ "This notebook analyzes behavior of formulas from the EFD in various exceptional cases, such as operating on the point at infinity or the all zero point they sometimes degenerate into."
]
},
{
@@ -175,236 +177,275 @@
" res[\"Zerostwice\"] = eval_test(None, Zerostwice, params.curve)"
]
},
+ {
+ "cell_type": "markdown",
+ "id": "847be8ca-6bed-47ff-b809-37d5e9b7b80a",
+ "metadata": {
+ "cell_style": "width: 700px; word-wrap: break-word;",
+ "editable": true,
+ "slideshow": {
+ "slide_type": ""
+ },
+ "tags": []
+ },
+ "source": [
+ "## Results (add)\n",
+ " - `P + P = ?`: Two behavior classes, complete formulas (RCB) and incomplete formulas.\n",
+ " For the complete, the result is correct, can be made affine and is on curve.\n",
+ " For the incomplete formulas the result is zeros, not affine and not on the curve.\n",
+ " - `P + infty = P` and `infty + P = P`: Four behavior classes, **for some the order matters**:\n",
+ " most of the `madd`s and `zadd`s. This is because they have an assumption `Z2 = 1`. Some\n",
+ " `madd`s fail the same in both cases.\n",
+ " > Not correct, zeros, not affine, not on curve\n",
+ " \n",
+ " > Correct, not zeros, affine, on curve\n",
+ " \n",
+ " > Not correct, not zeros, affine, not on curve\n",
+ " \n",
+ " > Not correct, not zeros, not affine, not on curve\n",
+ " - `Ord2 + Ord2 = infty`: Two behavior classes. Either correct behavior or zeros. Correct behavior for four fomulas on projective coords:\n",
+ " `add-2002-bj, add-2007-bl, add-2015-rcb, madd-2015-rcb`\n",
+ " - `P + -P = infty` and `-P + P = infty`: All correct, no zeros, no affine, on curve.\n",
+ " - `zeros + P = ?` and `P + zeros = ?`: Three behavior classes, in one, the zeros propagate, in another the formula makes up an affine point\n",
+ " that is not zeros but is not on the curve. In the final class, the formula makes up some point that is neither zeros, nor affine nor on the curve."
+ ]
+ },
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 28,
"id": "d0928c16-9688-4d65-a559-5895d1b7c85b",
- "metadata": {},
+ "metadata": {
+ "editable": true,
+ "slideshow": {
+ "slide_type": ""
+ },
+ "tags": []
+ },
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
- "| Formula | Test | Correct? | Zeros? | Affine? | On curve? |
\n",
+ "| Coords | Formula | Test | Correct? | Zeros? | Affine? | On curve? |
\n",
"\n",
"\n",
- "| add-2007-bl | PpP | True | False | True | True |
\n",
- "| add-2007-bl | PpInfty | False | True | False | False |
\n",
- "| add-2007-bl | InftypP | False | True | False | False |
\n",
- "| add-2007-bl | O2pO2 | True | False | False | True |
\n",
- "| add-2007-bl | EqInfty1 | True | False | False | True |
\n",
- "| add-2007-bl | EqInfty2 | True | False | False | True |
\n",
- "| add-2007-bl | PpZeros | Undefined | True | False | False |
\n",
- "| add-2007-bl | ZerospP | Undefined | True | False | False |
\n",
- "| add-2002-bj | PpP | True | False | True | True |
\n",
- "| add-2002-bj | PpInfty | False | True | False | False |
\n",
- "| add-2002-bj | InftypP | False | True | False | False |
\n",
- "| add-2002-bj | O2pO2 | True | False | False | True |
\n",
- "| add-2002-bj | EqInfty1 | True | False | False | True |
\n",
- "| add-2002-bj | EqInfty2 | True | False | False | True |
\n",
- "| add-2002-bj | PpZeros | Undefined | True | False | False |
\n",
- "| add-2002-bj | ZerospP | Undefined | True | False | False |
\n",
- "| add-2015-rcb | PpP | True | False | True | True |
\n",
- "| add-2015-rcb | PpInfty | True | False | True | True |
\n",
- "| add-2015-rcb | InftypP | True | False | True | True |
\n",
- "| add-2015-rcb | O2pO2 | True | False | False | True |
\n",
- "| add-2015-rcb | EqInfty1 | True | False | False | True |
\n",
- "| add-2015-rcb | EqInfty2 | True | False | False | True |
\n",
- "| add-2015-rcb | PpZeros | Undefined | True | False | False |
\n",
- "| add-2015-rcb | ZerospP | Undefined | True | False | False |
\n",
- "| mmadd-1998-cmo | PpP | False | True | False | False |
\n",
- "| mmadd-1998-cmo | PpInfty | False | False | True | False |
\n",
- "| mmadd-1998-cmo | InftypP | False | False | True | False |
\n",
- "| mmadd-1998-cmo | O2pO2 | False | True | False | False |
\n",
- "| mmadd-1998-cmo | EqInfty1 | True | False | False | True |
\n",
- "| mmadd-1998-cmo | EqInfty2 | True | False | False | True |
\n",
- "| mmadd-1998-cmo | PpZeros | Undefined | False | True | False |
\n",
- "| mmadd-1998-cmo | ZerospP | Undefined | False | True | False |
\n",
- "| add-1998-cmo | PpP | False | True | False | False |
\n",
- "| add-1998-cmo | PpInfty | False | True | False | False |
\n",
- "| add-1998-cmo | InftypP | False | True | False | False |
\n",
- "| add-1998-cmo | O2pO2 | False | True | False | False |
\n",
- "| add-1998-cmo | EqInfty1 | True | False | False | True |
\n",
- "| add-1998-cmo | EqInfty2 | True | False | False | True |
\n",
- "| add-1998-cmo | PpZeros | Undefined | True | False | False |
\n",
- "| add-1998-cmo | ZerospP | Undefined | True | False | False |
\n",
- "| madd-1998-cmo | PpP | False | True | False | False |
\n",
- "| madd-1998-cmo | PpInfty | False | False | True | False |
\n",
- "| madd-1998-cmo | InftypP | False | True | False | False |
\n",
- "| madd-1998-cmo | O2pO2 | False | True | False | False |
\n",
- "| madd-1998-cmo | EqInfty1 | True | False | False | True |
\n",
- "| madd-1998-cmo | EqInfty2 | True | False | False | True |
\n",
- "| madd-1998-cmo | PpZeros | Undefined | False | True | False |
\n",
- "| madd-1998-cmo | ZerospP | Undefined | True | False | False |
\n",
- "| madd-2015-rcb | PpP | True | False | True | True |
\n",
- "| madd-2015-rcb | PpInfty | False | False | True | False |
\n",
- "| madd-2015-rcb | InftypP | True | False | True | True |
\n",
- "| madd-2015-rcb | O2pO2 | True | False | False | True |
\n",
- "| madd-2015-rcb | EqInfty1 | True | False | False | True |
\n",
- "| madd-2015-rcb | EqInfty2 | True | False | False | True |
\n",
- "| madd-2015-rcb | PpZeros | Undefined | False | True | False |
\n",
- "| madd-2015-rcb | ZerospP | Undefined | True | False | False |
\n",
- "| add-1998-cmo-2 | PpP | False | True | False | False |
\n",
- "| add-1998-cmo-2 | PpInfty | False | True | False | False |
\n",
- "| add-1998-cmo-2 | InftypP | False | True | False | False |
\n",
- "| add-1998-cmo-2 | O2pO2 | False | True | False | False |
\n",
- "| add-1998-cmo-2 | EqInfty1 | True | False | False | True |
\n",
- "| add-1998-cmo-2 | EqInfty2 | True | False | False | True |
\n",
- "| add-1998-cmo-2 | PpZeros | Undefined | True | False | False |
\n",
- "| add-1998-cmo-2 | ZerospP | Undefined | True | False | False |
\n",
- "| mmadd-2009-bl | PpP | False | True | False | False |
\n",
- "| mmadd-2009-bl | PpInfty | False | False | True | False |
\n",
- "| mmadd-2009-bl | InftypP | False | False | True | False |
\n",
- "| mmadd-2009-bl | O2pO2 | False | True | False | False |
\n",
- "| mmadd-2009-bl | EqInfty1 | True | False | False | True |
\n",
- "| mmadd-2009-bl | EqInfty2 | True | False | False | True |
\n",
- "| mmadd-2009-bl | PpZeros | Undefined | False | True | False |
\n",
- "| mmadd-2009-bl | ZerospP | Undefined | False | True | False |
\n",
- "| add-2009-bl | PpP | False | True | False | False |
\n",
- "| add-2009-bl | PpInfty | False | True | False | False |
\n",
- "| add-2009-bl | InftypP | False | True | False | False |
\n",
- "| add-2009-bl | O2pO2 | False | True | False | False |
\n",
- "| add-2009-bl | EqInfty1 | True | False | False | True |
\n",
- "| add-2009-bl | EqInfty2 | True | False | False | True |
\n",
- "| add-2009-bl | PpZeros | Undefined | True | False | False |
\n",
- "| add-2009-bl | ZerospP | Undefined | True | False | False |
\n",
- "| madd-2009-bl | PpP | False | True | False | False |
\n",
- "| madd-2009-bl | PpInfty | False | False | True | False |
\n",
- "| madd-2009-bl | InftypP | False | True | False | False |
\n",
- "| madd-2009-bl | O2pO2 | False | True | False | False |
\n",
- "| madd-2009-bl | EqInfty1 | True | False | False | True |
\n",
- "| madd-2009-bl | EqInfty2 | True | False | False | True |
\n",
- "| madd-2009-bl | PpZeros | Undefined | False | True | False |
\n",
- "| madd-2009-bl | ZerospP | Undefined | True | False | False |
\n",
- "| add-1998-cmo-2 | PpP | False | True | False | False |
\n",
- "| add-1998-cmo-2 | PpInfty | False | True | False | False |
\n",
- "| add-1998-cmo-2 | InftypP | False | True | False | False |
\n",
- "| add-1998-cmo-2 | O2pO2 | False | True | False | False |
\n",
- "| add-1998-cmo-2 | EqInfty1 | True | False | False | True |
\n",
- "| add-1998-cmo-2 | EqInfty2 | True | False | False | True |
\n",
- "| add-1998-cmo-2 | PpZeros | Undefined | True | False | False |
\n",
- "| add-1998-cmo-2 | ZerospP | Undefined | True | False | False |
\n",
- "| add-2008-s | PpP | False | True | False | False |
\n",
- "| add-2008-s | PpInfty | False | True | False | False |
\n",
- "| add-2008-s | InftypP | False | True | False | False |
\n",
- "| add-2008-s | O2pO2 | False | True | False | False |
\n",
- "| add-2008-s | EqInfty1 | True | False | False | True |
\n",
- "| add-2008-s | EqInfty2 | True | False | False | True |
\n",
- "| add-2008-s | PpZeros | Undefined | True | False | False |
\n",
- "| add-2008-s | ZerospP | Undefined | True | False | False |
\n",
- "| madd-2008-s | PpP | False | True | False | False |
\n",
- "| madd-2008-s | PpInfty | False | False | True | False |
\n",
- "| madd-2008-s | InftypP | False | True | False | False |
\n",
- "| madd-2008-s | O2pO2 | False | True | False | False |
\n",
- "| madd-2008-s | EqInfty1 | True | False | False | True |
\n",
- "| madd-2008-s | EqInfty2 | True | False | False | True |
\n",
- "| madd-2008-s | PpZeros | Undefined | False | True | False |
\n",
- "| madd-2008-s | ZerospP | Undefined | True | False | False |
\n",
- "| mmadd-2008-s | PpP | False | True | False | False |
\n",
- "| mmadd-2008-s | PpInfty | False | False | True | False |
\n",
- "| mmadd-2008-s | InftypP | False | False | True | False |
\n",
- "| mmadd-2008-s | O2pO2 | False | True | False | False |
\n",
- "| mmadd-2008-s | EqInfty1 | True | False | False | True |
\n",
- "| mmadd-2008-s | EqInfty2 | True | False | False | True |
\n",
- "| mmadd-2008-s | PpZeros | Undefined | False | True | False |
\n",
- "| mmadd-2008-s | ZerospP | Undefined | False | True | False |
\n",
- "| madd-2007-bl | PpP | False | True | False | False |
\n",
- "| madd-2007-bl | PpInfty | False | False | True | False |
\n",
- "| madd-2007-bl | InftypP | False | True | False | False |
\n",
- "| madd-2007-bl | O2pO2 | False | True | False | False |
\n",
- "| madd-2007-bl | EqInfty1 | True | False | False | True |
\n",
- "| madd-2007-bl | EqInfty2 | True | False | False | True |
\n",
- "| madd-2007-bl | PpZeros | Undefined | False | True | False |
\n",
- "| madd-2007-bl | ZerospP | Undefined | True | False | False |
\n",
- "| add-1998-cmo | PpP | False | True | False | False |
\n",
- "| add-1998-cmo | PpInfty | False | True | False | False |
\n",
- "| add-1998-cmo | InftypP | False | True | False | False |
\n",
- "| add-1998-cmo | O2pO2 | False | True | False | False |
\n",
- "| add-1998-cmo | EqInfty1 | True | False | False | True |
\n",
- "| add-1998-cmo | EqInfty2 | True | False | False | True |
\n",
- "| add-1998-cmo | PpZeros | Undefined | True | False | False |
\n",
- "| add-1998-cmo | ZerospP | Undefined | True | False | False |
\n",
- "| zadd-2007-m | PpP | False | True | False | False |
\n",
- "| zadd-2007-m | PpInfty | False | False | True | False |
\n",
- "| zadd-2007-m | InftypP | False | False | False | False |
\n",
- "| zadd-2007-m | O2pO2 | False | True | False | False |
\n",
- "| zadd-2007-m | EqInfty1 | True | False | False | True |
\n",
- "| zadd-2007-m | EqInfty2 | True | False | False | True |
\n",
- "| zadd-2007-m | PpZeros | Undefined | False | True | False |
\n",
- "| zadd-2007-m | ZerospP | Undefined | False | False | False |
\n",
- "| add-2001-b | PpP | False | True | False | False |
\n",
- "| add-2001-b | PpInfty | False | True | False | False |
\n",
- "| add-2001-b | InftypP | False | True | False | False |
\n",
- "| add-2001-b | O2pO2 | False | True | False | False |
\n",
- "| add-2001-b | EqInfty1 | True | False | False | True |
\n",
- "| add-2001-b | EqInfty2 | True | False | False | True |
\n",
- "| add-2001-b | PpZeros | Undefined | True | False | False |
\n",
- "| add-2001-b | ZerospP | Undefined | True | False | False |
\n",
- "| add-1998-cmo-2 | PpP | False | True | False | False |
\n",
- "| add-1998-cmo-2 | PpInfty | False | True | False | False |
\n",
- "| add-1998-cmo-2 | InftypP | False | True | False | False |
\n",
- "| add-1998-cmo-2 | O2pO2 | False | True | False | False |
\n",
- "| add-1998-cmo-2 | EqInfty1 | True | False | False | True |
\n",
- "| add-1998-cmo-2 | EqInfty2 | True | False | False | True |
\n",
- "| add-1998-cmo-2 | PpZeros | Undefined | True | False | False |
\n",
- "| add-1998-cmo-2 | ZerospP | Undefined | True | False | False |
\n",
- "| add-1986-cc | PpP | False | True | False | False |
\n",
- "| add-1986-cc | PpInfty | False | True | False | False |
\n",
- "| add-1986-cc | InftypP | False | True | False | False |
\n",
- "| add-1986-cc | O2pO2 | False | True | False | False |
\n",
- "| add-1986-cc | EqInfty1 | True | False | False | True |
\n",
- "| add-1986-cc | EqInfty2 | True | False | False | True |
\n",
- "| add-1986-cc | PpZeros | Undefined | True | False | False |
\n",
- "| add-1986-cc | ZerospP | Undefined | True | False | False |
\n",
- "| madd-2004-hmv | PpP | False | True | False | False |
\n",
- "| madd-2004-hmv | PpInfty | False | False | True | False |
\n",
- "| madd-2004-hmv | InftypP | False | True | False | False |
\n",
- "| madd-2004-hmv | O2pO2 | False | True | False | False |
\n",
- "| madd-2004-hmv | EqInfty1 | True | False | False | True |
\n",
- "| madd-2004-hmv | EqInfty2 | True | False | False | True |
\n",
- "| madd-2004-hmv | PpZeros | Undefined | False | True | False |
\n",
- "| madd-2004-hmv | ZerospP | Undefined | True | False | False |
\n",
- "| add-2007-bl | PpP | False | True | False | False |
\n",
- "| add-2007-bl | PpInfty | False | True | False | False |
\n",
- "| add-2007-bl | InftypP | False | True | False | False |
\n",
- "| add-2007-bl | O2pO2 | False | True | False | False |
\n",
- "| add-2007-bl | EqInfty1 | True | False | False | True |
\n",
- "| add-2007-bl | EqInfty2 | True | False | False | True |
\n",
- "| add-2007-bl | PpZeros | Undefined | True | False | False |
\n",
- "| add-2007-bl | ZerospP | Undefined | True | False | False |
\n",
- "| madd-2008-g | PpP | False | True | False | False |
\n",
- "| madd-2008-g | PpInfty | False | False | True | False |
\n",
- "| madd-2008-g | InftypP | False | True | False | False |
\n",
- "| madd-2008-g | O2pO2 | False | True | False | False |
\n",
- "| madd-2008-g | EqInfty1 | True | False | False | True |
\n",
- "| madd-2008-g | EqInfty2 | True | False | False | True |
\n",
- "| madd-2008-g | PpZeros | Undefined | False | True | False |
\n",
- "| madd-2008-g | ZerospP | Undefined | True | False | False |
\n",
- "| mmadd-2007-bl | PpP | False | True | False | False |
\n",
- "| mmadd-2007-bl | PpInfty | False | False | True | False |
\n",
- "| mmadd-2007-bl | InftypP | False | False | True | False |
\n",
- "| mmadd-2007-bl | O2pO2 | False | True | False | False |
\n",
- "| mmadd-2007-bl | EqInfty1 | True | False | False | True |
\n",
- "| mmadd-2007-bl | EqInfty2 | True | False | False | True |
\n",
- "| mmadd-2007-bl | PpZeros | Undefined | False | True | False |
\n",
- "| mmadd-2007-bl | ZerospP | Undefined | False | True | False |
\n",
- "| add-1998-hnm | PpP | False | True | False | False |
\n",
- "| add-1998-hnm | PpInfty | False | True | False | False |
\n",
- "| add-1998-hnm | InftypP | False | True | False | False |
\n",
- "| add-1998-hnm | O2pO2 | False | True | False | False |
\n",
- "| add-1998-hnm | EqInfty1 | True | False | False | True |
\n",
- "| add-1998-hnm | EqInfty2 | True | False | False | True |
\n",
- "| add-1998-hnm | PpZeros | Undefined | True | False | False |
\n",
- "| add-1998-hnm | ZerospP | Undefined | True | False | False |
\n",
- "| madd | PpP | False | True | False | False |
\n",
- "| madd | PpInfty | False | False | True | False |
\n",
- "| madd | InftypP | False | True | False | False |
\n",
- "| madd | O2pO2 | False | True | False | False |
\n",
- "| madd | EqInfty1 | True | False | False | True |
\n",
- "| madd | EqInfty2 | True | False | False | True |
\n",
- "| madd | PpZeros | Undefined | False | True | False |
\n",
- "| madd | ZerospP | Undefined | True | False | False |
\n",
+ "| projective | add-2007-bl | PpP | True | False | True | True |
\n",
+ "| projective | add-2007-bl | PpInfty | False | True | False | False |
\n",
+ "| projective | add-2007-bl | InftypP | False | True | False | False |
\n",
+ "| projective | add-2007-bl | O2pO2 | True | False | False | True |
\n",
+ "| projective | add-2007-bl | EqInfty1 | True | False | False | True |
\n",
+ "| projective | add-2007-bl | EqInfty2 | True | False | False | True |
\n",
+ "| projective | add-2007-bl | PpZeros | Undefined | True | False | False |
\n",
+ "| projective | add-2007-bl | ZerospP | Undefined | True | False | False |
\n",
+ "| projective | add-2002-bj | PpP | True | False | True | True |
\n",
+ "| projective | add-2002-bj | PpInfty | False | True | False | False |
\n",
+ "| projective | add-2002-bj | InftypP | False | True | False | False |
\n",
+ "| projective | add-2002-bj | O2pO2 | True | False | False | True |
\n",
+ "| projective | add-2002-bj | EqInfty1 | True | False | False | True |
\n",
+ "| projective | add-2002-bj | EqInfty2 | True | False | False | True |
\n",
+ "| projective | add-2002-bj | PpZeros | Undefined | True | False | False |
\n",
+ "| projective | add-2002-bj | ZerospP | Undefined | True | False | False |
\n",
+ "| projective | add-2015-rcb | PpP | True | False | True | True |
\n",
+ "| projective | add-2015-rcb | PpInfty | True | False | True | True |
\n",
+ "| projective | add-2015-rcb | InftypP | True | False | True | True |
\n",
+ "| projective | add-2015-rcb | O2pO2 | True | False | False | True |
\n",
+ "| projective | add-2015-rcb | EqInfty1 | True | False | False | True |
\n",
+ "| projective | add-2015-rcb | EqInfty2 | True | False | False | True |
\n",
+ "| projective | add-2015-rcb | PpZeros | Undefined | True | False | False |
\n",
+ "| projective | add-2015-rcb | ZerospP | Undefined | True | False | False |
\n",
+ "| projective | mmadd-1998-cmo | PpP | False | True | False | False |
\n",
+ "| projective | mmadd-1998-cmo | PpInfty | False | False | True | False |
\n",
+ "| projective | mmadd-1998-cmo | InftypP | False | False | True | False |
\n",
+ "| projective | mmadd-1998-cmo | O2pO2 | False | True | False | False |
\n",
+ "| projective | mmadd-1998-cmo | EqInfty1 | True | False | False | True |
\n",
+ "| projective | mmadd-1998-cmo | EqInfty2 | True | False | False | True |
\n",
+ "| projective | mmadd-1998-cmo | PpZeros | Undefined | False | True | False |
\n",
+ "| projective | mmadd-1998-cmo | ZerospP | Undefined | False | True | False |
\n",
+ "| projective | add-1998-cmo | PpP | False | True | False | False |
\n",
+ "| projective | add-1998-cmo | PpInfty | False | True | False | False |
\n",
+ "| projective | add-1998-cmo | InftypP | False | True | False | False |
\n",
+ "| projective | add-1998-cmo | O2pO2 | False | True | False | False |
\n",
+ "| projective | add-1998-cmo | EqInfty1 | True | False | False | True |
\n",
+ "| projective | add-1998-cmo | EqInfty2 | True | False | False | True |
\n",
+ "| projective | add-1998-cmo | PpZeros | Undefined | True | False | False |
\n",
+ "| projective | add-1998-cmo | ZerospP | Undefined | True | False | False |
\n",
+ "| projective | madd-1998-cmo | PpP | False | True | False | False |
\n",
+ "| projective | madd-1998-cmo | PpInfty | False | False | True | False |
\n",
+ "| projective | madd-1998-cmo | InftypP | False | True | False | False |
\n",
+ "| projective | madd-1998-cmo | O2pO2 | False | True | False | False |
\n",
+ "| projective | madd-1998-cmo | EqInfty1 | True | False | False | True |
\n",
+ "| projective | madd-1998-cmo | EqInfty2 | True | False | False | True |
\n",
+ "| projective | madd-1998-cmo | PpZeros | Undefined | False | True | False |
\n",
+ "| projective | madd-1998-cmo | ZerospP | Undefined | True | False | False |
\n",
+ "| projective | madd-2015-rcb | PpP | True | False | True | True |
\n",
+ "| projective | madd-2015-rcb | PpInfty | False | False | True | False |
\n",
+ "| projective | madd-2015-rcb | InftypP | True | False | True | True |
\n",
+ "| projective | madd-2015-rcb | O2pO2 | True | False | False | True |
\n",
+ "| projective | madd-2015-rcb | EqInfty1 | True | False | False | True |
\n",
+ "| projective | madd-2015-rcb | EqInfty2 | True | False | False | True |
\n",
+ "| projective | madd-2015-rcb | PpZeros | Undefined | False | True | False |
\n",
+ "| projective | madd-2015-rcb | ZerospP | Undefined | True | False | False |
\n",
+ "| projective | add-1998-cmo-2 | PpP | False | True | False | False |
\n",
+ "| projective | add-1998-cmo-2 | PpInfty | False | True | False | False |
\n",
+ "| projective | add-1998-cmo-2 | InftypP | False | True | False | False |
\n",
+ "| projective | add-1998-cmo-2 | O2pO2 | False | True | False | False |
\n",
+ "| projective | add-1998-cmo-2 | EqInfty1 | True | False | False | True |
\n",
+ "| projective | add-1998-cmo-2 | EqInfty2 | True | False | False | True |
\n",
+ "| projective | add-1998-cmo-2 | PpZeros | Undefined | True | False | False |
\n",
+ "| projective | add-1998-cmo-2 | ZerospP | Undefined | True | False | False |
\n",
+ "| modified | mmadd-2009-bl | PpP | False | True | False | False |
\n",
+ "| modified | mmadd-2009-bl | PpInfty | False | False | True | False |
\n",
+ "| modified | mmadd-2009-bl | InftypP | False | False | True | False |
\n",
+ "| modified | mmadd-2009-bl | O2pO2 | False | True | False | False |
\n",
+ "| modified | mmadd-2009-bl | EqInfty1 | True | False | False | True |
\n",
+ "| modified | mmadd-2009-bl | EqInfty2 | True | False | False | True |
\n",
+ "| modified | mmadd-2009-bl | PpZeros | Undefined | False | True | False |
\n",
+ "| modified | mmadd-2009-bl | ZerospP | Undefined | False | True | False |
\n",
+ "| modified | add-2009-bl | PpP | False | True | False | False |
\n",
+ "| modified | add-2009-bl | PpInfty | False | True | False | False |
\n",
+ "| modified | add-2009-bl | InftypP | False | True | False | False |
\n",
+ "| modified | add-2009-bl | O2pO2 | False | True | False | False |
\n",
+ "| modified | add-2009-bl | EqInfty1 | True | False | False | True |
\n",
+ "| modified | add-2009-bl | EqInfty2 | True | False | False | True |
\n",
+ "| modified | add-2009-bl | PpZeros | Undefined | True | False | False |
\n",
+ "| modified | add-2009-bl | ZerospP | Undefined | True | False | False |
\n",
+ "| modified | madd-2009-bl | PpP | False | True | False | False |
\n",
+ "| modified | madd-2009-bl | PpInfty | False | False | True | False |
\n",
+ "| modified | madd-2009-bl | InftypP | False | True | False | False |
\n",
+ "| modified | madd-2009-bl | O2pO2 | False | True | False | False |
\n",
+ "| modified | madd-2009-bl | EqInfty1 | True | False | False | True |
\n",
+ "| modified | madd-2009-bl | EqInfty2 | True | False | False | True |
\n",
+ "| modified | madd-2009-bl | PpZeros | Undefined | False | True | False |
\n",
+ "| modified | madd-2009-bl | ZerospP | Undefined | True | False | False |
\n",
+ "| modified | add-1998-cmo-2 | PpP | False | True | False | False |
\n",
+ "| modified | add-1998-cmo-2 | PpInfty | False | True | False | False |
\n",
+ "| modified | add-1998-cmo-2 | InftypP | False | True | False | False |
\n",
+ "| modified | add-1998-cmo-2 | O2pO2 | False | True | False | False |
\n",
+ "| modified | add-1998-cmo-2 | EqInfty1 | True | False | False | True |
\n",
+ "| modified | add-1998-cmo-2 | EqInfty2 | True | False | False | True |
\n",
+ "| modified | add-1998-cmo-2 | PpZeros | Undefined | True | False | False |
\n",
+ "| modified | add-1998-cmo-2 | ZerospP | Undefined | True | False | False |
\n",
+ "| xyzz | add-2008-s | PpP | False | True | False | False |
\n",
+ "| xyzz | add-2008-s | PpInfty | False | True | False | False |
\n",
+ "| xyzz | add-2008-s | InftypP | False | True | False | False |
\n",
+ "| xyzz | add-2008-s | O2pO2 | False | True | False | False |
\n",
+ "| xyzz | add-2008-s | EqInfty1 | True | False | False | True |
\n",
+ "| xyzz | add-2008-s | EqInfty2 | True | False | False | True |
\n",
+ "| xyzz | add-2008-s | PpZeros | Undefined | True | False | False |
\n",
+ "| xyzz | add-2008-s | ZerospP | Undefined | True | False | False |
\n",
+ "| xyzz | madd-2008-s | PpP | False | True | False | False |
\n",
+ "| xyzz | madd-2008-s | PpInfty | False | False | True | False |
\n",
+ "| xyzz | madd-2008-s | InftypP | False | True | False | False |
\n",
+ "| xyzz | madd-2008-s | O2pO2 | False | True | False | False |
\n",
+ "| xyzz | madd-2008-s | EqInfty1 | True | False | False | True |
\n",
+ "| xyzz | madd-2008-s | EqInfty2 | True | False | False | True |
\n",
+ "| xyzz | madd-2008-s | PpZeros | Undefined | False | True | False |
\n",
+ "| xyzz | madd-2008-s | ZerospP | Undefined | True | False | False |
\n",
+ "| xyzz | mmadd-2008-s | PpP | False | True | False | False |
\n",
+ "| xyzz | mmadd-2008-s | PpInfty | False | False | True | False |
\n",
+ "| xyzz | mmadd-2008-s | InftypP | False | False | True | False |
\n",
+ "| xyzz | mmadd-2008-s | O2pO2 | False | True | False | False |
\n",
+ "| xyzz | mmadd-2008-s | EqInfty1 | True | False | False | True |
\n",
+ "| xyzz | mmadd-2008-s | EqInfty2 | True | False | False | True |
\n",
+ "| xyzz | mmadd-2008-s | PpZeros | Undefined | False | True | False |
\n",
+ "| xyzz | mmadd-2008-s | ZerospP | Undefined | False | True | False |
\n",
+ "| jacobian | madd-2007-bl | PpP | False | True | False | False |
\n",
+ "| jacobian | madd-2007-bl | PpInfty | False | False | True | False |
\n",
+ "| jacobian | madd-2007-bl | InftypP | False | True | False | False |
\n",
+ "| jacobian | madd-2007-bl | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | madd-2007-bl | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | madd-2007-bl | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | madd-2007-bl | PpZeros | Undefined | False | True | False |
\n",
+ "| jacobian | madd-2007-bl | ZerospP | Undefined | True | False | False |
\n",
+ "| jacobian | add-1998-cmo | PpP | False | True | False | False |
\n",
+ "| jacobian | add-1998-cmo | PpInfty | False | True | False | False |
\n",
+ "| jacobian | add-1998-cmo | InftypP | False | True | False | False |
\n",
+ "| jacobian | add-1998-cmo | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | add-1998-cmo | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | add-1998-cmo | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | add-1998-cmo | PpZeros | Undefined | True | False | False |
\n",
+ "| jacobian | add-1998-cmo | ZerospP | Undefined | True | False | False |
\n",
+ "| jacobian | zadd-2007-m | PpP | False | True | False | False |
\n",
+ "| jacobian | zadd-2007-m | PpInfty | False | False | True | False |
\n",
+ "| jacobian | zadd-2007-m | InftypP | False | False | False | False |
\n",
+ "| jacobian | zadd-2007-m | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | zadd-2007-m | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | zadd-2007-m | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | zadd-2007-m | PpZeros | Undefined | False | True | False |
\n",
+ "| jacobian | zadd-2007-m | ZerospP | Undefined | False | False | False |
\n",
+ "| jacobian | add-2001-b | PpP | False | True | False | False |
\n",
+ "| jacobian | add-2001-b | PpInfty | False | True | False | False |
\n",
+ "| jacobian | add-2001-b | InftypP | False | True | False | False |
\n",
+ "| jacobian | add-2001-b | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | add-2001-b | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | add-2001-b | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | add-2001-b | PpZeros | Undefined | True | False | False |
\n",
+ "| jacobian | add-2001-b | ZerospP | Undefined | True | False | False |
\n",
+ "| jacobian | add-1998-cmo-2 | PpP | False | True | False | False |
\n",
+ "| jacobian | add-1998-cmo-2 | PpInfty | False | True | False | False |
\n",
+ "| jacobian | add-1998-cmo-2 | InftypP | False | True | False | False |
\n",
+ "| jacobian | add-1998-cmo-2 | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | add-1998-cmo-2 | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | add-1998-cmo-2 | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | add-1998-cmo-2 | PpZeros | Undefined | True | False | False |
\n",
+ "| jacobian | add-1998-cmo-2 | ZerospP | Undefined | True | False | False |
\n",
+ "| jacobian | add-1986-cc | PpP | False | True | False | False |
\n",
+ "| jacobian | add-1986-cc | PpInfty | False | True | False | False |
\n",
+ "| jacobian | add-1986-cc | InftypP | False | True | False | False |
\n",
+ "| jacobian | add-1986-cc | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | add-1986-cc | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | add-1986-cc | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | add-1986-cc | PpZeros | Undefined | True | False | False |
\n",
+ "| jacobian | add-1986-cc | ZerospP | Undefined | True | False | False |
\n",
+ "| jacobian | madd-2004-hmv | PpP | False | True | False | False |
\n",
+ "| jacobian | madd-2004-hmv | PpInfty | False | False | True | False |
\n",
+ "| jacobian | madd-2004-hmv | InftypP | False | True | False | False |
\n",
+ "| jacobian | madd-2004-hmv | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | madd-2004-hmv | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | madd-2004-hmv | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | madd-2004-hmv | PpZeros | Undefined | False | True | False |
\n",
+ "| jacobian | madd-2004-hmv | ZerospP | Undefined | True | False | False |
\n",
+ "| jacobian | add-2007-bl | PpP | False | True | False | False |
\n",
+ "| jacobian | add-2007-bl | PpInfty | False | True | False | False |
\n",
+ "| jacobian | add-2007-bl | InftypP | False | True | False | False |
\n",
+ "| jacobian | add-2007-bl | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | add-2007-bl | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | add-2007-bl | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | add-2007-bl | PpZeros | Undefined | True | False | False |
\n",
+ "| jacobian | add-2007-bl | ZerospP | Undefined | True | False | False |
\n",
+ "| jacobian | madd-2008-g | PpP | False | True | False | False |
\n",
+ "| jacobian | madd-2008-g | PpInfty | False | False | True | False |
\n",
+ "| jacobian | madd-2008-g | InftypP | False | True | False | False |
\n",
+ "| jacobian | madd-2008-g | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | madd-2008-g | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | madd-2008-g | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | madd-2008-g | PpZeros | Undefined | False | True | False |
\n",
+ "| jacobian | madd-2008-g | ZerospP | Undefined | True | False | False |
\n",
+ "| jacobian | mmadd-2007-bl | PpP | False | True | False | False |
\n",
+ "| jacobian | mmadd-2007-bl | PpInfty | False | False | True | False |
\n",
+ "| jacobian | mmadd-2007-bl | InftypP | False | False | True | False |
\n",
+ "| jacobian | mmadd-2007-bl | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | mmadd-2007-bl | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | mmadd-2007-bl | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | mmadd-2007-bl | PpZeros | Undefined | False | True | False |
\n",
+ "| jacobian | mmadd-2007-bl | ZerospP | Undefined | False | True | False |
\n",
+ "| jacobian | add-1998-hnm | PpP | False | True | False | False |
\n",
+ "| jacobian | add-1998-hnm | PpInfty | False | True | False | False |
\n",
+ "| jacobian | add-1998-hnm | InftypP | False | True | False | False |
\n",
+ "| jacobian | add-1998-hnm | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | add-1998-hnm | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | add-1998-hnm | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | add-1998-hnm | PpZeros | Undefined | True | False | False |
\n",
+ "| jacobian | add-1998-hnm | ZerospP | Undefined | True | False | False |
\n",
+ "| jacobian | madd | PpP | False | True | False | False |
\n",
+ "| jacobian | madd | PpInfty | False | False | True | False |
\n",
+ "| jacobian | madd | InftypP | False | True | False | False |
\n",
+ "| jacobian | madd | O2pO2 | False | True | False | False |
\n",
+ "| jacobian | madd | EqInfty1 | True | False | False | True |
\n",
+ "| jacobian | madd | EqInfty2 | True | False | False | True |
\n",
+ "| jacobian | madd | PpZeros | Undefined | False | True | False |
\n",
+ "| jacobian | madd | ZerospP | Undefined | True | False | False |
\n",
"\n",
"
"
],
@@ -417,19 +458,41 @@
}
],
"source": [
- "table = [[\"Formula\", \"Test\", \"Correct?\", \"Zeros?\", \"Affine?\", \"On curve?\"]]\n",
+ "table = [[\"Coords\", \"Formula\", \"Test\", \"Correct?\", \"Zeros?\", \"Affine?\", \"On curve?\"]]\n",
"test_filter = None\n",
- "for vals in results_add.values():\n",
+ "groups = {}\n",
+ "for coords_name, vals in results_add.items():\n",
" for name, formula in vals.items():\n",
" for k, v in formula.items():\n",
" if test_filter is None or k in test_filter:\n",
- " table.append((name, k, v[0], v[1], v[2], v[3]))\n",
+ " item = (v[0], v[1], v[2], v[3])\n",
+ " group = groups.setdefault(item, set())\n",
+ " group.add(name + \"-\" + k + \"-\" + coords_name)\n",
+ " table.append((coords_name, name, k, v[0], v[1], v[2], v[3]))\n",
+ "if test_filter is not None:\n",
+ " for group, formulas in groups.items():\n",
+ " print(group)\n",
+ " for f in sorted(formulas):\n",
+ " print(f\"\\t{f}\")\n",
"display(HTML(tabulate.tabulate(table, tablefmt=\"html\", headers=\"firstrow\")))"
]
},
+ {
+ "cell_type": "markdown",
+ "id": "f8d713ed-7f06-4457-a921-1be0e9dddac3",
+ "metadata": {},
+ "source": [
+ "## Results (dbl)\n",
+ " - `2 * Ord2 = infty`: All correct, no zeros, no affine, on curve.\n",
+ " - `2 * infty = infty`: Three behavior classes: Some formulas are correct and return infty.\n",
+ " Some make up some affine point that is not zeros and not on curve.\n",
+ " Some return zeros.\n",
+ " - `2 * zeros = ?`: Two behavior classes, the zeros either propagate or become the infty."
+ ]
+ },
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 29,
"id": "2d74db05-0606-4e54-87e0-c7fe0cbb5519",
"metadata": {},
"outputs": [
@@ -438,72 +501,72 @@
"text/html": [
"\n",
"\n",
- "| Formula | Test | Correct? | Zeros? | Affine? | On curve? |
\n",
+ "| | Formula | Test | Correct? | Zeros? | Affine? | On curve? |
\n",
"\n",
"\n",
- "| mdbl-2007-bl | O2twice | True | False | False | True |
\n",
- "| mdbl-2007-bl | Inftytwice | False | False | True | False |
\n",
- "| mdbl-2007-bl | Zerostwice | Undefined | False | False | True |
\n",
- "| dbl-2015-rcb | O2twice | True | False | False | True |
\n",
- "| dbl-2015-rcb | Inftytwice | True | False | False | True |
\n",
- "| dbl-2015-rcb | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-1998-cmo | O2twice | True | False | False | True |
\n",
- "| dbl-1998-cmo | Inftytwice | False | True | False | False |
\n",
- "| dbl-1998-cmo | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-2007-bl | O2twice | True | False | False | True |
\n",
- "| dbl-2007-bl | Inftytwice | False | True | False | False |
\n",
- "| dbl-2007-bl | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-1998-cmo-2 | O2twice | True | False | False | True |
\n",
- "| dbl-1998-cmo-2 | Inftytwice | False | True | False | False |
\n",
- "| dbl-1998-cmo-2 | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-2009-bl | O2twice | True | False | False | True |
\n",
- "| dbl-2009-bl | Inftytwice | True | False | False | True |
\n",
- "| dbl-2009-bl | Zerostwice | Undefined | True | False | False |
\n",
- "| mdbl-2009-bl | O2twice | True | False | False | True |
\n",
- "| mdbl-2009-bl | Inftytwice | False | False | True | False |
\n",
- "| mdbl-2009-bl | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-1998-cmo-2 | O2twice | True | False | False | True |
\n",
- "| dbl-1998-cmo-2 | Inftytwice | True | False | False | True |
\n",
- "| dbl-1998-cmo-2 | Zerostwice | Undefined | True | False | False |
\n",
- "| mdbl-2008-s-1 | O2twice | True | False | False | True |
\n",
- "| mdbl-2008-s-1 | Inftytwice | False | False | True | False |
\n",
- "| mdbl-2008-s-1 | Zerostwice | Undefined | False | False | True |
\n",
- "| dbl-2008-s-1 | O2twice | True | False | False | True |
\n",
- "| dbl-2008-s-1 | Inftytwice | True | False | False | True |
\n",
- "| dbl-2008-s-1 | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-1998-cmo | O2twice | True | False | False | True |
\n",
- "| dbl-1998-cmo | Inftytwice | True | False | False | True |
\n",
- "| dbl-1998-cmo | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-1986-cc | O2twice | True | False | False | True |
\n",
- "| dbl-1986-cc | Inftytwice | True | False | False | True |
\n",
- "| dbl-1986-cc | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-2007-bl | O2twice | True | False | False | True |
\n",
- "| dbl-2007-bl | Inftytwice | True | False | False | True |
\n",
- "| dbl-2007-bl | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-1998-cmo-2 | O2twice | True | False | False | True |
\n",
- "| dbl-1998-cmo-2 | Inftytwice | True | False | False | True |
\n",
- "| dbl-1998-cmo-2 | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-1998-hnm | O2twice | True | False | False | True |
\n",
- "| dbl-1998-hnm | Inftytwice | True | False | False | True |
\n",
- "| dbl-1998-hnm | Zerostwice | Undefined | True | False | False |
\n",
- "| mdbl-2007-bl | O2twice | True | False | False | True |
\n",
- "| mdbl-2007-bl | Inftytwice | False | False | True | False |
\n",
- "| mdbl-2007-bl | Zerostwice | Undefined | False | False | True |
\n",
- "| dbl-2002-bj-3 | O2twice | True | False | False | True |
\n",
- "| dbl-2002-bj-3 | Inftytwice | True | False | False | True |
\n",
- "| dbl-2002-bj-3 | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-2002-bj | O2twice | True | False | False | True |
\n",
- "| dbl-2002-bj | Inftytwice | True | False | False | True |
\n",
- "| dbl-2002-bj | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-2002-it-2 | O2twice | True | False | False | True |
\n",
- "| dbl-2002-it-2 | Inftytwice | True | False | False | True |
\n",
- "| dbl-2002-it-2 | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-2002-it | O2twice | True | False | False | True |
\n",
- "| dbl-2002-it | Inftytwice | True | False | False | True |
\n",
- "| dbl-2002-it | Zerostwice | Undefined | True | False | False |
\n",
- "| dbl-2002-bj-2 | O2twice | True | False | False | True |
\n",
- "| dbl-2002-bj-2 | Inftytwice | True | False | False | True |
\n",
- "| dbl-2002-bj-2 | Zerostwice | Undefined | True | False | False |
\n",
+ "| projective | mdbl-2007-bl | O2twice | True | False | False | True |
\n",
+ "| projective | mdbl-2007-bl | Inftytwice | False | False | True | False |
\n",
+ "| projective | mdbl-2007-bl | Zerostwice | Undefined | False | False | True |
\n",
+ "| projective | dbl-2015-rcb | O2twice | True | False | False | True |
\n",
+ "| projective | dbl-2015-rcb | Inftytwice | True | False | False | True |
\n",
+ "| projective | dbl-2015-rcb | Zerostwice | Undefined | True | False | False |
\n",
+ "| projective | dbl-1998-cmo | O2twice | True | False | False | True |
\n",
+ "| projective | dbl-1998-cmo | Inftytwice | False | True | False | False |
\n",
+ "| projective | dbl-1998-cmo | Zerostwice | Undefined | True | False | False |
\n",
+ "| projective | dbl-2007-bl | O2twice | True | False | False | True |
\n",
+ "| projective | dbl-2007-bl | Inftytwice | False | True | False | False |
\n",
+ "| projective | dbl-2007-bl | Zerostwice | Undefined | True | False | False |
\n",
+ "| projective | dbl-1998-cmo-2 | O2twice | True | False | False | True |
\n",
+ "| projective | dbl-1998-cmo-2 | Inftytwice | False | True | False | False |
\n",
+ "| projective | dbl-1998-cmo-2 | Zerostwice | Undefined | True | False | False |
\n",
+ "| modified | dbl-2009-bl | O2twice | True | False | False | True |
\n",
+ "| modified | dbl-2009-bl | Inftytwice | True | False | False | True |
\n",
+ "| modified | dbl-2009-bl | Zerostwice | Undefined | True | False | False |
\n",
+ "| modified | mdbl-2009-bl | O2twice | True | False | False | True |
\n",
+ "| modified | mdbl-2009-bl | Inftytwice | False | False | True | False |
\n",
+ "| modified | mdbl-2009-bl | Zerostwice | Undefined | True | False | False |
\n",
+ "| modified | dbl-1998-cmo-2 | O2twice | True | False | False | True |
\n",
+ "| modified | dbl-1998-cmo-2 | Inftytwice | True | False | False | True |
\n",
+ "| modified | dbl-1998-cmo-2 | Zerostwice | Undefined | True | False | False |
\n",
+ "| xyzz | mdbl-2008-s-1 | O2twice | True | False | False | True |
\n",
+ "| xyzz | mdbl-2008-s-1 | Inftytwice | False | False | True | False |
\n",
+ "| xyzz | mdbl-2008-s-1 | Zerostwice | Undefined | False | False | True |
\n",
+ "| xyzz | dbl-2008-s-1 | O2twice | True | False | False | True |
\n",
+ "| xyzz | dbl-2008-s-1 | Inftytwice | True | False | False | True |
\n",
+ "| xyzz | dbl-2008-s-1 | Zerostwice | Undefined | True | False | False |
\n",
+ "| jacobian | dbl-1998-cmo | O2twice | True | False | False | True |
\n",
+ "| jacobian | dbl-1998-cmo | Inftytwice | True | False | False | True |
\n",
+ "| jacobian | dbl-1998-cmo | Zerostwice | Undefined | True | False | False |
\n",
+ "| jacobian | dbl-1986-cc | O2twice | True | False | False | True |
\n",
+ "| jacobian | dbl-1986-cc | Inftytwice | True | False | False | True |
\n",
+ "| jacobian | dbl-1986-cc | Zerostwice | Undefined | True | False | False |
\n",
+ "| jacobian | dbl-2007-bl | O2twice | True | False | False | True |
\n",
+ "| jacobian | dbl-2007-bl | Inftytwice | True | False | False | True |
\n",
+ "| jacobian | dbl-2007-bl | Zerostwice | Undefined | True | False | False |
\n",
+ "| jacobian | dbl-1998-cmo-2 | O2twice | True | False | False | True |
\n",
+ "| jacobian | dbl-1998-cmo-2 | Inftytwice | True | False | False | True |
\n",
+ "| jacobian | dbl-1998-cmo-2 | Zerostwice | Undefined | True | False | False |
\n",
+ "| jacobian | dbl-1998-hnm | O2twice | True | False | False | True |
\n",
+ "| jacobian | dbl-1998-hnm | Inftytwice | True | False | False | True |
\n",
+ "| jacobian | dbl-1998-hnm | Zerostwice | Undefined | True | False | False |
\n",
+ "| jacobian | mdbl-2007-bl | O2twice | True | False | False | True |
\n",
+ "| jacobian | mdbl-2007-bl | Inftytwice | False | False | True | False |
\n",
+ "| jacobian | mdbl-2007-bl | Zerostwice | Undefined | False | False | True |
\n",
+ "| xz | dbl-2002-bj-3 | O2twice | True | False | False | True |
\n",
+ "| xz | dbl-2002-bj-3 | Inftytwice | True | False | False | True |
\n",
+ "| xz | dbl-2002-bj-3 | Zerostwice | Undefined | True | False | False |
\n",
+ "| xz | dbl-2002-bj | O2twice | True | False | False | True |
\n",
+ "| xz | dbl-2002-bj | Inftytwice | True | False | False | True |
\n",
+ "| xz | dbl-2002-bj | Zerostwice | Undefined | True | False | False |
\n",
+ "| xz | dbl-2002-it-2 | O2twice | True | False | False | True |
\n",
+ "| xz | dbl-2002-it-2 | Inftytwice | True | False | False | True |
\n",
+ "| xz | dbl-2002-it-2 | Zerostwice | Undefined | True | False | False |
\n",
+ "| xz | dbl-2002-it | O2twice | True | False | False | True |
\n",
+ "| xz | dbl-2002-it | Inftytwice | True | False | False | True |
\n",
+ "| xz | dbl-2002-it | Zerostwice | Undefined | True | False | False |
\n",
+ "| xz | dbl-2002-bj-2 | O2twice | True | False | False | True |
\n",
+ "| xz | dbl-2002-bj-2 | Inftytwice | True | False | False | True |
\n",
+ "| xz | dbl-2002-bj-2 | Zerostwice | Undefined | True | False | False |
\n",
"\n",
"
"
],
@@ -518,11 +581,20 @@
"source": [
"table = [[\"Formula\", \"Test\", \"Correct?\", \"Zeros?\", \"Affine?\", \"On curve?\"]]\n",
"test_filter = None\n",
- "for vals in results_dbl.values():\n",
+ "groups = {}\n",
+ "for coords_name, vals in results_dbl.items():\n",
" for name, formula in vals.items():\n",
" for k, v in formula.items():\n",
" if test_filter is None or k in test_filter:\n",
- " table.append((name, k, v[0], v[1], v[2], v[3]))\n",
+ " item = (v[0], v[1], v[2], v[3])\n",
+ " group = groups.setdefault(item, set())\n",
+ " group.add(name + \"-\" + k + \"-\" + coords_name)\n",
+ " table.append((coords_name, name, k, v[0], v[1], v[2], v[3]))\n",
+ "if test_filter is not None:\n",
+ " for group, formulas in groups.items():\n",
+ " print(group)\n",
+ " for f in sorted(formulas):\n",
+ " print(f\"\\t{f}\")\n",
"display(HTML(tabulate.tabulate(table, tablefmt=\"html\", headers=\"firstrow\")))"
]
},
--
cgit v1.2.3-70-g09d2