This directory contains comprehensive documentation for each number system in the Universal library. Each document explains why the number system exists, what it does, and how to use it to solve specific problems.
Type Bits Description Best For integer N Arbitrary-width signed integer Cryptography, combinatorics, wide counters fixpnt N Binary fixed-point with configurable radix DSP, control systems, embedded (no FPU) dfixpnt N Decimal fixed-point with configurable radix Financial ledgers, COBOL migration, tax/POS rational 2N Exact numerator/denominator fraction Symbolic math, exact geometry, financial
Type Bits Description Best For cfloat 4-256 Fully parameterized IEEE-compatible float Mixed-precision research, custom HW design bfloat16 16 Google Brain Float (8-bit exponent, 7-bit fraction) Neural network training, TPU workloads areal N Faithful float with uncertainty bit Verified computing, uncertainty tracking dfloat N Decimal floating-point (base-10) Financial systems, regulatory compliance hfloat N Hexadecimal floating-point (IBM System/360) Legacy mainframe validation, data archaeology
Type Bits Description Best For microfloat 4-8 OCP MX element types (e2m1, e4m3, e5m2) AI model elements, quantization validation e8m0 8 Exponent-only power-of-two scale Block scale factor for MX format mxfloat Block OCP Microscaling block format AI inference, model compression (OCP) nvblock Block NVIDIA NVFP4 block format GPU inference, NVIDIA accelerators
Type Bits Description Best For posit N Tapered-precision floating-point (current v2) General numeric, more precision than IEEE posit1 N Original posit implementation (legacy v1) Backward compatibility posito N Experimental posit variant Differential testing, research takum N Bounded-range tapered float General computing, predictable range
Type Bits Description Best For quire Wide Generalized super-accumulator for exact dot products Reproducible linear algebra, BLAS
The quire is a number-system-agnostic accumulator that provides exact dot products for cfloat, posit, fixpnt, lns, dbns, integer, native float, and native double.
Type Bits Description Best For valid 2N Interval arithmetic with posit-encoded bounds Verified computing with posit precision interval 2N Generic interval over any scalar type Tolerance analysis, uncertainty propagation sorn N Set of operand range numbers Rigorous uncertainty, safety-critical bounds unum2 N Configurable exact-value lattice Research, custom value distributions
Type Bits Description Best For lns N Single-base logarithmic (base 2) DSP, multiply-heavy workloads, low-power HW dbns N Double-base logarithmic (base 0.5 and 3) Research, mixed-radix applications
Type Bits Decimal Digits Description Best For dd 128 ~31 Double-double (2 doubles) Extended precision, ill-conditioned systems qd 256 ~64 Quad-double (4 doubles) Ultra-high precision, constant computation dd_cascade 128 ~31 DD via unified cascade framework Consistent API across precision tiers td_cascade 192 ~48 Triple-double (3 doubles) Intermediate precision tier qd_cascade 256 ~64 QD via unified cascade framework Consistent API across precision tiers
Type Description Best For einteger Adaptive-precision integer Cryptography, arbitrary-width counters edecimal Adaptive-precision decimal Exact decimal arithmetic erational Adaptive-precision rational Symbolic math, exact fractions efloat Adaptive-precision multi-digit float Variable-precision scientific computing ereal Adaptive-precision multi-component real Highest-precision computation
Type Description Best For zfpblock ZFP block-based float compression (1D/2D/3D) Scientific data storage, simulation checkpoints
Type Description Best For complex Complex arithmetic for any Universal scalar FFT, signal processing, quantum computing
Domain Recommended Types Deep Learning Inference microfloat, mxfloat, nvblock, bfloat16, cfloat(fp8) Deep Learning Training bfloat16, cfloat(fp16/fp32), posit DSP / Signal Processing fixpnt, lns, complex Financial / Accounting dfixpnt, dfloat, rational, fixpnt Embedded (no FPU) fixpnt, integer Scientific HPC dd, qd, posit, cfloat Verified / Validated Computing interval, valid, areal, sorn Reproducible Linear Algebra any type + quire (cfloat, posit, fixpnt, lns, float, double) Cryptography / Big Numbers integer Data Compression zfpblock Custom Hardware Design cfloat, posit, takum, lns
Precision Type Decimal Digits 2 digits bfloat16 ~2 3 digits cfloat(fp8), microfloat ~2-3 7 digits cfloat(fp32), posit<32,2> ~7-8 16 digits cfloat(fp64), double ~16 31 digits dd, dd_cascade ~31 48 digits td_cascade ~48 64 digits qd, qd_cascade ~64 Exact (decimal) dfixpnt Configurable (ndigits) Exact rational, integer, quire Unlimited (within nbits)
Every number system is header-only. Include the type and start computing:
#include < universal/number/posit/posit.hpp > // or any type
using namespace sw::universal;
// Plug-in replacement pattern
Real my_algorithm (Real a , Real b ) {
return (a + b) * (a - b);
// Use with any Universal type
auto r1 = my_algorithm ( posit < 32 , 2 >( 3.0 ), posit < 32 , 2 >( 4.0 ));
auto r2 = my_algorithm ( cfloat < 16 , 5 , uint16_t , true , false , false >( 3.0 ),
cfloat < 16 , 5 , uint16_t , true , false , false >( 4.0 ));
auto r3 = my_algorithm ( dd ( 3.0 ), dd ( 4.0 ));
For detailed usage patterns, see the api/api.cpp test file in each number system’s regression test directory under static/.