universal_dtypes
Status — early development. The repository is scaffolded and the design is settled (see
docs/design.md); the NumPy dtype implementation has not started. The installation and usage snippets below describe the intended API —universal_dtypesis not yet published to PyPI.
universal_dtypes is a stand-alone Python package that registers the Stillwater
Universal number systems as
first-class NumPy dtypes, so alternative real-number formats
can be used directly in NumPy (and pandas) arrays. It is modeled on
ml_dtypes, which does the same for
machine-learning float formats used by JAX and TensorFlow.
The following dtypes are planned:
posit8,posit16,posit32,posit64— tapered-precision posits (Posit Standard,es = 2)fp8,fp16— configurable low-precision floats (Universalcfloat)fixpnt8,fixpnt16— fixed-pointlns16,lns32— logarithmic number system
Linear algebra over these types (dense/sparse solvers, and the quire-based exact accumulation policy) lives in the sister package mtl5-python, which consumes these dtypes. See Relationship to MTL5.
Installation
universal_dtypes will be published to PyPI as
universal-dtypes (PEP 503
normalizes the underscore to a hyphen; pip install universal_dtypes also
resolves):
pip install universal_dtypes
To run the tests:
pip install universal_dtypes[dev]
pytest
To build from source (the build fetches the Universal C++ headers via CMake FetchContent; a C++20 compiler is required):
git clone https://github.com/stillwater-sc/universal_dtypes
cd universal_dtypes
pip install -e ".[dev]"
Example usage
import numpy as np
import universal_dtypes
a = np.array([1.0, 2.0, 3.0], dtype=universal_dtypes.posit16)
b = a * 2 # element-wise arithmetic, in posit16
c = np.sum(a) # NumPy reductions (naive posit accumulation)
n = np.sqrt(a) # NumPy ufuncs
The dtypes also register under their string names, so NumPy's usual APIs accept them:
np.dtype("posit16")
np.zeros(4, dtype="posit16")
np.arange(8, dtype="fp8")
Worked, runnable problems — one per number-system family, showing where each type
wins — live in examples/ (see its
README).
Specifications of implemented number formats
Posits — posit8, posit16, posit32, posit64
A posit posit<nbits, es> encodes a real number with a sign bit, a run-length
regime field, up to es exponent bits, and the remaining bits as fraction.
Precision is tapered: it is highest for magnitudes near ±1 and decreases
toward 0 and ±∞. Posits have no subnormals and no separate infinities
or NaNs — a single exceptional value NaR ("Not a Real") represents
overflow, division by zero, and other undefined results. The standard sizes use
es = 2 (posit8 = posit<8,2>, posit16 = posit<16,2>, and so on).
Configurable floats — fp8, fp16
Universal's cfloat is a parameterized IEEE-754-style float (sign / exponent /
fraction). fp8 and fp16 are low-precision configurations for mixed-precision
work. Unlike posits, they follow the familiar exponent/mantissa layout and can
carry subnormals, infinities, and NaN depending on the configuration.
Fixed-point — fixpnt8, fixpnt16
Fixed-point fixpnt<nbits, rbits> is a two's-complement integer interpreted as a
value scaled by 2^-rbits — a fixed absolute resolution across its whole range
(in contrast to floating formats), with configurable rounding and
saturation/wrap-around on overflow.
Logarithmic number system — lns16, lns32
The logarithmic number system stores a sign and the base-2 logarithm of the magnitude. Multiplication and division become addition and subtraction of the stored logarithms (cheap and exact in the exponent), at the cost of more expensive addition and subtraction.
Encodings and exceptional values
Each type is a true NumPy dtype with a fixed item size — posit8/fixpnt8/fp8
occupy one byte, posit16/fixpnt16/fp16/lns16 two bytes, posit32/lns32
four, and posit64 eight. Exceptional values differ by family and are not
interchangeable with IEEE semantics:
- posits have a single NaR and no ±inf/NaN; overflow saturates toward the largest-magnitude finite posit rather than producing infinity.
- cfloat (
fp8/fp16) may expose ±inf and NaN per its configuration. - fixpnt has no non-finite values; out-of-range results saturate or wrap.
- lns carries its own encodings for zero and its exceptional value.
Casts to and from float32/float64 (and the integer types) round to the target
format; converting a non-finite IEEE value into a posit yields NaR.
Quirks of low-precision arithmetic
As with any low-precision format, naive accumulation loses information. Summing
many values in posit16 rounds after every partial sum:
import numpy as np
import universal_dtypes
x = np.ones(4096, dtype=universal_dtypes.posit16)
np.sum(x) # rounds each partial sum in posit16 — not 4096 exactly
The standard fix is to accumulate in higher precision. Universal's posits also
provide the quire — a fixed-point accumulator wide enough to hold an exact
sum of products, rounding only once at the end. The quire is an algorithm
concern (how you accumulate), so it lives in the linear-algebra layer, not in the
dtype: it is exposed by mtl5-python
through accumulator= on dot, norm, and the other reduction-bearing
operations. universal_dtypes deliberately gives ordinary NumPy semantics for
the dtype; when you need an exact reduction, reach for MTL5:
import mtl5
# exact posit16 sum-of-products via the quire (single final rounding)
mtl5.dot(x, np.ones_like(x), accumulator="quire")
The two answers will differ on ill-conditioned data — by design.
Relationship to MTL5
universal_dtypes is the element type and its scalar / element-wise
arithmetic. mtl5-python is what
you do with arrays of them: dense/sparse linear algebra, and the quire /
accumulator mixed-precision policy. mtl5-python depends on universal_dtypes for
the dtypes; universal_dtypes does not depend on MTL5. See
docs/design.md for the full rationale and the package
boundary.
License
universal_dtypes is licensed under the MIT License — see LICENSE.
Copyright © 2026 Stillwater Supercomputing, Inc.
It builds on Universal (MIT), whose header-only number-system implementations provide the arithmetic behind each dtype.
Metadata
Release files for universal-dtypes 0.13.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| universal_dtypes-0.13.0.tar.gz | 55.3 kB | Details |
Built distributions (wheels)
Total release size: 2.5 MB
Release files / universal_dtypes-0.13.0.tar.gz
| Download URL | universal_dtypes-0.13.0.tar.gz |
|---|---|
| Size | 55.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
84bd2cbb015b4e2c081ffb0caa70e5f797aa25fd00126606495458561096d5be
|
|
BLAKE2b-256 checksum How to use checksums |
a3ce9e54ed90e64c0b2b0c32d24e782c8c9211e898ac62d7631ab619b289a788
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / universal_dtypes-0.13.0-cp312-cp312-win_amd64.whl
| Download URL | universal_dtypes-0.13.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 388.2 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3f1c5a5ebf3823369b4df6e5edcd3c59c14ec5c9d27f27252f89508659e27f6f
|
|
BLAKE2b-256 checksum How to use checksums |
54256a643d0f38006860056fb0326898a71f3d7dd9c52505c0eaef12e29016e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / universal_dtypes-0.13.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | universal_dtypes-0.13.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 225.9 kB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
fcf6e39169d6b37bb304fae4cac9bd6b6126adc004a225f3c7338e7e14582cd4
|
|
BLAKE2b-256 checksum How to use checksums |
7ff365926002df69fd9dee664ba521192c7458583697e7450009b494b93a629e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / universal_dtypes-0.13.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | universal_dtypes-0.13.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 188.2 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
997c3c8e299b0efabd65048b2bccb829c006ffb2e561ec21ef4aa7854d3b5fa6
|
|
BLAKE2b-256 checksum How to use checksums |
da1d3fe396a518d401c5cc0bb5ba32db1f228089bcc1a84e1735721b901372cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / universal_dtypes-0.13.0-cp311-cp311-win_amd64.whl
| Download URL | universal_dtypes-0.13.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 388.1 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5e5f08cdbf7c74febcfcb5fdb51e8dfda09e5013d554f21fb85c57eb1b32d54c
|
|
BLAKE2b-256 checksum How to use checksums |
beb8e8c8454471ef126f895d278b2f47ae49e0eda96b80aded0b03403f1e7acf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / universal_dtypes-0.13.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | universal_dtypes-0.13.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 224.8 kB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3c16753f0f8ff344766a8ac02b9ec975f4b5dcf38f9b5e1ffb74578e1da97367
|
|
BLAKE2b-256 checksum How to use checksums |
43adaf86b04f588e9ab60d8ce133c00a72831b7f47bdedff5c15b352feb026be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / universal_dtypes-0.13.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | universal_dtypes-0.13.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 185.6 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3df464cf2f2968b40a2dbf67bd50181833b7bb40c5f2a0641f7ca0bfdb485b5b
|
|
BLAKE2b-256 checksum How to use checksums |
5e1d64bf7813e4874103be215e2047ca7d8aaf6d1b9b652bab1f63767d5cfc5c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / universal_dtypes-0.13.0-cp310-cp310-win_amd64.whl
| Download URL | universal_dtypes-0.13.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 388.0 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cf3c0ad2da70d2ee62e075fd290b3d10edb3008facd2364acb61fd544b910974
|
|
BLAKE2b-256 checksum How to use checksums |
923b9a14833b5582c94030ccb326f7e4ceef98c30a7243ebd102b17e0c2b9855
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / universal_dtypes-0.13.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | universal_dtypes-0.13.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 224.8 kB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2c6b34d523a7f1c40f9ef9789c95cadc97d8e820b9584e8be975e2fbcd498042
|
|
BLAKE2b-256 checksum How to use checksums |
e6be3596554e39e845b7bfd2519165b4aa5bb37507a29e1c87ae2bf178546ec8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / universal_dtypes-0.13.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | universal_dtypes-0.13.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 185.6 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2a074d88987a187943aead89ff0509a3c392c1e46a746feec1eec127d7299307
|
|
BLAKE2b-256 checksum How to use checksums |
26b553b1aef65e9634835829f6cf832d4eccc39411bed2690afc49ee8873deb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency log