Skip to content

complex-tensors

The complex-tensors worked example.

Run it from sema/:

Terminal window
sema check examples/complex-tensors
SEMA_STRICT=1 sema run examples/complex-tensors
sema assure examples/complex-tensors --grade silver
"""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))

Bounded dense-complex tensor construction and elementwise math.

def signal() -> Tensor !{}

Returns Tensor

Effects !{}

def main() -> any !{}

Returns any

Effects !{}