# Scalar Types

> NumKong for Swift

The output type is intentionally wider than the storage type for most operations.
The table below documents the promotion for scalar collection extensions.

| Input type | `.dot()`  | `.angular()` | `.euclidean()` | `.sqeuclidean()` | `.hamming()` | `.jaccard()` |
| :--------- | :-------- | :----------- | :------------- | :--------------- | :----------- | :----------- |
| `Float64`  | `Float64` | `Float64`    | `Float64`      | `Float64`        | …            | …            |
| `Float32`  | `Float64` | `Float64`    | `Float64`      | `Float64`        | …            | …            |
| `BFloat16` | `Float32` | `Float32`    | `Float32`      | `Float32`        | …            | …            |
| `Float16`  | `Float32` | `Float32`    | `Float32`      | `Float32`        | …            | …            |
| `Int8`     | `Int32`   | `Float32`    | `Float32`      | `UInt32`         | …            | …            |
| `I4x2`     | `Int32`   | `Float32`    | `Float32`      | `UInt32`         | …            | …            |
| `UInt8`    | `UInt32`  | `Float32`    | `Float32`      | `UInt32`         | …            | …            |
| `U4x2`     | `UInt32`  | `Float32`    | `Float32`      | `UInt32`         | …            | …            |
| `U1x8`     | …         | …            | …              | …                | `UInt32`     | `Float32`    |

The matrix kernel output types follow a similar pattern but vary for the mini-float formats:

| Input type | Dots output | Spatial output | Hamming output | Jaccard output |
| :--------- | :---------- | :------------- | :------------- | :------------- |
| `Float64`  | `Float64`   | `Float64`      | …              | …              |
| `Float32`  | `Float64`   | `Float64`      | …              | …              |
| `BFloat16` | `Float32`   | `Float32`      | …              | …              |
| `Float16`  | `Float32`   | `Float32`      | …              | …              |
| `E5M2`     | `Float32`   | `Float32`      | …              | …              |
| `E4M3`     | `Float32`   | `Float32`      | …              | …              |
| `E3M2`     | `Float32`   | `Float32`      | …              | …              |
| `E2M3`     | `Float32`   | `Float32`      | …              | …              |
| `Int8`     | `Int32`     | `Float32`      | …              | …              |
| `I4x2`     | `Int32`     | `Float32`      | …              | …              |
| `UInt8`    | `UInt32`    | `Float32`      | …              | …              |
| `U4x2`     | `UInt32`    | `Float32`      | …              | …              |
| `U1x8`     | `UInt32`    | …              | `UInt32`       | `Float32`      |

### Low-Precision Storage Wrappers

Swift has no built-in bf16, mini-float, or packed-bit scalar types.
NumKong ships storage wrappers instead.

- __`BFloat16`__ — 1+8+7 bit layout (sign + exponent + mantissa), 2 bytes.
  Same dynamic range as `Float32` with reduced precision.
  Supports NaN and Inf.
- __`E5M2`__ — 1+5+2 bit layout, 1 byte.
  Range ±57344.
  Supports Inf and NaN.
- __`E4M3`__ — 1+4+3 bit layout, 1 byte.
  Range ±448.
  No Inf representation; NaN is encoded only as `0x7F` or `0xFF`.
- __`E3M2`__ — 1+3+2 bit layout, 1 byte (6 bits used).
  Range ±28.
  No Inf, no NaN.
- __`E2M3`__ — 1+2+3 bit layout, 1 byte (6 bits used).
  Range ±7.5.
  No Inf, no NaN.
- __`I4x2`__ and __`U4x2`__ — two 4-bit lanes per byte, high nibble first.
  Signed lanes span -8...7, unsigned 0...15; `first` and `second` unpack them and `init(first:second:)` packs them, with `first` in the high nibble.
  Supports dot, angular, and Euclidean scalar and matrix kernels.
- __`U1x8`__ — 8 packed bits per byte.
  Used for binary embeddings and semantic hashing.
  Supports Hamming and Jaccard scalar and matrix kernels.

Every floating-point wrapper provides `init(bitPattern:)`, `init(float:)`, and `var float: Float32`.
All are `@frozen`, `Equatable`, `Hashable`, `Sendable`.
`U1x8`, `I4x2`, and `U4x2` provide `init(bitPattern:)` and expose their underlying `UInt8` value.
These wrappers are exact-storage types first.
They are there to preserve bits and make the native kernels callable from Swift.
They are not pretending to be standard-library numeric types.

`import NumKong`

## BFloat16

Brain floating-point: 16-bit storage with 8-bit exponent, used in ML inference.

```swift
@frozen struct BFloat16
```

Conforms to: `[NumKongDotsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongDotsMatrixElement)`, `[NumKongSpatialsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongSpatialsMatrixElement)`, `[NumKongMaxSimElement](https://www.unum.cloud/docs/numkong/swift/maxsim.md#NumKongMaxSimElement)`, `Equatable`, `Hashable`, `Sendable`, `BitwiseCopyable`, `CustomStringConvertible`, `ExpressibleByFloatLiteral`, `[NumKongDot](https://www.unum.cloud/docs/numkong/swift/dot-products.md#NumKongDot)`, `[NumKongAngular](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongAngular)`, `[NumKongEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongEuclidean)`, `[NumKongSqEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongSqEuclidean)`

## DotsOutput

```swift
typealias DotsOutput = Float32
```

## SpatialOutput

```swift
typealias SpatialOutput = Float32
```

## MaxSimOutput

```swift
typealias MaxSimOutput = Float32
```

## bitPattern

```swift
var bitPattern: UInt16
```

## init

```swift
init(bitPattern: UInt16)
```

```swift
init(float: Float32)
```

```swift
init(floatLiteral value: Double)
```

## float

```swift
var float: Float32 { get }
```

## description

```swift
var description: String { get }
```

## DotOutput

```swift
typealias DotOutput = Float32
```

## *

```swift
static func dot<A, B>(
    _ a: A,
    _ b: B
) -> Float32? where A : Sequence, B : Sequence, A.Element == BFloat16, B.Element == BFloat16
```

- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`
- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`
- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`
- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`
- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`
- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`
- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`
- `dot`
- `hamming`
- `jaccard`
- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`
- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`
- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`
- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`
- `dot`
- `angular`
- `euclidean`
- `sqeuclidean`

## AngularOutput

```swift
typealias AngularOutput = Float32
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float32
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = Float32
```

## E5M2

FP8 E5M2 format with 5-bit exponent and 2-bit mantissa, used in gradient storage.

```swift
@frozen struct E5M2
```

Conforms to: `[NumKongDotsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongDotsMatrixElement)`, `[NumKongSpatialsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongSpatialsMatrixElement)`, `Equatable`, `Hashable`, `Sendable`, `BitwiseCopyable`, `CustomStringConvertible`, `ExpressibleByFloatLiteral`, `[NumKongDot](https://www.unum.cloud/docs/numkong/swift/dot-products.md#NumKongDot)`, `[NumKongAngular](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongAngular)`, `[NumKongEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongEuclidean)`, `[NumKongSqEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongSqEuclidean)`

## DotsOutput

```swift
typealias DotsOutput = Float32
```

## SpatialOutput

```swift
typealias SpatialOutput = Float32
```

## bitPattern

```swift
var bitPattern: UInt8
```

## init

```swift
init(bitPattern: UInt8)
```

```swift
init(float: Float32)
```

```swift
init(floatLiteral value: Double)
```

## float

```swift
var float: Float32 { get }
```

## description

```swift
var description: String { get }
```

## DotOutput

```swift
typealias DotOutput = Float32
```

## AngularOutput

```swift
typealias AngularOutput = Float32
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float32
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = Float32
```

## E4M3

FP8 E4M3 format with 4-bit exponent and 3-bit mantissa, used in transformer inference.

```swift
@frozen struct E4M3
```

Conforms to: `[NumKongDotsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongDotsMatrixElement)`, `[NumKongSpatialsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongSpatialsMatrixElement)`, `Equatable`, `Hashable`, `Sendable`, `BitwiseCopyable`, `CustomStringConvertible`, `ExpressibleByFloatLiteral`, `[NumKongDot](https://www.unum.cloud/docs/numkong/swift/dot-products.md#NumKongDot)`, `[NumKongAngular](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongAngular)`, `[NumKongEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongEuclidean)`, `[NumKongSqEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongSqEuclidean)`

## DotsOutput

```swift
typealias DotsOutput = Float32
```

## SpatialOutput

```swift
typealias SpatialOutput = Float32
```

## bitPattern

```swift
var bitPattern: UInt8
```

## init

```swift
init(bitPattern: UInt8)
```

```swift
init(float: Float32)
```

```swift
init(floatLiteral value: Double)
```

## float

```swift
var float: Float32 { get }
```

## description

```swift
var description: String { get }
```

## DotOutput

```swift
typealias DotOutput = Float32
```

## AngularOutput

```swift
typealias AngularOutput = Float32
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float32
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = Float32
```

## E3M2

MX E3M2 format with 3-bit exponent and 2-bit mantissa.

```swift
@frozen struct E3M2
```

Conforms to: `[NumKongDotsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongDotsMatrixElement)`, `[NumKongSpatialsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongSpatialsMatrixElement)`, `Equatable`, `Hashable`, `Sendable`, `BitwiseCopyable`, `CustomStringConvertible`, `ExpressibleByFloatLiteral`, `[NumKongDot](https://www.unum.cloud/docs/numkong/swift/dot-products.md#NumKongDot)`, `[NumKongAngular](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongAngular)`, `[NumKongEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongEuclidean)`, `[NumKongSqEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongSqEuclidean)`

## DotsOutput

```swift
typealias DotsOutput = Float32
```

## SpatialOutput

```swift
typealias SpatialOutput = Float32
```

## bitPattern

```swift
var bitPattern: UInt8
```

## init

```swift
init(bitPattern: UInt8)
```

```swift
init(float: Float32)
```

```swift
init(floatLiteral value: Double)
```

## float

```swift
var float: Float32 { get }
```

## description

```swift
var description: String { get }
```

## DotOutput

```swift
typealias DotOutput = Float32
```

## AngularOutput

```swift
typealias AngularOutput = Float32
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float32
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = Float32
```

## E2M3

MX E2M3 format with 2-bit exponent and 3-bit mantissa.

```swift
@frozen struct E2M3
```

Conforms to: `[NumKongDotsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongDotsMatrixElement)`, `[NumKongSpatialsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongSpatialsMatrixElement)`, `Equatable`, `Hashable`, `Sendable`, `BitwiseCopyable`, `CustomStringConvertible`, `ExpressibleByFloatLiteral`, `[NumKongDot](https://www.unum.cloud/docs/numkong/swift/dot-products.md#NumKongDot)`, `[NumKongAngular](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongAngular)`, `[NumKongEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongEuclidean)`, `[NumKongSqEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongSqEuclidean)`

## DotsOutput

```swift
typealias DotsOutput = Float32
```

## SpatialOutput

```swift
typealias SpatialOutput = Float32
```

## bitPattern

```swift
var bitPattern: UInt8
```

## init

```swift
init(bitPattern: UInt8)
```

```swift
init(float: Float32)
```

```swift
init(floatLiteral value: Double)
```

## float

```swift
var float: Float32 { get }
```

## description

```swift
var description: String { get }
```

## DotOutput

```swift
typealias DotOutput = Float32
```

## AngularOutput

```swift
typealias AngularOutput = Float32
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float32
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = Float32
```

## I4x2

Packed pair of 4-bit signed integers, `[high nibble : low nibble]`, each in -8...7.

```swift
@frozen struct I4x2
```

Conforms to: `[NumKongDotsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongDotsMatrixElement)`, `[NumKongSpatialsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongSpatialsMatrixElement)`, `Equatable`, `Hashable`, `Sendable`, `BitwiseCopyable`, `CustomStringConvertible`, `[NumKongDot](https://www.unum.cloud/docs/numkong/swift/dot-products.md#NumKongDot)`, `[NumKongAngular](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongAngular)`, `[NumKongEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongEuclidean)`, `[NumKongSqEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongSqEuclidean)`

## DotsOutput

```swift
typealias DotsOutput = Int32
```

## SpatialOutput

```swift
typealias SpatialOutput = Float32
```

## bitPattern

```swift
var bitPattern: UInt8
```

## init

Packs two lanes, [`first`](#first) into the high nibble, keeping the low four bits of each.

```swift
init(_ bits: UInt8)
```

```swift
init(bitPattern: UInt8)
```

```swift
init(first: Int8, second: Int8)
```

Packs two lanes, [`first`](#first) into the high nibble, keeping the low four bits of each.

## first

The first lane, in the high nibble, sign-extended.

```swift
var first: Int8 { get }
```

## second

The second lane, in the low nibble, sign-extended.

```swift
var second: Int8 { get }
```

## description

```swift
var description: String { get }
```

## DotOutput

```swift
typealias DotOutput = Int32
```

## AngularOutput

```swift
typealias AngularOutput = Float32
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float32
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = UInt32
```

## U4x2

Packed pair of 4-bit unsigned integers, `[high nibble : low nibble]`, each in 0...15.

```swift
@frozen struct U4x2
```

Conforms to: `[NumKongDotsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongDotsMatrixElement)`, `[NumKongSpatialsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongSpatialsMatrixElement)`, `Equatable`, `Hashable`, `Sendable`, `BitwiseCopyable`, `CustomStringConvertible`, `[NumKongDot](https://www.unum.cloud/docs/numkong/swift/dot-products.md#NumKongDot)`, `[NumKongAngular](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongAngular)`, `[NumKongEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongEuclidean)`, `[NumKongSqEuclidean](https://www.unum.cloud/docs/numkong/swift/dense-distances.md#NumKongSqEuclidean)`

## DotsOutput

```swift
typealias DotsOutput = UInt32
```

## SpatialOutput

```swift
typealias SpatialOutput = Float32
```

## bitPattern

```swift
var bitPattern: UInt8
```

## init

Packs two lanes, [`first`](#first) into the high nibble, keeping the low four bits of each.

```swift
init(_ bits: UInt8)
```

```swift
init(bitPattern: UInt8)
```

```swift
init(first: UInt8, second: UInt8)
```

Packs two lanes, [`first`](#first) into the high nibble, keeping the low four bits of each.

## first

The first lane, in the high nibble.

```swift
var first: UInt8 { get }
```

## second

The second lane, in the low nibble.

```swift
var second: UInt8 { get }
```

## description

```swift
var description: String { get }
```

## DotOutput

```swift
typealias DotOutput = UInt32
```

## AngularOutput

```swift
typealias AngularOutput = Float32
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float32
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = UInt32
```

## E2M1x2

Packed pair of 4-bit E2M1 floats, `[high nibble : low nibble]`, each of 1 sign, 2 exponent and 1 mantissa bits.

```swift
@frozen struct E2M1x2
```

Conforms to: `[NumKongDotsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongDotsMatrixElement)`, `[NumKongSpatialsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongSpatialsMatrixElement)`, `Equatable`, `Hashable`, `Sendable`, `BitwiseCopyable`, `CustomStringConvertible`

## DotsOutput

```swift
typealias DotsOutput = Float32
```

## SpatialOutput

```swift
typealias SpatialOutput = Float32
```

## bitPattern

```swift
var bitPattern: UInt8
```

## init

Packs two lane codes, [`first`](#first) into the high nibble, keeping the low four bits of each.

```swift
init(_ bits: UInt8)
```

```swift
init(bitPattern: UInt8)
```

```swift
init(first: UInt8, second: UInt8)
```

Packs two lane codes, [`first`](#first) into the high nibble, keeping the low four bits of each.

## first

The first lane code, in the high nibble.

```swift
var first: UInt8 { get }
```

## second

The second lane code, in the low nibble.

```swift
var second: UInt8 { get }
```

## description

```swift
var description: String { get }
```

## U1x8

Packed 8-bit binary vector element for Hamming and Jaccard distance computations.

```swift
@frozen struct U1x8
```

Conforms to: `[NumKongDotsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongDotsMatrixElement)`, `[NumKongSetsMatrixElement](https://www.unum.cloud/docs/numkong/swift/matrix-kernels.md#NumKongSetsMatrixElement)`, `Equatable`, `Hashable`, `Sendable`, `BitwiseCopyable`, `CustomStringConvertible`, `[NumKongDot](https://www.unum.cloud/docs/numkong/swift/dot-products.md#NumKongDot)`, `[NumKongHamming](https://www.unum.cloud/docs/numkong/swift/set-similarity.md#NumKongHamming)`, `[NumKongJaccard](https://www.unum.cloud/docs/numkong/swift/set-similarity.md#NumKongJaccard)`

## DotsOutput

```swift
typealias DotsOutput = UInt32
```

## HammingOutput

```swift
typealias HammingOutput = UInt32
```

## JaccardOutput

```swift
typealias JaccardOutput = Float32
```

## bitPattern

```swift
var bitPattern: UInt8
```

## init

```swift
init(_ bits: UInt8)
```

```swift
init(bitPattern: UInt8)
```

## popcount

```swift
var popcount: Int { get }
```

## description

```swift
var description: String { get }
```

## DotOutput

```swift
typealias DotOutput = UInt32
```

## Double

```swift
extension Double : NumKongDotsMatrixElement, NumKongSpatialsMatrixElement, NumKongHaversines, NumKongVincentys, NumKongDot, NumKongAngular, NumKongEuclidean, NumKongSqEuclidean
```

## haversines

```swift
static func haversines(
    aLatitudes: UnsafeBufferPointer<Float64>,
    aLongitudes: UnsafeBufferPointer<Float64>,
    bLatitudes: UnsafeBufferPointer<Float64>,
    bLongitudes: UnsafeBufferPointer<Float64>,
    results: UnsafeMutableBufferPointer<Float64>
) -> Bool
```

```swift
static func haversines<A, B, C, D>(
    aLatitudes: A,
    aLongitudes: B,
    bLatitudes: C,
    bLongitudes: D
) -> [Float64]? where A : Sequence, B : Sequence, C : Sequence, D : Sequence, A.Element == Double, B.Element == Double, C.Element == Double, D.Element == Double
```

## vincentys

```swift
static func vincentys(
    aLatitudes: UnsafeBufferPointer<Float64>,
    aLongitudes: UnsafeBufferPointer<Float64>,
    bLatitudes: UnsafeBufferPointer<Float64>,
    bLongitudes: UnsafeBufferPointer<Float64>,
    results: UnsafeMutableBufferPointer<Float64>
) -> Bool
```

```swift
static func vincentys<A, B, C, D>(
    aLatitudes: A,
    aLongitudes: B,
    bLatitudes: C,
    bLongitudes: D
) -> [Float64]? where A : Sequence, B : Sequence, C : Sequence, D : Sequence, A.Element == Double, B.Element == Double, C.Element == Double, D.Element == Double
```

## DotsOutput

```swift
typealias DotsOutput = Float64
```

## SpatialOutput

```swift
typealias SpatialOutput = Float64
```

## DotOutput

```swift
typealias DotOutput = Float64
```

## AngularOutput

```swift
typealias AngularOutput = Float64
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float64
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = Float64
```

## Float

```swift
extension Float : NumKongDotsMatrixElement, NumKongSpatialsMatrixElement, NumKongMaxSimElement, NumKongDot, NumKongAngular, NumKongEuclidean, NumKongSqEuclidean
```

## DotsOutput

```swift
typealias DotsOutput = Float64
```

## SpatialOutput

```swift
typealias SpatialOutput = Float64
```

## MaxSimOutput

```swift
typealias MaxSimOutput = Float64
```

## DotOutput

```swift
typealias DotOutput = Float64
```

## AngularOutput

```swift
typealias AngularOutput = Float64
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float64
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = Float64
```

## Float16

```swift
extension Float16 : NumKongDotsMatrixElement, NumKongSpatialsMatrixElement, NumKongMaxSimElement, NumKongDot, NumKongAngular, NumKongEuclidean, NumKongSqEuclidean
```

## DotsOutput

```swift
typealias DotsOutput = Float32
```

## SpatialOutput

```swift
typealias SpatialOutput = Float32
```

## MaxSimOutput

```swift
typealias MaxSimOutput = Float32
```

## DotOutput

```swift
typealias DotOutput = Float32
```

## AngularOutput

```swift
typealias AngularOutput = Float32
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float32
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = Float32
```

## Int8

```swift
extension Int8 : NumKongDotsMatrixElement, NumKongSpatialsMatrixElement, NumKongDot, NumKongAngular, NumKongEuclidean, NumKongSqEuclidean
```

## DotsOutput

```swift
typealias DotsOutput = Int32
```

## SpatialOutput

```swift
typealias SpatialOutput = Float32
```

## DotOutput

```swift
typealias DotOutput = Int32
```

## AngularOutput

```swift
typealias AngularOutput = Float32
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float32
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = UInt32
```

## UInt8

```swift
extension UInt8 : NumKongDotsMatrixElement, NumKongSpatialsMatrixElement, NumKongDot, NumKongAngular, NumKongEuclidean, NumKongSqEuclidean
```

## DotsOutput

```swift
typealias DotsOutput = UInt32
```

## SpatialOutput

```swift
typealias SpatialOutput = Float32
```

## DotOutput

```swift
typealias DotOutput = UInt32
```

## AngularOutput

```swift
typealias AngularOutput = Float32
```

## EuclideanOutput

```swift
typealias EuclideanOutput = Float32
```

## SqEuclideanOutput

```swift
typealias SqEuclideanOutput = UInt32
```

