aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2025-07-30 11:54:25 +0200
committerJ08nY2025-07-30 11:54:25 +0200
commitf4f72f37f4bea622a7955cfdab0dd1a2f5fc981f (patch)
tree88512a7b45a10722b8c5c2cfbda20c5293018644
parent9157d27e71f629f6e6288c4fba2f172b42e2027c (diff)
downloadECTester-f4f72f37f4bea622a7955cfdab0dd1a2f5fc981f.tar.gz
ECTester-f4f72f37f4bea622a7955cfdab0dd1a2f5fc981f.tar.zst
ECTester-f4f72f37f4bea622a7955cfdab0dd1a2f5fc981f.zip
-rw-r--r--analysis/scalarmults/common.py33
-rw-r--r--analysis/scalarmults/formulas.ipynb526
2 files changed, 270 insertions, 289 deletions
diff --git a/analysis/scalarmults/common.py b/analysis/scalarmults/common.py
index 2d5cf0b..2577c8c 100644
--- a/analysis/scalarmults/common.py
+++ b/analysis/scalarmults/common.py
@@ -1,45 +1,16 @@
-import multiprocessing
-import inspect
-import tempfile
-import sys
-import os
+import itertools
from datetime import timedelta
-from contextlib import contextmanager
from dataclasses import dataclass
from functools import partial, cached_property, total_ordering
-from importlib import import_module, invalidate_caches
-from pathlib import Path
-from typing import Type, Any, Optional
-from enum import Enum
+from typing import Any, Optional, Type
from statsmodels.stats.proportion import proportion_confint
-from pyecsca.ec.params import DomainParameters, get_params
from pyecsca.ec.mult import *
from pyecsca.ec.countermeasures import GroupScalarRandomization, AdditiveSplitting, MultiplicativeSplitting, EuclideanSplitting, BrumleyTuveri
-spawn_context = multiprocessing.get_context("spawn")
-
-# Allow to use "spawn" multiprocessing method for function defined in a Jupyter notebook.
-# https://neuromancer.sk/article/35
-@contextmanager
-def enable_spawn(func):
- invalidate_caches()
- source = inspect.getsource(func)
- current_file_path = os.path.abspath(__file__)
- with open(current_file_path, 'r') as self, tempfile.NamedTemporaryFile(suffix=".py", mode="w") as f:
- f.write(self.read())
- f.write(source)
- f.flush()
- path = Path(f.name)
- directory = str(path.parent)
- sys.path.append(directory)
- module = import_module(str(path.stem))
- yield getattr(module, func.__name__)
- sys.path.remove(directory)
-
@dataclass(frozen=True)
@total_ordering
diff --git a/analysis/scalarmults/formulas.ipynb b/analysis/scalarmults/formulas.ipynb
index f72a372..9b16ee5 100644
--- a/analysis/scalarmults/formulas.ipynb
+++ b/analysis/scalarmults/formulas.ipynb
@@ -12,7 +12,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 1,
"id": "09d92ba3-ede4-40c3-a061-a9c328e26fb5",
"metadata": {},
"outputs": [],
@@ -35,7 +35,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 2,
"id": "5155a3ab-fd65-4add-ac3d-413de337c849",
"metadata": {},
"outputs": [],
@@ -102,7 +102,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 10,
"id": "e045a4cf-97db-4a2f-a191-582987f6473d",
"metadata": {},
"outputs": [
@@ -142,6 +142,8 @@
" r1 = r1_aff.to_model(coords, params.curve)\n",
" r2_aff = params.curve.affine_add(order2_aff, r1_aff)\n",
" r2 = r2_aff.to_model(coords, params.curve)\n",
+ " r1r2_aff = params.curve.affine_add(r1_aff, r2_aff)\n",
+ " r1r2 = r1r2_aff.to_model(coords, params.curve)\n",
" zeros = Point(coords, **{var: mod(0, p) for var in coords.variables})\n",
"\n",
" adds = set(formula for formula in coords.formulas.values() if formula.shortname == \"add\")\n",
@@ -162,7 +164,7 @@
" # P + zeros = ?\n",
" PpZeros = add(p, orderbig, zeros, **params.curve.parameters)[0]\n",
" ZerospP = add(p, zeros, orderbig, **params.curve.parameters)[0]\n",
- " # P1 + P2 = ord2\n",
+ " # P1 + P2 = ? such that P1 - P2 = ord2\n",
" PpQord2 = add(p, r1, r2, **params.curve.parameters)[0]\n",
" res[\"PpP\"] = eval_test(orderbig2, PpP, params.curve)\n",
" res[\"PpInfty\"] = eval_test(orderbig, PpInfty, params.curve)\n",
@@ -172,7 +174,7 @@
" res[\"EqInfty2\"] = eval_test(infty, EqInfty2, params.curve)\n",
" res[\"PpZeros\"] = eval_test(None, PpZeros, params.curve)\n",
" res[\"ZerospP\"] = eval_test(None, ZerospP, params.curve)\n",
- " res[\"PpQord2\"] = eval_test(order2, PpQord2, params.curve)\n",
+ " res[\"PpQDifford2\"] = eval_test(r1r2, PpQord2, params.curve)\n",
" for dbl in dbls:\n",
" res = {}\n",
" results_dbl[coords_name][dbl.name] = res\n",
@@ -213,14 +215,13 @@
" - `Ord2 + Ord2 = infty`: Two behavior classes. Either correct behavior or zeros. Correct behavior for four fomulas on projective coords:\n",
" `add-2002-bj, add-2007-bl, add-2015-rcb, madd-2015-rcb`\n",
" - `P + -P = infty` and `-P + P = infty`: All correct, no zeros, no affine, on curve.\n",
- " - `zeros + P = ?` and `P + zeros = ?`: Three behavior classes, in one, the zeros propagate, in another the formula makes up an affine point\n",
- " that is not zeros but is not on the curve. In the final class, the formula makes up some point that is neither zeros, nor affine nor on the curve.\n",
- " - `P + Q = Ord2`: The exceptional case for (otherwise complete) RCB formulas."
+ " - `zeros + P = ?` and `P + zeros = ?`: Three behavior classes, in one, the zeros propagate, in another the formula makes up an affine point that is not zeros but is not on the curve. In the final class, the formula makes up some point that is neither zeros, nor affine nor on the curve. These cases happen for the `madd`/`zadd` variants.\n",
+ " - `P + Q = ?, where P - Q = Ord2`: The exceptional case for (otherwise complete) RCB formulas."
]
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 20,
"id": "d0928c16-9688-4d65-a559-5895d1b7c85b",
"metadata": {
"editable": true,
@@ -234,8 +235,15 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "dict_values([{'add-2008-s', 'add-1998-cmo-2', 'add-1998-cmo', 'add-1998-hnm', 'add-2001-b', 'add-2007-bl', 'add-1986-cc', 'add-2009-bl'}, {'madd-2008-s', 'madd-2007-bl', 'madd-2004-hmv', 'madd-2008-g', 'madd-1998-cmo', 'madd', 'madd-2009-bl'}, {'zadd-2007-m'}, {'mmadd-1998-cmo', 'mmadd-2009-bl', 'mmadd-2008-s', 'mmadd-2007-bl'}, {'add-2015-rcb'}, {'add-2007-bl', 'add-2002-bj'}, {'madd-2015-rcb'}])\n",
- "7\n"
+ "{'madd-1998-cmo', 'madd', 'add-1986-cc', 'madd-2009-bl', 'mmadd-2009-bl', 'add-1998-cmo', 'add-2007-bl', 'add-2009-bl', 'madd-2008-g', 'add-2001-b', 'add-1998-hnm', 'zadd-2007-m', 'madd-2004-hmv', 'madd-2008-s', 'madd-2007-bl', 'mmadd-2008-s', 'mmadd-1998-cmo', 'mmadd-2007-bl', 'add-2008-s', 'add-1998-cmo-2'}\n",
+ "\t [('InftypP', False), ('PpInfty', False), ('PpP', False), ('PpQDifford2', True)]\n",
+ "{'add-2015-rcb'}\n",
+ "\t [('InftypP', True), ('PpInfty', True), ('PpP', True), ('PpQDifford2', False)]\n",
+ "{'add-2002-bj', 'add-2007-bl'}\n",
+ "\t [('InftypP', False), ('PpInfty', False), ('PpP', True), ('PpQDifford2', True)]\n",
+ "{'madd-2015-rcb'}\n",
+ "\t [('InftypP', True), ('PpInfty', False), ('PpP', True), ('PpQDifford2', False)]\n",
+ "4\n"
]
},
{
@@ -243,252 +251,252 @@
"text/html": [
"<table>\n",
"<thead>\n",
- "<tr><th>Coords </th><th>Formula </th><th>Test </th><th>Correct? </th><th>Zeros? </th><th>Affine? </th><th>On curve? </th></tr>\n",
+ "<tr><th>Coords </th><th>Formula </th><th>Test </th><th>Correct? </th><th>Zeros? </th><th>Affine? </th><th>On curve? </th></tr>\n",
"</thead>\n",
"<tbody>\n",
- "<tr><td>jacobian </td><td>add-1986-cc </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1986-cc </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1986-cc </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1986-cc </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1986-cc </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1986-cc </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1986-cc </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1986-cc </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1986-cc </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2008-g </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2008-g </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2008-g </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2008-g </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2008-g </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2008-g </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2008-g </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2008-g </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2008-g </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2007-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2007-bl </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>zadd-2007-m </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>zadd-2007-m </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>zadd-2007-m </td><td>InftypP </td><td>False </td><td>False </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>zadd-2007-m </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>zadd-2007-m </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>zadd-2007-m </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>zadd-2007-m </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>zadd-2007-m </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>zadd-2007-m </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-hnm </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-hnm </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-hnm </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-hnm </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-hnm </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-hnm </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-hnm </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-hnm </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-hnm </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2007-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2007-bl </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2001-b </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2001-b </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2001-b </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2001-b </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2001-b </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2001-b </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2001-b </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2001-b </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>jacobian </td><td>add-2001-b </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2015-rcb </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2015-rcb </td><td>PpInfty </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2015-rcb </td><td>InftypP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2015-rcb </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2015-rcb </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2015-rcb </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2015-rcb </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2015-rcb </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2015-rcb </td><td>PpQord2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2007-bl </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2007-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2007-bl </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2007-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2007-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2007-bl </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>madd-2015-rcb </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>madd-2015-rcb </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>madd-2015-rcb </td><td>InftypP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>madd-2015-rcb </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>madd-2015-rcb </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>madd-2015-rcb </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>madd-2015-rcb </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>madd-2015-rcb </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>madd-2015-rcb </td><td>PpQord2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2002-bj </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2002-bj </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2002-bj </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2002-bj </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2002-bj </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2002-bj </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-2002-bj </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2002-bj </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-2002-bj </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo-2</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo-2</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>add-1998-cmo-2</td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>madd-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>madd-1998-cmo </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>madd-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>madd-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>madd-1998-cmo </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>madd-1998-cmo </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>projective</td><td>madd-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>madd-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>projective</td><td>madd-1998-cmo </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>xyzz </td><td>add-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>add-2008-s </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>add-2008-s </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>add-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>add-2008-s </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>xyzz </td><td>add-2008-s </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>xyzz </td><td>add-2008-s </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>add-2008-s </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>add-2008-s </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>xyzz </td><td>madd-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>madd-2008-s </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>madd-2008-s </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>madd-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>madd-2008-s </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>xyzz </td><td>madd-2008-s </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>xyzz </td><td>madd-2008-s </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>madd-2008-s </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>xyzz </td><td>madd-2008-s </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>add-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-2009-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-2009-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-2009-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>add-2009-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>add-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-2009-bl </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>mmadd-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>mmadd-2009-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>mmadd-2009-bl </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>mmadd-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>mmadd-2009-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>mmadd-2009-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>mmadd-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>mmadd-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>mmadd-2009-bl </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-1998-cmo-2</td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>add-1998-cmo-2</td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>add-1998-cmo-2</td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>madd-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>madd-2009-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>madd-2009-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>madd-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>madd-2009-bl </td><td>EqInfty1</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>madd-2009-bl </td><td>EqInfty2</td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
- "<tr><td>modified </td><td>madd-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>madd-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
- "<tr><td>modified </td><td>madd-2009-bl </td><td>PpQord2 </td><td>False </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo-2</td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2008-g </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2008-g </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2008-g </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2008-g </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2008-g </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2008-g </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2008-g </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2008-g </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2008-g </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-cmo </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2001-b </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2001-b </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2001-b </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2001-b </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2001-b </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2001-b </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2001-b </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2001-b </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2001-b </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>mmadd-2007-bl </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1986-cc </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1986-cc </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1986-cc </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1986-cc </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1986-cc </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1986-cc </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1986-cc </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1986-cc </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1986-cc </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>zadd-2007-m </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>zadd-2007-m </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>zadd-2007-m </td><td>InftypP </td><td>False </td><td>False </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>zadd-2007-m </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>zadd-2007-m </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>zadd-2007-m </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>zadd-2007-m </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>zadd-2007-m </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>zadd-2007-m </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2007-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2007-bl </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2007-bl </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2007-bl </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2007-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2007-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2007-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2007-bl </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2007-bl </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-2007-bl </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-hnm </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-hnm </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-hnm </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-hnm </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-hnm </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-hnm </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-hnm </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-hnm </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>add-1998-hnm </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>jacobian </td><td>madd-2004-hmv </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>mmadd-1998-cmo</td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2015-rcb </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2015-rcb </td><td>PpInfty </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2015-rcb </td><td>InftypP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2015-rcb </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2015-rcb </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2015-rcb </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2015-rcb </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-2015-rcb </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-2015-rcb </td><td>PpQDifford2</td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo-2</td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo-2</td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo-2</td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>madd-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>madd-1998-cmo </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>madd-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>madd-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>madd-1998-cmo </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>madd-1998-cmo </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>madd-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>madd-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>madd-1998-cmo </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2002-bj </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2002-bj </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-2002-bj </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-2002-bj </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2002-bj </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2002-bj </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2002-bj </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-2002-bj </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-2002-bj </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-1998-cmo </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>madd-2015-rcb </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>madd-2015-rcb </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>madd-2015-rcb </td><td>InftypP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>madd-2015-rcb </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>madd-2015-rcb </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>madd-2015-rcb </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>madd-2015-rcb </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>madd-2015-rcb </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>madd-2015-rcb </td><td>PpQDifford2</td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-2007-bl </td><td>PpP </td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2007-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-2007-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-2007-bl </td><td>O2pO2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2007-bl </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2007-bl </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>projective</td><td>add-2007-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-2007-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>projective</td><td>add-2007-bl </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>xyzz </td><td>add-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>add-2008-s </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>add-2008-s </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>add-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>add-2008-s </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>xyzz </td><td>add-2008-s </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>xyzz </td><td>add-2008-s </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>add-2008-s </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>add-2008-s </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>mmadd-2008-s </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>xyzz </td><td>madd-2008-s </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>madd-2008-s </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>madd-2008-s </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>madd-2008-s </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>madd-2008-s </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>xyzz </td><td>madd-2008-s </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>xyzz </td><td>madd-2008-s </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>madd-2008-s </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>xyzz </td><td>madd-2008-s </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>madd-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>madd-2009-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>madd-2009-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>madd-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>madd-2009-bl </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>madd-2009-bl </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>madd-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>madd-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>madd-2009-bl </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>add-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-2009-bl </td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-2009-bl </td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-2009-bl </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>add-2009-bl </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>add-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-2009-bl </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>add-1998-cmo-2</td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-1998-cmo-2</td><td>PpInfty </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-1998-cmo-2</td><td>InftypP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-1998-cmo-2</td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-1998-cmo-2</td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>add-1998-cmo-2</td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>add-1998-cmo-2</td><td>PpZeros </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-1998-cmo-2</td><td>ZerospP </td><td>Undefined </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>add-1998-cmo-2</td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>mmadd-2009-bl </td><td>PpP </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>mmadd-2009-bl </td><td>PpInfty </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>mmadd-2009-bl </td><td>InftypP </td><td>False </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>mmadd-2009-bl </td><td>O2pO2 </td><td>False </td><td>True </td><td>False </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>mmadd-2009-bl </td><td>EqInfty1 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>mmadd-2009-bl </td><td>EqInfty2 </td><td>True </td><td>False </td><td>False </td><td>True </td></tr>\n",
+ "<tr><td>modified </td><td>mmadd-2009-bl </td><td>PpZeros </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>mmadd-2009-bl </td><td>ZerospP </td><td>Undefined </td><td>False </td><td>True </td><td>False </td></tr>\n",
+ "<tr><td>modified </td><td>mmadd-2009-bl </td><td>PpQDifford2</td><td>True </td><td>False </td><td>True </td><td>True </td></tr>\n",
"</tbody>\n",
"</table>"
],
@@ -509,8 +517,8 @@
" for name, formula in vals.items():\n",
" ident = set()\n",
" for k, v in formula.items():\n",
- " if k in (\"PpP\", \"PpInfty\", \"InftypP\",\"PpQord2\"):\n",
- " ident.add((k, v[0], v[1], v[2], v[3]))\n",
+ " if k in (\"PpP\", \"PpInfty\", \"InftypP\",\"PpQDifford2\"):\n",
+ " ident.add((k, v[0])) #, v[1], v[2], v[3]\n",
" if test_filter is None or k in test_filter:\n",
" item = (v[0], v[1], v[2], v[3])\n",
" group = groups.setdefault(item, set())\n",
@@ -519,7 +527,9 @@
" ident = frozenset(ident)\n",
" cluster = clusters.setdefault(ident, set())\n",
" cluster.add(name)\n",
- "print(clusters.values())\n",
+ "for ident, cluster in clusters.items():\n",
+ " print(cluster)\n",
+ " print(\"\\t\", sorted(ident))\n",
"print(len(clusters))\n",
"if test_filter is not None:\n",
" for group, formulas in groups.items():\n",