complex-tensors
The complex-tensors worked example.
Run it from sema/:
sema check examples/complex-tensorsSEMA_STRICT=1 sema run examples/complex-tensorssema assure examples/complex-tensors --grade silverSource
Section titled “Source”src/main.sema
Section titled “src/main.sema”"""Bounded dense-complex tensor construction and elementwise math."""
import math
assure silver
def signal() -> Tensor !{}: return tensor([complex(1.0, 2.0), complex(-0.5, 0.25)], dtype="complex")
test "complex tensor dtype, shape, promotion, and magnitude": values = signal() check dtype(values) == "complex" check shape(values) == [2] check dtype(values + tensor([2.0, 3.0])) == "complex" check sum(values) == complex(0.5, 2.25) check mean(values) == complex(0.25, 1.125) check prod(values) == complex(-1.0, -0.75) matrix = tensor([[complex(1.0, 2.0), complex(-0.5, 0.25)], [complex(1.0, 2.0), complex(-0.5, 0.25)]], dtype="complex") check shape(sum(matrix, axis=-1, keepdims=true)) == [2, 1] selected = where(tensor([true, false], dtype="bool"), values, tensor([complex(0.0, 0.0), complex(0.0, 0.0)], dtype="complex")) check dtype(selected) == "complex" check shape(selected) == [2] check sum(selected) == complex(1.0, 2.0) check sum(abs(values)) > 0.0
def main() -> any !{}: values = signal() mask = tensor([true, false], dtype="bool") zeros = tensor([complex(0.0, 0.0), complex(0.0, 0.0)], dtype="complex") return (dtype(values), shape(values), sum(values), mean(values), prod(values), where(mask, values, zeros), abs(values), math.exp(values))Reflected API
Section titled “Reflected API”Bounded dense-complex tensor construction and elementwise math.
def signal
Section titled “def signal”def signal() -> Tensor !{}Returns Tensor
Effects !{}
def main
Section titled “def main”def main() -> any !{}Returns any
Effects !{}