diff options
| author | J08nY | 2024-01-11 17:23:01 +0100 |
|---|---|---|
| committer | J08nY | 2024-01-11 17:23:01 +0100 |
| commit | 323c3a1a378832d4ea9916907a41579b128199a9 (patch) | |
| tree | 75ad836def70a7e4ea5e28cff8eacd633e755267 | |
| parent | 2681a2de255486ba503c38997eca67e6bf63449b (diff) | |
| download | pyecsca-notebook-323c3a1a378832d4ea9916907a41579b128199a9.tar.gz pyecsca-notebook-323c3a1a378832d4ea9916907a41579b128199a9.tar.zst pyecsca-notebook-323c3a1a378832d4ea9916907a41579b128199a9.zip | |
Add in progress ZVP-RE results.
| -rw-r--r-- | re/zvp.ipynb | 2513 |
1 files changed, 2454 insertions, 59 deletions
diff --git a/re/zvp.ipynb b/re/zvp.ipynb index 080753a..fc633f8 100644 --- a/re/zvp.ipynb +++ b/re/zvp.ipynb @@ -10,45 +10,54 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 47, "id": "17a9e580-5f1e-45c9-8afd-fc35e833b0b0", "metadata": {}, "outputs": [], "source": [ + "import io\n", "import sympy\n", "from sympy import FF, sympify, symbols, Poly, Monomial\n", "from collections import Counter\n", "import tabulate\n", + "from functools import partial\n", + "from itertools import product\n", "from IPython.display import HTML, display\n", "from tqdm.notebook import tqdm\n", + "from anytree import RenderTree\n", "\n", "from pyecsca.ec.model import ShortWeierstrassModel\n", "from pyecsca.ec.coordinates import AffineCoordinateModel\n", "from pyecsca.ec.curve import EllipticCurve\n", - "from pyecsca.ec.params import DomainParameters\n", + "from pyecsca.ec.params import DomainParameters, load_params_ecgen\n", "from pyecsca.ec.formula import FormulaAction\n", + "from pyecsca.ec.formula.fake import FakeAdditionFormula, FakeDoublingFormula, FakePoint\n", "from pyecsca.ec.point import Point\n", - "from pyecsca.ec.mod import Mod\n", + "from pyecsca.ec.mod import Mod, gcd\n", + "from pyecsca.sca.re.tree import build_distinguishing_tree\n", + "from pyecsca.sca.re.rpa import MultipleContext\n", + "from pyecsca.sca.re.zvp import zvp_points, compute_factor_set\n", "from pyecsca.ec.context import DefaultContext, local\n", "from pyecsca.ec.mult import LTRMultiplier, AccumulationOrder\n", "from pyecsca.misc.cfg import getconfig\n", + "from pyecsca.ec.error import NonInvertibleError\n", "from pyecsca.sca.re.zvp import unroll_formula, compute_factor_set, zvp_points" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "d8ea0c4d-86e1-46af-ac20-569e6ef5439d", "metadata": {}, "outputs": [], "source": [ "cfg = getconfig()\n", - "cfg.ec.mod_implementation = \"python\"" + "cfg.ec.mod_implementation = \"gmp\"" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "8de124f1-9498-4e55-8b7f-1bd291ccf3fe", "metadata": {}, "outputs": [], @@ -80,53 +89,38 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "7bb4b36e-9efc-4a4b-a8c5-aad74c0db374", - "metadata": {}, - "outputs": [], - "source": [ - "adds = list(filter(lambda formula: formula.name.startswith(\"add\"), coords.formulas.values()))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3be76ec7-775e-465b-8528-713374b95344", + "execution_count": 37, + "id": "0252f8fa-012c-453c-ba23-b40f9686fcce", "metadata": {}, "outputs": [], "source": [ - "gens = None\n", - "factor_sets = {}\n", - "for add in adds:\n", - " factor_set = compute_factor_set(add, affine=True)\n", - " factor_sets[add.name] = factor_set" + "curves = list(map(lambda spec: load_params_ecgen(io.BytesIO(spec.encode()), \"projective\"), [\n", + " \"\"\"[{\"field\":{\"p\":\"0xa7ec3617d4166b2d\"},\"a\":\"0x372994d9d680a83b\",\"b\":\"0xa0a2bf719d8e68c5\",\"order\":\"0xa7ec3618be1dab55\",\"subgroups\":[{\"x\":\"0x1ef15756946a5b6d\",\"y\":\"0x2ca9658f7ab9a558\",\"order\":\"0xa7ec3618be1dab55\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x1ef15756946a5b6d\",\"y\":\"0x2ca9658f7ab9a558\",\"order\":\"0xa7ec3618be1dab55\"}]}]}]\"\"\",\n", + " \"\"\"[{\"field\":{\"p\":\"0xa42c1467a1ed04f3\"},\"a\":\"0x55d07340a4572f2d\",\"b\":\"0x0a938c37dfb0b6d5\",\"order\":\"0xa42c14689284d3a7\",\"subgroups\":[{\"x\":\"0x8633981c83ed43a2\",\"y\":\"0x7b5374e9d7997199\",\"order\":\"0xa42c14689284d3a7\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x8633981c83ed43a2\",\"y\":\"0x7b5374e9d7997199\",\"order\":\"0xa42c14689284d3a7\"}]}]}]\"\"\",\n", + " \"\"\"[{\"field\":{\"p\":\"0xea0d9cead19016ab\"},\"a\":\"0xcbbfe501c4ef6d92\",\"b\":\"0x5762de777a6d9178\",\"order\":\"0xea0d9cea8cd2c857\",\"subgroups\":[{\"x\":\"0xe7daa3e061c3111b\",\"y\":\"0x56ee59a6845c5e93\",\"order\":\"0xea0d9cea8cd2c857\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0xe7daa3e061c3111b\",\"y\":\"0x56ee59a6845c5e93\",\"order\":\"0xea0d9cea8cd2c857\"}]}]}]\"\"\",\n", + " \"\"\"[{\"field\":{\"p\":\"0x9c7e7216decb71a7\"},\"a\":\"0x324ef48887401a87\",\"b\":\"0x3ce6f35a00280102\",\"order\":\"0x9c7e72175ebfe709\",\"subgroups\":[{\"x\":\"0x34683229b405418d\",\"y\":\"0x308c923cae004514\",\"order\":\"0x9c7e72175ebfe709\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x34683229b405418d\",\"y\":\"0x308c923cae004514\",\"order\":\"0x9c7e72175ebfe709\"}]}]}]\"\"\",\n", + " \"\"\"[{\"field\":{\"p\":\"0xeb5779f0bbf1ef5b\"},\"a\":\"0x2419e8bbc7b5f8f2\",\"b\":\"0xe74e5d3064a4f2e3\",\"order\":\"0xeb5779f21320c2e9\",\"subgroups\":[{\"x\":\"0x3b6c269560abeb00\",\"y\":\"0x29d157628e75e1c0\",\"order\":\"0xeb5779f21320c2e9\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x3b6c269560abeb00\",\"y\":\"0x29d157628e75e1c0\",\"order\":\"0xeb5779f21320c2e9\"}]}]}]\"\"\",\n", + " \"\"\"[{\"field\":{\"p\":\"0x97b6ea097868b95d\"},\"a\":\"0x550a41d65e4bcd13\",\"b\":\"0x47c5e527113b261c\",\"order\":\"0x97b6ea094947a76b\",\"subgroups\":[{\"x\":\"0x1e669fe19c865bd9\",\"y\":\"0x05a6bb891920440f\",\"order\":\"0x97b6ea094947a76b\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x1e669fe19c865bd9\",\"y\":\"0x05a6bb891920440f\",\"order\":\"0x97b6ea094947a76b\"}]}]}]\"\"\",\n", + " \"\"\"[{\"field\":{\"p\":\"0xa00629e6522032f7\"},\"a\":\"0x896f04a7ae302922\",\"b\":\"0x6bc03365b1f1cb50\",\"order\":\"0xa00629e5c03cf913\",\"subgroups\":[{\"x\":\"0x14b7b48954936d4e\",\"y\":\"0x670dc776273bf899\",\"order\":\"0xa00629e5c03cf913\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x14b7b48954936d4e\",\"y\":\"0x670dc776273bf899\",\"order\":\"0xa00629e5c03cf913\"}]}]}]\"\"\",\n", + " \"\"\"[{\"field\":{\"p\":\"0xd47ec1d03a62686d\"},\"a\":\"0xd00a3ee0f5c86b02\",\"b\":\"0x457a5b6c47db38d8\",\"order\":\"0xd47ec1d107db7d6f\",\"subgroups\":[{\"x\":\"0x41ebc3b763f3cd1b\",\"y\":\"0x3d6925f214620e0c\",\"order\":\"0xd47ec1d107db7d6f\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x41ebc3b763f3cd1b\",\"y\":\"0x3d6925f214620e0c\",\"order\":\"0xd47ec1d107db7d6f\"}]}]}]\"\"\",\n", + " \"\"\"[{\"field\":{\"p\":\"0xb1c9115c6f40d755\"},\"a\":\"0x79d3ceefafc44ce9\",\"b\":\"0x8316af84264df42b\",\"order\":\"0xb1c9115d17f84a45\",\"subgroups\":[{\"x\":\"0x8b0a274089b53fe5\",\"y\":\"0x3508d33c4beba5ad\",\"order\":\"0xb1c9115d17f84a45\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x8b0a274089b53fe5\",\"y\":\"0x3508d33c4beba5ad\",\"order\":\"0xb1c9115d17f84a45\"}]}]}]\"\"\",\n", + " \"\"\"[{\"field\":{\"p\":\"0x8f738fda18cd5dff\"},\"a\":\"0x4747f2f9b8628cbf\",\"b\":\"0x586cdb9378a1389f\",\"order\":\"0x8f738fd8fc7ebed3\",\"subgroups\":[{\"x\":\"0x7ad306c73b64c1b5\",\"y\":\"0x69e3ca555190da4b\",\"order\":\"0x8f738fd8fc7ebed3\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x7ad306c73b64c1b5\",\"y\":\"0x69e3ca555190da4b\",\"order\":\"0x8f738fd8fc7ebed3\"}]}]}]\"\"\",\n", + " \"\"\"[{\"field\":{\"p\":\"0xceaf446a53f14bc1\"},\"a\":\"0x0000000000000000\",\"b\":\"0x326539376260f173\",\"order\":\"0xceaf446aae275419\",\"subgroups\":[{\"x\":\"0x98fe44948c3f8678\",\"y\":\"0x3d440ee959a912d7\",\"order\":\"0xceaf446aae275419\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x98fe44948c3f8678\",\"y\":\"0x3d440ee959a912d7\",\"order\":\"0xceaf446aae275419\"}]}]}]\"\"\",\n", + " \"\"\"[{\"field\":{\"p\":\"0x9d9119957f02fe3f\"},\"a\":\"0x0106903196d88df9\",\"b\":\"0x0000000000000000\",\"order\":\"0x9d9119957f02fe40\",\"subgroups\":[{\"x\":\"0x191a36b9cd81de96\",\"y\":\"0x10f2c6bded391aa9\",\"order\":\"0x9d9119957f02fe40\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x0000000000000000\",\"y\":\"0x0000000000000000\",\"order\":\"0x2\"},{\"x\":\"0x95913fae9065da0f\",\"y\":\"0x5eeddeee7152d6fb\",\"order\":\"0x276446655fc0bf9\"}]}]}]\"\"\"\n", + "]))" ] }, { "cell_type": "code", - "execution_count": null, - "id": "354be601-f3d4-41d9-ac95-e3d146bf7859", - "metadata": {}, - "outputs": [], - "source": [ - "c = Counter()\n", - "for factor_set in factor_sets.values():\n", - " for poly in factor_set:\n", - " c[poly] += 1\n", - "print(c)" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "e65c4ab0-a9fa-479b-b109-67968fd67c1c", "metadata": {}, "outputs": [], "source": [ - "def simulated_oracle(scalar, affine_point):\n", - " real_coords = model.coordinates[\"projective\"]\n", - " real_add = real_coords.formulas[\"add-2007-bl\"]\n", - " real_dbl = real_coords.formulas[\"dbl-2007-bl\"]\n", + "def simulated_oracle(scalar, affine_point, real_coord_name=\"projective\", real_add_name=\"add-2007-bl\", real_dbl_name=\"dbl-2007-bl\"):\n", + " real_coords = model.coordinates[real_coord_name]\n", + " real_add = real_coords.formulas[real_add_name]\n", + " real_dbl = real_coords.formulas[real_dbl_name]\n", " real_mult = LTRMultiplier(real_add, real_dbl, None, False, AccumulationOrder.PeqPR, True, True)\n", " point = affine_point.to_model(params.curve.coordinate_model, params.curve)\n", " with local(DefaultContext()) as ctx:\n", @@ -145,32 +139,2433 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "ae203ed4-cbdb-4b27-8f0a-0a74340d8e22", + "execution_count": 6, + "id": "d0ef1628-3d87-40be-95a0-3045bb1ee4aa", "metadata": {}, "outputs": [], "source": [ - "table = [[\"Formula\", \"Polynomial\", \"k\", \"Oracle output\"]]\n", + "adds = list(filter(lambda formula: formula.name.startswith(\"add\"), coords.formulas.values()))\n", + "dbls = list(filter(lambda formula: formula.name.startswith(\"dbl\"), coords.formulas.values()))\n", + "formula_pairs = list(product(adds, dbls))\n", "\n", - "big_scalar = 7 # -> dbl(1) = 2, add(1, 2) = 3, dbl(3) = 6, add(1, 6) = 7\n", - "small_scalars = [2,6]\n", - "for formula_name, factor_set in tqdm(factor_sets.items()):\n", - " for poly in tqdm(factor_set):\n", - " for small_scalar in small_scalars:\n", - " pts = zvp_points(poly, curve, small_scalar, n)\n", - " if pts:\n", - " outputs = []\n", - " for point in pts:\n", - " #print(formula_name, poly, small_scalar, simulated_oracle(big_scalar, point))\n", - " outputs.append(simulated_oracle(big_scalar, point))\n", - " table.append([formula_name, poly, small_scalar, outputs])\n", - "display(HTML(tabulate.tabulate(table, tablefmt=\"html\", headers=\"firstrow\")))" + "# Compute all of the factor sets, and adjust those for dbl to the right index.\n", + "add_fsets = {add: compute_factor_set(add) for add in adds}\n", + "dbl_fsets = {}\n", + "for dbl in dbls:\n", + " fset = compute_factor_set(dbl)\n", + " dbl2_fset = set()\n", + " for poly in fset:\n", + " pl = poly.copy()\n", + " for symbol in poly.free_symbols:\n", + " original = str(symbol)\n", + " if original.endswith(\"1\"):\n", + " new = original.replace(\"1\", \"2\")\n", + " pl = pl.subs(original, new)\n", + " dbl2_fset.add(pl)\n", + " dbl_fsets[dbl] = dbl2_fset" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "b7c7b341-5b15-44fb-b9cf-462b64e7536e", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8f0f73cf1c9442aebfe050641983caf9", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points: 0%| | 0/12 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for adds: 0%| | 0/5 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute ZVP points for dbls: 0%| | 0/4 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/28 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "scalar = 123456789\n", + "bound = 25\n", + "\n", + "chains = []\n", + "for i, params in enumerate(curves):\n", + " fake_add = FakeAdditionFormula(params.curve.coordinate_model)\n", + " fake_dbl = FakeDoublingFormula(params.curve.coordinate_model)\n", + " fake_mult = LTRMultiplier(fake_add, fake_dbl, None, False, AccumulationOrder.PeqPR, True, True)\n", + " fake_mult.init(params, FakePoint(params.curve.coordinate_model))\n", + " \n", + " with local(MultipleContext()) as mctx:\n", + " fake_mult.multiply(scalar)\n", + "\n", + " chain = []\n", + "\n", + " for point, parents in mctx.parents.items():\n", + " if not parents:\n", + " continue\n", + " k = mctx.points[parents[0]]\n", + " # TODO: look at this k computation\n", + " if len(parents) == 2:\n", + " if k > bound:\n", + " continue\n", + " chain.append((\"add\", k))\n", + " else:\n", + " chain.append((\"dbl\", k))\n", + " chains.append(chain)\n", + "\n", + "point_sets = {}\n", + "for chain, params in tqdm(zip(chains, curves), desc=\"Compute ZVP points\", total=len(chains)):\n", + " for add in tqdm(adds, desc=\"Compute ZVP points for adds\", leave=False):\n", + " add_fset = add_fsets[add]\n", + " for op, k in tqdm(chain, leave=False):\n", + " if op == \"add\" and (add, k, params) not in point_sets:\n", + " points = set()\n", + " for poly in add_fset:\n", + " try:\n", + " points.update(zvp_points(poly, params.curve, k, params.order))\n", + " except NonInvertibleError:\n", + " pass\n", + " point_sets[(add, k, params)] = points\n", + " for dbl in tqdm(dbls, desc=\"Compute ZVP points for dbls\", leave=False):\n", + " dbl_fset = dbl_fsets[dbl]\n", + " for op, k in tqdm(chain, leave=False):\n", + " if op == \"dbl\" and (dbl, k, params) not in point_sets:\n", + " points = set()\n", + " for poly in dbl_fset:\n", + " try:\n", + " points.update(zvp_points(poly, params.curve, k, params.order))\n", + " except NonInvertibleError:\n", + " pass\n", + " point_sets[(dbl, k, params)] = points" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "f95909c9-8595-4d2d-8963-0c6fcb5728dd", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8af38dfac64442438b532d05557e04c7", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Remapping: 0%| | 0/20 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2200 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "point_map = {}\n", + "for add, dbl in formula_pairs:\n", + " points = set()\n", + " for chain, params in zip(chains, curves):\n", + " \n", + " for op, k in chain:\n", + " if op == \"add\" and (add, k, params) in point_sets:\n", + " point_set = point_sets[(add, k, params)]\n", + " elif op == \"dbl\" and (dbl, k, params) in point_sets:\n", + " point_set = point_sets[(dbl, k, params)]\n", + " for point in point_set:\n", + " points.add((point, params, k))\n", + " point_map[(add, dbl)] = points\n", + "all_points = set().union(*point_map.values())\n", + "\n", + "remapped_point_map = {}\n", + "for add, dbl in tqdm(formula_pairs, desc=\"Remapping\"):\n", + " mult = LTRMultiplier(add, dbl, None, False, AccumulationOrder.PeqPR, True, True)\n", + " new_points = set()\n", + " for point, params, k in tqdm(all_points, leave=False):\n", + " mult.init(params, point.to_model(params.curve.coordinate_model, params.curve))\n", + " with local(DefaultContext()) as ctx:\n", + " mult.multiply(scalar)\n", + " trace = []\n", + "\n", + " def callback(action):\n", + " if isinstance(action, FormulaAction):\n", + " for intermediate in action.op_results:\n", + " trace.append(intermediate.value)\n", + " # TODO: What is going on? And where is it going on?\n", + " # TODO: Run through all coord systems at once.\n", + " # TODO: Maybe combine with EPA?\n", + " # TODO: Maybe extend oracle with number or position?\n", + " # TODO: k in map? why?\n", + " ctx.actions.walk(callback)\n", + " hit_zero = any(int(value) == 0 for value in trace)\n", + " should_hit_zero = (point, params, k) in point_map[(add, dbl)]\n", + " if hit_zero:\n", + " new_points.add((point, params, k))\n", + " #if hit_zero != should_hit_zero:\n", + " # print(add, dbl, hit_zero, should_hit_zero, point, params, k)\n", + " #else:\n", + " # print(\"ok\", hit_zero, should_hit_zero)\n", + " remapped_point_map[(add, dbl)] = new_points" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "8afea2a8-49a1-4969-a19e-9e17e26fb1e8", + "metadata": {}, + "outputs": [], + "source": [ + "tree = build_distinguishing_tree(remapped_point_map)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "ab09b767-71ca-4d28-abf0-532307efefbd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[x=3034406243747257516, y=11482511777964072902]\n", + "DomainParameters(EllipticCurve)\n", + "6\n", + "├── [x=6126421359781338627, y=9772906831073546368]\n", + "│ DomainParameters(EllipticCurve)\n", + "│ 1\n", + "│ ├── [x=9219828953749013321, y=2141216720201514772]\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ 3858024\n", + "│ │ ├── [x=5047606674150175385, y=1956997826490032405]\n", + "│ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ 6\n", + "│ │ │ ├── (AdditionEFDFormula(add-2007-bl for shortw/projective), DoublingEFDFormula(dbl-2015-rcb for shortw/projective))\n", + "│ │ │ │ (AdditionEFDFormula(add-2002-bj for shortw/projective), DoublingEFDFormula(dbl-2015-rcb for shortw/projective))\n", + "│ │ │ └── (AdditionEFDFormula(add-2015-rcb for shortw/projective), DoublingEFDFormula(dbl-2015-rcb for shortw/projective))\n", + "│ │ └── (AdditionEFDFormula(add-2015-rcb for shortw/projective), DoublingEFDFormula(dbl-2007-bl for shortw/projective))\n", + "│ │ (AdditionEFDFormula(add-2015-rcb for shortw/projective), DoublingEFDFormula(dbl-1998-cmo for shortw/projective))\n", + "│ │ (AdditionEFDFormula(add-2015-rcb for shortw/projective), DoublingEFDFormula(dbl-1998-cmo-2 for shortw/projective))\n", + "│ └── (AdditionEFDFormula(add-2007-bl for shortw/projective), DoublingEFDFormula(dbl-2007-bl for shortw/projective))\n", + "│ (AdditionEFDFormula(add-2007-bl for shortw/projective), DoublingEFDFormula(dbl-1998-cmo for shortw/projective))\n", + "│ (AdditionEFDFormula(add-2007-bl for shortw/projective), DoublingEFDFormula(dbl-1998-cmo-2 for shortw/projective))\n", + "│ (AdditionEFDFormula(add-2002-bj for shortw/projective), DoublingEFDFormula(dbl-2007-bl for shortw/projective))\n", + "│ (AdditionEFDFormula(add-2002-bj for shortw/projective), DoublingEFDFormula(dbl-1998-cmo for shortw/projective))\n", + "│ (AdditionEFDFormula(add-2002-bj for shortw/projective), DoublingEFDFormula(dbl-1998-cmo-2 for shortw/projective))\n", + "└── [x=9219828953749013321, y=2141216720201514772]\n", + " DomainParameters(EllipticCurve)\n", + " 3858024\n", + " ├── (AdditionEFDFormula(add-1998-cmo for shortw/projective), DoublingEFDFormula(dbl-2015-rcb for shortw/projective))\n", + " │ (AdditionEFDFormula(add-1998-cmo-2 for shortw/projective), DoublingEFDFormula(dbl-2015-rcb for shortw/projective))\n", + " └── (AdditionEFDFormula(add-1998-cmo for shortw/projective), DoublingEFDFormula(dbl-2007-bl for shortw/projective))\n", + " (AdditionEFDFormula(add-1998-cmo for shortw/projective), DoublingEFDFormula(dbl-1998-cmo for shortw/projective))\n", + " (AdditionEFDFormula(add-1998-cmo for shortw/projective), DoublingEFDFormula(dbl-1998-cmo-2 for shortw/projective))\n", + " (AdditionEFDFormula(add-1998-cmo-2 for shortw/projective), DoublingEFDFormula(dbl-2007-bl for shortw/projective))\n", + " (AdditionEFDFormula(add-1998-cmo-2 for shortw/projective), DoublingEFDFormula(dbl-1998-cmo for shortw/projective))\n", + " (AdditionEFDFormula(add-1998-cmo-2 for shortw/projective), DoublingEFDFormula(dbl-1998-cmo-2 for shortw/projective))\n" + ] + } + ], + "source": [ + "print(RenderTree(tree).by_attr(lambda n: n.name if n.name is not None else n.cfgs))" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "cc87dfd1-f058-4338-aaca-fc05105fc9f1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "shortw/projective/add-2007-bl shortw/projective/dbl-2007-bl 462 518 0 56\n", + "set()\n", + "shortw/projective/add-2007-bl shortw/projective/dbl-1998-cmo 462 518 0 56\n", + "set()\n", + "shortw/projective/add-2007-bl shortw/projective/dbl-2015-rcb 1716 1784 0 68\n", + "set()\n", + "shortw/projective/add-2007-bl shortw/projective/dbl-1998-cmo-2 462 518 0 56\n", + "set()\n", + "shortw/projective/add-2015-rcb shortw/projective/dbl-2007-bl 850 870 0 20\n", + "set()\n", + "shortw/projective/add-2015-rcb shortw/projective/dbl-1998-cmo 850 870 0 20\n", + "set()\n", + "shortw/projective/add-2015-rcb shortw/projective/dbl-2015-rcb 2104 2108 0 4\n", + "set()\n", + "shortw/projective/add-2015-rcb shortw/projective/dbl-1998-cmo-2 850 870 0 20\n", + "set()\n", + "shortw/projective/add-2002-bj shortw/projective/dbl-2007-bl 462 518 0 56\n", + "set()\n", + "shortw/projective/add-2002-bj shortw/projective/dbl-1998-cmo 462 518 0 56\n", + "set()\n", + "shortw/projective/add-2002-bj shortw/projective/dbl-2015-rcb 1716 1784 0 68\n", + "set()\n", + "shortw/projective/add-2002-bj shortw/projective/dbl-1998-cmo-2 462 518 0 56\n", + "set()\n", + "shortw/projective/add-1998-cmo shortw/projective/dbl-2007-bl 400 440 -30 70\n", + "{(Point([[x=3506583871477322073, y=6741142221818933028]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=6266750213032352783, y=2572643933633910467]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=10266451081742949860, y=6375395324081956250]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=6266750213032352783, y=8359538538250281626]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=518029702578685213]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=11860202707452705321, y=2052542901066170704]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=9819149482471069087, y=5440687058305090757]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=4173724707785958223, y=4699325755562909213]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=9819149482471069087, y=5491495413579101336]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=10431270994884570551, y=3130627042319158740]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=4693648949403847510]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=5135606693713390464, y=10464898676446924539]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=11104973634291672093, y=6542585482520847060]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=5135606693713390464, y=6493258320292274272]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=10266451081742949860, y=5454457432444346201]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=10312946530826786949, y=6471666721643547004]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=1138105631230065649, y=10185298079248308414]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10312946530826786949, y=6339122982089723353]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5897106082088403986]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=2579783466931099474, y=2102965590089588720]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=11860202707452705321, y=10758246802667099653]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=2579783466931099474, y=8829216881794603373]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=4173724707785958223, y=6577250203972113290]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=3506583871477322073, y=8570746661364218185]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=1138105631230065649, y=1644554677277994037]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10431270994884570551, y=13734681669605378263]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=6238533522480344583]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=11104973634291672093, y=6268204221212423297]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5035076389795788107]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=16347279009345851790]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2)}\n", + "shortw/projective/add-1998-cmo shortw/projective/dbl-1998-cmo 400 440 -30 70\n", + "{(Point([[x=3506583871477322073, y=6741142221818933028]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=6266750213032352783, y=2572643933633910467]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=10266451081742949860, y=6375395324081956250]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=6266750213032352783, y=8359538538250281626]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=518029702578685213]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=11860202707452705321, y=2052542901066170704]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=9819149482471069087, y=5440687058305090757]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=4173724707785958223, y=4699325755562909213]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=9819149482471069087, y=5491495413579101336]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=10431270994884570551, y=3130627042319158740]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=4693648949403847510]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=5135606693713390464, y=10464898676446924539]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=11104973634291672093, y=6542585482520847060]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=5135606693713390464, y=6493258320292274272]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=10266451081742949860, y=5454457432444346201]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=10312946530826786949, y=6471666721643547004]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=1138105631230065649, y=10185298079248308414]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10312946530826786949, y=6339122982089723353]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5897106082088403986]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=2579783466931099474, y=2102965590089588720]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=11860202707452705321, y=10758246802667099653]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=2579783466931099474, y=8829216881794603373]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=4173724707785958223, y=6577250203972113290]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=3506583871477322073, y=8570746661364218185]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=1138105631230065649, y=1644554677277994037]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10431270994884570551, y=13734681669605378263]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=6238533522480344583]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=11104973634291672093, y=6268204221212423297]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5035076389795788107]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=16347279009345851790]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2)}\n", + "shortw/projective/add-1998-cmo shortw/projective/dbl-2015-rcb 1654 1712 -30 88\n", + "{(Point([[x=3506583871477322073, y=6741142221818933028]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=10266451081742949860, y=6375395324081956250]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=6266750213032352783, y=2572643933633910467]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=6266750213032352783, y=8359538538250281626]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=518029702578685213]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=11860202707452705321, y=2052542901066170704]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=9819149482471069087, y=5440687058305090757]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=4173724707785958223, y=4699325755562909213]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=9819149482471069087, y=5491495413579101336]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=10431270994884570551, y=3130627042319158740]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=4693648949403847510]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=5135606693713390464, y=10464898676446924539]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=11104973634291672093, y=6542585482520847060]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=5135606693713390464, y=6493258320292274272]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=10266451081742949860, y=5454457432444346201]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=10312946530826786949, y=6471666721643547004]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=1138105631230065649, y=10185298079248308414]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10312946530826786949, y=6339122982089723353]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5897106082088403986]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=2579783466931099474, y=2102965590089588720]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=11860202707452705321, y=10758246802667099653]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=4173724707785958223, y=6577250203972113290]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=2579783466931099474, y=8829216881794603373]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=3506583871477322073, y=8570746661364218185]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=1138105631230065649, y=1644554677277994037]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10431270994884570551, y=13734681669605378263]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=6238533522480344583]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=11104973634291672093, y=6268204221212423297]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5035076389795788107]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=16347279009345851790]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2)}\n", + "shortw/projective/add-1998-cmo shortw/projective/dbl-1998-cmo-2 400 440 -30 70\n", + "{(Point([[x=3506583871477322073, y=6741142221818933028]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=6266750213032352783, y=2572643933633910467]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=10266451081742949860, y=6375395324081956250]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=6266750213032352783, y=8359538538250281626]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=518029702578685213]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=11860202707452705321, y=2052542901066170704]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=9819149482471069087, y=5440687058305090757]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=4173724707785958223, y=4699325755562909213]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=9819149482471069087, y=5491495413579101336]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=10431270994884570551, y=3130627042319158740]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=4693648949403847510]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=5135606693713390464, y=10464898676446924539]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=11104973634291672093, y=6542585482520847060]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=5135606693713390464, y=6493258320292274272]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=10266451081742949860, y=5454457432444346201]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=10312946530826786949, y=6471666721643547004]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=1138105631230065649, y=10185298079248308414]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10312946530826786949, y=6339122982089723353]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5897106082088403986]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=2579783466931099474, y=2102965590089588720]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=11860202707452705321, y=10758246802667099653]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=2579783466931099474, y=8829216881794603373]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=4173724707785958223, y=6577250203972113290]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=3506583871477322073, y=8570746661364218185]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=1138105631230065649, y=1644554677277994037]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10431270994884570551, y=13734681669605378263]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=6238533522480344583]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=11104973634291672093, y=6268204221212423297]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5035076389795788107]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=16347279009345851790]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2)}\n", + "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-2007-bl 400 440 -30 70\n", + "{(Point([[x=3506583871477322073, y=6741142221818933028]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=6266750213032352783, y=2572643933633910467]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=10266451081742949860, y=6375395324081956250]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=6266750213032352783, y=8359538538250281626]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=518029702578685213]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=11860202707452705321, y=2052542901066170704]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=9819149482471069087, y=5440687058305090757]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=4173724707785958223, y=4699325755562909213]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=9819149482471069087, y=5491495413579101336]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=10431270994884570551, y=3130627042319158740]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=4693648949403847510]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=5135606693713390464, y=10464898676446924539]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=11104973634291672093, y=6542585482520847060]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=5135606693713390464, y=6493258320292274272]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=10266451081742949860, y=5454457432444346201]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=10312946530826786949, y=6471666721643547004]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=1138105631230065649, y=10185298079248308414]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10312946530826786949, y=6339122982089723353]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5897106082088403986]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=2579783466931099474, y=2102965590089588720]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=11860202707452705321, y=10758246802667099653]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=2579783466931099474, y=8829216881794603373]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=4173724707785958223, y=6577250203972113290]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=3506583871477322073, y=8570746661364218185]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=1138105631230065649, y=1644554677277994037]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10431270994884570551, y=13734681669605378263]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=6238533522480344583]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=11104973634291672093, y=6268204221212423297]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5035076389795788107]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=16347279009345851790]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2)}\n", + "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-1998-cmo 400 440 -30 70\n", + "{(Point([[x=3506583871477322073, y=6741142221818933028]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=6266750213032352783, y=2572643933633910467]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=10266451081742949860, y=6375395324081956250]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=6266750213032352783, y=8359538538250281626]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=518029702578685213]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=11860202707452705321, y=2052542901066170704]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=9819149482471069087, y=5440687058305090757]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=4173724707785958223, y=4699325755562909213]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=9819149482471069087, y=5491495413579101336]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=10431270994884570551, y=3130627042319158740]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=4693648949403847510]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=5135606693713390464, y=10464898676446924539]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=11104973634291672093, y=6542585482520847060]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=5135606693713390464, y=6493258320292274272]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=10266451081742949860, y=5454457432444346201]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=10312946530826786949, y=6471666721643547004]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=1138105631230065649, y=10185298079248308414]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10312946530826786949, y=6339122982089723353]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5897106082088403986]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=2579783466931099474, y=2102965590089588720]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=11860202707452705321, y=10758246802667099653]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=2579783466931099474, y=8829216881794603373]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=4173724707785958223, y=6577250203972113290]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=3506583871477322073, y=8570746661364218185]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=1138105631230065649, y=1644554677277994037]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10431270994884570551, y=13734681669605378263]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=6238533522480344583]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=11104973634291672093, y=6268204221212423297]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5035076389795788107]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=16347279009345851790]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2)}\n", + "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-2015-rcb 1654 1712 -30 88\n", + "{(Point([[x=3506583871477322073, y=6741142221818933028]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=10266451081742949860, y=6375395324081956250]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=6266750213032352783, y=2572643933633910467]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=6266750213032352783, y=8359538538250281626]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=518029702578685213]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=11860202707452705321, y=2052542901066170704]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=9819149482471069087, y=5440687058305090757]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=4173724707785958223, y=4699325755562909213]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=9819149482471069087, y=5491495413579101336]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=10431270994884570551, y=3130627042319158740]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=4693648949403847510]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=5135606693713390464, y=10464898676446924539]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=11104973634291672093, y=6542585482520847060]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=5135606693713390464, y=6493258320292274272]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=10266451081742949860, y=5454457432444346201]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=10312946530826786949, y=6471666721643547004]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=1138105631230065649, y=10185298079248308414]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10312946530826786949, y=6339122982089723353]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5897106082088403986]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=2579783466931099474, y=2102965590089588720]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=11860202707452705321, y=10758246802667099653]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=4173724707785958223, y=6577250203972113290]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=2579783466931099474, y=8829216881794603373]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=3506583871477322073, y=8570746661364218185]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=1138105631230065649, y=1644554677277994037]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10431270994884570551, y=13734681669605378263]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=6238533522480344583]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=11104973634291672093, y=6268204221212423297]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5035076389795788107]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=16347279009345851790]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2)}\n", + "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-1998-cmo-2 400 440 -30 70\n", + "{(Point([[x=3506583871477322073, y=6741142221818933028]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=6266750213032352783, y=2572643933633910467]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=10266451081742949860, y=6375395324081956250]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=6266750213032352783, y=8359538538250281626]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=518029702578685213]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=11860202707452705321, y=2052542901066170704]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=9819149482471069087, y=5440687058305090757]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=4173724707785958223, y=4699325755562909213]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=9819149482471069087, y=5491495413579101336]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=10431270994884570551, y=3130627042319158740]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=4693648949403847510]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=5135606693713390464, y=10464898676446924539]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=11104973634291672093, y=6542585482520847060]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=5135606693713390464, y=6493258320292274272]] in shortw/affine), DomainParameters(EllipticCurve([a=2601366152990292210, b=16667361733373129443] on ShortWeierstrass using shortw/projective), Point([[X=4281839768736361216, Y=3013285706496074176, Z=1]] in shortw/projective), 16958157002496852713, 1), 6), (Point([[x=10266451081742949860, y=5454457432444346201]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 6), (Point([[x=10312946530826786949, y=6471666721643547004]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=1138105631230065649, y=10185298079248308414]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10312946530826786949, y=6339122982089723353]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5897106082088403986]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=2579783466931099474, y=2102965590089588720]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=11860202707452705321, y=10758246802667099653]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 2), (Point([[x=2579783466931099474, y=8829216881794603373]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=4173724707785958223, y=6577250203972113290]] in shortw/affine), DomainParameters(EllipticCurve([a=3625103617301682823, b=4388462454794354946] on ShortWeierstrass using shortw/projective), Point([[X=3776323442245452173, Y=3498331799874979092, Z=1]] in shortw/projective), 11276575961681749769, 1), 2), (Point([[x=3506583871477322073, y=8570746661364218185]] in shortw/affine), DomainParameters(EllipticCurve([a=14990863445573266178, b=5006414456395872472] on ShortWeierstrass using shortw/projective), Point([[X=4750105424415673627, Y=4425109830522506764, Z=1]] in shortw/projective), 15311888886630415727, 1), 6), (Point([[x=1138105631230065649, y=1644554677277994037]] in shortw/affine), DomainParameters(EllipticCurve([a=6183569009851969325, b=762106933559736021] on ShortWeierstrass using shortw/projective), Point([[X=9670240073134457762, Y=8886575037425480089, Z=1]] in shortw/projective), 11829852760562783143, 1), 2), (Point([[x=10431270994884570551, y=13734681669605378263]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2), (Point([[x=7585529656491369468, y=6238533522480344583]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 6), (Point([[x=11104973634291672093, y=6268204221212423297]] in shortw/affine), DomainParameters(EllipticCurve([a=8778587627516611817, b=9445930250569380907] on ShortWeierstrass using shortw/projective), Point([[X=10018863479180836837, Y=3821536539749098925, Z=1]] in shortw/projective), 12810789706563865157, 1), 6), (Point([[x=6317967938476284435, y=5035076389795788107]] in shortw/affine), DomainParameters(EllipticCurve([a=6127782631951813907, b=5171791703060456988] on ShortWeierstrass using shortw/projective), Point([[X=2190614060104834009, Y=407219013830067215, Z=1]] in shortw/projective), 10932182471093495659, 1), 2), (Point([[x=5063489076477151910, y=16347279009345851790]] in shortw/affine), DomainParameters(EllipticCurve([a=14681705106012859794, b=6296839833753850232] on ShortWeierstrass using shortw/projective), Point([[X=16706845951792451867, Y=6264042703439027859, Z=1]] in shortw/projective), 16865308710771279959, 1), 2)}\n" + ] + } + ], + "source": [ + "for pair in point_map.keys():\n", + " print(pair[0], pair[1],\n", + " len(point_map[pair]),\n", + " len(remapped_point_map[pair]),\n", + " -len(point_map[pair].difference(remapped_point_map[pair])),\n", + " len(remapped_point_map[pair].difference(point_map[pair])))\n", + " print(point_map[pair].difference(remapped_point_map[pair]))" ] }, { "cell_type": "code", "execution_count": null, - "id": "d0ef1628-3d87-40be-95a0-3045bb1ee4aa", + "id": "b0181494-ca94-46cc-8572-c142eaf0abdb", "metadata": {}, "outputs": [], "source": [] |
