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", - "\n", + "\n", "\n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", "
Formula Test Correct? Zeros? Affine? On curve?
Coords Formula Test Correct? Zeros? Affine? On curve?
add-2007-bl PpP True False True True
add-2007-bl PpInfty False True False False
add-2007-bl InftypP False True False False
add-2007-bl O2pO2 True False False True
add-2007-bl EqInfty1True False False True
add-2007-bl EqInfty2True False False True
add-2007-bl PpZeros Undefined True False False
add-2007-bl ZerospP Undefined True False False
add-2002-bj PpP True False True True
add-2002-bj PpInfty False True False False
add-2002-bj InftypP False True False False
add-2002-bj O2pO2 True False False True
add-2002-bj EqInfty1True False False True
add-2002-bj EqInfty2True False False True
add-2002-bj PpZeros Undefined True False False
add-2002-bj ZerospP Undefined True False False
add-2015-rcb PpP True False True True
add-2015-rcb PpInfty True False True True
add-2015-rcb InftypP True False True True
add-2015-rcb O2pO2 True False False True
add-2015-rcb EqInfty1True False False True
add-2015-rcb EqInfty2True False False True
add-2015-rcb PpZeros Undefined True False False
add-2015-rcb ZerospP Undefined True False False
mmadd-1998-cmoPpP False True False False
mmadd-1998-cmoPpInfty False False True False
mmadd-1998-cmoInftypP False False True False
mmadd-1998-cmoO2pO2 False True False False
mmadd-1998-cmoEqInfty1True False False True
mmadd-1998-cmoEqInfty2True False False True
mmadd-1998-cmoPpZeros Undefined False True False
mmadd-1998-cmoZerospP Undefined False True False
add-1998-cmo PpP False True False False
add-1998-cmo PpInfty False True False False
add-1998-cmo InftypP False True False False
add-1998-cmo O2pO2 False True False False
add-1998-cmo EqInfty1True False False True
add-1998-cmo EqInfty2True False False True
add-1998-cmo PpZeros Undefined True False False
add-1998-cmo ZerospP Undefined True False False
madd-1998-cmo PpP False True False False
madd-1998-cmo PpInfty False False True False
madd-1998-cmo InftypP False True False False
madd-1998-cmo O2pO2 False True False False
madd-1998-cmo EqInfty1True False False True
madd-1998-cmo EqInfty2True False False True
madd-1998-cmo PpZeros Undefined False True False
madd-1998-cmo ZerospP Undefined True False False
madd-2015-rcb PpP True False True True
madd-2015-rcb PpInfty False False True False
madd-2015-rcb InftypP True False True True
madd-2015-rcb O2pO2 True False False True
madd-2015-rcb EqInfty1True False False True
madd-2015-rcb EqInfty2True False False True
madd-2015-rcb PpZeros Undefined False True False
madd-2015-rcb ZerospP Undefined True False False
add-1998-cmo-2PpP False True False False
add-1998-cmo-2PpInfty False True False False
add-1998-cmo-2InftypP False True False False
add-1998-cmo-2O2pO2 False True False False
add-1998-cmo-2EqInfty1True False False True
add-1998-cmo-2EqInfty2True False False True
add-1998-cmo-2PpZeros Undefined True False False
add-1998-cmo-2ZerospP Undefined True False False
mmadd-2009-bl PpP False True False False
mmadd-2009-bl PpInfty False False True False
mmadd-2009-bl InftypP False False True False
mmadd-2009-bl O2pO2 False True False False
mmadd-2009-bl EqInfty1True False False True
mmadd-2009-bl EqInfty2True False False True
mmadd-2009-bl PpZeros Undefined False True False
mmadd-2009-bl ZerospP Undefined False True False
add-2009-bl PpP False True False False
add-2009-bl PpInfty False True False False
add-2009-bl InftypP False True False False
add-2009-bl O2pO2 False True False False
add-2009-bl EqInfty1True False False True
add-2009-bl EqInfty2True False False True
add-2009-bl PpZeros Undefined True False False
add-2009-bl ZerospP Undefined True False False
madd-2009-bl PpP False True False False
madd-2009-bl PpInfty False False True False
madd-2009-bl InftypP False True False False
madd-2009-bl O2pO2 False True False False
madd-2009-bl EqInfty1True False False True
madd-2009-bl EqInfty2True False False True
madd-2009-bl PpZeros Undefined False True False
madd-2009-bl ZerospP Undefined True False False
add-1998-cmo-2PpP False True False False
add-1998-cmo-2PpInfty False True False False
add-1998-cmo-2InftypP False True False False
add-1998-cmo-2O2pO2 False True False False
add-1998-cmo-2EqInfty1True False False True
add-1998-cmo-2EqInfty2True False False True
add-1998-cmo-2PpZeros Undefined True False False
add-1998-cmo-2ZerospP Undefined True False False
add-2008-s PpP False True False False
add-2008-s PpInfty False True False False
add-2008-s InftypP False True False False
add-2008-s O2pO2 False True False False
add-2008-s EqInfty1True False False True
add-2008-s EqInfty2True False False True
add-2008-s PpZeros Undefined True False False
add-2008-s ZerospP Undefined True False False
madd-2008-s PpP False True False False
madd-2008-s PpInfty False False True False
madd-2008-s InftypP False True False False
madd-2008-s O2pO2 False True False False
madd-2008-s EqInfty1True False False True
madd-2008-s EqInfty2True False False True
madd-2008-s PpZeros Undefined False True False
madd-2008-s ZerospP Undefined True False False
mmadd-2008-s PpP False True False False
mmadd-2008-s PpInfty False False True False
mmadd-2008-s InftypP False False True False
mmadd-2008-s O2pO2 False True False False
mmadd-2008-s EqInfty1True False False True
mmadd-2008-s EqInfty2True False False True
mmadd-2008-s PpZeros Undefined False True False
mmadd-2008-s ZerospP Undefined False True False
madd-2007-bl PpP False True False False
madd-2007-bl PpInfty False False True False
madd-2007-bl InftypP False True False False
madd-2007-bl O2pO2 False True False False
madd-2007-bl EqInfty1True False False True
madd-2007-bl EqInfty2True False False True
madd-2007-bl PpZeros Undefined False True False
madd-2007-bl ZerospP Undefined True False False
add-1998-cmo PpP False True False False
add-1998-cmo PpInfty False True False False
add-1998-cmo InftypP False True False False
add-1998-cmo O2pO2 False True False False
add-1998-cmo EqInfty1True False False True
add-1998-cmo EqInfty2True False False True
add-1998-cmo PpZeros Undefined True False False
add-1998-cmo ZerospP Undefined True False False
zadd-2007-m PpP False True False False
zadd-2007-m PpInfty False False True False
zadd-2007-m InftypP False False False False
zadd-2007-m O2pO2 False True False False
zadd-2007-m EqInfty1True False False True
zadd-2007-m EqInfty2True False False True
zadd-2007-m PpZeros Undefined False True False
zadd-2007-m ZerospP Undefined False False False
add-2001-b PpP False True False False
add-2001-b PpInfty False True False False
add-2001-b InftypP False True False False
add-2001-b O2pO2 False True False False
add-2001-b EqInfty1True False False True
add-2001-b EqInfty2True False False True
add-2001-b PpZeros Undefined True False False
add-2001-b ZerospP Undefined True False False
add-1998-cmo-2PpP False True False False
add-1998-cmo-2PpInfty False True False False
add-1998-cmo-2InftypP False True False False
add-1998-cmo-2O2pO2 False True False False
add-1998-cmo-2EqInfty1True False False True
add-1998-cmo-2EqInfty2True False False True
add-1998-cmo-2PpZeros Undefined True False False
add-1998-cmo-2ZerospP Undefined True False False
add-1986-cc PpP False True False False
add-1986-cc PpInfty False True False False
add-1986-cc InftypP False True False False
add-1986-cc O2pO2 False True False False
add-1986-cc EqInfty1True False False True
add-1986-cc EqInfty2True False False True
add-1986-cc PpZeros Undefined True False False
add-1986-cc ZerospP Undefined True False False
madd-2004-hmv PpP False True False False
madd-2004-hmv PpInfty False False True False
madd-2004-hmv InftypP False True False False
madd-2004-hmv O2pO2 False True False False
madd-2004-hmv EqInfty1True False False True
madd-2004-hmv EqInfty2True False False True
madd-2004-hmv PpZeros Undefined False True False
madd-2004-hmv ZerospP Undefined True False False
add-2007-bl PpP False True False False
add-2007-bl PpInfty False True False False
add-2007-bl InftypP False True False False
add-2007-bl O2pO2 False True False False
add-2007-bl EqInfty1True False False True
add-2007-bl EqInfty2True False False True
add-2007-bl PpZeros Undefined True False False
add-2007-bl ZerospP Undefined True False False
madd-2008-g PpP False True False False
madd-2008-g PpInfty False False True False
madd-2008-g InftypP False True False False
madd-2008-g O2pO2 False True False False
madd-2008-g EqInfty1True False False True
madd-2008-g EqInfty2True False False True
madd-2008-g PpZeros Undefined False True False
madd-2008-g ZerospP Undefined True False False
mmadd-2007-bl PpP False True False False
mmadd-2007-bl PpInfty False False True False
mmadd-2007-bl InftypP False False True False
mmadd-2007-bl O2pO2 False True False False
mmadd-2007-bl EqInfty1True False False True
mmadd-2007-bl EqInfty2True False False True
mmadd-2007-bl PpZeros Undefined False True False
mmadd-2007-bl ZerospP Undefined False True False
add-1998-hnm PpP False True False False
add-1998-hnm PpInfty False True False False
add-1998-hnm InftypP False True False False
add-1998-hnm O2pO2 False True False False
add-1998-hnm EqInfty1True False False True
add-1998-hnm EqInfty2True False False True
add-1998-hnm PpZeros Undefined True False False
add-1998-hnm ZerospP Undefined True False False
madd PpP False True False False
madd PpInfty False False True False
madd InftypP False True False False
madd O2pO2 False True False False
madd EqInfty1True False False True
madd EqInfty2True False False True
madd PpZeros Undefined False True False
madd ZerospP Undefined True False False
projectiveadd-2007-bl PpP True False True True
projectiveadd-2007-bl PpInfty False True False False
projectiveadd-2007-bl InftypP False True False False
projectiveadd-2007-bl O2pO2 True False False True
projectiveadd-2007-bl EqInfty1True False False True
projectiveadd-2007-bl EqInfty2True False False True
projectiveadd-2007-bl PpZeros Undefined True False False
projectiveadd-2007-bl ZerospP Undefined True False False
projectiveadd-2002-bj PpP True False True True
projectiveadd-2002-bj PpInfty False True False False
projectiveadd-2002-bj InftypP False True False False
projectiveadd-2002-bj O2pO2 True False False True
projectiveadd-2002-bj EqInfty1True False False True
projectiveadd-2002-bj EqInfty2True False False True
projectiveadd-2002-bj PpZeros Undefined True False False
projectiveadd-2002-bj ZerospP Undefined True False False
projectiveadd-2015-rcb PpP True False True True
projectiveadd-2015-rcb PpInfty True False True True
projectiveadd-2015-rcb InftypP True False True True
projectiveadd-2015-rcb O2pO2 True False False True
projectiveadd-2015-rcb EqInfty1True False False True
projectiveadd-2015-rcb EqInfty2True False False True
projectiveadd-2015-rcb PpZeros Undefined True False False
projectiveadd-2015-rcb ZerospP Undefined True False False
projectivemmadd-1998-cmoPpP False True False False
projectivemmadd-1998-cmoPpInfty False False True False
projectivemmadd-1998-cmoInftypP False False True False
projectivemmadd-1998-cmoO2pO2 False True False False
projectivemmadd-1998-cmoEqInfty1True False False True
projectivemmadd-1998-cmoEqInfty2True False False True
projectivemmadd-1998-cmoPpZeros Undefined False True False
projectivemmadd-1998-cmoZerospP Undefined False True False
projectiveadd-1998-cmo PpP False True False False
projectiveadd-1998-cmo PpInfty False True False False
projectiveadd-1998-cmo InftypP False True False False
projectiveadd-1998-cmo O2pO2 False True False False
projectiveadd-1998-cmo EqInfty1True False False True
projectiveadd-1998-cmo EqInfty2True False False True
projectiveadd-1998-cmo PpZeros Undefined True False False
projectiveadd-1998-cmo ZerospP Undefined True False False
projectivemadd-1998-cmo PpP False True False False
projectivemadd-1998-cmo PpInfty False False True False
projectivemadd-1998-cmo InftypP False True False False
projectivemadd-1998-cmo O2pO2 False True False False
projectivemadd-1998-cmo EqInfty1True False False True
projectivemadd-1998-cmo EqInfty2True False False True
projectivemadd-1998-cmo PpZeros Undefined False True False
projectivemadd-1998-cmo ZerospP Undefined True False False
projectivemadd-2015-rcb PpP True False True True
projectivemadd-2015-rcb PpInfty False False True False
projectivemadd-2015-rcb InftypP True False True True
projectivemadd-2015-rcb O2pO2 True False False True
projectivemadd-2015-rcb EqInfty1True False False True
projectivemadd-2015-rcb EqInfty2True False False True
projectivemadd-2015-rcb PpZeros Undefined False True False
projectivemadd-2015-rcb ZerospP Undefined True False False
projectiveadd-1998-cmo-2PpP False True False False
projectiveadd-1998-cmo-2PpInfty False True False False
projectiveadd-1998-cmo-2InftypP False True False False
projectiveadd-1998-cmo-2O2pO2 False True False False
projectiveadd-1998-cmo-2EqInfty1True False False True
projectiveadd-1998-cmo-2EqInfty2True False False True
projectiveadd-1998-cmo-2PpZeros Undefined True False False
projectiveadd-1998-cmo-2ZerospP Undefined True False False
modified mmadd-2009-bl PpP False True False False
modified mmadd-2009-bl PpInfty False False True False
modified mmadd-2009-bl InftypP False False True False
modified mmadd-2009-bl O2pO2 False True False False
modified mmadd-2009-bl EqInfty1True False False True
modified mmadd-2009-bl EqInfty2True False False True
modified mmadd-2009-bl PpZeros Undefined False True False
modified mmadd-2009-bl ZerospP Undefined False True False
modified add-2009-bl PpP False True False False
modified add-2009-bl PpInfty False True False False
modified add-2009-bl InftypP False True False False
modified add-2009-bl O2pO2 False True False False
modified add-2009-bl EqInfty1True False False True
modified add-2009-bl EqInfty2True False False True
modified add-2009-bl PpZeros Undefined True False False
modified add-2009-bl ZerospP Undefined True False False
modified madd-2009-bl PpP False True False False
modified madd-2009-bl PpInfty False False True False
modified madd-2009-bl InftypP False True False False
modified madd-2009-bl O2pO2 False True False False
modified madd-2009-bl EqInfty1True False False True
modified madd-2009-bl EqInfty2True False False True
modified madd-2009-bl PpZeros Undefined False True False
modified madd-2009-bl ZerospP Undefined True False False
modified add-1998-cmo-2PpP False True False False
modified add-1998-cmo-2PpInfty False True False False
modified add-1998-cmo-2InftypP False True False False
modified add-1998-cmo-2O2pO2 False True False False
modified add-1998-cmo-2EqInfty1True False False True
modified add-1998-cmo-2EqInfty2True False False True
modified add-1998-cmo-2PpZeros Undefined True False False
modified add-1998-cmo-2ZerospP Undefined True False False
xyzz add-2008-s PpP False True False False
xyzz add-2008-s PpInfty False True False False
xyzz add-2008-s InftypP False True False False
xyzz add-2008-s O2pO2 False True False False
xyzz add-2008-s EqInfty1True False False True
xyzz add-2008-s EqInfty2True False False True
xyzz add-2008-s PpZeros Undefined True False False
xyzz add-2008-s ZerospP Undefined True False False
xyzz madd-2008-s PpP False True False False
xyzz madd-2008-s PpInfty False False True False
xyzz madd-2008-s InftypP False True False False
xyzz madd-2008-s O2pO2 False True False False
xyzz madd-2008-s EqInfty1True False False True
xyzz madd-2008-s EqInfty2True False False True
xyzz madd-2008-s PpZeros Undefined False True False
xyzz madd-2008-s ZerospP Undefined True False False
xyzz mmadd-2008-s PpP False True False False
xyzz mmadd-2008-s PpInfty False False True False
xyzz mmadd-2008-s InftypP False False True False
xyzz mmadd-2008-s O2pO2 False True False False
xyzz mmadd-2008-s EqInfty1True False False True
xyzz mmadd-2008-s EqInfty2True False False True
xyzz mmadd-2008-s PpZeros Undefined False True False
xyzz mmadd-2008-s ZerospP Undefined False True False
jacobian madd-2007-bl PpP False True False False
jacobian madd-2007-bl PpInfty False False True False
jacobian madd-2007-bl InftypP False True False False
jacobian madd-2007-bl O2pO2 False True False False
jacobian madd-2007-bl EqInfty1True False False True
jacobian madd-2007-bl EqInfty2True False False True
jacobian madd-2007-bl PpZeros Undefined False True False
jacobian madd-2007-bl ZerospP Undefined True False False
jacobian add-1998-cmo PpP False True False False
jacobian add-1998-cmo PpInfty False True False False
jacobian add-1998-cmo InftypP False True False False
jacobian add-1998-cmo O2pO2 False True False False
jacobian add-1998-cmo EqInfty1True False False True
jacobian add-1998-cmo EqInfty2True False False True
jacobian add-1998-cmo PpZeros Undefined True False False
jacobian add-1998-cmo ZerospP Undefined True False False
jacobian zadd-2007-m PpP False True False False
jacobian zadd-2007-m PpInfty False False True False
jacobian zadd-2007-m InftypP False False False False
jacobian zadd-2007-m O2pO2 False True False False
jacobian zadd-2007-m EqInfty1True False False True
jacobian zadd-2007-m EqInfty2True False False True
jacobian zadd-2007-m PpZeros Undefined False True False
jacobian zadd-2007-m ZerospP Undefined False False False
jacobian add-2001-b PpP False True False False
jacobian add-2001-b PpInfty False True False False
jacobian add-2001-b InftypP False True False False
jacobian add-2001-b O2pO2 False True False False
jacobian add-2001-b EqInfty1True False False True
jacobian add-2001-b EqInfty2True False False True
jacobian add-2001-b PpZeros Undefined True False False
jacobian add-2001-b ZerospP Undefined True False False
jacobian add-1998-cmo-2PpP False True False False
jacobian add-1998-cmo-2PpInfty False True False False
jacobian add-1998-cmo-2InftypP False True False False
jacobian add-1998-cmo-2O2pO2 False True False False
jacobian add-1998-cmo-2EqInfty1True False False True
jacobian add-1998-cmo-2EqInfty2True False False True
jacobian add-1998-cmo-2PpZeros Undefined True False False
jacobian add-1998-cmo-2ZerospP Undefined True False False
jacobian add-1986-cc PpP False True False False
jacobian add-1986-cc PpInfty False True False False
jacobian add-1986-cc InftypP False True False False
jacobian add-1986-cc O2pO2 False True False False
jacobian add-1986-cc EqInfty1True False False True
jacobian add-1986-cc EqInfty2True False False True
jacobian add-1986-cc PpZeros Undefined True False False
jacobian add-1986-cc ZerospP Undefined True False False
jacobian madd-2004-hmv PpP False True False False
jacobian madd-2004-hmv PpInfty False False True False
jacobian madd-2004-hmv InftypP False True False False
jacobian madd-2004-hmv O2pO2 False True False False
jacobian madd-2004-hmv EqInfty1True False False True
jacobian madd-2004-hmv EqInfty2True False False True
jacobian madd-2004-hmv PpZeros Undefined False True False
jacobian madd-2004-hmv ZerospP Undefined True False False
jacobian add-2007-bl PpP False True False False
jacobian add-2007-bl PpInfty False True False False
jacobian add-2007-bl InftypP False True False False
jacobian add-2007-bl O2pO2 False True False False
jacobian add-2007-bl EqInfty1True False False True
jacobian add-2007-bl EqInfty2True False False True
jacobian add-2007-bl PpZeros Undefined True False False
jacobian add-2007-bl ZerospP Undefined True False False
jacobian madd-2008-g PpP False True False False
jacobian madd-2008-g PpInfty False False True False
jacobian madd-2008-g InftypP False True False False
jacobian madd-2008-g O2pO2 False True False False
jacobian madd-2008-g EqInfty1True False False True
jacobian madd-2008-g EqInfty2True False False True
jacobian madd-2008-g PpZeros Undefined False True False
jacobian madd-2008-g ZerospP Undefined True False False
jacobian mmadd-2007-bl PpP False True False False
jacobian mmadd-2007-bl PpInfty False False True False
jacobian mmadd-2007-bl InftypP False False True False
jacobian mmadd-2007-bl O2pO2 False True False False
jacobian mmadd-2007-bl EqInfty1True False False True
jacobian mmadd-2007-bl EqInfty2True False False True
jacobian mmadd-2007-bl PpZeros Undefined False True False
jacobian mmadd-2007-bl ZerospP Undefined False True False
jacobian add-1998-hnm PpP False True False False
jacobian add-1998-hnm PpInfty False True False False
jacobian add-1998-hnm InftypP False True False False
jacobian add-1998-hnm O2pO2 False True False False
jacobian add-1998-hnm EqInfty1True False False True
jacobian add-1998-hnm EqInfty2True False False True
jacobian add-1998-hnm PpZeros Undefined True False False
jacobian add-1998-hnm ZerospP Undefined True False False
jacobian madd PpP False True False False
jacobian madd PpInfty False False True False
jacobian madd InftypP False True False False
jacobian madd O2pO2 False True False False
jacobian madd EqInfty1True False False True
jacobian madd EqInfty2True False False True
jacobian madd PpZeros Undefined False True False
jacobian madd ZerospP Undefined True False False
" ], @@ -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", - "\n", + "\n", "\n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", "
Formula Test Correct? Zeros? Affine? On curve?
Formula Test Correct? Zeros? Affine? On curve?
mdbl-2007-bl O2twice True False False True
mdbl-2007-bl InftytwiceFalse False True False
mdbl-2007-bl ZerostwiceUndefined False False True
dbl-2015-rcb O2twice True False False True
dbl-2015-rcb InftytwiceTrue False False True
dbl-2015-rcb ZerostwiceUndefined True False False
dbl-1998-cmo O2twice True False False True
dbl-1998-cmo InftytwiceFalse True False False
dbl-1998-cmo ZerostwiceUndefined True False False
dbl-2007-bl O2twice True False False True
dbl-2007-bl InftytwiceFalse True False False
dbl-2007-bl ZerostwiceUndefined True False False
dbl-1998-cmo-2O2twice True False False True
dbl-1998-cmo-2InftytwiceFalse True False False
dbl-1998-cmo-2ZerostwiceUndefined True False False
dbl-2009-bl O2twice True False False True
dbl-2009-bl InftytwiceTrue False False True
dbl-2009-bl ZerostwiceUndefined True False False
mdbl-2009-bl O2twice True False False True
mdbl-2009-bl InftytwiceFalse False True False
mdbl-2009-bl ZerostwiceUndefined True False False
dbl-1998-cmo-2O2twice True False False True
dbl-1998-cmo-2InftytwiceTrue False False True
dbl-1998-cmo-2ZerostwiceUndefined True False False
mdbl-2008-s-1 O2twice True False False True
mdbl-2008-s-1 InftytwiceFalse False True False
mdbl-2008-s-1 ZerostwiceUndefined False False True
dbl-2008-s-1 O2twice True False False True
dbl-2008-s-1 InftytwiceTrue False False True
dbl-2008-s-1 ZerostwiceUndefined True False False
dbl-1998-cmo O2twice True False False True
dbl-1998-cmo InftytwiceTrue False False True
dbl-1998-cmo ZerostwiceUndefined True False False
dbl-1986-cc O2twice True False False True
dbl-1986-cc InftytwiceTrue False False True
dbl-1986-cc ZerostwiceUndefined True False False
dbl-2007-bl O2twice True False False True
dbl-2007-bl InftytwiceTrue False False True
dbl-2007-bl ZerostwiceUndefined True False False
dbl-1998-cmo-2O2twice True False False True
dbl-1998-cmo-2InftytwiceTrue False False True
dbl-1998-cmo-2ZerostwiceUndefined True False False
dbl-1998-hnm O2twice True False False True
dbl-1998-hnm InftytwiceTrue False False True
dbl-1998-hnm ZerostwiceUndefined True False False
mdbl-2007-bl O2twice True False False True
mdbl-2007-bl InftytwiceFalse False True False
mdbl-2007-bl ZerostwiceUndefined False False True
dbl-2002-bj-3 O2twice True False False True
dbl-2002-bj-3 InftytwiceTrue False False True
dbl-2002-bj-3 ZerostwiceUndefined True False False
dbl-2002-bj O2twice True False False True
dbl-2002-bj InftytwiceTrue False False True
dbl-2002-bj ZerostwiceUndefined True False False
dbl-2002-it-2 O2twice True False False True
dbl-2002-it-2 InftytwiceTrue False False True
dbl-2002-it-2 ZerostwiceUndefined True False False
dbl-2002-it O2twice True False False True
dbl-2002-it InftytwiceTrue False False True
dbl-2002-it ZerostwiceUndefined True False False
dbl-2002-bj-2 O2twice True False False True
dbl-2002-bj-2 InftytwiceTrue False False True
dbl-2002-bj-2 ZerostwiceUndefined True False False
projectivemdbl-2007-bl O2twice True False False True
projectivemdbl-2007-bl InftytwiceFalse False True False
projectivemdbl-2007-bl ZerostwiceUndefined False False True
projectivedbl-2015-rcb O2twice True False False True
projectivedbl-2015-rcb InftytwiceTrue False False True
projectivedbl-2015-rcb ZerostwiceUndefined True False False
projectivedbl-1998-cmo O2twice True False False True
projectivedbl-1998-cmo InftytwiceFalse True False False
projectivedbl-1998-cmo ZerostwiceUndefined True False False
projectivedbl-2007-bl O2twice True False False True
projectivedbl-2007-bl InftytwiceFalse True False False
projectivedbl-2007-bl ZerostwiceUndefined True False False
projectivedbl-1998-cmo-2O2twice True False False True
projectivedbl-1998-cmo-2InftytwiceFalse True False False
projectivedbl-1998-cmo-2ZerostwiceUndefined True False False
modified dbl-2009-bl O2twice True False False True
modified dbl-2009-bl InftytwiceTrue False False True
modified dbl-2009-bl ZerostwiceUndefined True False False
modified mdbl-2009-bl O2twice True False False True
modified mdbl-2009-bl InftytwiceFalse False True False
modified mdbl-2009-bl ZerostwiceUndefined True False False
modified dbl-1998-cmo-2O2twice True False False True
modified dbl-1998-cmo-2InftytwiceTrue False False True
modified dbl-1998-cmo-2ZerostwiceUndefined True False False
xyzz mdbl-2008-s-1 O2twice True False False True
xyzz mdbl-2008-s-1 InftytwiceFalse False True False
xyzz mdbl-2008-s-1 ZerostwiceUndefined False False True
xyzz dbl-2008-s-1 O2twice True False False True
xyzz dbl-2008-s-1 InftytwiceTrue False False True
xyzz dbl-2008-s-1 ZerostwiceUndefined True False False
jacobian dbl-1998-cmo O2twice True False False True
jacobian dbl-1998-cmo InftytwiceTrue False False True
jacobian dbl-1998-cmo ZerostwiceUndefined True False False
jacobian dbl-1986-cc O2twice True False False True
jacobian dbl-1986-cc InftytwiceTrue False False True
jacobian dbl-1986-cc ZerostwiceUndefined True False False
jacobian dbl-2007-bl O2twice True False False True
jacobian dbl-2007-bl InftytwiceTrue False False True
jacobian dbl-2007-bl ZerostwiceUndefined True False False
jacobian dbl-1998-cmo-2O2twice True False False True
jacobian dbl-1998-cmo-2InftytwiceTrue False False True
jacobian dbl-1998-cmo-2ZerostwiceUndefined True False False
jacobian dbl-1998-hnm O2twice True False False True
jacobian dbl-1998-hnm InftytwiceTrue False False True
jacobian dbl-1998-hnm ZerostwiceUndefined True False False
jacobian mdbl-2007-bl O2twice True False False True
jacobian mdbl-2007-bl InftytwiceFalse False True False
jacobian mdbl-2007-bl ZerostwiceUndefined False False True
xz dbl-2002-bj-3 O2twice True False False True
xz dbl-2002-bj-3 InftytwiceTrue False False True
xz dbl-2002-bj-3 ZerostwiceUndefined True False False
xz dbl-2002-bj O2twice True False False True
xz dbl-2002-bj InftytwiceTrue False False True
xz dbl-2002-bj ZerostwiceUndefined True False False
xz dbl-2002-it-2 O2twice True False False True
xz dbl-2002-it-2 InftytwiceTrue False False True
xz dbl-2002-it-2 ZerostwiceUndefined True False False
xz dbl-2002-it O2twice True False False True
xz dbl-2002-it InftytwiceTrue False False True
xz dbl-2002-it ZerostwiceUndefined True False False
xz dbl-2002-bj-2 O2twice True False False True
xz dbl-2002-bj-2 InftytwiceTrue False False True
xz dbl-2002-bj-2 ZerostwiceUndefined True False False
" ], @@ -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