aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorvojtechsu2024-01-18 10:51:59 +0100
committervojtechsu2024-01-18 10:51:59 +0100
commit56bfd47fc206b0bc946d7de5aa5ef356a75974a9 (patch)
tree3df1246cb0f852b8dab30a9f07d5c25022e24acc
parentc395392ea388ba9ea8596152b4bf72c8deba24f6 (diff)
downloadpyecsca-notebook-56bfd47fc206b0bc946d7de5aa5ef356a75974a9.tar.gz
pyecsca-notebook-56bfd47fc206b0bc946d7de5aa5ef356a75974a9.tar.zst
pyecsca-notebook-56bfd47fc206b0bc946d7de5aa5ef356a75974a9.zip
Add modified remapping
-rw-r--r--re/zvp.ipynb1946
1 files changed, 1912 insertions, 34 deletions
diff --git a/re/zvp.ipynb b/re/zvp.ipynb
index 02dda22..e3e607e 100644
--- a/re/zvp.ipynb
+++ b/re/zvp.ipynb
@@ -10,7 +10,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"id": "17a9e580-5f1e-45c9-8afd-fc35e833b0b0",
"metadata": {},
"outputs": [],
@@ -46,7 +46,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"id": "c2240ed4-5279-487a-ad90-f6a6798f403c",
"metadata": {},
"outputs": [],
@@ -66,7 +66,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 3,
"id": "8de124f1-9498-4e55-8b7f-1bd291ccf3fe",
"metadata": {},
"outputs": [],
@@ -79,7 +79,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 4,
"id": "2193ab53-9dc9-4ba4-89d3-e331e5cc20de",
"metadata": {},
"outputs": [],
@@ -119,7 +119,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 5,
"id": "d8ea0c4d-86e1-46af-ac20-569e6ef5439d",
"metadata": {},
"outputs": [],
@@ -139,7 +139,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 6,
"id": "0252f8fa-012c-453c-ba23-b40f9686fcce",
"metadata": {},
"outputs": [],
@@ -172,7 +172,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 7,
"id": "7ab00a5c-2873-40c0-a81c-873350897e46",
"metadata": {},
"outputs": [],
@@ -195,13 +195,28 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 8,
"id": "91bc36bb-80e8-41d8-8612-7f9e24bdf278",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "1632e60f52e54563a2243cf3d179da3b",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Compute: 0%| | 0/745 [00:00<?, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "bound = 25\n",
- "chain_bound = 20\n",
+ "bound = 5\n",
+ "chain_bound = 5\n",
"\n",
"formula_classes = [AdditionFormula, DoublingFormula]\n",
"point_chains = {}\n",
@@ -236,14 +251,29 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 13,
"id": "b7c7b341-5b15-44fb-b9cf-462b64e7536e",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "7bc93ed3bb94436e9fc5d20f86c83cb0",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Accumulate for coord systems: 0%| | 0/11 [00:00<?, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"point_map = {}\n",
"for coord_name, coords in tqdm(model.coordinates.items(), desc=\"Accumulate for coord systems\"):\n",
- " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class), coords.formulas.values())) for formula_class in formula_classes]\n",
+ " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class) and (formula.name.startswith(\"add\") or formula.name.startswith(\"dbl\")), coords.formulas.values())) for formula_class in formula_classes]\n",
" formula_combinations = list(product(*formula_groups))\n",
" for formulas in formula_combinations:\n",
" points = set()\n",
@@ -272,7 +302,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 14,
"id": "8afea2a8-49a1-4969-a19e-9e17e26fb1e8",
"metadata": {},
"outputs": [],
@@ -282,12 +312,347 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 15,
+ "id": "49ee4c6f",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "4, 37, 4, 27, 2, 4, 12, 17, 4, 6, 2, 67, 1, 4, 2, 8, 2, 6, 1, 3, 4, 1, 6, 3, 3, 6, 2, 4, "
+ ]
+ }
+ ],
+ "source": [
+ "def print_leaf_sizes(tree):\n",
+ " leaves = []\n",
+ " nodes = [tree]\n",
+ " while nodes:\n",
+ " new_nodes = []\n",
+ " for node in nodes:\n",
+ " if node.children:\n",
+ " new_nodes.extend(node.children)\n",
+ " else:\n",
+ " leaves.append(node)\n",
+ " nodes = new_nodes \n",
+ " leaf_sizes = [len(leaf.cfgs) for leaf in leaves]\n",
+ " print(sorted(leaf_sizes))\n",
+ "\n",
+ "print_leaf_sizes(tree)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
"id": "ab09b767-71ca-4d28-abf0-532307efefbd",
"metadata": {
"scrolled": true
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[x=7523181643117586774, y=861591372171155399]\n",
+ "DomainParameters(EllipticCurve)\n",
+ "├── [x=4173724707785958223, y=6577250203972113290]\n",
+ "│ DomainParameters(EllipticCurve)\n",
+ "│ ├── [x=198756535338419930, y=10649610515976041289]\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2015-rcb\n",
+ "│ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2016-rcb\n",
+ "│ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2015-rcb\n",
+ "│ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2016-rcb\n",
+ "│ │ └── [x=710459779677453253, y=8718793080546575443]\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ └── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2007-bl\n",
+ "│ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo\n",
+ "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2007-bl\n",
+ "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ shortw/xyzz/add-2008-s, shortw/xyzz/dbl-2008-s-1\n",
+ "│ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-2009-bl\n",
+ "│ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-1998-cmo-2\n",
+ "│ │ shortw/modified/add-2009-bl, shortw/modified/dbl-2009-bl\n",
+ "│ │ shortw/modified/add-2009-bl, shortw/modified/dbl-1998-cmo-2\n",
+ "│ └── [x=161110322234615011, y=6188535790273537383]\n",
+ "│ DomainParameters(EllipticCurve)\n",
+ "│ ├── [x=7018390556762767964, y=8234992169006142300]\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb\n",
+ "│ │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb-3\n",
+ "│ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2016-rcb\n",
+ "│ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb-3\n",
+ "│ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2016-rcb\n",
+ "│ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl\n",
+ "│ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo\n",
+ "│ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl\n",
+ "│ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo\n",
+ "│ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-1\n",
+ "│ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-2\n",
+ "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2001-b\n",
+ "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2001-b\n",
+ "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2001-b\n",
+ "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "└── [x=3271642899270608132, y=4094231858049384691]\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── [x=8462011093657406711, y=9385955884972991198]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=3909394990548410378, y=1271934111897046201]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── [x=198756535338419930, y=10649610515976041289]\n",
+ " │ │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-2015-rcb\n",
+ " │ │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-2016-rcb\n",
+ " │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2015-rcb\n",
+ " │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2016-rcb\n",
+ " │ │ │ └── shortw/projective/add-2002-bj, shortw/projective/dbl-2007-bl\n",
+ " │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo-2\n",
+ " │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo\n",
+ " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2007-bl\n",
+ " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo-2\n",
+ " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo\n",
+ " │ │ └── [x=9280663850407308169, y=3970590255664920732]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── [x=710459779677453253, y=8718793080546575443]\n",
+ " │ │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ │ ├── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-hnm\n",
+ " │ │ │ └── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1986-cc\n",
+ " │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-2007-bl\n",
+ " │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo-2\n",
+ " │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo\n",
+ " │ │ └── [x=710459779677453253, y=8718793080546575443]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-hnm\n",
+ " │ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-hnm\n",
+ " │ │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1986-cc\n",
+ " │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-2007-bl\n",
+ " │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1986-cc\n",
+ " │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-2007-bl\n",
+ " │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo\n",
+ " │ └── [x=3760330877114905034, y=14518154872986670897]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=9185172264551501167, y=1489984362467478237]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── [x=5290749974607723184, y=9066658054269062673]\n",
+ " │ │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ │ ├── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2015-rcb\n",
+ " │ │ │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2015-rcb\n",
+ " │ │ │ └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2007-bl\n",
+ " │ │ │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ │ │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo\n",
+ " │ │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2007-bl\n",
+ " │ │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo\n",
+ " │ │ └── [x=9023895164928322279, y=3383060556063092686]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2015-rcb\n",
+ " │ │ └── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2007-bl\n",
+ " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo\n",
+ " │ └── [x=9023895164928322279, y=11600196812807098545]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=8976497402921340665, y=14893197716203064256]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2016-rcb\n",
+ " │ │ └── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2015-rcb\n",
+ " │ └── [x=8976497402921340665, y=14893197716203064256]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-2007-bl\n",
+ " │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo\n",
+ " │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2007-bl\n",
+ " │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo\n",
+ " │ └── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2007-bl\n",
+ " │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo\n",
+ " └── [x=3261882760552750749, y=5224146365954570556]\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── [x=161110322234615011, y=6188535790273537383]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=6741014024306303479, y=8089192144272372943]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── [x=7018390556762767964, y=8234992169006142300]\n",
+ " │ │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb\n",
+ " │ │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb\n",
+ " │ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb\n",
+ " │ │ │ └── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ └── [x=7018390556762767964, y=8234992169006142300]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb\n",
+ " │ │ └── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2016-rcb\n",
+ " │ └── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo\n",
+ " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo\n",
+ " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo\n",
+ " └── [x=8583585759655994824, y=5121594309025134149]\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo\n",
+ " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2007-bl\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2004-hmv\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2001-b\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc-2\n",
+ " └── [x=9023895164928322279, y=3383060556063092686]\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2015-rcb\n",
+ " │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2015-rcb\n",
+ " └── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1986-cc\n",
+ " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-hnm\n",
+ " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2007-bl\n",
+ " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-l\n",
+ " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo\n",
+ " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-alnr\n",
+ " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1986-cc\n",
+ " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-hnm\n",
+ " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2007-bl\n",
+ " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-l\n",
+ " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo\n",
+ " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-alnr\n",
+ " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1986-cc\n",
+ " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-hnm\n",
+ " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2007-bl\n",
+ " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-l\n",
+ " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo\n",
+ " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-alnr\n",
+ " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1986-cc\n",
+ " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-hnm\n",
+ " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2007-bl\n",
+ " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-l\n",
+ " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo\n",
+ " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-alnr\n",
+ " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1986-cc\n",
+ " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-hnm\n",
+ " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2007-bl\n",
+ " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-l\n",
+ " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo\n",
+ " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-alnr\n",
+ " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1986-cc\n",
+ " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-hnm\n",
+ " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2007-bl\n",
+ " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-l\n",
+ " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo\n",
+ " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-alnr\n",
+ " shortw/w12-0/add-2010-cln, shortw/w12-0/dbl-2010-cln\n",
+ " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2007-bl\n",
+ " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo-2\n",
+ " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo\n",
+ " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2007-bl\n",
+ " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo-2\n",
+ " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2007-bl\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2004-hmv\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2001-b\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc-2\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2007-bl\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2004-hmv\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2001-b\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc-2\n"
+ ]
+ }
+ ],
"source": [
"print(RenderTree(tree).by_attr(lambda n: n.name if n.name is not None else \"\\n\".join((\", \".join(str(formula) for formula in cfg) for cfg in n.cfgs))))"
]
@@ -302,10 +667,25 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 17,
"id": "ca932717-2b0a-4dea-ae84-988b7d9af233",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "4655629a073d4e158f00d150dbf363b5",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Remap: 0%| | 0/242 [00:00<?, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"def remap(coords, formulas, points, scalar):\n",
" mult = LTRMultiplier(*formulas, None, False, AccumulationOrder.PeqRP, True, True)\n",
@@ -335,6 +715,8 @@
" hit_zero = any(int(value) == 0 for value in trace)\n",
" if hit_zero:\n",
" new_points.add((point, params))\n",
+ " #hit_zero = sum(int(value) == 0 for value in trace)\n",
+ " #new_points.add((point, hit_zero, params))\n",
" return new_points\n",
"\n",
"remapped_point_map = {}\n",
@@ -342,7 +724,7 @@
" futures = []\n",
" pairs = []\n",
" for coord_name, coords in model.coordinates.items():\n",
- " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class), coords.formulas.values())) for formula_class in formula_classes]\n",
+ " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class) and (formula.name.startswith(\"add\") or formula.name.startswith(\"dbl\")), coords.formulas.values())) for formula_class in formula_classes]\n",
" formula_combinations = list(product(*formula_groups))\n",
" for formulas in formula_combinations:\n",
" #remap(coords, formulas, all_points, scalar)\n",
@@ -366,12 +748,261 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 18,
"id": "cc87dfd1-f058-4338-aaca-fc05105fc9f1",
"metadata": {
"scrolled": true
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-2009-l 0 0 0 0\n",
+ "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n",
+ "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-2009-l 0 0 0 0\n",
+ "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n",
+ "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-2009-l 0 0 0 0\n",
+ "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n",
+ "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n",
+ "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n",
+ "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n",
+ "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n",
+ "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-2009-l 0 0 0 0\n",
+ "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n",
+ "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n",
+ "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n",
+ "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n",
+ "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n",
+ "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n",
+ "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-2009-l 0 0 0 0\n",
+ "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n",
+ "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n",
+ "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n",
+ "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n",
+ "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n",
+ "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n",
+ "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-2009-l 0 3 0 3\n",
+ "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n",
+ "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n",
+ "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n",
+ "shortw/w12-0/add-2010-cln shortw/w12-0/dbl-2010-cln 0 0 0 0\n",
+ "shortw/projective-1/add-1998-cmo-2 shortw/projective-1/dbl-2015-rcb 6 6 0 0\n",
+ "shortw/projective-1/add-1998-cmo-2 shortw/projective-1/dbl-2007-bl 0 0 0 0\n",
+ "shortw/projective-1/add-1998-cmo-2 shortw/projective-1/dbl-1998-cmo-2 0 0 0 0\n",
+ "shortw/projective-1/add-1998-cmo-2 shortw/projective-1/dbl-1998-cmo 0 0 0 0\n",
+ "shortw/projective-1/add-2002-bj-2 shortw/projective-1/dbl-2015-rcb 10 10 0 0\n",
+ "shortw/projective-1/add-2002-bj-2 shortw/projective-1/dbl-2007-bl 4 4 0 0\n",
+ "shortw/projective-1/add-2002-bj-2 shortw/projective-1/dbl-1998-cmo-2 4 4 0 0\n",
+ "shortw/projective-1/add-2002-bj-2 shortw/projective-1/dbl-1998-cmo 4 4 0 0\n",
+ "shortw/projective-1/add-1998-cmo shortw/projective-1/dbl-2015-rcb 6 6 0 0\n",
+ "shortw/projective-1/add-1998-cmo shortw/projective-1/dbl-2007-bl 0 0 0 0\n",
+ "shortw/projective-1/add-1998-cmo shortw/projective-1/dbl-1998-cmo-2 0 0 0 0\n",
+ "shortw/projective-1/add-1998-cmo shortw/projective-1/dbl-1998-cmo 0 0 0 0\n",
+ "shortw/projective-1/add-2015-rcb shortw/projective-1/dbl-2015-rcb 23 23 0 0\n",
+ "shortw/projective-1/add-2015-rcb shortw/projective-1/dbl-2007-bl 19 19 0 0\n",
+ "shortw/projective-1/add-2015-rcb shortw/projective-1/dbl-1998-cmo-2 19 19 0 0\n",
+ "shortw/projective-1/add-2015-rcb shortw/projective-1/dbl-1998-cmo 19 19 0 0\n",
+ "shortw/projective-1/add-2002-bj shortw/projective-1/dbl-2015-rcb 16 16 0 0\n",
+ "shortw/projective-1/add-2002-bj shortw/projective-1/dbl-2007-bl 10 10 0 0\n",
+ "shortw/projective-1/add-2002-bj shortw/projective-1/dbl-1998-cmo-2 10 10 0 0\n",
+ "shortw/projective-1/add-2002-bj shortw/projective-1/dbl-1998-cmo 10 10 0 0\n",
+ "shortw/projective-1/add-2007-bl shortw/projective-1/dbl-2015-rcb 16 16 0 0\n",
+ "shortw/projective-1/add-2007-bl shortw/projective-1/dbl-2007-bl 10 10 0 0\n",
+ "shortw/projective-1/add-2007-bl shortw/projective-1/dbl-1998-cmo-2 10 10 0 0\n",
+ "shortw/projective-1/add-2007-bl shortw/projective-1/dbl-1998-cmo 10 10 0 0\n",
+ "shortw/projective/add-2016-rcb shortw/projective/dbl-2015-rcb 474 474 0 0\n",
+ "shortw/projective/add-2016-rcb shortw/projective/dbl-2007-bl 320 320 0 0\n",
+ "shortw/projective/add-2016-rcb shortw/projective/dbl-1998-cmo-2 320 320 0 0\n",
+ "shortw/projective/add-2016-rcb shortw/projective/dbl-2016-rcb 474 474 0 0\n",
+ "shortw/projective/add-2016-rcb shortw/projective/dbl-1998-cmo 320 320 0 0\n",
+ "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-2015-rcb 232 264 0 32\n",
+ "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-2007-bl 64 96 0 32\n",
+ "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-1998-cmo-2 64 96 0 32\n",
+ "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-2016-rcb 232 264 0 32\n",
+ "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-1998-cmo 64 96 0 32\n",
+ "shortw/projective/add-1998-cmo shortw/projective/dbl-2015-rcb 232 264 0 32\n",
+ "shortw/projective/add-1998-cmo shortw/projective/dbl-2007-bl 64 96 0 32\n",
+ "shortw/projective/add-1998-cmo shortw/projective/dbl-1998-cmo-2 64 96 0 32\n",
+ "shortw/projective/add-1998-cmo shortw/projective/dbl-2016-rcb 232 264 0 32\n",
+ "shortw/projective/add-1998-cmo shortw/projective/dbl-1998-cmo 64 96 0 32\n",
+ "shortw/projective/add-2015-rcb shortw/projective/dbl-2015-rcb 474 474 0 0\n",
+ "shortw/projective/add-2015-rcb shortw/projective/dbl-2007-bl 320 320 0 0\n",
+ "shortw/projective/add-2015-rcb shortw/projective/dbl-1998-cmo-2 320 320 0 0\n",
+ "shortw/projective/add-2015-rcb shortw/projective/dbl-2016-rcb 474 474 0 0\n",
+ "shortw/projective/add-2015-rcb shortw/projective/dbl-1998-cmo 320 320 0 0\n",
+ "shortw/projective/add-2002-bj shortw/projective/dbl-2015-rcb 246 278 0 32\n",
+ "shortw/projective/add-2002-bj shortw/projective/dbl-2007-bl 78 110 0 32\n",
+ "shortw/projective/add-2002-bj shortw/projective/dbl-1998-cmo-2 78 110 0 32\n",
+ "shortw/projective/add-2002-bj shortw/projective/dbl-2016-rcb 246 278 0 32\n",
+ "shortw/projective/add-2002-bj shortw/projective/dbl-1998-cmo 78 110 0 32\n",
+ "shortw/projective/add-2007-bl shortw/projective/dbl-2015-rcb 246 278 0 32\n",
+ "shortw/projective/add-2007-bl shortw/projective/dbl-2007-bl 78 110 0 32\n",
+ "shortw/projective/add-2007-bl shortw/projective/dbl-1998-cmo-2 78 110 0 32\n",
+ "shortw/projective/add-2007-bl shortw/projective/dbl-2016-rcb 246 278 0 32\n",
+ "shortw/projective/add-2007-bl shortw/projective/dbl-1998-cmo 78 110 0 32\n",
+ "shortw/jacobian/add-1998-cmo-2 shortw/jacobian/dbl-1986-cc 64 96 0 32\n",
+ "shortw/jacobian/add-1998-cmo-2 shortw/jacobian/dbl-1998-hnm 160 192 0 32\n",
+ "shortw/jacobian/add-1998-cmo-2 shortw/jacobian/dbl-2007-bl 64 111 0 47\n",
+ "shortw/jacobian/add-1998-cmo-2 shortw/jacobian/dbl-1998-cmo-2 64 96 0 32\n",
+ "shortw/jacobian/add-1998-cmo-2 shortw/jacobian/dbl-1998-cmo 64 96 0 32\n",
+ "shortw/jacobian/add-1998-cmo shortw/jacobian/dbl-1986-cc 64 96 0 32\n",
+ "shortw/jacobian/add-1998-cmo shortw/jacobian/dbl-1998-hnm 160 192 0 32\n",
+ "shortw/jacobian/add-1998-cmo shortw/jacobian/dbl-2007-bl 64 111 0 47\n",
+ "shortw/jacobian/add-1998-cmo shortw/jacobian/dbl-1998-cmo-2 64 96 0 32\n",
+ "shortw/jacobian/add-1998-cmo shortw/jacobian/dbl-1998-cmo 64 96 0 32\n",
+ "shortw/jacobian/add-1998-hnm shortw/jacobian/dbl-1986-cc 80 112 0 32\n",
+ "shortw/jacobian/add-1998-hnm shortw/jacobian/dbl-1998-hnm 168 200 0 32\n",
+ "shortw/jacobian/add-1998-hnm shortw/jacobian/dbl-2007-bl 80 127 0 47\n",
+ "shortw/jacobian/add-1998-hnm shortw/jacobian/dbl-1998-cmo-2 80 112 0 32\n",
+ "shortw/jacobian/add-1998-hnm shortw/jacobian/dbl-1998-cmo 80 112 0 32\n",
+ "shortw/jacobian/add-1986-cc shortw/jacobian/dbl-1986-cc 54 86 0 32\n",
+ "shortw/jacobian/add-1986-cc shortw/jacobian/dbl-1998-hnm 142 174 0 32\n",
+ "shortw/jacobian/add-1986-cc shortw/jacobian/dbl-2007-bl 54 101 0 47\n",
+ "shortw/jacobian/add-1986-cc shortw/jacobian/dbl-1998-cmo-2 54 86 0 32\n",
+ "shortw/jacobian/add-1986-cc shortw/jacobian/dbl-1998-cmo 54 86 0 32\n",
+ "shortw/jacobian/add-2001-b shortw/jacobian/dbl-1986-cc 54 86 0 32\n",
+ "shortw/jacobian/add-2001-b shortw/jacobian/dbl-1998-hnm 142 174 0 32\n",
+ "shortw/jacobian/add-2001-b shortw/jacobian/dbl-2007-bl 54 101 0 47\n",
+ "shortw/jacobian/add-2001-b shortw/jacobian/dbl-1998-cmo-2 54 86 0 32\n",
+ "shortw/jacobian/add-2001-b shortw/jacobian/dbl-1998-cmo 54 86 0 32\n",
+ "shortw/jacobian/add-2007-bl shortw/jacobian/dbl-1986-cc 64 111 0 47\n",
+ "shortw/jacobian/add-2007-bl shortw/jacobian/dbl-1998-hnm 160 207 0 47\n",
+ "shortw/jacobian/add-2007-bl shortw/jacobian/dbl-2007-bl 64 111 0 47\n",
+ "shortw/jacobian/add-2007-bl shortw/jacobian/dbl-1998-cmo-2 64 111 0 47\n",
+ "shortw/jacobian/add-2007-bl shortw/jacobian/dbl-1998-cmo 64 111 0 47\n",
+ "shortw/jacobian/add-bc-r1rv76-jac shortw/jacobian/dbl-1986-cc 64 96 0 32\n",
+ "shortw/jacobian/add-bc-r1rv76-jac shortw/jacobian/dbl-1998-hnm 160 192 0 32\n",
+ "shortw/jacobian/add-bc-r1rv76-jac shortw/jacobian/dbl-2007-bl 64 111 0 47\n",
+ "shortw/jacobian/add-bc-r1rv76-jac shortw/jacobian/dbl-1998-cmo-2 64 96 0 32\n",
+ "shortw/jacobian/add-bc-r1rv76-jac shortw/jacobian/dbl-1998-cmo 64 96 0 32\n",
+ "shortw/xyzz/add-2008-s shortw/xyzz/dbl-2008-s-1 64 96 0 32\n",
+ "shortw/modified/add-1998-cmo-2 shortw/modified/dbl-2009-bl 64 96 0 32\n",
+ "shortw/modified/add-1998-cmo-2 shortw/modified/dbl-1998-cmo-2 64 96 0 32\n",
+ "shortw/modified/add-2009-bl shortw/modified/dbl-2009-bl 64 111 0 47\n",
+ "shortw/modified/add-2009-bl shortw/modified/dbl-1998-cmo-2 64 111 0 47\n",
+ "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-2015-rcb 28 28 0 0\n",
+ "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-2007-bl 12 12 0 0\n",
+ "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-2015-rcb-3 28 28 0 0\n",
+ "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-1998-cmo-2 12 12 0 0\n",
+ "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-2007-bl-2 12 12 0 0\n",
+ "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-2016-rcb 28 28 0 0\n",
+ "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-1998-cmo 12 12 0 0\n",
+ "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-2015-rcb 20 20 0 0\n",
+ "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-2007-bl 2 2 0 0\n",
+ "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-2015-rcb-3 20 20 0 0\n",
+ "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-1998-cmo-2 2 2 0 0\n",
+ "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-2007-bl-2 2 2 0 0\n",
+ "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-2016-rcb 20 20 0 0\n",
+ "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-1998-cmo 2 2 0 0\n",
+ "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-2015-rcb 20 20 0 0\n",
+ "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-2007-bl 2 2 0 0\n",
+ "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-2015-rcb-3 20 20 0 0\n",
+ "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-1998-cmo-2 2 2 0 0\n",
+ "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-2007-bl-2 2 2 0 0\n",
+ "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-2016-rcb 20 20 0 0\n",
+ "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-1998-cmo 2 2 0 0\n",
+ "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-2015-rcb 28 28 0 0\n",
+ "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-2007-bl 12 12 0 0\n",
+ "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-2015-rcb-3 28 28 0 0\n",
+ "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-1998-cmo-2 12 12 0 0\n",
+ "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-2007-bl-2 12 12 0 0\n",
+ "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-2016-rcb 28 28 0 0\n",
+ "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-1998-cmo 12 12 0 0\n",
+ "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-2015-rcb 20 20 0 0\n",
+ "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-2007-bl 2 2 0 0\n",
+ "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-2015-rcb-3 20 20 0 0\n",
+ "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-1998-cmo-2 2 2 0 0\n",
+ "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-2007-bl-2 2 2 0 0\n",
+ "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-2016-rcb 20 20 0 0\n",
+ "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-1998-cmo 2 2 0 0\n",
+ "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-2015-rcb 28 28 0 0\n",
+ "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-2007-bl 12 12 0 0\n",
+ "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-2015-rcb-3 28 28 0 0\n",
+ "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-1998-cmo-2 12 12 0 0\n",
+ "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-2007-bl-2 12 12 0 0\n",
+ "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-2016-rcb 28 28 0 0\n",
+ "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-1998-cmo 12 12 0 0\n",
+ "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-2015-rcb 20 20 0 0\n",
+ "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-2007-bl 2 2 0 0\n",
+ "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-2015-rcb-3 20 20 0 0\n",
+ "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-1998-cmo-2 2 2 0 0\n",
+ "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-2007-bl-2 2 2 0 0\n",
+ "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-2016-rcb 20 20 0 0\n",
+ "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-1998-cmo 2 2 0 0\n",
+ "shortw/xyzz-3/add-2008-s shortw/xyzz-3/dbl-2008-s-1 2 2 0 0\n",
+ "shortw/xyzz-3/add-2008-s shortw/xyzz-3/dbl-2008-s-2 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1986-cc 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1998-hnm-2 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1998-hnm 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-2007-bl 2 3 0 1\n",
+ "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-2004-hmv 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1998-cmo-2 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-2001-b 2 3 0 1\n",
+ "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1998-cmo 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1986-cc-2 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1986-cc 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1998-hnm-2 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1998-hnm 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-2007-bl 2 3 0 1\n",
+ "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-2004-hmv 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1998-cmo-2 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-2001-b 2 3 0 1\n",
+ "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1998-cmo 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1986-cc-2 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1986-cc 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1998-hnm-2 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1998-hnm 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-2007-bl 2 3 0 1\n",
+ "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-2004-hmv 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1998-cmo-2 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-2001-b 2 3 0 1\n",
+ "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1998-cmo 2 2 0 0\n",
+ "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1986-cc-2 2 2 0 0\n",
+ "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1986-cc 0 0 0 0\n",
+ "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1998-hnm-2 0 0 0 0\n",
+ "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1998-hnm 0 0 0 0\n",
+ "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-2007-bl 0 1 0 1\n",
+ "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-2004-hmv 0 0 0 0\n",
+ "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1998-cmo-2 0 0 0 0\n",
+ "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-2001-b 0 1 0 1\n",
+ "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1998-cmo 0 0 0 0\n",
+ "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1986-cc-2 0 0 0 0\n",
+ "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1986-cc 0 0 0 0\n",
+ "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1998-hnm-2 0 0 0 0\n",
+ "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1998-hnm 0 0 0 0\n",
+ "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-2007-bl 0 1 0 1\n",
+ "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-2004-hmv 0 0 0 0\n",
+ "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1998-cmo-2 0 0 0 0\n",
+ "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-2001-b 0 1 0 1\n",
+ "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1998-cmo 0 0 0 0\n",
+ "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1986-cc-2 0 0 0 0\n",
+ "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1986-cc 2 3 0 1\n",
+ "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1998-hnm-2 2 3 0 1\n",
+ "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1998-hnm 2 3 0 1\n",
+ "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-2007-bl 2 3 0 1\n",
+ "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-2004-hmv 2 3 0 1\n",
+ "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1998-cmo-2 2 3 0 1\n",
+ "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-2001-b 2 3 0 1\n",
+ "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1998-cmo 2 3 0 1\n",
+ "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1986-cc-2 2 3 0 1\n"
+ ]
+ }
+ ],
"source": [
"for pair in point_map.keys():\n",
" print(pair[0], pair[1],\n",
@@ -395,36 +1026,969 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 19,
"id": "5ffc5564-a42b-4837-94bb-4ecb890b38b2",
"metadata": {},
"outputs": [],
"source": [
- "remapped_tree = build_distinguishing_tree(remapped_point_map)"
+ "remapped_tree = build_distinguishing_tree(remapped_point_map)\n",
+ "print_leaf_sizes(remapped_tree)"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 22,
"id": "5d2bbf5b-76e6-4137-9c32-cbd09a5c3600",
"metadata": {
"scrolled": true
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[x=8976497402921340665, y=14893197716203064256]\n",
+ "DomainParameters(EllipticCurve)\n",
+ "├── [x=8462011093657406711, y=9385955884972991198]\n",
+ "│ DomainParameters(EllipticCurve)\n",
+ "│ ├── [x=5303842224313800291, y=9121975806275757870]\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── [x=7673299449516259275, y=4079088229980719011]\n",
+ "│ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ ├── [x=3909394990548410378, y=1271934111897046201]\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── [x=198756535338419930, y=10649610515976041289]\n",
+ "│ │ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-2016-rcb\n",
+ "│ │ │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2016-rcb\n",
+ "│ │ │ │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-2015-rcb\n",
+ "│ │ │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2015-rcb\n",
+ "│ │ │ │ │ └── shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-2007-bl\n",
+ "│ │ │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo\n",
+ "│ │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2007-bl\n",
+ "│ │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo\n",
+ "│ │ │ │ └── [x=4046881022602480857, y=16958156996739198810]\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ │ └── [x=4986377720346872951, y=8332168605444176038]\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ │ └── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ │ └── [x=4986377720346872951, y=8332168605444176038]\n",
+ "│ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ ├── [x=4173724707785958223, y=6577250203972113290]\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── [x=4046881022602480857, y=16958156996739198810]\n",
+ "│ │ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ │ ├── shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ │ │ └── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ └── [x=4046881022602480857, y=16958156996739198810]\n",
+ "│ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ ├── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ └── [x=4046881022602480857, y=16958156996739198810]\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ shortw/modified/add-2009-bl, shortw/modified/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/modified/add-2009-bl, shortw/modified/dbl-2009-bl\n",
+ "│ │ └── [x=198756535338419930, y=10649610515976041289]\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2016-rcb\n",
+ "│ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2016-rcb\n",
+ "│ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2015-rcb\n",
+ "│ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2015-rcb\n",
+ "│ │ └── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2007-bl\n",
+ "│ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo\n",
+ "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo\n",
+ "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2007-bl\n",
+ "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ shortw/xyzz/add-2008-s, shortw/xyzz/dbl-2008-s-1\n",
+ "│ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-1998-cmo-2\n",
+ "│ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-2009-bl\n",
+ "│ └── [x=933295826993298997, y=5255086850954974764]\n",
+ "│ DomainParameters(EllipticCurve)\n",
+ "│ ├── [x=5343745049373992004, y=1215580168733194775]\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-2016-rcb\n",
+ "│ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2016-rcb\n",
+ "│ │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-2015-rcb\n",
+ "│ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2015-rcb\n",
+ "│ │ └── shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-2007-bl\n",
+ "│ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo\n",
+ "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2007-bl\n",
+ "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo\n",
+ "│ └── [x=4504164893371726562, y=9004797292574688026]\n",
+ "│ DomainParameters(EllipticCurve)\n",
+ "│ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2007-bl\n",
+ "│ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1986-cc\n",
+ "│ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1986-cc\n",
+ "│ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2007-bl\n",
+ "│ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1986-cc\n",
+ "│ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2007-bl\n",
+ "│ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1986-cc\n",
+ "│ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2007-bl\n",
+ "│ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1986-cc\n",
+ "│ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2007-bl\n",
+ "│ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1986-cc\n",
+ "│ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2007-bl\n",
+ "│ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-hnm\n",
+ "│ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-hnm\n",
+ "│ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-hnm\n",
+ "│ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-hnm\n",
+ "│ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-hnm\n",
+ "│ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-hnm\n",
+ "│ └── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-alnr\n",
+ "│ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-alnr\n",
+ "│ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-alnr\n",
+ "│ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-alnr\n",
+ "│ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-alnr\n",
+ "│ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-l\n",
+ "│ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-alnr\n",
+ "└── [x=7523181643117586774, y=861591372171155399]\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── [x=3987108553814416983, y=10194401568277669542]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2001-b\n",
+ " │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2001-b\n",
+ " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2001-b\n",
+ " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc-2\n",
+ " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm\n",
+ " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2004-hmv\n",
+ " │ └── [x=161110322234615011, y=6188535790273537383]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=7956235823516658822, y=9732780824814402521]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb\n",
+ " │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb\n",
+ " │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo\n",
+ " │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo\n",
+ " │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-1\n",
+ " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc\n",
+ " │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-2\n",
+ " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo\n",
+ " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc-2\n",
+ " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc\n",
+ " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo\n",
+ " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm\n",
+ " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc-2\n",
+ " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2004-hmv\n",
+ " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm\n",
+ " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2004-hmv\n",
+ " └── [x=3261882760552750749, y=4970255202323098987]\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── [x=161110322234615011, y=6188535790273537383]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=6741014024306303479, y=8089192144272372943]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── [x=7956235823516658822, y=9732780824814402521]\n",
+ " │ │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ │ └── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb\n",
+ " │ │ └── [x=7956235823516658822, y=9732780824814402521]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ └── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb\n",
+ " │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb\n",
+ " │ └── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo\n",
+ " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo\n",
+ " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo\n",
+ " └── [x=8583585759655994824, y=5121594309025134149]\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── [x=3987108553814416983, y=10194401568277669542]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2001-b\n",
+ " │ └── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo\n",
+ " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl\n",
+ " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc-2\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm\n",
+ " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2004-hmv\n",
+ " └── [x=3271642899270608132, y=4094231858049384691]\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── [x=9185172264551501167, y=1489984362467478237]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=9023895164928322279, y=3383060556063092686]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2015-rcb\n",
+ " │ │ └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2007-bl\n",
+ " │ │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo\n",
+ " │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2007-bl\n",
+ " │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo\n",
+ " │ └── [x=3760330877114905034, y=14518154872986670897]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=9023895164928322279, y=3383060556063092686]\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2015-rcb\n",
+ " │ │ └── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2007-bl\n",
+ " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo\n",
+ " │ └── [x=9023895164928322279, y=11600196812807098545]\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2015-rcb\n",
+ " │ └── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2007-bl\n",
+ " │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo\n",
+ " │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo-2\n",
+ " └── [x=3987108553814416983, y=10194401568277669542]\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2007-bl\n",
+ " │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2001-b\n",
+ " │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2007-bl\n",
+ " │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2001-b\n",
+ " └── [x=9023895164928322279, y=3383060556063092686]\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2015-rcb\n",
+ " │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2015-rcb\n",
+ " └── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-l\n",
+ " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-l\n",
+ " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-l\n",
+ " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-l\n",
+ " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-l\n",
+ " shortw/w12-0/add-2010-cln, shortw/w12-0/dbl-2010-cln\n",
+ " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2007-bl\n",
+ " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo-2\n",
+ " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo\n",
+ " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2007-bl\n",
+ " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo-2\n",
+ " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc-2\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc-2\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm\n",
+ " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2004-hmv\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm\n",
+ " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2004-hmv\n"
+ ]
+ }
+ ],
"source": [
"print(RenderTree(remapped_tree).by_attr(lambda n: n.name if n.name is not None else \"\\n\".join((\", \".join(str(formula) for formula in cfg) for cfg in n.cfgs))))"
]
},
{
"cell_type": "code",
+ "execution_count": 23,
+ "id": "3ea9912e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "73994b6863b341ce9f96974b8880392e",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Remap: 0%| | 0/242 [00:00<?, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "def remap(coords, formulas, points, scalar):\n",
+ " mult = LTRMultiplier(*formulas, None, False, AccumulationOrder.PeqRP, True, True)\n",
+ " new_points = set()\n",
+ " param_map = {}\n",
+ " for point, params in tqdm(points):\n",
+ " if params not in param_map:\n",
+ " try:\n",
+ " param_map[params] = params.to_coords(coords)\n",
+ " except UnsatisfiedAssumptionError:\n",
+ " param_map[params] = None\n",
+ " continue\n",
+ " elif param_map[params] is None:\n",
+ " continue\n",
+ " mult.init(param_map[params], point.to_model(param_map[params].curve.coordinate_model, param_map[params].curve))\n",
+ " with local(DefaultContext()) as ctx:\n",
+ " try:\n",
+ " mult.multiply(scalar)\n",
+ " except UnsatisfiedAssumptionError:\n",
+ " continue\n",
+ " trace = []\n",
+ " def callback(action):\n",
+ " if isinstance(action, FormulaAction):\n",
+ " for intermediate in action.op_results:\n",
+ " trace.append(intermediate.value)\n",
+ " ctx.actions.walk(callback)\n",
+ " hit_zero = any(int(value) == 0 for value in trace)\n",
+ " #if hit_zero:\n",
+ " #new_points.add((point, params))\n",
+ " hit_zero = sum(int(value) == 0 for value in trace)\n",
+ " new_points.add((point, hit_zero, params))\n",
+ " return new_points\n",
+ "\n",
+ "remapped_point_map_dupl = {}\n",
+ "with ProcessPoolExecutor(max_workers=12) as pool:\n",
+ " futures = []\n",
+ " pairs = []\n",
+ " for coord_name, coords in model.coordinates.items():\n",
+ " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class) and (formula.name.startswith(\"add\") or formula.name.startswith(\"dbl\")), coords.formulas.values())) for formula_class in formula_classes]\n",
+ " formula_combinations = list(product(*formula_groups))\n",
+ " for formulas in formula_combinations:\n",
+ " #remap(coords, formulas, all_points, scalar)\n",
+ " #break\n",
+ " futures.append(pool.submit(remap, coords, formulas, all_points, scalar))\n",
+ " pairs.append(formulas)\n",
+ " #break\n",
+ " results = [None for _ in futures]\n",
+ " for future in tqdm(as_completed(futures), total=len(futures), desc=\"Remap\"):\n",
+ " j = futures.index(future)\n",
+ " remapped_point_map_dupl[pairs[j]] = future.result()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "10b5059c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "remapped_tree_dupl = build_distinguishing_tree(remapped_point_map_dupl)\n",
+ "print_leaf_sizes(remapped_tree_dupl)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "c5d52e7a",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[x=3261882760552750749, y=5224146365954570556]\n",
+ "0\n",
+ "DomainParameters(EllipticCurve)\n",
+ "├── [x=7523181643117586774, y=9332810196106514144]\n",
+ "│ 1\n",
+ "│ DomainParameters(EllipticCurve)\n",
+ "│ ├── [x=813939388429964455, y=6661172451039539927]\n",
+ "│ │ 3\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── [x=6292247451345142082, y=7536413344159771043]\n",
+ "│ │ │ 4\n",
+ "│ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ ├── [x=3174880782688558524, y=15311888883183151212]\n",
+ "│ │ │ │ 0\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2007-bl\n",
+ "│ │ │ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ │ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo\n",
+ "│ │ │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2007-bl\n",
+ "│ │ │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo\n",
+ "│ │ │ │ └── [x=2931798833210310726, y=14893197716203064256]\n",
+ "│ │ │ │ 27\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── [x=4701374179218306695, y=10529574804216309365]\n",
+ "│ │ │ │ │ 0\n",
+ "│ │ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ │ ├── shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ │ │ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ │ │ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ │ │ │ └── shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ │ └── [x=6510762087270099859, y=8382435628932964398]\n",
+ "│ │ │ │ 26\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ │ └── shortw/modified/add-2009-bl, shortw/modified/dbl-1998-cmo-2\n",
+ "│ │ │ │ shortw/modified/add-2009-bl, shortw/modified/dbl-2009-bl\n",
+ "│ │ │ └── [x=2931798833210310726, y=14893197716203064256]\n",
+ "│ │ │ 26\n",
+ "│ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ ├── [x=4701374179218306695, y=10529574804216309365]\n",
+ "│ │ │ │ 0\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ │ │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ │ │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ │ │ │ shortw/xyzz/add-2008-s, shortw/xyzz/dbl-2008-s-1\n",
+ "│ │ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ │ │ └── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ │ └── [x=2695787092446081872, y=11530949965125792502]\n",
+ "│ │ │ 2\n",
+ "│ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ ├── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ └── shortw/modified/add-1998-cmo-2, shortw/modified/dbl-2009-bl\n",
+ "│ │ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-1998-cmo-2\n",
+ "│ │ └── [x=3987108553814416983, y=10194401568277669542]\n",
+ "│ │ 0\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-1\n",
+ "│ │ │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ │ └── [x=3987108553814416983, y=10194401568277669542]\n",
+ "│ │ 1\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ │ └── [x=3987108553814416983, y=10194401568277669542]\n",
+ "│ │ 2\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2001-b\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2001-b\n",
+ "│ │ └── shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2001-b\n",
+ "│ └── [x=8583585759655994824, y=5072807259252535394]\n",
+ "│ 2\n",
+ "│ DomainParameters(EllipticCurve)\n",
+ "│ ├── [x=813939388429964455, y=6661172451039539927]\n",
+ "│ │ 3\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── [x=9207640209484078691, y=13054112271424076721]\n",
+ "│ │ │ 41\n",
+ "│ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ ├── [x=6292247451345142082, y=7536413344159771043]\n",
+ "│ │ │ │ 3\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── [x=7904229027765000239, y=3153037537088752648]\n",
+ "│ │ │ │ │ 962\n",
+ "│ │ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ │ │ │ └── [x=5610676601755833088, y=2256671746760711811]\n",
+ "│ │ │ │ │ 1012\n",
+ "│ │ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-2007-bl\n",
+ "│ │ │ │ │ └── shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo\n",
+ "│ │ │ │ └── [x=5610676601755833088, y=9274278218365080692]\n",
+ "│ │ │ │ 1085\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── shortw/projective/add-2007-bl, shortw/projective/dbl-2007-bl\n",
+ "│ │ │ │ └── [x=9979302445253644651, y=5489702477279405897]\n",
+ "│ │ │ │ 1035\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ │ │ └── shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo\n",
+ "│ │ │ └── [x=4701374179218306695, y=10529574804216309365]\n",
+ "│ │ │ 0\n",
+ "│ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ ├── [x=3174880782688558524, y=15311888883183151212]\n",
+ "│ │ │ │ 0\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ │ │ └── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ └── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ └── [x=3987108553814416983, y=10194401568277669542]\n",
+ "│ │ 0\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl\n",
+ "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl\n",
+ "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ │ └── shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2001-b\n",
+ "│ └── [x=813939388429964455, y=6661172451039539927]\n",
+ "│ 3\n",
+ "│ DomainParameters(EllipticCurve)\n",
+ "│ ├── [x=5303842224313800291, y=2978129968532308991]\n",
+ "│ │ 2\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── [x=4701374179218306695, y=10529574804216309365]\n",
+ "│ │ │ 0\n",
+ "│ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ ├── [x=3174880782688558524, y=15311888883183151212]\n",
+ "│ │ │ │ 0\n",
+ "│ │ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ │ ├── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ │ │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ │ │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ │ │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ │ └── shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-hnm\n",
+ "│ │ └── [x=4701374179218306695, y=10529574804216309365]\n",
+ "│ │ 0\n",
+ "│ │ DomainParameters(EllipticCurve)\n",
+ "│ │ ├── [x=3174880782688558524, y=15311888883183151212]\n",
+ "│ │ │ 0\n",
+ "│ │ │ DomainParameters(EllipticCurve)\n",
+ "│ │ │ ├── shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1986-cc\n",
+ "│ │ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo-2\n",
+ "│ │ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo\n",
+ "│ │ │ └── shortw/jacobian/add-2001-b, shortw/jacobian/dbl-2007-bl\n",
+ "│ │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-hnm\n",
+ "│ └── [x=3987108553814416983, y=10194401568277669542]\n",
+ "│ 0\n",
+ "│ DomainParameters(EllipticCurve)\n",
+ "│ ├── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ └── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2001-b\n",
+ "│ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2001-b\n",
+ "└── [x=330803148782512684, y=3479385230159377146]\n",
+ " 0\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── [x=5290749974607723184, y=5916599314601128558]\n",
+ " │ 3\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=8583585759655994824, y=5121594309025134149]\n",
+ " │ │ 0\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── [x=5121176033986057907, y=12787271129661728530]\n",
+ " │ │ │ 2\n",
+ " │ │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ │ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo-2\n",
+ " │ │ │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-2007-bl\n",
+ " │ │ │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo\n",
+ " │ │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo-2\n",
+ " │ │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2007-bl\n",
+ " │ │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo\n",
+ " │ │ │ └── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2015-rcb\n",
+ " │ │ └── [x=9185172264551501167, y=1489984362467478237]\n",
+ " │ │ 0\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── [x=5121176033986057907, y=12787271129661728530]\n",
+ " │ │ │ 2\n",
+ " │ │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ │ ├── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2007-bl\n",
+ " │ │ │ │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo\n",
+ " │ │ │ │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ │ │ └── [x=3271642899270608132, y=4094231858049384691]\n",
+ " │ │ │ 0\n",
+ " │ │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ │ ├── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2015-rcb\n",
+ " │ │ │ │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2015-rcb\n",
+ " │ │ │ └── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2015-rcb\n",
+ " │ │ └── [x=4810169051756113129, y=9663791351713124974]\n",
+ " │ │ 1\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── [x=6292247451345142082, y=7536413344159771043]\n",
+ " │ │ │ 3\n",
+ " │ │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-2016-rcb\n",
+ " │ │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-2015-rcb\n",
+ " │ │ │ └── shortw/projective/add-2007-bl, shortw/projective/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2015-rcb\n",
+ " │ │ └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2015-rcb\n",
+ " │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2015-rcb\n",
+ " │ └── [x=3760330877114905034, y=465102495883520334]\n",
+ " │ 0\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=3271642899270608132, y=4094231858049384691]\n",
+ " │ │ 0\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ │ │ shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo\n",
+ " │ │ │ shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2007-bl\n",
+ " │ │ │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ │ │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2007-bl\n",
+ " │ │ │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo\n",
+ " │ │ └── [x=4810169051756113129, y=9663791351713124974]\n",
+ " │ │ 1\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2015-rcb\n",
+ " │ │ └── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2015-rcb\n",
+ " │ └── [x=9185172264551501167, y=1489984362467478237]\n",
+ " │ 0\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2007-bl\n",
+ " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo\n",
+ " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2007-bl\n",
+ " │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo\n",
+ " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2007-bl\n",
+ " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo\n",
+ " └── [x=9207640209484078691, y=13054112271424076721]\n",
+ " 26\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── [x=2931798833210310726, y=14893197716203064256]\n",
+ " │ 26\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ └── [x=2984901480071412866, y=14893197716203064256]\n",
+ " │ 28\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2007-bl\n",
+ " │ └── [x=8976497402921340665, y=14893197716203064256]\n",
+ " │ 27\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ └── shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2007-bl\n",
+ " └── [x=3261882760552750749, y=5224146365954570556]\n",
+ " 3\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── [x=7820832125962317615, y=9334214407275119717]\n",
+ " │ 0\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=6741014024306303479, y=2105209424005296600]\n",
+ " │ │ 5\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl\n",
+ " │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo\n",
+ " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl\n",
+ " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo\n",
+ " │ │ └── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl\n",
+ " │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl-2\n",
+ " │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo\n",
+ " │ └── [x=8583585759655994824, y=5072807259252535394]\n",
+ " │ 0\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── [x=7018390556762767964, y=1959409399271527243]\n",
+ " │ │ 0\n",
+ " │ │ DomainParameters(EllipticCurve)\n",
+ " │ │ ├── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb\n",
+ " │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb\n",
+ " │ └── [x=7018390556762767964, y=1959409399271527243]\n",
+ " │ 0\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2016-rcb\n",
+ " │ └── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb\n",
+ " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb\n",
+ " └── [x=5643623786928772539, y=13627860160399064610]\n",
+ " 0\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── [x=2931798833210310726, y=14893197716203064256]\n",
+ " │ 0\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-l\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-l\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-l\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-l\n",
+ " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-l\n",
+ " │ └── [x=2931798833210310726, y=14893197716203064256]\n",
+ " │ 2\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-alnr\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-alnr\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-alnr\n",
+ " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-alnr\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-alnr\n",
+ " │ └── [x=8976497402921340665, y=14893197716203064256]\n",
+ " │ 1\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-l\n",
+ " │ └── shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-alnr\n",
+ " └── [x=7018390556762767964, y=1959409399271527243]\n",
+ " 0\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── [x=6741014024306303479, y=2105209424005296600]\n",
+ " │ 5\n",
+ " │ DomainParameters(EllipticCurve)\n",
+ " │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2016-rcb\n",
+ " │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2016-rcb\n",
+ " │ └── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb-3\n",
+ " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2016-rcb\n",
+ " └── [x=6741014024306303479, y=2105209424005296600]\n",
+ " 5\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb\n",
+ " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb\n",
+ " └── [x=8583585759655994824, y=5072807259252535394]\n",
+ " 0\n",
+ " DomainParameters(EllipticCurve)\n",
+ " ├── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb\n",
+ " └── shortw/w12-0/add-2010-cln, shortw/w12-0/dbl-2010-cln\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(RenderTree(remapped_tree_dupl).by_attr(lambda n: n.name if n.name is not None else \"\\n\".join((\", \".join(str(formula) for formula in cfg) for cfg in n.cfgs))))"
+ ]
+ },
+ {
+ "cell_type": "code",
"execution_count": null,
+ "id": "47d2056f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def remap(coords, formulas, points, scalar):\n",
+ " mult = LTRMultiplier(*formulas, None, False, AccumulationOrder.PeqRP, True, True)\n",
+ " new_points = set()\n",
+ " param_map = {}\n",
+ " for point, params in tqdm(points):\n",
+ " if params not in param_map:\n",
+ " try:\n",
+ " param_map[params] = params.to_coords(coords)\n",
+ " except UnsatisfiedAssumptionError:\n",
+ " param_map[params] = None\n",
+ " continue\n",
+ " elif param_map[params] is None:\n",
+ " continue\n",
+ " mult.init(param_map[params], point.to_model(param_map[params].curve.coordinate_model, param_map[params].curve))\n",
+ " with local(DefaultContext()) as ctx:\n",
+ " try:\n",
+ " mult.multiply(scalar)\n",
+ " except UnsatisfiedAssumptionError:\n",
+ " continue\n",
+ " trace = []\n",
+ " def callback(action):\n",
+ " if isinstance(action, FormulaAction):\n",
+ " for intermediate in action.op_results:\n",
+ " trace.append(intermediate.value)\n",
+ " ctx.actions.walk(callback)\n",
+ " #hit_zero = any(int(value) == 0 for value in trace)\n",
+ " #if hit_zero:\n",
+ " #new_points.add((point, params))\n",
+ " hit_zero = tuple(map(lambda x: int(x) == 0,trace))\n",
+ " new_points.add((point, hit_zero, params))\n",
+ " return new_points\n",
+ "\n",
+ "remapped_point_map_loc = {}\n",
+ "with ProcessPoolExecutor(max_workers=12) as pool:\n",
+ " futures = []\n",
+ " pairs = []\n",
+ " for coord_name, coords in model.coordinates.items():\n",
+ " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class) and (formula.name.startswith(\"add\") or formula.name.startswith(\"dbl\")), coords.formulas.values())) for formula_class in formula_classes]\n",
+ " formula_combinations = list(product(*formula_groups))\n",
+ " for formulas in formula_combinations:\n",
+ " #remap(coords, formulas, all_points, scalar)\n",
+ " #break\n",
+ " futures.append(pool.submit(remap, coords, formulas, all_points, scalar))\n",
+ " pairs.append(formulas)\n",
+ " #break\n",
+ " results = [None for _ in futures]\n",
+ " for future in tqdm(as_completed(futures), total=len(futures), desc=\"Remap\"):\n",
+ " j = futures.index(future)\n",
+ " remapped_point_map_loc[pairs[j]] = future.result()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "c3a632fb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "remapped_tree_loc = build_distinguishing_tree(remapped_point_map_loc)\n",
+ "print_leaf_sizes(remapped_tree_loc)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "cf37df73",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "print(RenderTree(remapped_tree_loc).by_attr(lambda n: n.name if n.name is not None else \"\\n\".join((\", \".join(str(formula) for formula in cfg) for cfg in n.cfgs))))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
"id": "d258bc29-b24f-4d57-a183-cb5d58e3f20f",
"metadata": {},
"outputs": [],
"source": [
"fset_map = {}\n",
"for coord_name, coords in model.coordinates.items():\n",
- " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class), coords.formulas.values())) for formula_class in formula_classes]\n",
+ " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class) and (formula.name.startswith(\"add\") or formula.name.startswith(\"dbl\")), coords.formulas.values())) for formula_class in formula_classes]\n",
" factor_sets = {}\n",
" for formula_group in formula_groups:\n",
" for formula in formula_group:\n",
@@ -440,32 +2004,346 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 28,
"id": "085c37db-ffbf-4f9e-87d3-5c13ecfeadca",
"metadata": {},
"outputs": [],
"source": [
- "fset_tree = build_distinguishing_tree(fset_map)"
+ "fset_tree = build_distinguishing_tree(fset_map)\n",
+ "print_leaf_sizes(fset_tree)"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 30,
"id": "9f0dc435-e08a-45d0-846d-ee865d6a4b7c",
"metadata": {
"scrolled": true
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Poly(x1 + 1, x1, domain='ZZ')\n",
+ "├── Poly(2*x1**3 - 3*x1**2*x2 + x2**3 - y1**2 + 2*y1*y2 - y2**2, x1, x2, y1, y2, domain='ZZ')\n",
+ "│ ├── Poly(x1**3 - 3*x1**2*x2 + 3*x1*x2**2 - x2**3 + y1**2 - 2*y1*y2 + y2**2, x1, x2, y1, y2, domain='ZZ')\n",
+ "│ │ ├── Poly(-6*x1 - y1**2 + 3*b, x1, y1, b, domain='ZZ')\n",
+ "│ │ │ ├── Poly(x1**2 + 3, x1, domain='ZZ')\n",
+ "│ │ │ │ ├── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb\n",
+ "│ │ │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb\n",
+ "│ │ │ │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb-3\n",
+ "│ │ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2016-rcb\n",
+ "│ │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb-3\n",
+ "│ │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2016-rcb\n",
+ "│ │ │ └── Poly(9*x1**4 - 18*x1**2 - 4*x1*y1**2 + 9, x1, y1, domain='ZZ')\n",
+ "│ │ │ ├── Poly(x1**2 - 3, x1, domain='ZZ')\n",
+ "│ │ │ │ ├── shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ │ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ │ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ │ │ └── shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-1\n",
+ "│ │ │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2001-b\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2001-b\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2001-b\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ │ └── Poly(9*x1**4 - 18*x1**2 - 4*x1*y1**2 + 9, x1, y1, domain='ZZ')\n",
+ "│ │ ├── Poly(x1**2 - 3, x1, domain='ZZ')\n",
+ "│ │ │ ├── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ │ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ │ └── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ └── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2001-b\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2001-b\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ └── Poly(3*x1**4 - 6*x1**2 - 4*x1*y1**2 + 3, x1, y1, domain='ZZ')\n",
+ "│ ├── Poly(x1*y2 + x2*y1, x1, x2, y1, y2, domain='ZZ')\n",
+ "│ │ ├── Poly(x1*b + x2*b - 3, x1, x2, b, domain='ZZ')\n",
+ "│ │ │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl\n",
+ "│ │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo\n",
+ "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl\n",
+ "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo\n",
+ "│ │ │ └── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl\n",
+ "│ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo\n",
+ "│ │ └── Poly(x1**2 + x1*x2 + x2**2 - 3, x1, x2, domain='ZZ')\n",
+ "│ │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl\n",
+ "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo\n",
+ "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl\n",
+ "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo-2\n",
+ "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl-2\n",
+ "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo\n",
+ "│ │ └── Poly(9*x1**4 - 18*x1**2 - 4*x1*y1**2 + 9, x1, y1, domain='ZZ')\n",
+ "│ │ ├── Poly(x1**2 - 3, x1, domain='ZZ')\n",
+ "│ │ │ ├── shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm\n",
+ "│ │ │ └── shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm-2\n",
+ "│ │ └── shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc\n",
+ "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2007-bl\n",
+ "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2004-hmv\n",
+ "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo-2\n",
+ "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2001-b\n",
+ "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo\n",
+ "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc-2\n",
+ "│ └── Poly(-6*x1 - y1**2 + 3*b, x1, y1, b, domain='ZZ')\n",
+ "│ ├── Poly(x1*y2 + x2*y1, x1, x2, y1, y2, domain='ZZ')\n",
+ "│ │ ├── Poly(x1*b + x2*b - 3, x1, x2, b, domain='ZZ')\n",
+ "│ │ │ ├── Poly(x1**2 + 3, x1, domain='ZZ')\n",
+ "│ │ │ │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb\n",
+ "│ │ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb\n",
+ "│ │ │ │ └── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb-3\n",
+ "│ │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2016-rcb\n",
+ "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb-3\n",
+ "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2016-rcb\n",
+ "│ │ │ └── Poly(x1**2 + 3, x1, domain='ZZ')\n",
+ "│ │ │ ├── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb\n",
+ "│ │ │ └── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb-3\n",
+ "│ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2016-rcb\n",
+ "│ │ └── Poly(x1**2 + 3, x1, domain='ZZ')\n",
+ "│ │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb\n",
+ "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb\n",
+ "│ │ └── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb-3\n",
+ "│ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2016-rcb\n",
+ "│ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb-3\n",
+ "│ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2016-rcb\n",
+ "│ └── Poly(9*x1**4 + 6*x1**2*a - 12*x1*y1**2 + a**2, x1, y1, a, domain='ZZ')\n",
+ "│ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-2007-bl\n",
+ "│ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo\n",
+ "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2007-bl\n",
+ "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo-2\n",
+ "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo\n",
+ "│ └── Poly(-x1 - x2 + 3*b, x1, x2, b, domain='ZZ')\n",
+ "│ ├── Poly(x1**2 + 1, x1, domain='ZZ')\n",
+ "│ │ ├── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2015-rcb\n",
+ "│ │ └── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2007-bl\n",
+ "│ │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo-2\n",
+ "│ │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo\n",
+ "│ └── shortw/projective/add-2016-rcb, shortw/projective/dbl-2015-rcb\n",
+ "│ shortw/projective/add-2016-rcb, shortw/projective/dbl-2016-rcb\n",
+ "│ shortw/projective/add-2015-rcb, shortw/projective/dbl-2015-rcb\n",
+ "│ shortw/projective/add-2015-rcb, shortw/projective/dbl-2016-rcb\n",
+ "└── Poly(3*x1**2 + a, x1, a, domain='ZZ')\n",
+ " ├── Poly(x1**3 - 3*x1**2*x2 + 3*x1*x2**2 - x2**3 + y1**2 - 2*y1*y2 + y2**2, x1, x2, y1, y2, domain='ZZ')\n",
+ " │ ├── Poly(2*x1*a + y1**2 + 3*b, x1, y1, a, b, domain='ZZ')\n",
+ " │ │ ├── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2016-rcb\n",
+ " │ │ └── Poly(x1**2 + a, x1, a, domain='ZZ')\n",
+ " │ │ ├── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-hnm\n",
+ " │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-hnm\n",
+ " │ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-hnm\n",
+ " │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-hnm\n",
+ " │ │ └── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2007-bl\n",
+ " │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo\n",
+ " │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2007-bl\n",
+ " │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1986-cc\n",
+ " │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-2007-bl\n",
+ " │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1986-cc\n",
+ " │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-2007-bl\n",
+ " │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1986-cc\n",
+ " │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-2007-bl\n",
+ " │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1986-cc\n",
+ " │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-2007-bl\n",
+ " │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo\n",
+ " │ │ shortw/xyzz/add-2008-s, shortw/xyzz/dbl-2008-s-1\n",
+ " │ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-2009-bl\n",
+ " │ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-1998-cmo-2\n",
+ " │ │ shortw/modified/add-2009-bl, shortw/modified/dbl-2009-bl\n",
+ " │ │ shortw/modified/add-2009-bl, shortw/modified/dbl-1998-cmo-2\n",
+ " │ └── Poly(x1**2 + x1*x2 + x2**2 + a, x1, x2, a, domain='ZZ')\n",
+ " │ ├── Poly(2*x1*a + y1**2 + 3*b, x1, y1, a, b, domain='ZZ')\n",
+ " │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-2016-rcb\n",
+ " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2015-rcb\n",
+ " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2016-rcb\n",
+ " │ │ └── shortw/projective/add-2002-bj, shortw/projective/dbl-2007-bl\n",
+ " │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo\n",
+ " │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2007-bl\n",
+ " │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo\n",
+ " │ └── Poly(3*x1**3 - 3*x1**2*x2 - 3*x1*x2**2 + 3*x2**3 - 2*y1**2 + 4*y1*y2 - 2*y2**2, x1, x2, y1, y2, domain='ZZ')\n",
+ " │ ├── Poly(x1**2 + a, x1, a, domain='ZZ')\n",
+ " │ │ ├── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-hnm\n",
+ " │ │ └── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1986-cc\n",
+ " │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-2007-bl\n",
+ " │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo\n",
+ " │ └── Poly(x1**2 + a, x1, a, domain='ZZ')\n",
+ " │ ├── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-hnm\n",
+ " │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-hnm\n",
+ " │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1986-cc\n",
+ " │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-2007-bl\n",
+ " │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo-2\n",
+ " │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo\n",
+ " │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1986-cc\n",
+ " │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-2007-bl\n",
+ " │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo-2\n",
+ " │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo\n",
+ " └── Poly(x1**3 - 3*x1**2*x2 + 3*x1*x2**2 - x2**3 + y1**2 - 2*y1*y2 + y2**2, x1, x2, y1, y2, domain='ZZ')\n",
+ " ├── Poly(3*x1**3 - 4*y1**2, x1, y1, domain='ZZ')\n",
+ " │ ├── Poly(9*x1**3 - 4*y1**2, x1, y1, domain='ZZ')\n",
+ " │ │ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ │ └── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-l\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-alnr\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-l\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-alnr\n",
+ " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-l\n",
+ " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-alnr\n",
+ " │ └── Poly(-2*x1 + 3*b, x1, b, domain='ZZ')\n",
+ " │ ├── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2015-rcb\n",
+ " │ │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2015-rcb\n",
+ " │ └── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2007-bl\n",
+ " │ shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo\n",
+ " │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2007-bl\n",
+ " │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo\n",
+ " └── Poly(2*x1**3 - 3*x1**2*x2 + x2**3 - y1**2 + 2*y1*y2 - y2**2, x1, x2, y1, y2, domain='ZZ')\n",
+ " ├── Poly(9*x1**3 - 4*y1**2, x1, y1, domain='ZZ')\n",
+ " │ ├── shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ └── Poly(3*x1**3 - 4*y1**2, x1, y1, domain='ZZ')\n",
+ " │ ├── shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-l\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-alnr\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2007-bl\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-l\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-alnr\n",
+ " │ └── shortw/w12-0/add-2010-cln, shortw/w12-0/dbl-2010-cln\n",
+ " └── Poly(9*x1**4 - 6*x1**2 - 12*x1*y1**2 + 1, x1, y1, domain='ZZ')\n",
+ " ├── Poly(x1 + x2 - 1, x1, x2, domain='ZZ')\n",
+ " │ ├── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2007-bl\n",
+ " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo\n",
+ " │ └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2007-bl\n",
+ " │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo\n",
+ " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2007-bl\n",
+ " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo-2\n",
+ " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo\n",
+ " └── Poly(3*x1**3 - 3*x1**2*x2 - 3*x1*x2**2 + 3*x2**3 - 2*y1**2 + 4*y1*y2 - 2*y2**2, x1, x2, y1, y2, domain='ZZ')\n",
+ " ├── Poly(9*x1**3 - 4*y1**2, x1, y1, domain='ZZ')\n",
+ " │ ├── shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-hnm\n",
+ " │ └── shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1986-cc\n",
+ " │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2007-bl\n",
+ " │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-l\n",
+ " │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo-2\n",
+ " │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo\n",
+ " │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-alnr\n",
+ " └── Poly(x1 + x2 - 1, x1, x2, domain='ZZ')\n",
+ " ├── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2015-rcb\n",
+ " └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2015-rcb\n",
+ " shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2015-rcb\n"
+ ]
+ }
+ ],
"source": [
"print(RenderTree(fset_tree).by_attr(lambda n: n.name if n.name is not None else \"\\n\".join((\", \".join(str(formula) for formula in cfg) for cfg in n.cfgs))))"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 20,
"id": "6db4910f-c492-462b-9d0e-effe3e7bfed9",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "-------------- filter_nonhomo=True affine=True --------------\n"
+ ]
+ },
+ {
+ "ename": "NameError",
+ "evalue": "name 'dbls' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[20], line 4\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[39mfor\u001b[39;00m affine \u001b[39min\u001b[39;00m (\u001b[39mTrue\u001b[39;00m, \u001b[39mFalse\u001b[39;00m):\n\u001b[1;32m 3\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m-------------- filter_nonhomo=\u001b[39m\u001b[39m{\u001b[39;00mfilter_nonhomo\u001b[39m}\u001b[39;00m\u001b[39m affine=\u001b[39m\u001b[39m{\u001b[39;00maffine\u001b[39m}\u001b[39;00m\u001b[39m --------------\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m----> 4\u001b[0m fset_map \u001b[39m=\u001b[39m {dbl: compute_factor_set(dbl, filter_nonhomo\u001b[39m=\u001b[39mfilter_nonhomo, affine\u001b[39m=\u001b[39maffine) \u001b[39mfor\u001b[39;00m dbl \u001b[39min\u001b[39;00m dbls}\n\u001b[1;32m 5\u001b[0m fset_tree \u001b[39m=\u001b[39m build_distinguishing_tree(fset_map)\n\u001b[1;32m 6\u001b[0m \u001b[39mprint\u001b[39m(RenderTree(fset_tree)\u001b[39m.\u001b[39mby_attr(\u001b[39mlambda\u001b[39;00m n: n\u001b[39m.\u001b[39mname \u001b[39mif\u001b[39;00m n\u001b[39m.\u001b[39mname \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39melse\u001b[39;00m n\u001b[39m.\u001b[39mcfgs))\n",
+ "\u001b[0;31mNameError\u001b[0m: name 'dbls' is not defined"
+ ]
+ }
+ ],
"source": [
"for filter_nonhomo in (True, False):\n",
" for affine in (True, False):\n",
@@ -521,7 +2399,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.5"
+ "version": "3.10.12"
}
},
"nbformat": 4,