<!-- Sema documentation — complex-tensors
     Sema is a new AI-native, neurosymbolic programming language most models
     have not been trained on. Full corpus: https://sema.49.12.246.95.sslip.io/llms-full.txt
     Install language support: https://sema.49.12.246.95.sslip.io/install-skill/ -->

# complex-tensors

> The complex-tensors worked example.

> The complex-tensors worked example.

Run it from `sema/`:

```bash
sema check examples/complex-tensors
SEMA_STRICT=1 sema run examples/complex-tensors
sema assure examples/complex-tensors --grade silver
```

## Source

### `src/main.sema`

```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

# `main`

Bounded dense-complex tensor construction and elementwise math.

# `def signal`

```sema
def signal() -> Tensor !{}
```

**Returns** `Tensor`

**Effects** `!{}`

# `def main`

```sema
def main() -> any !{}
```

**Returns** `any`

**Effects** `!{}`
