aboutsummaryrefslogtreecommitdiffhomepage
path: root/pyecsca/ec/formula/graph.py
diff options
context:
space:
mode:
authorJ08nY2024-01-26 18:29:04 +0100
committerJ08nY2024-01-26 18:29:04 +0100
commit4be1fda99b983ca0ee22fe47f8ccc311c86d7cfc (patch)
tree3215dbe35af367737b8ff44599f821af3fefd66f /pyecsca/ec/formula/graph.py
parent63da9293c39817cd7fe746cbd31e42f13f831091 (diff)
downloadpyecsca-4be1fda99b983ca0ee22fe47f8ccc311c86d7cfc.tar.gz
pyecsca-4be1fda99b983ca0ee22fe47f8ccc311c86d7cfc.tar.zst
pyecsca-4be1fda99b983ca0ee22fe47f8ccc311c86d7cfc.zip
Move CodeFormulas.
Diffstat (limited to 'pyecsca/ec/formula/graph.py')
-rw-r--r--pyecsca/ec/formula/graph.py67
1 files changed, 3 insertions, 64 deletions
diff --git a/pyecsca/ec/formula/graph.py b/pyecsca/ec/formula/graph.py
index 8386973..3520b6a 100644
--- a/pyecsca/ec/formula/graph.py
+++ b/pyecsca/ec/formula/graph.py
@@ -1,13 +1,5 @@
-from . import (
- Formula,
- AdditionFormula,
- DoublingFormula,
- LadderFormula,
- TriplingFormula,
- NegationFormula,
- ScalingFormula,
- DifferentialAdditionFormula,
-)
+from .base import Formula
+from .code import CodeFormula
from ..op import CodeOp, OpType
import matplotlib.pyplot as plt
import networkx as nx
@@ -205,57 +197,6 @@ def formula_input_variables(formula: Formula) -> List[str]:
)
-class CodeFormula(Formula):
- def __init__(self, name, code, coordinate_model, parameters, assumptions):
- self.name = name
- self.coordinate_model = coordinate_model
- self.meta = {}
- self.parameters = parameters
- self.assumptions = assumptions
- self.code = code
- self.unified = False
-
- def __hash__(self):
- return hash((self.name, self.coordinate_model, tuple(self.code), tuple(self.parameters), tuple(self.assumptions)))
-
- def __eq__(self, other):
- if not isinstance(other, CodeFormula):
- return False
- return (
- self.name == other.name
- and self.coordinate_model == other.coordinate_model
- and self.code == other.code
- )
-
-
-class CodeAdditionFormula(AdditionFormula, CodeFormula):
- pass
-
-
-class CodeDoublingFormula(DoublingFormula, CodeFormula):
- pass
-
-
-class CodeLadderFormula(LadderFormula, CodeFormula):
- pass
-
-
-class CodeTriplingFormula(TriplingFormula, CodeFormula):
- pass
-
-
-class CodeNegationFormula(NegationFormula, CodeFormula):
- pass
-
-
-class CodeScalingFormula(ScalingFormula, CodeFormula):
- pass
-
-
-class CodeDifferentialAdditionFormula(DifferentialAdditionFormula, CodeFormula):
- pass
-
-
class FormulaGraph:
coordinate_model: Any
shortname: str
@@ -323,9 +264,7 @@ class FormulaGraph:
assumptions = [deepcopy(assumption) for assumption in self.assumptions]
for klass in CodeFormula.__subclasses__():
if klass.shortname == self.shortname:
- return klass(
- name, code, self.coordinate_model, parameters, assumptions
- )
+ return klass(name, code, self.coordinate_model, parameters, assumptions)
raise ValueError(f"Bad formula type: {self.shortname}")
def networkx_graph(self) -> nx.DiGraph: