Skip to content
Snippets Groups Projects
Commit 3e0e189b authored by Ivar Härnqvist's avatar Ivar Härnqvist
Browse files

fix order of core_operations, add missing return type annotations on setters

parent ddfc0f78
No related branches found
No related tags found
4 merge requests!31Resolve "Specify internal input/output dependencies of an Operation",!25Resolve "System tests iteration 1",!24Resolve "System tests iteration 1",!23Resolve "Simulate SFG"
Pipeline #13101 passed
...@@ -34,7 +34,7 @@ class Constant(AbstractOperation): ...@@ -34,7 +34,7 @@ class Constant(AbstractOperation):
return self.param("value") return self.param("value")
@value.setter @value.setter
def value(self, value: Number): def value(self, value: Number) -> None:
"""Set the constant value of this operation.""" """Set the constant value of this operation."""
return self.set_param("value", value) return self.set_param("value", value)
...@@ -103,36 +103,22 @@ class Division(AbstractOperation): ...@@ -103,36 +103,22 @@ class Division(AbstractOperation):
return a / b return a / b
class SquareRoot(AbstractOperation): class Min(AbstractOperation):
"""Unary square root operation. """Binary min operation.
TODO: More info.
"""
def __init__(self, src0: Optional[SignalSourceProvider] = None, name: Name = ""):
super().__init__(input_count = 1, output_count = 1, name = name, input_sources = [src0])
@property
def type_name(self) -> TypeName:
return "sqrt"
def evaluate(self, a):
return sqrt(complex(a))
class ComplexConjugate(AbstractOperation):
"""Unary complex conjugate operation.
TODO: More info. TODO: More info.
""" """
def __init__(self, src0: Optional[SignalSourceProvider] = None, name: Name = ""): def __init__(self, src0: Optional[SignalSourceProvider] = None, src1: Optional[SignalSourceProvider] = None, name: Name = ""):
super().__init__(input_count = 1, output_count = 1, name = name, input_sources = [src0]) super().__init__(input_count = 2, output_count = 1, name = name, input_sources = [src0, src1])
@property @property
def type_name(self) -> TypeName: def type_name(self) -> TypeName:
return "conj" return "min"
def evaluate(self, a): def evaluate(self, a, b):
return conjugate(a) assert not isinstance(a, complex) and not isinstance(b, complex), \
("core_operations.Min does not support complex numbers.")
return a if a < b else b
class Max(AbstractOperation): class Max(AbstractOperation):
...@@ -153,22 +139,36 @@ class Max(AbstractOperation): ...@@ -153,22 +139,36 @@ class Max(AbstractOperation):
return a if a > b else b return a if a > b else b
class Min(AbstractOperation): class SquareRoot(AbstractOperation):
"""Binary min operation. """Unary square root operation.
TODO: More info. TODO: More info.
""" """
def __init__(self, src0: Optional[SignalSourceProvider] = None, src1: Optional[SignalSourceProvider] = None, name: Name = ""): def __init__(self, src0: Optional[SignalSourceProvider] = None, name: Name = ""):
super().__init__(input_count = 2, output_count = 1, name = name, input_sources = [src0, src1]) super().__init__(input_count = 1, output_count = 1, name = name, input_sources = [src0])
@property @property
def type_name(self) -> TypeName: def type_name(self) -> TypeName:
return "min" return "sqrt"
def evaluate(self, a, b): def evaluate(self, a):
assert not isinstance(a, complex) and not isinstance(b, complex), \ return sqrt(complex(a))
("core_operations.Min does not support complex numbers.")
return a if a < b else b
class ComplexConjugate(AbstractOperation):
"""Unary complex conjugate operation.
TODO: More info.
"""
def __init__(self, src0: Optional[SignalSourceProvider] = None, name: Name = ""):
super().__init__(input_count = 1, output_count = 1, name = name, input_sources = [src0])
@property
def type_name(self) -> TypeName:
return "conj"
def evaluate(self, a):
return conjugate(a)
class Absolute(AbstractOperation): class Absolute(AbstractOperation):
...@@ -209,7 +209,7 @@ class ConstantMultiplication(AbstractOperation): ...@@ -209,7 +209,7 @@ class ConstantMultiplication(AbstractOperation):
return self.param("value") return self.param("value")
@value.setter @value.setter
def value(self, value: Number): def value(self, value: Number) -> None:
"""Set the constant value of this operation.""" """Set the constant value of this operation."""
return self.set_param("value", value) return self.set_param("value", value)
......
...@@ -33,7 +33,7 @@ class Input(AbstractOperation): ...@@ -33,7 +33,7 @@ class Input(AbstractOperation):
return self.param("value") return self.param("value")
@value.setter @value.setter
def value(self, value: Number): def value(self, value: Number) -> None:
"""Set the current value of this input.""" """Set the current value of this input."""
self.set_param("value", value) self.set_param("value", value)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment