diff options
| -rw-r--r-- | epare/formulas.ipynb | 652 |
1 files 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." ] }, { @@ -176,235 +178,274 @@ ] }, { + "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": [ "<table>\n", "<thead>\n", - "<tr><th>Formula </th><th>Test </th><th>Correct? </th><th>Zeros? </th><th>Affine? </th><th>On curve? </th></tr>\n", + "<tr><th>Coords </th><th>Formula </th><th>Test </th><th>Correct? </th><th>Zeros? </th><th>Affine? </th><th>On curve? </th></tr>\n", "</thead>\n", "<tbody>\n", - "<tr><td>add-2007-bl </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", - "<tr><td>add-2007-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2007-bl </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2002-bj </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", - "<tr><td>add-2002-bj </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2002-bj </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2002-bj </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2002-bj </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2002-bj </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2002-bj </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2002-bj </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2015-rcb </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", - "<tr><td>add-2015-rcb </td><td>PpInfty </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", - "<tr><td>add-2015-rcb </td><td>InftypP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", - "<tr><td>add-2015-rcb </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2015-rcb </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2015-rcb </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2015-rcb </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2015-rcb </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-1998-cmo</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-1998-cmo</td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-1998-cmo</td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-1998-cmo</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-1998-cmo</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mmadd-1998-cmo</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mmadd-1998-cmo</td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-1998-cmo</td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-1998-cmo </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-1998-cmo </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-1998-cmo </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2015-rcb </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", - "<tr><td>madd-2015-rcb </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2015-rcb </td><td>InftypP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", - "<tr><td>madd-2015-rcb </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2015-rcb </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2015-rcb </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2015-rcb </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2015-rcb </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-2009-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-2009-bl </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-2009-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mmadd-2009-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mmadd-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>add-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2009-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2009-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2009-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2009-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2009-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2009-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2009-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2009-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2008-s </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2008-s </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2008-s </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2008-s </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2008-s </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2008-s </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2008-s </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2008-s </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2008-s </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2008-s </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2008-s </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2008-s </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-2008-s </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-2008-s </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-2008-s </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mmadd-2008-s </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mmadd-2008-s </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-2008-s </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2007-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>zadd-2007-m </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>zadd-2007-m </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>zadd-2007-m </td><td>InftypP </td><td>False </td><td>False </td><td>False </td><td>False </td></tr>\n", - "<tr><td>zadd-2007-m </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>zadd-2007-m </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>zadd-2007-m </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>zadd-2007-m </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>zadd-2007-m </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2001-b </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2001-b </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2001-b </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2001-b </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2001-b </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2001-b </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2001-b </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2001-b </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1986-cc </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1986-cc </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1986-cc </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1986-cc </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1986-cc </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1986-cc </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1986-cc </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1986-cc </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2004-hmv </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2004-hmv </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2004-hmv </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2004-hmv </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2004-hmv </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2004-hmv </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2004-hmv </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2004-hmv </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2007-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2008-g </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2008-g </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2008-g </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2008-g </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd-2008-g </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2008-g </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd-2008-g </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd-2008-g </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-2007-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-2007-bl </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mmadd-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mmadd-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mmadd-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mmadd-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>add-1998-hnm </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-hnm </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-hnm </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-hnm </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-hnm </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-hnm </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>add-1998-hnm </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>add-1998-hnm </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>madd </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>madd </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>madd </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-2007-bl </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2007-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-2007-bl </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-2002-bj </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2002-bj </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-2002-bj </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-2002-bj </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2002-bj </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2002-bj </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2002-bj </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-2002-bj </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-2015-rcb </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2015-rcb </td><td>PpInfty </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2015-rcb </td><td>InftypP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2015-rcb </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2015-rcb </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2015-rcb </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-2015-rcb </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-2015-rcb </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>madd-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>madd-1998-cmo </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>madd-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>madd-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>madd-1998-cmo </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>madd-1998-cmo </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>madd-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>madd-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>madd-2015-rcb </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>madd-2015-rcb </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>madd-2015-rcb </td><td>InftypP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>madd-2015-rcb </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>madd-2015-rcb </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>madd-2015-rcb </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>madd-2015-rcb </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>madd-2015-rcb </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo-2</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo-2</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>mmadd-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>mmadd-2009-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>mmadd-2009-bl </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>mmadd-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>mmadd-2009-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>mmadd-2009-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>mmadd-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>mmadd-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-2009-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-2009-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-2009-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>add-2009-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>add-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>madd-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>madd-2009-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>madd-2009-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>madd-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>madd-2009-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>madd-2009-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>madd-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>madd-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-1998-cmo-2</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>add-1998-cmo-2</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>add-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>add-2008-s </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>add-2008-s </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>add-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>add-2008-s </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xyzz </td><td>add-2008-s </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xyzz </td><td>add-2008-s </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>add-2008-s </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>madd-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>madd-2008-s </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>madd-2008-s </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>madd-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>madd-2008-s </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xyzz </td><td>madd-2008-s </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xyzz </td><td>madd-2008-s </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>madd-2008-s </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2007-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>zadd-2007-m </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>zadd-2007-m </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>zadd-2007-m </td><td>InftypP </td><td>False </td><td>False </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>zadd-2007-m </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>zadd-2007-m </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>zadd-2007-m </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>zadd-2007-m </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>zadd-2007-m </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2001-b </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2001-b </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2001-b </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2001-b </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2001-b </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-2001-b </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-2001-b </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2001-b </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1986-cc </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1986-cc </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1986-cc </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1986-cc </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1986-cc </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-1986-cc </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-1986-cc </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1986-cc </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2007-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2008-g </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2008-g </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2008-g </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2008-g </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2008-g </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2008-g </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2008-g </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd-2008-g </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-hnm </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-hnm </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-hnm </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-hnm </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-hnm </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-hnm </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-hnm </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>add-1998-hnm </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>madd </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>madd </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>madd </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", "</tbody>\n", "</table>" ], @@ -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": [ "<table>\n", "<thead>\n", - "<tr><th>Formula </th><th>Test </th><th>Correct? </th><th>Zeros? </th><th>Affine? </th><th>On curve? </th></tr>\n", + "<tr><th> </th><th>Formula </th><th>Test </th><th>Correct? </th><th>Zeros? </th><th>Affine? </th><th>On curve? </th></tr>\n", "</thead>\n", "<tbody>\n", - "<tr><td>mdbl-2007-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mdbl-2007-bl </td><td>Inftytwice</td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mdbl-2007-bl </td><td>Zerostwice</td><td>Undefined </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2015-rcb </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2015-rcb </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2015-rcb </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-1998-cmo </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1998-cmo </td><td>Inftytwice</td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-1998-cmo </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-2007-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2007-bl </td><td>Inftytwice</td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-2007-bl </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-1998-cmo-2</td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1998-cmo-2</td><td>Inftytwice</td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-1998-cmo-2</td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-2009-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2009-bl </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2009-bl </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mdbl-2009-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mdbl-2009-bl </td><td>Inftytwice</td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mdbl-2009-bl </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-1998-cmo-2</td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1998-cmo-2</td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1998-cmo-2</td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mdbl-2008-s-1 </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mdbl-2008-s-1 </td><td>Inftytwice</td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mdbl-2008-s-1 </td><td>Zerostwice</td><td>Undefined </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2008-s-1 </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2008-s-1 </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2008-s-1 </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-1998-cmo </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1998-cmo </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1998-cmo </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-1986-cc </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1986-cc </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1986-cc </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-2007-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2007-bl </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2007-bl </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-1998-cmo-2</td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1998-cmo-2</td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1998-cmo-2</td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-1998-hnm </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1998-hnm </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-1998-hnm </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>mdbl-2007-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>mdbl-2007-bl </td><td>Inftytwice</td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", - "<tr><td>mdbl-2007-bl </td><td>Zerostwice</td><td>Undefined </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2002-bj-3 </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2002-bj-3 </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2002-bj-3 </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-2002-bj </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2002-bj </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2002-bj </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-2002-it-2 </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2002-it-2 </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2002-it-2 </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-2002-it </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2002-it </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2002-it </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", - "<tr><td>dbl-2002-bj-2 </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2002-bj-2 </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", - "<tr><td>dbl-2002-bj-2 </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>mdbl-2007-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>mdbl-2007-bl </td><td>Inftytwice</td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>mdbl-2007-bl </td><td>Zerostwice</td><td>Undefined </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>dbl-2015-rcb </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>dbl-2015-rcb </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>dbl-2015-rcb </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>dbl-1998-cmo </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>dbl-1998-cmo </td><td>Inftytwice</td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>dbl-1998-cmo </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>dbl-2007-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>dbl-2007-bl </td><td>Inftytwice</td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>dbl-2007-bl </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>dbl-1998-cmo-2</td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>projective</td><td>dbl-1998-cmo-2</td><td>Inftytwice</td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>projective</td><td>dbl-1998-cmo-2</td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>dbl-2009-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>dbl-2009-bl </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>dbl-2009-bl </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>mdbl-2009-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>mdbl-2009-bl </td><td>Inftytwice</td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>mdbl-2009-bl </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>modified </td><td>dbl-1998-cmo-2</td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>dbl-1998-cmo-2</td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>modified </td><td>dbl-1998-cmo-2</td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>mdbl-2008-s-1 </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xyzz </td><td>mdbl-2008-s-1 </td><td>Inftytwice</td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>xyzz </td><td>mdbl-2008-s-1 </td><td>Zerostwice</td><td>Undefined </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xyzz </td><td>dbl-2008-s-1 </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xyzz </td><td>dbl-2008-s-1 </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xyzz </td><td>dbl-2008-s-1 </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1998-cmo </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1998-cmo </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1998-cmo </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1986-cc </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1986-cc </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1986-cc </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-2007-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-2007-bl </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-2007-bl </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1998-cmo-2</td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1998-cmo-2</td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1998-cmo-2</td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1998-hnm </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1998-hnm </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>dbl-1998-hnm </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>mdbl-2007-bl </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>jacobian </td><td>mdbl-2007-bl </td><td>Inftytwice</td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n", + "<tr><td>jacobian </td><td>mdbl-2007-bl </td><td>Zerostwice</td><td>Undefined </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-bj-3 </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-bj-3 </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-bj-3 </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-bj </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-bj </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-bj </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-it-2 </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-it-2 </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-it-2 </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-it </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-it </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-it </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-bj-2 </td><td>O2twice </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-bj-2 </td><td>Inftytwice</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n", + "<tr><td>xz </td><td>dbl-2002-bj-2 </td><td>Zerostwice</td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n", "</tbody>\n", "</table>" ], @@ -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\")))" ] }, |
