Skip to content
Snippets Groups Projects

Add matrix inversion sfg generator

Merged Simon Bjurek requested to merge add-matrix-inversion-sfg-generator into master
2 unresolved threads
2 files
+ 157
0
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 70
0
@@ -1099,6 +1099,76 @@ class MAD(AbstractOperation):
@@ -1099,6 +1099,76 @@ class MAD(AbstractOperation):
p._index = i
p._index = i
 
class MADS(AbstractOperation):
 
__slots__ = (
 
"_is_add",
 
"_src0",
 
"_src1",
 
"_src2",
 
"_name",
 
"_latency",
 
"_latency_offsets",
 
"_execution_time",
 
)
 
_is_add: Optional[bool]
 
_src0: Optional[SignalSourceProvider]
 
_src1: Optional[SignalSourceProvider]
 
_src2: Optional[SignalSourceProvider]
 
_name: Name
 
_latency: Optional[int]
 
_latency_offsets: Optional[Dict[str, int]]
 
_execution_time: Optional[int]
 
 
is_swappable = True
 
 
def __init__(
 
self,
 
is_add: Optional[bool] = False,
 
src0: Optional[SignalSourceProvider] = None,
 
src1: Optional[SignalSourceProvider] = None,
 
src2: Optional[SignalSourceProvider] = None,
 
name: Name = Name(""),
 
latency: Optional[int] = None,
 
latency_offsets: Optional[Dict[str, int]] = None,
 
execution_time: Optional[int] = None,
 
):
 
"""Construct a MADS operation."""
 
super().__init__(
 
input_count=3,
 
output_count=1,
 
name=Name(name),
 
input_sources=[src0, src1, src2],
 
latency=latency,
 
latency_offsets=latency_offsets,
 
execution_time=execution_time,
 
)
 
self._is_add = is_add
 
# self.set_param("is_add", is_add)
 
 
@classmethod
 
def type_name(cls) -> TypeName:
 
return TypeName("mads")
 
 
def evaluate(self, a, b, c):
 
return a + b * c if self._is_add else a - b * c
 
 
@property
 
def is_linear(self) -> bool:
 
return (
 
self.input(0).connected_source.operation.is_constant
 
or self.input(1).connected_source.operation.is_constant
 
)
 
 
def swap_io(self) -> None:
 
self._input_ports = [
 
self._input_ports[1],
 
self._input_ports[0],
 
self._input_ports[2],
 
]
 
for i, p in enumerate(self._input_ports):
 
p._index = i
 
 
class SymmetricTwoportAdaptor(AbstractOperation):
class SymmetricTwoportAdaptor(AbstractOperation):
r"""
r"""
Wave digital filter symmetric twoport-adaptor operation.
Wave digital filter symmetric twoport-adaptor operation.
Loading