diff --git a/docs/NOW.md b/docs/NOW.md index f9a832a58..0f04b2add 100644 --- a/docs/NOW.md +++ b/docs/NOW.md @@ -30,6 +30,13 @@ Last updated: 2026-06-14 - **Why** this closes the last mile of the seal workflow without weakening the honest-by-design model: regeneration still goes through `nmse_gf16.py --seal`, which only seals when the live compiler hashes to FROZEN_HASH (`compute_seal()` never fabricates), so the script makes resealing one-command and auditable but NOT automatic. Not wired into CI; never run by any required check. Verified: the no-TTY, env-not-set, and typed-not-`yes` paths all abort with FROZEN_HASH and the manifest byte-for-byte unchanged (confirmed via sha256 before/after). L6 gf16 SSOT untouched; catalog stays 83; no gen/ edits; ASCII-only added lines; no quality claim added. Closes #1117. - **Anchor**: phi^2 + phi^-2 = 3 +## untrack-stale-gen-numeric-catalog -- remove the committed gen/numeric catalog artifacts that drift against the SSOT (Closes #1120) + +- **WHERE**: deletes the 16 tracked codegen artifacts under `gen/numeric/` (formats_catalog.{md,json,py,rs,h,hpp,ts,go,zig,swift,kt,vh,ml} + FormatsCatalog.{hs,java,jl}). No spec, tool, or test file is changed. +- **WHAT**: issue #1120 reported that the committed `gen/numeric/formats_catalog.json` declared 77 formats while the SSOT `specs/numeric/formats_catalog.t27` carries 83 (`grep -c '// CATALOG:'` == 83 on this HEAD), a delta of 6 (the GoldenFloat rungs gf10/gf14/gf48/gf96/gf512/gf1024) plus 15 field mismatches, including a substantive numeric one: gf128 stored e_bits=48/m_bits=79 in the stale committed file vs the SSOT-correct e_bits=49/m_bits=78 (the SSOT line annotates "corrects v1.1 typo e=48"). Root cause: the committed artifacts are a pre-correction codegen snapshot that was never refreshed, and the repo constitution (L2 GENERATION) treats `gen/` as DERIVED and never hand-committed -- `gen/` is in `.gitignore` (line 6), and the catalog-count gate regenerates fresh into a temp dir rather than diffing the committed file. The 16 artifacts were historically force-added into tracking, which is the only reason they can drift at all. This PR removes them from tracking (status D, which the L2 gate permits -- it blocks only M under gen/). After this change, a fresh `python3 tools/gen_formats_catalog.py specs/numeric/formats_catalog.t27 ` is the single source of these files, so the 83-vs-77 drift class can no longer exist. +- **Why** nothing reads the committed `gen/numeric/formats_catalog.json` at build, test, or CI time (only the codegen tool references its own output path in a comment), so deleting it is non-breaking; and an independent second-implementation diff (a from-scratch Rust SSOT-vs-gen oracle, run locally) confirmed DIVERGENCE on the stale committed file (exit 2) and CLEAN on a fresh regen (exit 0, SSOT == gen == 83, gf128 e=49/m=78), proving the drift was real and that regeneration resolves it. L6 gf16 SSOT untouched; catalog stays 83; no gen/ edits (deletions only); ASCII-only added lines; no quality claim added. Closes #1120. +- **Anchor**: phi^2 + phi^-2 = 3 + ## warnings-baseline-meter -- advisory non-test build-warning meter for the #969 audit (Closes #1116) diff --git a/gen/numeric/FormatsCatalog.hs b/gen/numeric/FormatsCatalog.hs deleted file mode 100644 index 2bfc1bcf0..000000000 --- a/gen/numeric/FormatsCatalog.hs +++ /dev/null @@ -1,106 +0,0 @@ --- Generated from formats_catalog.t27. Do not edit by hand. --- SPDX-License-Identifier: Apache-2.0 -{-# LANGUAGE OverloadedStrings #-} -module T27.FormatsCatalog (Format(..), formats) where - -import Data.Int (Int64) -import Data.Word (Word32) - -data Format = Format - { fId :: String - , fName :: String - , fBits :: Word32 - , fSBits :: Word32 - , fEBits :: Word32 - , fMBits :: Word32 - , fBias :: Int64 - , fPhiDistance :: Double -- -1.0 == undefined - , fStorage :: String - , fCluster :: String - , fStatus :: String - , fStandard :: String - , fUseCase :: String - , fGFRelation :: String - , fSource :: String - } deriving (Show, Eq) - -formats :: [Format] -formats = - [ Format "binary16" "binary16 (fp16, half)" 16 1 5 10 15 (0.118) "u16" "Ieee754Binary" "Verified" "IEEE 754-2008" "GPU activations, inference" "competitor" "IEEE 754-2008" - , Format "binary32" "binary32 (fp32, single)" 32 1 8 23 127 (0.27) "u32" "Ieee754Binary" "Verified" "IEEE 754-1985" "industry default" "competitor" "IEEE 754-1985" - , Format "binary64" "binary64 (fp64, double)" 64 1 11 52 1023 (0.406) "u64" "Ieee754Binary" "Verified" "IEEE 754-1985" "scientific computing" "competitor" "IEEE 754-1985" - , Format "binary128" "binary128 (fp128, quad)" 128 1 15 112 16383 (0.484) "u128" "Ieee754Binary" "Verified" "IEEE 754-2008" "high-precision simulations" "competitor" "IEEE 754-2008" - , Format "binary256" "binary256 (octuple)" 256 1 19 236 262143 (0.538) "u256_software" "Ieee754Binary" "Verified" "IEEE 754-2008" "astronomy, cryptography" "competitor" "IEEE 754-2008" - , Format "decimal32" "decimal32" 32 1 11 20 101 (-1.0) "u32" "Ieee754Decimal" "Verified" "IEEE 754-2008 (DPD/BID)" "banking, GAAP" "orthogonal" "IEEE 754-2008" - , Format "decimal64" "decimal64" 64 1 13 50 398 (-1.0) "u64" "Ieee754Decimal" "Verified" "IEEE 754-2008" "financial databases" "orthogonal" "IEEE 754-2008" - , Format "decimal128" "decimal128" 128 1 17 110 6176 (-1.0) "u128" "Ieee754Decimal" "Verified" "IEEE 754-2008" "audit ledgers" "orthogonal" "IEEE 754-2008" - , Format "x87_fp80" "x87 FP80" 80 1 15 64 16383 (-1.0) "u80_padded" "ExtendedFloat" "Historical" "Intel x87 (explicit integer bit)" "legacy long double on x86" "orthogonal" "Intel SDM" - , Format "double_double" "double-double" 128 2 22 104 0 (-1.0) "two_u64" "ExtendedFloat" "Verified" "Bailey/Hida (software)" "software extended precision" "orthogonal" "Bailey-Hida 2001" - , Format "quad_double" "quad-double" 256 4 44 208 0 (-1.0) "four_u64" "ExtendedFloat" "Verified" "Bailey/Hida (software)" "astrophysics, quad-precision sims" "orthogonal" "Bailey-Hida 2001" - , Format "bfloat16" "bfloat16 (BF16)" 16 1 8 7 127 (0.525) "u16" "MlLowPrecision" "Verified" "Google Brain" "training (range > precision)" "competitor" "Wang-Kanwar 2019" - , Format "tf32" "TensorFloat-32 (TF32)" 19 1 8 10 127 (0.27) "u32_padded" "MlLowPrecision" "Verified" "NVIDIA Ampere" "A100/H100 mixed precision" "competitor" "NVIDIA Ampere whitepaper" - , Format "fp8_e4m3" "FP8 E4M3" 8 1 4 3 7 (0.715) "u8" "MlLowPrecision" "Verified" "OCP / NVIDIA / Arm / Intel" "inference, gradient ranges" "competitor" "Micikevicius 2022 (arXiv:2209.05433)" - , Format "fp8_e5m2" "FP8 E5M2" 8 1 5 2 15 (1.882) "u8" "MlLowPrecision" "Verified" "OCP / NVIDIA" "activations, wide range" "competitor" "Micikevicius 2022" - , Format "fp6_e3m2" "FP6 E3M2" 6 1 3 2 3 (0.882) "u8_packed" "MlLowPrecision" "Verified" "OCP MX" "aggressive quant inference" "competitor" "OCP MX v1.0 (2023)" - , Format "fp6_e2m3" "FP6 E2M3" 6 1 2 3 1 (0.049) "u8_packed" "MlLowPrecision" "Verified" "OCP MX" "mantissa-heavy quant" "ally" "OCP MX v1.0 (2023)" - , Format "fp4_e2m1" "FP4 E2M1" 4 1 2 1 1 (1.382) "u8_packed" "MlLowPrecision" "Verified" "OCP MX" "extreme quant inference" "competitor" "OCP MX v1.0 (2023)" - , Format "mxfp8" "MXFP8" 8 1 4 3 7 (0.715) "u8_plus_shared_e8m0" "Microscaling" "Verified" "OCP MX v1.0" "LLM inference" "ally" "Rouhani 2023 (arXiv:2310.10537)" - , Format "mxfp6" "MXFP6" 6 1 3 2 3 (0.882) "u8_packed_plus_e8m0" "Microscaling" "Verified" "OCP MX v1.0" "aggressive inference" "ally" "Rouhani 2023" - , Format "mxfp4" "MXFP4" 4 1 2 1 1 (1.382) "u8_packed_plus_e8m0" "Microscaling" "Verified" "OCP MX v1.0" "extreme quant" "ally" "Rouhani 2023" - , Format "nf4" "NF4 (NormalFloat 4-bit)" 4 0 0 4 0 (-1.0) "u8_packed" "QuantTuned" "Verified" "Dettmers 2023 (QLoRA)" "LLM weight quantization (quantile-based on N(0,1))" "orthogonal" "Dettmers 2023 (arXiv:2305.14314)" - , Format "afp" "AFP (Adaptive Floating-Point)" 16 1 8 7 127 (-1.0) "u16_plus_tensor_shift" "QuantTuned" "Verified" "Tambe 2020" "efficient training" "orthogonal" "Tambe 2020 (DAC)" - , Format "posit8" "Posit8" 8 1 2 0 0 (-1.0) "u8" "PositUnumIII" "Verified" "Posit Standard 2022 (es=2)" "inference" "ally" "Posit Standard 2022 (posithub.org)" - , Format "posit16" "Posit16" 16 1 2 0 0 (-1.0) "u16" "PositUnumIII" "Verified" "Posit Standard 2022 (es=2)" "mixed-precision training" "ally" "Posit Standard 2022" - , Format "posit32" "Posit32" 32 1 2 0 0 (-1.0) "u32" "PositUnumIII" "Verified" "Posit Standard 2022 (es=2)" "f32 replacement" "ally" "Posit Standard 2022" - , Format "posit64" "Posit64" 64 1 2 0 0 (-1.0) "u64" "PositUnumIII" "Verified" "Posit Standard 2022 (es=2)" "f64 replacement" "ally" "Posit Standard 2022" - , Format "takum8" "takum8" 8 1 0 0 0 (-1.0) "u8" "PositUnumIII" "Verified" "Hunhold 2024 (tapered-precision)" "IEEE-754 backward-compatible tapered" "ally" "Hunhold 2024 (arXiv:2412.20273)" - , Format "takum16" "takum16" 16 1 0 0 0 (-1.0) "u16" "PositUnumIII" "Verified" "Hunhold 2024" "single-rule ladder counterexample" "ally" "Hunhold 2024 (arXiv:2412.20273)" - , Format "takum32" "takum32" 32 1 0 0 0 (-1.0) "u32" "PositUnumIII" "Verified" "Hunhold 2024" "tapered fp32-class" "ally" "Hunhold 2024" - , Format "takum64" "takum64" 64 1 0 0 0 (-1.0) "u64" "PositUnumIII" "Verified" "Hunhold 2024" "tapered fp64-class" "ally" "Hunhold 2024" - , Format "lns8" "LNS-8" 8 1 7 0 0 (-1.0) "u8" "Lns" "Verified" "Arnold 1990; LNS-Madam (2021)" "DSP, signal processing" "orthogonal" "Alam 2021 (arXiv:2106.13914)" - , Format "lns16" "LNS-16" 16 1 15 0 0 (-1.0) "u16" "Lns" "Verified" "LNS-Madam (2021)" "log-domain training (mul -> add)" "orthogonal" "Alam 2021" - , Format "lns32" "LNS-32" 32 1 31 0 0 (-1.0) "u32" "Lns" "Verified" "LNS-Madam (2021)" "log-domain DSP" "orthogonal" "Alam 2021" - , Format "lns64" "LNS-64" 64 1 63 0 0 (-1.0) "u64" "Lns" "Verified" "LNS-Madam (2021)" "scientific log-domain" "orthogonal" "Alam 2021" - , Format "gfternary" "GFTernary" 2 1 0 2 0 (0.0) "u2" "GoldenFloat" "Verified" "this work; {-phi, 0, +phi}" "bulk layers (hybrid)" "self" "BENCH-007" - , Format "gf4" "GF4" 4 1 1 2 0 (0.118) "u8" "GoldenFloat" "Experimental" "this work; F0 minimal" "proof-of-concept" "self" "specs/numeric/gf4.t27" - , Format "gf8" "GF8" 8 1 3 4 3 (0.132) "u8" "GoldenFloat" "Verified" "this work; L1 Lucas" "edge / sensors" "self" "BENCH-007 (specs/numeric/gf8.t27)" - , Format "gf12" "GF12" 12 1 4 7 7 (0.047) "u16" "GoldenFloat" "Verified" "this work; L0/F3" "mid-range / audio" "self" "BENCH-007 (specs/numeric/gf12.t27)" - , Format "gf16" "GF16" 16 1 6 9 31 (0.049) "u16" "GoldenFloat" "Verified" "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7" "training and inference (production)" "self" "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)" - , Format "gf20" "GF20" 20 1 7 12 63 (0.035) "u32" "GoldenFloat" "Experimental" "this work; 17-squared empirical PHI_BIAS=289" "high-precision edge" "self" "specs/numeric/gf20.t27 (spec only)" - , Format "gf24" "GF24" 24 1 9 14 255 (0.025) "u32" "GoldenFloat" "Experimental" "this work; L15 PHI_BIAS=1364" "server inference" "self" "specs/numeric/gf24.t27 (spec only)" - , Format "gf32" "GF32" 32 1 12 19 2047 (0.014) "u32" "GoldenFloat" "Verified" "this work; F0 resolved" "fp32 drop-in" "self" "BENCH-012 (specs/numeric/gf32.t27)" - , Format "gf64" "GF64" 64 1 24 39 8388607 (0.003) "u64" "GoldenFloat" "Verified" "this work; EXP_MAX - BIAS" "scientific / double" "self" "BENCH-007b (specs/numeric/gf64.t27)" - , Format "gf6" "GF6 (predicted)" 6 1 2 3 1 (0.05) "u8_packed" "GoldenFloat" "Experimental" "this work; e=round(5/phi^2)=2, fills FP6 gap" "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint" "experimental" "section12.5" - , Format "gf128" "GF128 (predicted)" 128 1 48 79 0 (0.008) "u128" "GoldenFloat" "Experimental" "this work; e=round(127/phi^2)=48 (Open: bias TBD)" "OPEN R&D: phi-aligned binary128 alternative" "experimental" "section12.5" - , Format "gf256" "GF256 (predicted)" 256 1 97 158 0 (0.005) "u256_software" "GoldenFloat" "Experimental" "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)" "OPEN R&D: phi-aligned binary256 alternative" "experimental" "section12.5; bias Open per skill" - , Format "gf8_bfp" "GF8-BFP (block FP atop GF8)" 8 1 3 4 3 (0.132) "u8_plus_shared_exp" "GoldenFloat" "Experimental" "this work; per-tile shared exponent" "OPEN R&D: LLM-quantization-friendly GF8" "experimental" "section12.5" - , Format "gf_lns_hybrid" "GF + LNS hybrid (dual-space)" 16 1 6 9 31 (0.049) "u16_plus_lns_path" "GoldenFloat" "Experimental" "this work; mul in log-space, accumulate Lucas-closed" "OPEN R&D: dual-space arithmetic" "experimental" "section12.5" - , Format "mxgf6" "MXGF6 (microscaling GF6)" 6 1 2 3 1 (0.05) "u8_packed_plus_e8m0" "GoldenFloat" "Experimental" "this work; OCP MX block + GF6" "OPEN R&D: phi-aligned MX-6 candidate" "experimental" "section12.5" - , Format "mxgf4" "MXGF4 (microscaling GF4)" 4 1 1 2 0 (0.118) "u8_packed_plus_e8m0" "GoldenFloat" "Experimental" "this work; OCP MX block + GF4" "OPEN R&D: phi-aligned MX-4 candidate" "experimental" "section12.5" - , Format "int4" "INT4 / UINT4" 4 1 0 3 0 (-1.0) "u8_packed" "IntegerFixed" "Verified" "two complement" "aggressive quantization" "competitor" "ISO/IEC 9899" - , Format "int8" "INT8 / UINT8" 8 1 0 7 0 (-1.0) "u8" "IntegerFixed" "Verified" "two complement" "INT8 inference, per-channel scale" "competitor" "ISO/IEC 9899" - , Format "int16" "INT16 / UINT16" 16 1 0 15 0 (-1.0) "u16" "IntegerFixed" "Verified" "two complement" "DSP, embedded ML" "competitor" "ISO/IEC 9899" - , Format "int32" "INT32 / UINT32" 32 1 0 31 0 (-1.0) "u32" "IntegerFixed" "Verified" "two complement" "general CPU integer" "competitor" "ISO/IEC 9899" - , Format "int64" "INT64 / UINT64" 64 1 0 63 0 (-1.0) "u64" "IntegerFixed" "Verified" "two complement" "databases, timestamps" "competitor" "ISO/IEC 9899" - , Format "int128" "INT128 / UINT128" 128 1 0 127 0 (-1.0) "u128" "IntegerFixed" "Verified" "two complement" "crypto, big-int" "competitor" "Rust/Clang u128" - , Format "q_format" "Q-format (Qm.n)" 0 1 0 0 0 (-1.0) "varies" "IntegerFixed" "Verified" "TI fixed-point" "audio DSP, fixed-point ML" "orthogonal" "TI SPRA704" - , Format "bcd" "BCD (binary-coded decimal)" 0 0 0 0 0 (-1.0) "u4_per_digit" "IntegerFixed" "Historical" "IBM 1959" "calculators, GAAP" "orthogonal" "ISO/IEC 8859" - , Format "ibm_hfp32" "IBM HFP (single)" 32 1 7 24 64 (-1.0) "u32" "HistoricalVendor" "Historical" "IBM System/360 (1964); base-16 exponent" "legacy mainframe" "orthogonal" "IBM POO" - , Format "ibm_hfp64" "IBM HFP (double)" 64 1 7 56 64 (-1.0) "u64" "HistoricalVendor" "Historical" "IBM System/360 (1964)" "legacy mainframe" "orthogonal" "IBM POO" - , Format "ibm_hfp128" "IBM HFP (extended)" 128 1 7 120 64 (-1.0) "u128" "HistoricalVendor" "Historical" "IBM z/Architecture" "legacy mainframe" "orthogonal" "IBM POO" - , Format "ms_mbf32" "Microsoft MBF (single)" 32 1 8 23 129 (-1.0) "u32" "HistoricalVendor" "Historical" "MS BASIC / MS-DOS (pre-IEEE)" "MS BASIC legacy" "orthogonal" "MS-DOS docs" - , Format "ms_mbf64" "Microsoft MBF (double)" 64 1 8 55 129 (-1.0) "u64" "HistoricalVendor" "Historical" "MS BASIC" "MS BASIC legacy" "orthogonal" "MS-DOS docs" - , Format "vax_f" "VAX F-float" 32 1 8 23 128 (-1.0) "u32" "HistoricalVendor" "Historical" "DEC VAX" "DEC legacy" "orthogonal" "VAX Architecture Reference" - , Format "vax_d" "VAX D-float" 64 1 8 55 128 (-1.0) "u64" "HistoricalVendor" "Historical" "DEC VAX" "DEC legacy double" "orthogonal" "VAX Architecture Reference" - , Format "vax_g" "VAX G-float" 64 1 11 52 1024 (-1.0) "u64" "HistoricalVendor" "Historical" "DEC VAX (IEEE-like)" "DEC legacy" "orthogonal" "VAX Architecture Reference" - , Format "vax_h" "VAX H-float" 128 1 15 112 16384 (-1.0) "u128" "HistoricalVendor" "Historical" "DEC VAX" "DEC quad" "orthogonal" "VAX Architecture Reference" - , Format "cray_float" "Cray float" 64 1 15 48 16384 (-1.0) "u64" "HistoricalVendor" "Historical" "Cray-1 (1976); no NaN/Inf, unrounded mul" "Cray legacy" "orthogonal" "Cray-1 Hardware Reference" - , Format "minifloat" "minifloat (arbitrary E:M, <=16 bits)" 0 1 0 0 0 (-1.0) "varies" "Theoretical" "Experimental" "parametric framework" "design space of GF4/GF8/GF12/GF16" "ally" "Higham 1996" - , Format "unum_i" "Unum I (tapered + ubound)" 0 1 0 0 0 (-1.0) "varies" "Theoretical" "Experimental" "Gustafson 2015 (predecessor to posit)" "interval arithmetic" "ally" "Gustafson 2015 (The End of Error)" - , Format "unum_ii" "Unum II (SORN projective)" 0 0 0 0 0 (-1.0) "lookup_table" "Theoretical" "Experimental" "Gustafson 2016" "lookup-table real arithmetic; not GF-comparable" "orthogonal" "Gustafson 2016" - , Format "tapered_fp" "tapered floating point" 0 1 0 0 0 (-1.0) "varies" "Theoretical" "Experimental" "Morris 1971; posit ancestor" "variable mantissa via regime bits" "ally" "Morris 1971 (IEEE TC)" - , Format "block_fp" "block floating point (BFP)" 0 0 0 0 0 (-1.0) "varies" "CompressionTrick" "Verified" "Wilkinson 1965; modern revivals" "per-tile shared exponent" "ally" "Darvish-Rouhani 2020" - , Format "shared_exp" "shared-exponent formats" 0 0 0 0 0 (-1.0) "varies" "CompressionTrick" "Verified" "generalised BFP" "LLM quantization" "ally" "Darvish-Rouhani 2020" - , Format "per_channel_scale" "INT8 with per-channel scale" 8 1 0 7 0 (-1.0) "u8_plus_fp32_scale" "CompressionTrick" "Verified" "Jacob 2018 (TFLite)" "standard quant inference" "competitor" "Jacob 2018 (CVPR)" - , Format "stochastic_rounding" "stochastic rounding (technique)" 0 0 0 0 0 (-1.0) "varies" "CompressionTrick" "Verified" "Gupta 2015" "training small networks at low precision" "ally" "Gupta 2015 (ICML)" - ] diff --git a/gen/numeric/FormatsCatalog.java b/gen/numeric/FormatsCatalog.java deleted file mode 100644 index 2aeac815d..000000000 --- a/gen/numeric/FormatsCatalog.java +++ /dev/null @@ -1,128 +0,0 @@ -// Generated from formats_catalog.t27. Do not edit by hand. -// SPDX-License-Identifier: Apache-2.0 -package ai.t27.numeric; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -public final class FormatsCatalog { - private FormatsCatalog() {} - - public static final class Format { - public final String id; - public final String name; - public final long bits; - public final long sBits; - public final long eBits; - public final long mBits; - public final long bias; - public final double phiDistance; - public final String storage; - public final String cluster; - public final String status; - public final String standard; - public final String useCase; - public final String gfRelation; - public final String source; - public Format(String id, String name, - long bits, long sBits, long eBits, long mBits, - long bias, double phiDistance, - String storage, String cluster, String status, - String standard, String useCase, - String gfRelation, String source) { - this.id = id; this.name = name; - this.bits = bits; this.sBits = sBits; - this.eBits = eBits; this.mBits = mBits; - this.bias = bias; this.phiDistance = phiDistance; - this.storage = storage; this.cluster = cluster; - this.status = status; this.standard = standard; - this.useCase = useCase; this.gfRelation = gfRelation; - this.source = source; - } - } - - public static final List FORMATS; - static { - Format[] arr = new Format[] { - new Format("binary16", "binary16 (fp16, half)", 16L, 1L, 5L, 10L, 15L, 0.118, "u16", "Ieee754Binary", "Verified", "IEEE 754-2008", "GPU activations, inference", "competitor", "IEEE 754-2008"), - new Format("binary32", "binary32 (fp32, single)", 32L, 1L, 8L, 23L, 127L, 0.27, "u32", "Ieee754Binary", "Verified", "IEEE 754-1985", "industry default", "competitor", "IEEE 754-1985"), - new Format("binary64", "binary64 (fp64, double)", 64L, 1L, 11L, 52L, 1023L, 0.406, "u64", "Ieee754Binary", "Verified", "IEEE 754-1985", "scientific computing", "competitor", "IEEE 754-1985"), - new Format("binary128", "binary128 (fp128, quad)", 128L, 1L, 15L, 112L, 16383L, 0.484, "u128", "Ieee754Binary", "Verified", "IEEE 754-2008", "high-precision simulations", "competitor", "IEEE 754-2008"), - new Format("binary256", "binary256 (octuple)", 256L, 1L, 19L, 236L, 262143L, 0.538, "u256_software", "Ieee754Binary", "Verified", "IEEE 754-2008", "astronomy, cryptography", "competitor", "IEEE 754-2008"), - new Format("decimal32", "decimal32", 32L, 1L, 11L, 20L, 101L, -1.0, "u32", "Ieee754Decimal", "Verified", "IEEE 754-2008 (DPD/BID)", "banking, GAAP", "orthogonal", "IEEE 754-2008"), - new Format("decimal64", "decimal64", 64L, 1L, 13L, 50L, 398L, -1.0, "u64", "Ieee754Decimal", "Verified", "IEEE 754-2008", "financial databases", "orthogonal", "IEEE 754-2008"), - new Format("decimal128", "decimal128", 128L, 1L, 17L, 110L, 6176L, -1.0, "u128", "Ieee754Decimal", "Verified", "IEEE 754-2008", "audit ledgers", "orthogonal", "IEEE 754-2008"), - new Format("x87_fp80", "x87 FP80", 80L, 1L, 15L, 64L, 16383L, -1.0, "u80_padded", "ExtendedFloat", "Historical", "Intel x87 (explicit integer bit)", "legacy long double on x86", "orthogonal", "Intel SDM"), - new Format("double_double", "double-double", 128L, 2L, 22L, 104L, 0L, -1.0, "two_u64", "ExtendedFloat", "Verified", "Bailey/Hida (software)", "software extended precision", "orthogonal", "Bailey-Hida 2001"), - new Format("quad_double", "quad-double", 256L, 4L, 44L, 208L, 0L, -1.0, "four_u64", "ExtendedFloat", "Verified", "Bailey/Hida (software)", "astrophysics, quad-precision sims", "orthogonal", "Bailey-Hida 2001"), - new Format("bfloat16", "bfloat16 (BF16)", 16L, 1L, 8L, 7L, 127L, 0.525, "u16", "MlLowPrecision", "Verified", "Google Brain", "training (range > precision)", "competitor", "Wang-Kanwar 2019"), - new Format("tf32", "TensorFloat-32 (TF32)", 19L, 1L, 8L, 10L, 127L, 0.27, "u32_padded", "MlLowPrecision", "Verified", "NVIDIA Ampere", "A100/H100 mixed precision", "competitor", "NVIDIA Ampere whitepaper"), - new Format("fp8_e4m3", "FP8 E4M3", 8L, 1L, 4L, 3L, 7L, 0.715, "u8", "MlLowPrecision", "Verified", "OCP / NVIDIA / Arm / Intel", "inference, gradient ranges", "competitor", "Micikevicius 2022 (arXiv:2209.05433)"), - new Format("fp8_e5m2", "FP8 E5M2", 8L, 1L, 5L, 2L, 15L, 1.882, "u8", "MlLowPrecision", "Verified", "OCP / NVIDIA", "activations, wide range", "competitor", "Micikevicius 2022"), - new Format("fp6_e3m2", "FP6 E3M2", 6L, 1L, 3L, 2L, 3L, 0.882, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "aggressive quant inference", "competitor", "OCP MX v1.0 (2023)"), - new Format("fp6_e2m3", "FP6 E2M3", 6L, 1L, 2L, 3L, 1L, 0.049, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "mantissa-heavy quant", "ally", "OCP MX v1.0 (2023)"), - new Format("fp4_e2m1", "FP4 E2M1", 4L, 1L, 2L, 1L, 1L, 1.382, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "extreme quant inference", "competitor", "OCP MX v1.0 (2023)"), - new Format("mxfp8", "MXFP8", 8L, 1L, 4L, 3L, 7L, 0.715, "u8_plus_shared_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "LLM inference", "ally", "Rouhani 2023 (arXiv:2310.10537)"), - new Format("mxfp6", "MXFP6", 6L, 1L, 3L, 2L, 3L, 0.882, "u8_packed_plus_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "aggressive inference", "ally", "Rouhani 2023"), - new Format("mxfp4", "MXFP4", 4L, 1L, 2L, 1L, 1L, 1.382, "u8_packed_plus_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "extreme quant", "ally", "Rouhani 2023"), - new Format("nf4", "NF4 (NormalFloat 4-bit)", 4L, 0L, 0L, 4L, 0L, -1.0, "u8_packed", "QuantTuned", "Verified", "Dettmers 2023 (QLoRA)", "LLM weight quantization (quantile-based on N(0,1))", "orthogonal", "Dettmers 2023 (arXiv:2305.14314)"), - new Format("afp", "AFP (Adaptive Floating-Point)", 16L, 1L, 8L, 7L, 127L, -1.0, "u16_plus_tensor_shift", "QuantTuned", "Verified", "Tambe 2020", "efficient training", "orthogonal", "Tambe 2020 (DAC)"), - new Format("posit8", "Posit8", 8L, 1L, 2L, 0L, 0L, -1.0, "u8", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "inference", "ally", "Posit Standard 2022 (posithub.org)"), - new Format("posit16", "Posit16", 16L, 1L, 2L, 0L, 0L, -1.0, "u16", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "mixed-precision training", "ally", "Posit Standard 2022"), - new Format("posit32", "Posit32", 32L, 1L, 2L, 0L, 0L, -1.0, "u32", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "f32 replacement", "ally", "Posit Standard 2022"), - new Format("posit64", "Posit64", 64L, 1L, 2L, 0L, 0L, -1.0, "u64", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "f64 replacement", "ally", "Posit Standard 2022"), - new Format("takum8", "takum8", 8L, 1L, 0L, 0L, 0L, -1.0, "u8", "PositUnumIII", "Verified", "Hunhold 2024 (tapered-precision)", "IEEE-754 backward-compatible tapered", "ally", "Hunhold 2024 (arXiv:2412.20273)"), - new Format("takum16", "takum16", 16L, 1L, 0L, 0L, 0L, -1.0, "u16", "PositUnumIII", "Verified", "Hunhold 2024", "single-rule ladder counterexample", "ally", "Hunhold 2024 (arXiv:2412.20273)"), - new Format("takum32", "takum32", 32L, 1L, 0L, 0L, 0L, -1.0, "u32", "PositUnumIII", "Verified", "Hunhold 2024", "tapered fp32-class", "ally", "Hunhold 2024"), - new Format("takum64", "takum64", 64L, 1L, 0L, 0L, 0L, -1.0, "u64", "PositUnumIII", "Verified", "Hunhold 2024", "tapered fp64-class", "ally", "Hunhold 2024"), - new Format("lns8", "LNS-8", 8L, 1L, 7L, 0L, 0L, -1.0, "u8", "Lns", "Verified", "Arnold 1990; LNS-Madam (2021)", "DSP, signal processing", "orthogonal", "Alam 2021 (arXiv:2106.13914)"), - new Format("lns16", "LNS-16", 16L, 1L, 15L, 0L, 0L, -1.0, "u16", "Lns", "Verified", "LNS-Madam (2021)", "log-domain training (mul -> add)", "orthogonal", "Alam 2021"), - new Format("lns32", "LNS-32", 32L, 1L, 31L, 0L, 0L, -1.0, "u32", "Lns", "Verified", "LNS-Madam (2021)", "log-domain DSP", "orthogonal", "Alam 2021"), - new Format("lns64", "LNS-64", 64L, 1L, 63L, 0L, 0L, -1.0, "u64", "Lns", "Verified", "LNS-Madam (2021)", "scientific log-domain", "orthogonal", "Alam 2021"), - new Format("gfternary", "GFTernary", 2L, 1L, 0L, 2L, 0L, 0.0, "u2", "GoldenFloat", "Verified", "this work; {-phi, 0, +phi}", "bulk layers (hybrid)", "self", "BENCH-007"), - new Format("gf4", "GF4", 4L, 1L, 1L, 2L, 0L, 0.118, "u8", "GoldenFloat", "Experimental", "this work; F0 minimal", "proof-of-concept", "self", "specs/numeric/gf4.t27"), - new Format("gf8", "GF8", 8L, 1L, 3L, 4L, 3L, 0.132, "u8", "GoldenFloat", "Verified", "this work; L1 Lucas", "edge / sensors", "self", "BENCH-007 (specs/numeric/gf8.t27)"), - new Format("gf12", "GF12", 12L, 1L, 4L, 7L, 7L, 0.047, "u16", "GoldenFloat", "Verified", "this work; L0/F3", "mid-range / audio", "self", "BENCH-007 (specs/numeric/gf12.t27)"), - new Format("gf16", "GF16", 16L, 1L, 6L, 9L, 31L, 0.049, "u16", "GoldenFloat", "Verified", "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7", "training and inference (production)", "self", "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)"), - new Format("gf20", "GF20", 20L, 1L, 7L, 12L, 63L, 0.035, "u32", "GoldenFloat", "Experimental", "this work; 17-squared empirical PHI_BIAS=289", "high-precision edge", "self", "specs/numeric/gf20.t27 (spec only)"), - new Format("gf24", "GF24", 24L, 1L, 9L, 14L, 255L, 0.025, "u32", "GoldenFloat", "Experimental", "this work; L15 PHI_BIAS=1364", "server inference", "self", "specs/numeric/gf24.t27 (spec only)"), - new Format("gf32", "GF32", 32L, 1L, 12L, 19L, 2047L, 0.014, "u32", "GoldenFloat", "Verified", "this work; F0 resolved", "fp32 drop-in", "self", "BENCH-012 (specs/numeric/gf32.t27)"), - new Format("gf64", "GF64", 64L, 1L, 24L, 39L, 8388607L, 0.003, "u64", "GoldenFloat", "Verified", "this work; EXP_MAX - BIAS", "scientific / double", "self", "BENCH-007b (specs/numeric/gf64.t27)"), - new Format("gf6", "GF6 (predicted)", 6L, 1L, 2L, 3L, 1L, 0.05, "u8_packed", "GoldenFloat", "Experimental", "this work; e=round(5/phi^2)=2, fills FP6 gap", "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint", "experimental", "section12.5"), - new Format("gf128", "GF128 (predicted)", 128L, 1L, 48L, 79L, 0L, 0.008, "u128", "GoldenFloat", "Experimental", "this work; e=round(127/phi^2)=48 (Open: bias TBD)", "OPEN R&D: phi-aligned binary128 alternative", "experimental", "section12.5"), - new Format("gf256", "GF256 (predicted)", 256L, 1L, 97L, 158L, 0L, 0.005, "u256_software", "GoldenFloat", "Experimental", "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)", "OPEN R&D: phi-aligned binary256 alternative", "experimental", "section12.5; bias Open per skill"), - new Format("gf8_bfp", "GF8-BFP (block FP atop GF8)", 8L, 1L, 3L, 4L, 3L, 0.132, "u8_plus_shared_exp", "GoldenFloat", "Experimental", "this work; per-tile shared exponent", "OPEN R&D: LLM-quantization-friendly GF8", "experimental", "section12.5"), - new Format("gf_lns_hybrid", "GF + LNS hybrid (dual-space)", 16L, 1L, 6L, 9L, 31L, 0.049, "u16_plus_lns_path", "GoldenFloat", "Experimental", "this work; mul in log-space, accumulate Lucas-closed", "OPEN R&D: dual-space arithmetic", "experimental", "section12.5"), - new Format("mxgf6", "MXGF6 (microscaling GF6)", 6L, 1L, 2L, 3L, 1L, 0.05, "u8_packed_plus_e8m0", "GoldenFloat", "Experimental", "this work; OCP MX block + GF6", "OPEN R&D: phi-aligned MX-6 candidate", "experimental", "section12.5"), - new Format("mxgf4", "MXGF4 (microscaling GF4)", 4L, 1L, 1L, 2L, 0L, 0.118, "u8_packed_plus_e8m0", "GoldenFloat", "Experimental", "this work; OCP MX block + GF4", "OPEN R&D: phi-aligned MX-4 candidate", "experimental", "section12.5"), - new Format("int4", "INT4 / UINT4", 4L, 1L, 0L, 3L, 0L, -1.0, "u8_packed", "IntegerFixed", "Verified", "two complement", "aggressive quantization", "competitor", "ISO/IEC 9899"), - new Format("int8", "INT8 / UINT8", 8L, 1L, 0L, 7L, 0L, -1.0, "u8", "IntegerFixed", "Verified", "two complement", "INT8 inference, per-channel scale", "competitor", "ISO/IEC 9899"), - new Format("int16", "INT16 / UINT16", 16L, 1L, 0L, 15L, 0L, -1.0, "u16", "IntegerFixed", "Verified", "two complement", "DSP, embedded ML", "competitor", "ISO/IEC 9899"), - new Format("int32", "INT32 / UINT32", 32L, 1L, 0L, 31L, 0L, -1.0, "u32", "IntegerFixed", "Verified", "two complement", "general CPU integer", "competitor", "ISO/IEC 9899"), - new Format("int64", "INT64 / UINT64", 64L, 1L, 0L, 63L, 0L, -1.0, "u64", "IntegerFixed", "Verified", "two complement", "databases, timestamps", "competitor", "ISO/IEC 9899"), - new Format("int128", "INT128 / UINT128", 128L, 1L, 0L, 127L, 0L, -1.0, "u128", "IntegerFixed", "Verified", "two complement", "crypto, big-int", "competitor", "Rust/Clang u128"), - new Format("q_format", "Q-format (Qm.n)", 0L, 1L, 0L, 0L, 0L, -1.0, "varies", "IntegerFixed", "Verified", "TI fixed-point", "audio DSP, fixed-point ML", "orthogonal", "TI SPRA704"), - new Format("bcd", "BCD (binary-coded decimal)", 0L, 0L, 0L, 0L, 0L, -1.0, "u4_per_digit", "IntegerFixed", "Historical", "IBM 1959", "calculators, GAAP", "orthogonal", "ISO/IEC 8859"), - new Format("ibm_hfp32", "IBM HFP (single)", 32L, 1L, 7L, 24L, 64L, -1.0, "u32", "HistoricalVendor", "Historical", "IBM System/360 (1964); base-16 exponent", "legacy mainframe", "orthogonal", "IBM POO"), - new Format("ibm_hfp64", "IBM HFP (double)", 64L, 1L, 7L, 56L, 64L, -1.0, "u64", "HistoricalVendor", "Historical", "IBM System/360 (1964)", "legacy mainframe", "orthogonal", "IBM POO"), - new Format("ibm_hfp128", "IBM HFP (extended)", 128L, 1L, 7L, 120L, 64L, -1.0, "u128", "HistoricalVendor", "Historical", "IBM z/Architecture", "legacy mainframe", "orthogonal", "IBM POO"), - new Format("ms_mbf32", "Microsoft MBF (single)", 32L, 1L, 8L, 23L, 129L, -1.0, "u32", "HistoricalVendor", "Historical", "MS BASIC / MS-DOS (pre-IEEE)", "MS BASIC legacy", "orthogonal", "MS-DOS docs"), - new Format("ms_mbf64", "Microsoft MBF (double)", 64L, 1L, 8L, 55L, 129L, -1.0, "u64", "HistoricalVendor", "Historical", "MS BASIC", "MS BASIC legacy", "orthogonal", "MS-DOS docs"), - new Format("vax_f", "VAX F-float", 32L, 1L, 8L, 23L, 128L, -1.0, "u32", "HistoricalVendor", "Historical", "DEC VAX", "DEC legacy", "orthogonal", "VAX Architecture Reference"), - new Format("vax_d", "VAX D-float", 64L, 1L, 8L, 55L, 128L, -1.0, "u64", "HistoricalVendor", "Historical", "DEC VAX", "DEC legacy double", "orthogonal", "VAX Architecture Reference"), - new Format("vax_g", "VAX G-float", 64L, 1L, 11L, 52L, 1024L, -1.0, "u64", "HistoricalVendor", "Historical", "DEC VAX (IEEE-like)", "DEC legacy", "orthogonal", "VAX Architecture Reference"), - new Format("vax_h", "VAX H-float", 128L, 1L, 15L, 112L, 16384L, -1.0, "u128", "HistoricalVendor", "Historical", "DEC VAX", "DEC quad", "orthogonal", "VAX Architecture Reference"), - new Format("cray_float", "Cray float", 64L, 1L, 15L, 48L, 16384L, -1.0, "u64", "HistoricalVendor", "Historical", "Cray-1 (1976); no NaN/Inf, unrounded mul", "Cray legacy", "orthogonal", "Cray-1 Hardware Reference"), - new Format("minifloat", "minifloat (arbitrary E:M, <=16 bits)", 0L, 1L, 0L, 0L, 0L, -1.0, "varies", "Theoretical", "Experimental", "parametric framework", "design space of GF4/GF8/GF12/GF16", "ally", "Higham 1996"), - new Format("unum_i", "Unum I (tapered + ubound)", 0L, 1L, 0L, 0L, 0L, -1.0, "varies", "Theoretical", "Experimental", "Gustafson 2015 (predecessor to posit)", "interval arithmetic", "ally", "Gustafson 2015 (The End of Error)"), - new Format("unum_ii", "Unum II (SORN projective)", 0L, 0L, 0L, 0L, 0L, -1.0, "lookup_table", "Theoretical", "Experimental", "Gustafson 2016", "lookup-table real arithmetic; not GF-comparable", "orthogonal", "Gustafson 2016"), - new Format("tapered_fp", "tapered floating point", 0L, 1L, 0L, 0L, 0L, -1.0, "varies", "Theoretical", "Experimental", "Morris 1971; posit ancestor", "variable mantissa via regime bits", "ally", "Morris 1971 (IEEE TC)"), - new Format("block_fp", "block floating point (BFP)", 0L, 0L, 0L, 0L, 0L, -1.0, "varies", "CompressionTrick", "Verified", "Wilkinson 1965; modern revivals", "per-tile shared exponent", "ally", "Darvish-Rouhani 2020"), - new Format("shared_exp", "shared-exponent formats", 0L, 0L, 0L, 0L, 0L, -1.0, "varies", "CompressionTrick", "Verified", "generalised BFP", "LLM quantization", "ally", "Darvish-Rouhani 2020"), - new Format("per_channel_scale", "INT8 with per-channel scale", 8L, 1L, 0L, 7L, 0L, -1.0, "u8_plus_fp32_scale", "CompressionTrick", "Verified", "Jacob 2018 (TFLite)", "standard quant inference", "competitor", "Jacob 2018 (CVPR)"), - new Format("stochastic_rounding", "stochastic rounding (technique)", 0L, 0L, 0L, 0L, 0L, -1.0, "varies", "CompressionTrick", "Verified", "Gupta 2015", "training small networks at low precision", "ally", "Gupta 2015 (ICML)") - }; - FORMATS = Collections.unmodifiableList(Arrays.asList(arr)); - } -} diff --git a/gen/numeric/FormatsCatalog.jl b/gen/numeric/FormatsCatalog.jl deleted file mode 100644 index 50d2d84f0..000000000 --- a/gen/numeric/FormatsCatalog.jl +++ /dev/null @@ -1,106 +0,0 @@ -# Generated from formats_catalog.t27. Do not edit by hand. -# SPDX-License-Identifier: Apache-2.0 - -module FormatsCatalog - -export Format, FORMATS - -struct Format - id::String - name::String - bits::UInt32 - s_bits::UInt32 - e_bits::UInt32 - m_bits::UInt32 - bias::Int64 - phi_distance::Float64 # -1.0 == undefined - storage::String - cluster::String - status::String - standard::String - use_case::String - gf_relation::String - source::String -end - -const FORMATS = Format[ - Format("binary16", "binary16 (fp16, half)", UInt32(16), UInt32(1), UInt32(5), UInt32(10), Int64(15), 0.118, "u16", "Ieee754Binary", "Verified", "IEEE 754-2008", "GPU activations, inference", "competitor", "IEEE 754-2008"), - Format("binary32", "binary32 (fp32, single)", UInt32(32), UInt32(1), UInt32(8), UInt32(23), Int64(127), 0.27, "u32", "Ieee754Binary", "Verified", "IEEE 754-1985", "industry default", "competitor", "IEEE 754-1985"), - Format("binary64", "binary64 (fp64, double)", UInt32(64), UInt32(1), UInt32(11), UInt32(52), Int64(1023), 0.406, "u64", "Ieee754Binary", "Verified", "IEEE 754-1985", "scientific computing", "competitor", "IEEE 754-1985"), - Format("binary128", "binary128 (fp128, quad)", UInt32(128), UInt32(1), UInt32(15), UInt32(112), Int64(16383), 0.484, "u128", "Ieee754Binary", "Verified", "IEEE 754-2008", "high-precision simulations", "competitor", "IEEE 754-2008"), - Format("binary256", "binary256 (octuple)", UInt32(256), UInt32(1), UInt32(19), UInt32(236), Int64(262143), 0.538, "u256_software", "Ieee754Binary", "Verified", "IEEE 754-2008", "astronomy, cryptography", "competitor", "IEEE 754-2008"), - Format("decimal32", "decimal32", UInt32(32), UInt32(1), UInt32(11), UInt32(20), Int64(101), -1.0, "u32", "Ieee754Decimal", "Verified", "IEEE 754-2008 (DPD/BID)", "banking, GAAP", "orthogonal", "IEEE 754-2008"), - Format("decimal64", "decimal64", UInt32(64), UInt32(1), UInt32(13), UInt32(50), Int64(398), -1.0, "u64", "Ieee754Decimal", "Verified", "IEEE 754-2008", "financial databases", "orthogonal", "IEEE 754-2008"), - Format("decimal128", "decimal128", UInt32(128), UInt32(1), UInt32(17), UInt32(110), Int64(6176), -1.0, "u128", "Ieee754Decimal", "Verified", "IEEE 754-2008", "audit ledgers", "orthogonal", "IEEE 754-2008"), - Format("x87_fp80", "x87 FP80", UInt32(80), UInt32(1), UInt32(15), UInt32(64), Int64(16383), -1.0, "u80_padded", "ExtendedFloat", "Historical", "Intel x87 (explicit integer bit)", "legacy long double on x86", "orthogonal", "Intel SDM"), - Format("double_double", "double-double", UInt32(128), UInt32(2), UInt32(22), UInt32(104), Int64(0), -1.0, "two_u64", "ExtendedFloat", "Verified", "Bailey/Hida (software)", "software extended precision", "orthogonal", "Bailey-Hida 2001"), - Format("quad_double", "quad-double", UInt32(256), UInt32(4), UInt32(44), UInt32(208), Int64(0), -1.0, "four_u64", "ExtendedFloat", "Verified", "Bailey/Hida (software)", "astrophysics, quad-precision sims", "orthogonal", "Bailey-Hida 2001"), - Format("bfloat16", "bfloat16 (BF16)", UInt32(16), UInt32(1), UInt32(8), UInt32(7), Int64(127), 0.525, "u16", "MlLowPrecision", "Verified", "Google Brain", "training (range > precision)", "competitor", "Wang-Kanwar 2019"), - Format("tf32", "TensorFloat-32 (TF32)", UInt32(19), UInt32(1), UInt32(8), UInt32(10), Int64(127), 0.27, "u32_padded", "MlLowPrecision", "Verified", "NVIDIA Ampere", "A100/H100 mixed precision", "competitor", "NVIDIA Ampere whitepaper"), - Format("fp8_e4m3", "FP8 E4M3", UInt32(8), UInt32(1), UInt32(4), UInt32(3), Int64(7), 0.715, "u8", "MlLowPrecision", "Verified", "OCP / NVIDIA / Arm / Intel", "inference, gradient ranges", "competitor", "Micikevicius 2022 (arXiv:2209.05433)"), - Format("fp8_e5m2", "FP8 E5M2", UInt32(8), UInt32(1), UInt32(5), UInt32(2), Int64(15), 1.882, "u8", "MlLowPrecision", "Verified", "OCP / NVIDIA", "activations, wide range", "competitor", "Micikevicius 2022"), - Format("fp6_e3m2", "FP6 E3M2", UInt32(6), UInt32(1), UInt32(3), UInt32(2), Int64(3), 0.882, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "aggressive quant inference", "competitor", "OCP MX v1.0 (2023)"), - Format("fp6_e2m3", "FP6 E2M3", UInt32(6), UInt32(1), UInt32(2), UInt32(3), Int64(1), 0.049, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "mantissa-heavy quant", "ally", "OCP MX v1.0 (2023)"), - Format("fp4_e2m1", "FP4 E2M1", UInt32(4), UInt32(1), UInt32(2), UInt32(1), Int64(1), 1.382, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "extreme quant inference", "competitor", "OCP MX v1.0 (2023)"), - Format("mxfp8", "MXFP8", UInt32(8), UInt32(1), UInt32(4), UInt32(3), Int64(7), 0.715, "u8_plus_shared_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "LLM inference", "ally", "Rouhani 2023 (arXiv:2310.10537)"), - Format("mxfp6", "MXFP6", UInt32(6), UInt32(1), UInt32(3), UInt32(2), Int64(3), 0.882, "u8_packed_plus_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "aggressive inference", "ally", "Rouhani 2023"), - Format("mxfp4", "MXFP4", UInt32(4), UInt32(1), UInt32(2), UInt32(1), Int64(1), 1.382, "u8_packed_plus_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "extreme quant", "ally", "Rouhani 2023"), - Format("nf4", "NF4 (NormalFloat 4-bit)", UInt32(4), UInt32(0), UInt32(0), UInt32(4), Int64(0), -1.0, "u8_packed", "QuantTuned", "Verified", "Dettmers 2023 (QLoRA)", "LLM weight quantization (quantile-based on N(0,1))", "orthogonal", "Dettmers 2023 (arXiv:2305.14314)"), - Format("afp", "AFP (Adaptive Floating-Point)", UInt32(16), UInt32(1), UInt32(8), UInt32(7), Int64(127), -1.0, "u16_plus_tensor_shift", "QuantTuned", "Verified", "Tambe 2020", "efficient training", "orthogonal", "Tambe 2020 (DAC)"), - Format("posit8", "Posit8", UInt32(8), UInt32(1), UInt32(2), UInt32(0), Int64(0), -1.0, "u8", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "inference", "ally", "Posit Standard 2022 (posithub.org)"), - Format("posit16", "Posit16", UInt32(16), UInt32(1), UInt32(2), UInt32(0), Int64(0), -1.0, "u16", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "mixed-precision training", "ally", "Posit Standard 2022"), - Format("posit32", "Posit32", UInt32(32), UInt32(1), UInt32(2), UInt32(0), Int64(0), -1.0, "u32", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "f32 replacement", "ally", "Posit Standard 2022"), - Format("posit64", "Posit64", UInt32(64), UInt32(1), UInt32(2), UInt32(0), Int64(0), -1.0, "u64", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "f64 replacement", "ally", "Posit Standard 2022"), - Format("takum8", "takum8", UInt32(8), UInt32(1), UInt32(0), UInt32(0), Int64(0), -1.0, "u8", "PositUnumIII", "Verified", "Hunhold 2024 (tapered-precision)", "IEEE-754 backward-compatible tapered", "ally", "Hunhold 2024 (arXiv:2412.20273)"), - Format("takum16", "takum16", UInt32(16), UInt32(1), UInt32(0), UInt32(0), Int64(0), -1.0, "u16", "PositUnumIII", "Verified", "Hunhold 2024", "single-rule ladder counterexample", "ally", "Hunhold 2024 (arXiv:2412.20273)"), - Format("takum32", "takum32", UInt32(32), UInt32(1), UInt32(0), UInt32(0), Int64(0), -1.0, "u32", "PositUnumIII", "Verified", "Hunhold 2024", "tapered fp32-class", "ally", "Hunhold 2024"), - Format("takum64", "takum64", UInt32(64), UInt32(1), UInt32(0), UInt32(0), Int64(0), -1.0, "u64", "PositUnumIII", "Verified", "Hunhold 2024", "tapered fp64-class", "ally", "Hunhold 2024"), - Format("lns8", "LNS-8", UInt32(8), UInt32(1), UInt32(7), UInt32(0), Int64(0), -1.0, "u8", "Lns", "Verified", "Arnold 1990; LNS-Madam (2021)", "DSP, signal processing", "orthogonal", "Alam 2021 (arXiv:2106.13914)"), - Format("lns16", "LNS-16", UInt32(16), UInt32(1), UInt32(15), UInt32(0), Int64(0), -1.0, "u16", "Lns", "Verified", "LNS-Madam (2021)", "log-domain training (mul -> add)", "orthogonal", "Alam 2021"), - Format("lns32", "LNS-32", UInt32(32), UInt32(1), UInt32(31), UInt32(0), Int64(0), -1.0, "u32", "Lns", "Verified", "LNS-Madam (2021)", "log-domain DSP", "orthogonal", "Alam 2021"), - Format("lns64", "LNS-64", UInt32(64), UInt32(1), UInt32(63), UInt32(0), Int64(0), -1.0, "u64", "Lns", "Verified", "LNS-Madam (2021)", "scientific log-domain", "orthogonal", "Alam 2021"), - Format("gfternary", "GFTernary", UInt32(2), UInt32(1), UInt32(0), UInt32(2), Int64(0), 0.0, "u2", "GoldenFloat", "Verified", "this work; {-phi, 0, +phi}", "bulk layers (hybrid)", "self", "BENCH-007"), - Format("gf4", "GF4", UInt32(4), UInt32(1), UInt32(1), UInt32(2), Int64(0), 0.118, "u8", "GoldenFloat", "Experimental", "this work; F0 minimal", "proof-of-concept", "self", "specs/numeric/gf4.t27"), - Format("gf8", "GF8", UInt32(8), UInt32(1), UInt32(3), UInt32(4), Int64(3), 0.132, "u8", "GoldenFloat", "Verified", "this work; L1 Lucas", "edge / sensors", "self", "BENCH-007 (specs/numeric/gf8.t27)"), - Format("gf12", "GF12", UInt32(12), UInt32(1), UInt32(4), UInt32(7), Int64(7), 0.047, "u16", "GoldenFloat", "Verified", "this work; L0/F3", "mid-range / audio", "self", "BENCH-007 (specs/numeric/gf12.t27)"), - Format("gf16", "GF16", UInt32(16), UInt32(1), UInt32(6), UInt32(9), Int64(31), 0.049, "u16", "GoldenFloat", "Verified", "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7", "training and inference (production)", "self", "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)"), - Format("gf20", "GF20", UInt32(20), UInt32(1), UInt32(7), UInt32(12), Int64(63), 0.035, "u32", "GoldenFloat", "Experimental", "this work; 17-squared empirical PHI_BIAS=289", "high-precision edge", "self", "specs/numeric/gf20.t27 (spec only)"), - Format("gf24", "GF24", UInt32(24), UInt32(1), UInt32(9), UInt32(14), Int64(255), 0.025, "u32", "GoldenFloat", "Experimental", "this work; L15 PHI_BIAS=1364", "server inference", "self", "specs/numeric/gf24.t27 (spec only)"), - Format("gf32", "GF32", UInt32(32), UInt32(1), UInt32(12), UInt32(19), Int64(2047), 0.014, "u32", "GoldenFloat", "Verified", "this work; F0 resolved", "fp32 drop-in", "self", "BENCH-012 (specs/numeric/gf32.t27)"), - Format("gf64", "GF64", UInt32(64), UInt32(1), UInt32(24), UInt32(39), Int64(8388607), 0.003, "u64", "GoldenFloat", "Verified", "this work; EXP_MAX - BIAS", "scientific / double", "self", "BENCH-007b (specs/numeric/gf64.t27)"), - Format("gf6", "GF6 (predicted)", UInt32(6), UInt32(1), UInt32(2), UInt32(3), Int64(1), 0.05, "u8_packed", "GoldenFloat", "Experimental", "this work; e=round(5/phi^2)=2, fills FP6 gap", "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint", "experimental", "section12.5"), - Format("gf128", "GF128 (predicted)", UInt32(128), UInt32(1), UInt32(48), UInt32(79), Int64(0), 0.008, "u128", "GoldenFloat", "Experimental", "this work; e=round(127/phi^2)=48 (Open: bias TBD)", "OPEN R&D: phi-aligned binary128 alternative", "experimental", "section12.5"), - Format("gf256", "GF256 (predicted)", UInt32(256), UInt32(1), UInt32(97), UInt32(158), Int64(0), 0.005, "u256_software", "GoldenFloat", "Experimental", "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)", "OPEN R&D: phi-aligned binary256 alternative", "experimental", "section12.5; bias Open per skill"), - Format("gf8_bfp", "GF8-BFP (block FP atop GF8)", UInt32(8), UInt32(1), UInt32(3), UInt32(4), Int64(3), 0.132, "u8_plus_shared_exp", "GoldenFloat", "Experimental", "this work; per-tile shared exponent", "OPEN R&D: LLM-quantization-friendly GF8", "experimental", "section12.5"), - Format("gf_lns_hybrid", "GF + LNS hybrid (dual-space)", UInt32(16), UInt32(1), UInt32(6), UInt32(9), Int64(31), 0.049, "u16_plus_lns_path", "GoldenFloat", "Experimental", "this work; mul in log-space, accumulate Lucas-closed", "OPEN R&D: dual-space arithmetic", "experimental", "section12.5"), - Format("mxgf6", "MXGF6 (microscaling GF6)", UInt32(6), UInt32(1), UInt32(2), UInt32(3), Int64(1), 0.05, "u8_packed_plus_e8m0", "GoldenFloat", "Experimental", "this work; OCP MX block + GF6", "OPEN R&D: phi-aligned MX-6 candidate", "experimental", "section12.5"), - Format("mxgf4", "MXGF4 (microscaling GF4)", UInt32(4), UInt32(1), UInt32(1), UInt32(2), Int64(0), 0.118, "u8_packed_plus_e8m0", "GoldenFloat", "Experimental", "this work; OCP MX block + GF4", "OPEN R&D: phi-aligned MX-4 candidate", "experimental", "section12.5"), - Format("int4", "INT4 / UINT4", UInt32(4), UInt32(1), UInt32(0), UInt32(3), Int64(0), -1.0, "u8_packed", "IntegerFixed", "Verified", "two complement", "aggressive quantization", "competitor", "ISO/IEC 9899"), - Format("int8", "INT8 / UINT8", UInt32(8), UInt32(1), UInt32(0), UInt32(7), Int64(0), -1.0, "u8", "IntegerFixed", "Verified", "two complement", "INT8 inference, per-channel scale", "competitor", "ISO/IEC 9899"), - Format("int16", "INT16 / UINT16", UInt32(16), UInt32(1), UInt32(0), UInt32(15), Int64(0), -1.0, "u16", "IntegerFixed", "Verified", "two complement", "DSP, embedded ML", "competitor", "ISO/IEC 9899"), - Format("int32", "INT32 / UINT32", UInt32(32), UInt32(1), UInt32(0), UInt32(31), Int64(0), -1.0, "u32", "IntegerFixed", "Verified", "two complement", "general CPU integer", "competitor", "ISO/IEC 9899"), - Format("int64", "INT64 / UINT64", UInt32(64), UInt32(1), UInt32(0), UInt32(63), Int64(0), -1.0, "u64", "IntegerFixed", "Verified", "two complement", "databases, timestamps", "competitor", "ISO/IEC 9899"), - Format("int128", "INT128 / UINT128", UInt32(128), UInt32(1), UInt32(0), UInt32(127), Int64(0), -1.0, "u128", "IntegerFixed", "Verified", "two complement", "crypto, big-int", "competitor", "Rust/Clang u128"), - Format("q_format", "Q-format (Qm.n)", UInt32(0), UInt32(1), UInt32(0), UInt32(0), Int64(0), -1.0, "varies", "IntegerFixed", "Verified", "TI fixed-point", "audio DSP, fixed-point ML", "orthogonal", "TI SPRA704"), - Format("bcd", "BCD (binary-coded decimal)", UInt32(0), UInt32(0), UInt32(0), UInt32(0), Int64(0), -1.0, "u4_per_digit", "IntegerFixed", "Historical", "IBM 1959", "calculators, GAAP", "orthogonal", "ISO/IEC 8859"), - Format("ibm_hfp32", "IBM HFP (single)", UInt32(32), UInt32(1), UInt32(7), UInt32(24), Int64(64), -1.0, "u32", "HistoricalVendor", "Historical", "IBM System/360 (1964); base-16 exponent", "legacy mainframe", "orthogonal", "IBM POO"), - Format("ibm_hfp64", "IBM HFP (double)", UInt32(64), UInt32(1), UInt32(7), UInt32(56), Int64(64), -1.0, "u64", "HistoricalVendor", "Historical", "IBM System/360 (1964)", "legacy mainframe", "orthogonal", "IBM POO"), - Format("ibm_hfp128", "IBM HFP (extended)", UInt32(128), UInt32(1), UInt32(7), UInt32(120), Int64(64), -1.0, "u128", "HistoricalVendor", "Historical", "IBM z/Architecture", "legacy mainframe", "orthogonal", "IBM POO"), - Format("ms_mbf32", "Microsoft MBF (single)", UInt32(32), UInt32(1), UInt32(8), UInt32(23), Int64(129), -1.0, "u32", "HistoricalVendor", "Historical", "MS BASIC / MS-DOS (pre-IEEE)", "MS BASIC legacy", "orthogonal", "MS-DOS docs"), - Format("ms_mbf64", "Microsoft MBF (double)", UInt32(64), UInt32(1), UInt32(8), UInt32(55), Int64(129), -1.0, "u64", "HistoricalVendor", "Historical", "MS BASIC", "MS BASIC legacy", "orthogonal", "MS-DOS docs"), - Format("vax_f", "VAX F-float", UInt32(32), UInt32(1), UInt32(8), UInt32(23), Int64(128), -1.0, "u32", "HistoricalVendor", "Historical", "DEC VAX", "DEC legacy", "orthogonal", "VAX Architecture Reference"), - Format("vax_d", "VAX D-float", UInt32(64), UInt32(1), UInt32(8), UInt32(55), Int64(128), -1.0, "u64", "HistoricalVendor", "Historical", "DEC VAX", "DEC legacy double", "orthogonal", "VAX Architecture Reference"), - Format("vax_g", "VAX G-float", UInt32(64), UInt32(1), UInt32(11), UInt32(52), Int64(1024), -1.0, "u64", "HistoricalVendor", "Historical", "DEC VAX (IEEE-like)", "DEC legacy", "orthogonal", "VAX Architecture Reference"), - Format("vax_h", "VAX H-float", UInt32(128), UInt32(1), UInt32(15), UInt32(112), Int64(16384), -1.0, "u128", "HistoricalVendor", "Historical", "DEC VAX", "DEC quad", "orthogonal", "VAX Architecture Reference"), - Format("cray_float", "Cray float", UInt32(64), UInt32(1), UInt32(15), UInt32(48), Int64(16384), -1.0, "u64", "HistoricalVendor", "Historical", "Cray-1 (1976); no NaN/Inf, unrounded mul", "Cray legacy", "orthogonal", "Cray-1 Hardware Reference"), - Format("minifloat", "minifloat (arbitrary E:M, <=16 bits)", UInt32(0), UInt32(1), UInt32(0), UInt32(0), Int64(0), -1.0, "varies", "Theoretical", "Experimental", "parametric framework", "design space of GF4/GF8/GF12/GF16", "ally", "Higham 1996"), - Format("unum_i", "Unum I (tapered + ubound)", UInt32(0), UInt32(1), UInt32(0), UInt32(0), Int64(0), -1.0, "varies", "Theoretical", "Experimental", "Gustafson 2015 (predecessor to posit)", "interval arithmetic", "ally", "Gustafson 2015 (The End of Error)"), - Format("unum_ii", "Unum II (SORN projective)", UInt32(0), UInt32(0), UInt32(0), UInt32(0), Int64(0), -1.0, "lookup_table", "Theoretical", "Experimental", "Gustafson 2016", "lookup-table real arithmetic; not GF-comparable", "orthogonal", "Gustafson 2016"), - Format("tapered_fp", "tapered floating point", UInt32(0), UInt32(1), UInt32(0), UInt32(0), Int64(0), -1.0, "varies", "Theoretical", "Experimental", "Morris 1971; posit ancestor", "variable mantissa via regime bits", "ally", "Morris 1971 (IEEE TC)"), - Format("block_fp", "block floating point (BFP)", UInt32(0), UInt32(0), UInt32(0), UInt32(0), Int64(0), -1.0, "varies", "CompressionTrick", "Verified", "Wilkinson 1965; modern revivals", "per-tile shared exponent", "ally", "Darvish-Rouhani 2020"), - Format("shared_exp", "shared-exponent formats", UInt32(0), UInt32(0), UInt32(0), UInt32(0), Int64(0), -1.0, "varies", "CompressionTrick", "Verified", "generalised BFP", "LLM quantization", "ally", "Darvish-Rouhani 2020"), - Format("per_channel_scale", "INT8 with per-channel scale", UInt32(8), UInt32(1), UInt32(0), UInt32(7), Int64(0), -1.0, "u8_plus_fp32_scale", "CompressionTrick", "Verified", "Jacob 2018 (TFLite)", "standard quant inference", "competitor", "Jacob 2018 (CVPR)"), - Format("stochastic_rounding", "stochastic rounding (technique)", UInt32(0), UInt32(0), UInt32(0), UInt32(0), Int64(0), -1.0, "varies", "CompressionTrick", "Verified", "Gupta 2015", "training small networks at low precision", "ally", "Gupta 2015 (ICML)"), -] - -end # module diff --git a/gen/numeric/formats_catalog.go b/gen/numeric/formats_catalog.go deleted file mode 100644 index 02f2856d0..000000000 --- a/gen/numeric/formats_catalog.go +++ /dev/null @@ -1,104 +0,0 @@ -// Generated from formats_catalog.t27. Do not edit by hand. -// SPDX-License-Identifier: Apache-2.0 - -package formatscatalog - -// Format describes one numeric format in the SSOT catalog. -type Format struct { - ID string - Name string - Bits uint32 - SBits uint32 - EBits uint32 - MBits uint32 - Bias int64 - PhiDistance float64 // -1.0 == undefined - Storage string - Cluster string - Status string - Standard string - UseCase string - GFRelation string - Source string -} - -// Formats is the canonical list emitted from formats_catalog.t27. -var Formats = []Format{ - { ID: "binary16", Name: "binary16 (fp16, half)", Bits: 16, SBits: 1, EBits: 5, MBits: 10, Bias: 15, PhiDistance: 0.118, Storage: "u16", Cluster: "Ieee754Binary", Status: "Verified", Standard: "IEEE 754-2008", UseCase: "GPU activations, inference", GFRelation: "competitor", Source: "IEEE 754-2008" }, - { ID: "binary32", Name: "binary32 (fp32, single)", Bits: 32, SBits: 1, EBits: 8, MBits: 23, Bias: 127, PhiDistance: 0.27, Storage: "u32", Cluster: "Ieee754Binary", Status: "Verified", Standard: "IEEE 754-1985", UseCase: "industry default", GFRelation: "competitor", Source: "IEEE 754-1985" }, - { ID: "binary64", Name: "binary64 (fp64, double)", Bits: 64, SBits: 1, EBits: 11, MBits: 52, Bias: 1023, PhiDistance: 0.406, Storage: "u64", Cluster: "Ieee754Binary", Status: "Verified", Standard: "IEEE 754-1985", UseCase: "scientific computing", GFRelation: "competitor", Source: "IEEE 754-1985" }, - { ID: "binary128", Name: "binary128 (fp128, quad)", Bits: 128, SBits: 1, EBits: 15, MBits: 112, Bias: 16383, PhiDistance: 0.484, Storage: "u128", Cluster: "Ieee754Binary", Status: "Verified", Standard: "IEEE 754-2008", UseCase: "high-precision simulations", GFRelation: "competitor", Source: "IEEE 754-2008" }, - { ID: "binary256", Name: "binary256 (octuple)", Bits: 256, SBits: 1, EBits: 19, MBits: 236, Bias: 262143, PhiDistance: 0.538, Storage: "u256_software", Cluster: "Ieee754Binary", Status: "Verified", Standard: "IEEE 754-2008", UseCase: "astronomy, cryptography", GFRelation: "competitor", Source: "IEEE 754-2008" }, - { ID: "decimal32", Name: "decimal32", Bits: 32, SBits: 1, EBits: 11, MBits: 20, Bias: 101, PhiDistance: -1.0, Storage: "u32", Cluster: "Ieee754Decimal", Status: "Verified", Standard: "IEEE 754-2008 (DPD/BID)", UseCase: "banking, GAAP", GFRelation: "orthogonal", Source: "IEEE 754-2008" }, - { ID: "decimal64", Name: "decimal64", Bits: 64, SBits: 1, EBits: 13, MBits: 50, Bias: 398, PhiDistance: -1.0, Storage: "u64", Cluster: "Ieee754Decimal", Status: "Verified", Standard: "IEEE 754-2008", UseCase: "financial databases", GFRelation: "orthogonal", Source: "IEEE 754-2008" }, - { ID: "decimal128", Name: "decimal128", Bits: 128, SBits: 1, EBits: 17, MBits: 110, Bias: 6176, PhiDistance: -1.0, Storage: "u128", Cluster: "Ieee754Decimal", Status: "Verified", Standard: "IEEE 754-2008", UseCase: "audit ledgers", GFRelation: "orthogonal", Source: "IEEE 754-2008" }, - { ID: "x87_fp80", Name: "x87 FP80", Bits: 80, SBits: 1, EBits: 15, MBits: 64, Bias: 16383, PhiDistance: -1.0, Storage: "u80_padded", Cluster: "ExtendedFloat", Status: "Historical", Standard: "Intel x87 (explicit integer bit)", UseCase: "legacy long double on x86", GFRelation: "orthogonal", Source: "Intel SDM" }, - { ID: "double_double", Name: "double-double", Bits: 128, SBits: 2, EBits: 22, MBits: 104, Bias: 0, PhiDistance: -1.0, Storage: "two_u64", Cluster: "ExtendedFloat", Status: "Verified", Standard: "Bailey/Hida (software)", UseCase: "software extended precision", GFRelation: "orthogonal", Source: "Bailey-Hida 2001" }, - { ID: "quad_double", Name: "quad-double", Bits: 256, SBits: 4, EBits: 44, MBits: 208, Bias: 0, PhiDistance: -1.0, Storage: "four_u64", Cluster: "ExtendedFloat", Status: "Verified", Standard: "Bailey/Hida (software)", UseCase: "astrophysics, quad-precision sims", GFRelation: "orthogonal", Source: "Bailey-Hida 2001" }, - { ID: "bfloat16", Name: "bfloat16 (BF16)", Bits: 16, SBits: 1, EBits: 8, MBits: 7, Bias: 127, PhiDistance: 0.525, Storage: "u16", Cluster: "MlLowPrecision", Status: "Verified", Standard: "Google Brain", UseCase: "training (range > precision)", GFRelation: "competitor", Source: "Wang-Kanwar 2019" }, - { ID: "tf32", Name: "TensorFloat-32 (TF32)", Bits: 19, SBits: 1, EBits: 8, MBits: 10, Bias: 127, PhiDistance: 0.27, Storage: "u32_padded", Cluster: "MlLowPrecision", Status: "Verified", Standard: "NVIDIA Ampere", UseCase: "A100/H100 mixed precision", GFRelation: "competitor", Source: "NVIDIA Ampere whitepaper" }, - { ID: "fp8_e4m3", Name: "FP8 E4M3", Bits: 8, SBits: 1, EBits: 4, MBits: 3, Bias: 7, PhiDistance: 0.715, Storage: "u8", Cluster: "MlLowPrecision", Status: "Verified", Standard: "OCP / NVIDIA / Arm / Intel", UseCase: "inference, gradient ranges", GFRelation: "competitor", Source: "Micikevicius 2022 (arXiv:2209.05433)" }, - { ID: "fp8_e5m2", Name: "FP8 E5M2", Bits: 8, SBits: 1, EBits: 5, MBits: 2, Bias: 15, PhiDistance: 1.882, Storage: "u8", Cluster: "MlLowPrecision", Status: "Verified", Standard: "OCP / NVIDIA", UseCase: "activations, wide range", GFRelation: "competitor", Source: "Micikevicius 2022" }, - { ID: "fp6_e3m2", Name: "FP6 E3M2", Bits: 6, SBits: 1, EBits: 3, MBits: 2, Bias: 3, PhiDistance: 0.882, Storage: "u8_packed", Cluster: "MlLowPrecision", Status: "Verified", Standard: "OCP MX", UseCase: "aggressive quant inference", GFRelation: "competitor", Source: "OCP MX v1.0 (2023)" }, - { ID: "fp6_e2m3", Name: "FP6 E2M3", Bits: 6, SBits: 1, EBits: 2, MBits: 3, Bias: 1, PhiDistance: 0.049, Storage: "u8_packed", Cluster: "MlLowPrecision", Status: "Verified", Standard: "OCP MX", UseCase: "mantissa-heavy quant", GFRelation: "ally", Source: "OCP MX v1.0 (2023)" }, - { ID: "fp4_e2m1", Name: "FP4 E2M1", Bits: 4, SBits: 1, EBits: 2, MBits: 1, Bias: 1, PhiDistance: 1.382, Storage: "u8_packed", Cluster: "MlLowPrecision", Status: "Verified", Standard: "OCP MX", UseCase: "extreme quant inference", GFRelation: "competitor", Source: "OCP MX v1.0 (2023)" }, - { ID: "mxfp8", Name: "MXFP8", Bits: 8, SBits: 1, EBits: 4, MBits: 3, Bias: 7, PhiDistance: 0.715, Storage: "u8_plus_shared_e8m0", Cluster: "Microscaling", Status: "Verified", Standard: "OCP MX v1.0", UseCase: "LLM inference", GFRelation: "ally", Source: "Rouhani 2023 (arXiv:2310.10537)" }, - { ID: "mxfp6", Name: "MXFP6", Bits: 6, SBits: 1, EBits: 3, MBits: 2, Bias: 3, PhiDistance: 0.882, Storage: "u8_packed_plus_e8m0", Cluster: "Microscaling", Status: "Verified", Standard: "OCP MX v1.0", UseCase: "aggressive inference", GFRelation: "ally", Source: "Rouhani 2023" }, - { ID: "mxfp4", Name: "MXFP4", Bits: 4, SBits: 1, EBits: 2, MBits: 1, Bias: 1, PhiDistance: 1.382, Storage: "u8_packed_plus_e8m0", Cluster: "Microscaling", Status: "Verified", Standard: "OCP MX v1.0", UseCase: "extreme quant", GFRelation: "ally", Source: "Rouhani 2023" }, - { ID: "nf4", Name: "NF4 (NormalFloat 4-bit)", Bits: 4, SBits: 0, EBits: 0, MBits: 4, Bias: 0, PhiDistance: -1.0, Storage: "u8_packed", Cluster: "QuantTuned", Status: "Verified", Standard: "Dettmers 2023 (QLoRA)", UseCase: "LLM weight quantization (quantile-based on N(0,1))", GFRelation: "orthogonal", Source: "Dettmers 2023 (arXiv:2305.14314)" }, - { ID: "afp", Name: "AFP (Adaptive Floating-Point)", Bits: 16, SBits: 1, EBits: 8, MBits: 7, Bias: 127, PhiDistance: -1.0, Storage: "u16_plus_tensor_shift", Cluster: "QuantTuned", Status: "Verified", Standard: "Tambe 2020", UseCase: "efficient training", GFRelation: "orthogonal", Source: "Tambe 2020 (DAC)" }, - { ID: "posit8", Name: "Posit8", Bits: 8, SBits: 1, EBits: 2, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u8", Cluster: "PositUnumIII", Status: "Verified", Standard: "Posit Standard 2022 (es=2)", UseCase: "inference", GFRelation: "ally", Source: "Posit Standard 2022 (posithub.org)" }, - { ID: "posit16", Name: "Posit16", Bits: 16, SBits: 1, EBits: 2, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u16", Cluster: "PositUnumIII", Status: "Verified", Standard: "Posit Standard 2022 (es=2)", UseCase: "mixed-precision training", GFRelation: "ally", Source: "Posit Standard 2022" }, - { ID: "posit32", Name: "Posit32", Bits: 32, SBits: 1, EBits: 2, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u32", Cluster: "PositUnumIII", Status: "Verified", Standard: "Posit Standard 2022 (es=2)", UseCase: "f32 replacement", GFRelation: "ally", Source: "Posit Standard 2022" }, - { ID: "posit64", Name: "Posit64", Bits: 64, SBits: 1, EBits: 2, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u64", Cluster: "PositUnumIII", Status: "Verified", Standard: "Posit Standard 2022 (es=2)", UseCase: "f64 replacement", GFRelation: "ally", Source: "Posit Standard 2022" }, - { ID: "takum8", Name: "takum8", Bits: 8, SBits: 1, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u8", Cluster: "PositUnumIII", Status: "Verified", Standard: "Hunhold 2024 (tapered-precision)", UseCase: "IEEE-754 backward-compatible tapered", GFRelation: "ally", Source: "Hunhold 2024 (arXiv:2412.20273)" }, - { ID: "takum16", Name: "takum16", Bits: 16, SBits: 1, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u16", Cluster: "PositUnumIII", Status: "Verified", Standard: "Hunhold 2024", UseCase: "single-rule ladder counterexample", GFRelation: "ally", Source: "Hunhold 2024 (arXiv:2412.20273)" }, - { ID: "takum32", Name: "takum32", Bits: 32, SBits: 1, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u32", Cluster: "PositUnumIII", Status: "Verified", Standard: "Hunhold 2024", UseCase: "tapered fp32-class", GFRelation: "ally", Source: "Hunhold 2024" }, - { ID: "takum64", Name: "takum64", Bits: 64, SBits: 1, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u64", Cluster: "PositUnumIII", Status: "Verified", Standard: "Hunhold 2024", UseCase: "tapered fp64-class", GFRelation: "ally", Source: "Hunhold 2024" }, - { ID: "lns8", Name: "LNS-8", Bits: 8, SBits: 1, EBits: 7, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u8", Cluster: "Lns", Status: "Verified", Standard: "Arnold 1990; LNS-Madam (2021)", UseCase: "DSP, signal processing", GFRelation: "orthogonal", Source: "Alam 2021 (arXiv:2106.13914)" }, - { ID: "lns16", Name: "LNS-16", Bits: 16, SBits: 1, EBits: 15, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u16", Cluster: "Lns", Status: "Verified", Standard: "LNS-Madam (2021)", UseCase: "log-domain training (mul -> add)", GFRelation: "orthogonal", Source: "Alam 2021" }, - { ID: "lns32", Name: "LNS-32", Bits: 32, SBits: 1, EBits: 31, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u32", Cluster: "Lns", Status: "Verified", Standard: "LNS-Madam (2021)", UseCase: "log-domain DSP", GFRelation: "orthogonal", Source: "Alam 2021" }, - { ID: "lns64", Name: "LNS-64", Bits: 64, SBits: 1, EBits: 63, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u64", Cluster: "Lns", Status: "Verified", Standard: "LNS-Madam (2021)", UseCase: "scientific log-domain", GFRelation: "orthogonal", Source: "Alam 2021" }, - { ID: "gfternary", Name: "GFTernary", Bits: 2, SBits: 1, EBits: 0, MBits: 2, Bias: 0, PhiDistance: 0.0, Storage: "u2", Cluster: "GoldenFloat", Status: "Verified", Standard: "this work; {-phi, 0, +phi}", UseCase: "bulk layers (hybrid)", GFRelation: "self", Source: "BENCH-007" }, - { ID: "gf4", Name: "GF4", Bits: 4, SBits: 1, EBits: 1, MBits: 2, Bias: 0, PhiDistance: 0.118, Storage: "u8", Cluster: "GoldenFloat", Status: "Experimental", Standard: "this work; F0 minimal", UseCase: "proof-of-concept", GFRelation: "self", Source: "specs/numeric/gf4.t27" }, - { ID: "gf8", Name: "GF8", Bits: 8, SBits: 1, EBits: 3, MBits: 4, Bias: 3, PhiDistance: 0.132, Storage: "u8", Cluster: "GoldenFloat", Status: "Verified", Standard: "this work; L1 Lucas", UseCase: "edge / sensors", GFRelation: "self", Source: "BENCH-007 (specs/numeric/gf8.t27)" }, - { ID: "gf12", Name: "GF12", Bits: 12, SBits: 1, EBits: 4, MBits: 7, Bias: 7, PhiDistance: 0.047, Storage: "u16", Cluster: "GoldenFloat", Status: "Verified", Standard: "this work; L0/F3", UseCase: "mid-range / audio", GFRelation: "self", Source: "BENCH-007 (specs/numeric/gf12.t27)" }, - { ID: "gf16", Name: "GF16", Bits: 16, SBits: 1, EBits: 6, MBits: 9, Bias: 31, PhiDistance: 0.049, Storage: "u16", Cluster: "GoldenFloat", Status: "Verified", Standard: "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7", UseCase: "training and inference (production)", GFRelation: "self", Source: "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)" }, - { ID: "gf20", Name: "GF20", Bits: 20, SBits: 1, EBits: 7, MBits: 12, Bias: 63, PhiDistance: 0.035, Storage: "u32", Cluster: "GoldenFloat", Status: "Experimental", Standard: "this work; 17-squared empirical PHI_BIAS=289", UseCase: "high-precision edge", GFRelation: "self", Source: "specs/numeric/gf20.t27 (spec only)" }, - { ID: "gf24", Name: "GF24", Bits: 24, SBits: 1, EBits: 9, MBits: 14, Bias: 255, PhiDistance: 0.025, Storage: "u32", Cluster: "GoldenFloat", Status: "Experimental", Standard: "this work; L15 PHI_BIAS=1364", UseCase: "server inference", GFRelation: "self", Source: "specs/numeric/gf24.t27 (spec only)" }, - { ID: "gf32", Name: "GF32", Bits: 32, SBits: 1, EBits: 12, MBits: 19, Bias: 2047, PhiDistance: 0.014, Storage: "u32", Cluster: "GoldenFloat", Status: "Verified", Standard: "this work; F0 resolved", UseCase: "fp32 drop-in", GFRelation: "self", Source: "BENCH-012 (specs/numeric/gf32.t27)" }, - { ID: "gf64", Name: "GF64", Bits: 64, SBits: 1, EBits: 24, MBits: 39, Bias: 8388607, PhiDistance: 0.003, Storage: "u64", Cluster: "GoldenFloat", Status: "Verified", Standard: "this work; EXP_MAX - BIAS", UseCase: "scientific / double", GFRelation: "self", Source: "BENCH-007b (specs/numeric/gf64.t27)" }, - { ID: "gf6", Name: "GF6 (predicted)", Bits: 6, SBits: 1, EBits: 2, MBits: 3, Bias: 1, PhiDistance: 0.05, Storage: "u8_packed", Cluster: "GoldenFloat", Status: "Experimental", Standard: "this work; e=round(5/phi^2)=2, fills FP6 gap", UseCase: "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint", GFRelation: "experimental", Source: "section12.5" }, - { ID: "gf128", Name: "GF128 (predicted)", Bits: 128, SBits: 1, EBits: 48, MBits: 79, Bias: 0, PhiDistance: 0.008, Storage: "u128", Cluster: "GoldenFloat", Status: "Experimental", Standard: "this work; e=round(127/phi^2)=48 (Open: bias TBD)", UseCase: "OPEN R&D: phi-aligned binary128 alternative", GFRelation: "experimental", Source: "section12.5" }, - { ID: "gf256", Name: "GF256 (predicted)", Bits: 256, SBits: 1, EBits: 97, MBits: 158, Bias: 0, PhiDistance: 0.005, Storage: "u256_software", Cluster: "GoldenFloat", Status: "Experimental", Standard: "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)", UseCase: "OPEN R&D: phi-aligned binary256 alternative", GFRelation: "experimental", Source: "section12.5; bias Open per skill" }, - { ID: "gf8_bfp", Name: "GF8-BFP (block FP atop GF8)", Bits: 8, SBits: 1, EBits: 3, MBits: 4, Bias: 3, PhiDistance: 0.132, Storage: "u8_plus_shared_exp", Cluster: "GoldenFloat", Status: "Experimental", Standard: "this work; per-tile shared exponent", UseCase: "OPEN R&D: LLM-quantization-friendly GF8", GFRelation: "experimental", Source: "section12.5" }, - { ID: "gf_lns_hybrid", Name: "GF + LNS hybrid (dual-space)", Bits: 16, SBits: 1, EBits: 6, MBits: 9, Bias: 31, PhiDistance: 0.049, Storage: "u16_plus_lns_path", Cluster: "GoldenFloat", Status: "Experimental", Standard: "this work; mul in log-space, accumulate Lucas-closed", UseCase: "OPEN R&D: dual-space arithmetic", GFRelation: "experimental", Source: "section12.5" }, - { ID: "mxgf6", Name: "MXGF6 (microscaling GF6)", Bits: 6, SBits: 1, EBits: 2, MBits: 3, Bias: 1, PhiDistance: 0.05, Storage: "u8_packed_plus_e8m0", Cluster: "GoldenFloat", Status: "Experimental", Standard: "this work; OCP MX block + GF6", UseCase: "OPEN R&D: phi-aligned MX-6 candidate", GFRelation: "experimental", Source: "section12.5" }, - { ID: "mxgf4", Name: "MXGF4 (microscaling GF4)", Bits: 4, SBits: 1, EBits: 1, MBits: 2, Bias: 0, PhiDistance: 0.118, Storage: "u8_packed_plus_e8m0", Cluster: "GoldenFloat", Status: "Experimental", Standard: "this work; OCP MX block + GF4", UseCase: "OPEN R&D: phi-aligned MX-4 candidate", GFRelation: "experimental", Source: "section12.5" }, - { ID: "int4", Name: "INT4 / UINT4", Bits: 4, SBits: 1, EBits: 0, MBits: 3, Bias: 0, PhiDistance: -1.0, Storage: "u8_packed", Cluster: "IntegerFixed", Status: "Verified", Standard: "two complement", UseCase: "aggressive quantization", GFRelation: "competitor", Source: "ISO/IEC 9899" }, - { ID: "int8", Name: "INT8 / UINT8", Bits: 8, SBits: 1, EBits: 0, MBits: 7, Bias: 0, PhiDistance: -1.0, Storage: "u8", Cluster: "IntegerFixed", Status: "Verified", Standard: "two complement", UseCase: "INT8 inference, per-channel scale", GFRelation: "competitor", Source: "ISO/IEC 9899" }, - { ID: "int16", Name: "INT16 / UINT16", Bits: 16, SBits: 1, EBits: 0, MBits: 15, Bias: 0, PhiDistance: -1.0, Storage: "u16", Cluster: "IntegerFixed", Status: "Verified", Standard: "two complement", UseCase: "DSP, embedded ML", GFRelation: "competitor", Source: "ISO/IEC 9899" }, - { ID: "int32", Name: "INT32 / UINT32", Bits: 32, SBits: 1, EBits: 0, MBits: 31, Bias: 0, PhiDistance: -1.0, Storage: "u32", Cluster: "IntegerFixed", Status: "Verified", Standard: "two complement", UseCase: "general CPU integer", GFRelation: "competitor", Source: "ISO/IEC 9899" }, - { ID: "int64", Name: "INT64 / UINT64", Bits: 64, SBits: 1, EBits: 0, MBits: 63, Bias: 0, PhiDistance: -1.0, Storage: "u64", Cluster: "IntegerFixed", Status: "Verified", Standard: "two complement", UseCase: "databases, timestamps", GFRelation: "competitor", Source: "ISO/IEC 9899" }, - { ID: "int128", Name: "INT128 / UINT128", Bits: 128, SBits: 1, EBits: 0, MBits: 127, Bias: 0, PhiDistance: -1.0, Storage: "u128", Cluster: "IntegerFixed", Status: "Verified", Standard: "two complement", UseCase: "crypto, big-int", GFRelation: "competitor", Source: "Rust/Clang u128" }, - { ID: "q_format", Name: "Q-format (Qm.n)", Bits: 0, SBits: 1, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "varies", Cluster: "IntegerFixed", Status: "Verified", Standard: "TI fixed-point", UseCase: "audio DSP, fixed-point ML", GFRelation: "orthogonal", Source: "TI SPRA704" }, - { ID: "bcd", Name: "BCD (binary-coded decimal)", Bits: 0, SBits: 0, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "u4_per_digit", Cluster: "IntegerFixed", Status: "Historical", Standard: "IBM 1959", UseCase: "calculators, GAAP", GFRelation: "orthogonal", Source: "ISO/IEC 8859" }, - { ID: "ibm_hfp32", Name: "IBM HFP (single)", Bits: 32, SBits: 1, EBits: 7, MBits: 24, Bias: 64, PhiDistance: -1.0, Storage: "u32", Cluster: "HistoricalVendor", Status: "Historical", Standard: "IBM System/360 (1964); base-16 exponent", UseCase: "legacy mainframe", GFRelation: "orthogonal", Source: "IBM POO" }, - { ID: "ibm_hfp64", Name: "IBM HFP (double)", Bits: 64, SBits: 1, EBits: 7, MBits: 56, Bias: 64, PhiDistance: -1.0, Storage: "u64", Cluster: "HistoricalVendor", Status: "Historical", Standard: "IBM System/360 (1964)", UseCase: "legacy mainframe", GFRelation: "orthogonal", Source: "IBM POO" }, - { ID: "ibm_hfp128", Name: "IBM HFP (extended)", Bits: 128, SBits: 1, EBits: 7, MBits: 120, Bias: 64, PhiDistance: -1.0, Storage: "u128", Cluster: "HistoricalVendor", Status: "Historical", Standard: "IBM z/Architecture", UseCase: "legacy mainframe", GFRelation: "orthogonal", Source: "IBM POO" }, - { ID: "ms_mbf32", Name: "Microsoft MBF (single)", Bits: 32, SBits: 1, EBits: 8, MBits: 23, Bias: 129, PhiDistance: -1.0, Storage: "u32", Cluster: "HistoricalVendor", Status: "Historical", Standard: "MS BASIC / MS-DOS (pre-IEEE)", UseCase: "MS BASIC legacy", GFRelation: "orthogonal", Source: "MS-DOS docs" }, - { ID: "ms_mbf64", Name: "Microsoft MBF (double)", Bits: 64, SBits: 1, EBits: 8, MBits: 55, Bias: 129, PhiDistance: -1.0, Storage: "u64", Cluster: "HistoricalVendor", Status: "Historical", Standard: "MS BASIC", UseCase: "MS BASIC legacy", GFRelation: "orthogonal", Source: "MS-DOS docs" }, - { ID: "vax_f", Name: "VAX F-float", Bits: 32, SBits: 1, EBits: 8, MBits: 23, Bias: 128, PhiDistance: -1.0, Storage: "u32", Cluster: "HistoricalVendor", Status: "Historical", Standard: "DEC VAX", UseCase: "DEC legacy", GFRelation: "orthogonal", Source: "VAX Architecture Reference" }, - { ID: "vax_d", Name: "VAX D-float", Bits: 64, SBits: 1, EBits: 8, MBits: 55, Bias: 128, PhiDistance: -1.0, Storage: "u64", Cluster: "HistoricalVendor", Status: "Historical", Standard: "DEC VAX", UseCase: "DEC legacy double", GFRelation: "orthogonal", Source: "VAX Architecture Reference" }, - { ID: "vax_g", Name: "VAX G-float", Bits: 64, SBits: 1, EBits: 11, MBits: 52, Bias: 1024, PhiDistance: -1.0, Storage: "u64", Cluster: "HistoricalVendor", Status: "Historical", Standard: "DEC VAX (IEEE-like)", UseCase: "DEC legacy", GFRelation: "orthogonal", Source: "VAX Architecture Reference" }, - { ID: "vax_h", Name: "VAX H-float", Bits: 128, SBits: 1, EBits: 15, MBits: 112, Bias: 16384, PhiDistance: -1.0, Storage: "u128", Cluster: "HistoricalVendor", Status: "Historical", Standard: "DEC VAX", UseCase: "DEC quad", GFRelation: "orthogonal", Source: "VAX Architecture Reference" }, - { ID: "cray_float", Name: "Cray float", Bits: 64, SBits: 1, EBits: 15, MBits: 48, Bias: 16384, PhiDistance: -1.0, Storage: "u64", Cluster: "HistoricalVendor", Status: "Historical", Standard: "Cray-1 (1976); no NaN/Inf, unrounded mul", UseCase: "Cray legacy", GFRelation: "orthogonal", Source: "Cray-1 Hardware Reference" }, - { ID: "minifloat", Name: "minifloat (arbitrary E:M, <=16 bits)", Bits: 0, SBits: 1, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "varies", Cluster: "Theoretical", Status: "Experimental", Standard: "parametric framework", UseCase: "design space of GF4/GF8/GF12/GF16", GFRelation: "ally", Source: "Higham 1996" }, - { ID: "unum_i", Name: "Unum I (tapered + ubound)", Bits: 0, SBits: 1, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "varies", Cluster: "Theoretical", Status: "Experimental", Standard: "Gustafson 2015 (predecessor to posit)", UseCase: "interval arithmetic", GFRelation: "ally", Source: "Gustafson 2015 (The End of Error)" }, - { ID: "unum_ii", Name: "Unum II (SORN projective)", Bits: 0, SBits: 0, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "lookup_table", Cluster: "Theoretical", Status: "Experimental", Standard: "Gustafson 2016", UseCase: "lookup-table real arithmetic; not GF-comparable", GFRelation: "orthogonal", Source: "Gustafson 2016" }, - { ID: "tapered_fp", Name: "tapered floating point", Bits: 0, SBits: 1, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "varies", Cluster: "Theoretical", Status: "Experimental", Standard: "Morris 1971; posit ancestor", UseCase: "variable mantissa via regime bits", GFRelation: "ally", Source: "Morris 1971 (IEEE TC)" }, - { ID: "block_fp", Name: "block floating point (BFP)", Bits: 0, SBits: 0, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "varies", Cluster: "CompressionTrick", Status: "Verified", Standard: "Wilkinson 1965; modern revivals", UseCase: "per-tile shared exponent", GFRelation: "ally", Source: "Darvish-Rouhani 2020" }, - { ID: "shared_exp", Name: "shared-exponent formats", Bits: 0, SBits: 0, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "varies", Cluster: "CompressionTrick", Status: "Verified", Standard: "generalised BFP", UseCase: "LLM quantization", GFRelation: "ally", Source: "Darvish-Rouhani 2020" }, - { ID: "per_channel_scale", Name: "INT8 with per-channel scale", Bits: 8, SBits: 1, EBits: 0, MBits: 7, Bias: 0, PhiDistance: -1.0, Storage: "u8_plus_fp32_scale", Cluster: "CompressionTrick", Status: "Verified", Standard: "Jacob 2018 (TFLite)", UseCase: "standard quant inference", GFRelation: "competitor", Source: "Jacob 2018 (CVPR)" }, - { ID: "stochastic_rounding", Name: "stochastic rounding (technique)", Bits: 0, SBits: 0, EBits: 0, MBits: 0, Bias: 0, PhiDistance: -1.0, Storage: "varies", Cluster: "CompressionTrick", Status: "Verified", Standard: "Gupta 2015", UseCase: "training small networks at low precision", GFRelation: "ally", Source: "Gupta 2015 (ICML)" }, -} diff --git a/gen/numeric/formats_catalog.h b/gen/numeric/formats_catalog.h deleted file mode 100644 index 406d4394a..000000000 --- a/gen/numeric/formats_catalog.h +++ /dev/null @@ -1,109 +0,0 @@ -/* Generated from formats_catalog.t27. Do not edit by hand. */ -/* SPDX-License-Identifier: Apache-2.0 */ -#ifndef T27_FORMATS_CATALOG_H -#define T27_FORMATS_CATALOG_H - -#include -#include - -typedef struct { - const char *id; - const char *name; - uint32_t bits; - uint32_t s_bits; - uint32_t e_bits; - uint32_t m_bits; - int64_t bias; - double phi_distance; /* -1.0 == undefined */ - const char *storage; - const char *cluster; - const char *status; - const char *standard; - const char *use_case; - const char *gf_relation; - const char *source; -} t27_format_t; - -#define T27_FORMAT_COUNT 77 - -static const t27_format_t T27_FORMATS[T27_FORMAT_COUNT] = { - { "binary16", "binary16 (fp16, half)", 16u, 1u, 5u, 10u, 15, 0.118, "u16", "Ieee754Binary", "Verified", "IEEE 754-2008", "GPU activations, inference", "competitor", "IEEE 754-2008" }, - { "binary32", "binary32 (fp32, single)", 32u, 1u, 8u, 23u, 127, 0.27, "u32", "Ieee754Binary", "Verified", "IEEE 754-1985", "industry default", "competitor", "IEEE 754-1985" }, - { "binary64", "binary64 (fp64, double)", 64u, 1u, 11u, 52u, 1023, 0.406, "u64", "Ieee754Binary", "Verified", "IEEE 754-1985", "scientific computing", "competitor", "IEEE 754-1985" }, - { "binary128", "binary128 (fp128, quad)", 128u, 1u, 15u, 112u, 16383, 0.484, "u128", "Ieee754Binary", "Verified", "IEEE 754-2008", "high-precision simulations", "competitor", "IEEE 754-2008" }, - { "binary256", "binary256 (octuple)", 256u, 1u, 19u, 236u, 262143, 0.538, "u256_software", "Ieee754Binary", "Verified", "IEEE 754-2008", "astronomy, cryptography", "competitor", "IEEE 754-2008" }, - { "decimal32", "decimal32", 32u, 1u, 11u, 20u, 101, -1.0, "u32", "Ieee754Decimal", "Verified", "IEEE 754-2008 (DPD/BID)", "banking, GAAP", "orthogonal", "IEEE 754-2008" }, - { "decimal64", "decimal64", 64u, 1u, 13u, 50u, 398, -1.0, "u64", "Ieee754Decimal", "Verified", "IEEE 754-2008", "financial databases", "orthogonal", "IEEE 754-2008" }, - { "decimal128", "decimal128", 128u, 1u, 17u, 110u, 6176, -1.0, "u128", "Ieee754Decimal", "Verified", "IEEE 754-2008", "audit ledgers", "orthogonal", "IEEE 754-2008" }, - { "x87_fp80", "x87 FP80", 80u, 1u, 15u, 64u, 16383, -1.0, "u80_padded", "ExtendedFloat", "Historical", "Intel x87 (explicit integer bit)", "legacy long double on x86", "orthogonal", "Intel SDM" }, - { "double_double", "double-double", 128u, 2u, 22u, 104u, 0, -1.0, "two_u64", "ExtendedFloat", "Verified", "Bailey/Hida (software)", "software extended precision", "orthogonal", "Bailey-Hida 2001" }, - { "quad_double", "quad-double", 256u, 4u, 44u, 208u, 0, -1.0, "four_u64", "ExtendedFloat", "Verified", "Bailey/Hida (software)", "astrophysics, quad-precision sims", "orthogonal", "Bailey-Hida 2001" }, - { "bfloat16", "bfloat16 (BF16)", 16u, 1u, 8u, 7u, 127, 0.525, "u16", "MlLowPrecision", "Verified", "Google Brain", "training (range > precision)", "competitor", "Wang-Kanwar 2019" }, - { "tf32", "TensorFloat-32 (TF32)", 19u, 1u, 8u, 10u, 127, 0.27, "u32_padded", "MlLowPrecision", "Verified", "NVIDIA Ampere", "A100/H100 mixed precision", "competitor", "NVIDIA Ampere whitepaper" }, - { "fp8_e4m3", "FP8 E4M3", 8u, 1u, 4u, 3u, 7, 0.715, "u8", "MlLowPrecision", "Verified", "OCP / NVIDIA / Arm / Intel", "inference, gradient ranges", "competitor", "Micikevicius 2022 (arXiv:2209.05433)" }, - { "fp8_e5m2", "FP8 E5M2", 8u, 1u, 5u, 2u, 15, 1.882, "u8", "MlLowPrecision", "Verified", "OCP / NVIDIA", "activations, wide range", "competitor", "Micikevicius 2022" }, - { "fp6_e3m2", "FP6 E3M2", 6u, 1u, 3u, 2u, 3, 0.882, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "aggressive quant inference", "competitor", "OCP MX v1.0 (2023)" }, - { "fp6_e2m3", "FP6 E2M3", 6u, 1u, 2u, 3u, 1, 0.049, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "mantissa-heavy quant", "ally", "OCP MX v1.0 (2023)" }, - { "fp4_e2m1", "FP4 E2M1", 4u, 1u, 2u, 1u, 1, 1.382, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "extreme quant inference", "competitor", "OCP MX v1.0 (2023)" }, - { "mxfp8", "MXFP8", 8u, 1u, 4u, 3u, 7, 0.715, "u8_plus_shared_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "LLM inference", "ally", "Rouhani 2023 (arXiv:2310.10537)" }, - { "mxfp6", "MXFP6", 6u, 1u, 3u, 2u, 3, 0.882, "u8_packed_plus_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "aggressive inference", "ally", "Rouhani 2023" }, - { "mxfp4", "MXFP4", 4u, 1u, 2u, 1u, 1, 1.382, "u8_packed_plus_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "extreme quant", "ally", "Rouhani 2023" }, - { "nf4", "NF4 (NormalFloat 4-bit)", 4u, 0u, 0u, 4u, 0, -1.0, "u8_packed", "QuantTuned", "Verified", "Dettmers 2023 (QLoRA)", "LLM weight quantization (quantile-based on N(0,1))", "orthogonal", "Dettmers 2023 (arXiv:2305.14314)" }, - { "afp", "AFP (Adaptive Floating-Point)", 16u, 1u, 8u, 7u, 127, -1.0, "u16_plus_tensor_shift", "QuantTuned", "Verified", "Tambe 2020", "efficient training", "orthogonal", "Tambe 2020 (DAC)" }, - { "posit8", "Posit8", 8u, 1u, 2u, 0u, 0, -1.0, "u8", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "inference", "ally", "Posit Standard 2022 (posithub.org)" }, - { "posit16", "Posit16", 16u, 1u, 2u, 0u, 0, -1.0, "u16", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "mixed-precision training", "ally", "Posit Standard 2022" }, - { "posit32", "Posit32", 32u, 1u, 2u, 0u, 0, -1.0, "u32", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "f32 replacement", "ally", "Posit Standard 2022" }, - { "posit64", "Posit64", 64u, 1u, 2u, 0u, 0, -1.0, "u64", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "f64 replacement", "ally", "Posit Standard 2022" }, - { "takum8", "takum8", 8u, 1u, 0u, 0u, 0, -1.0, "u8", "PositUnumIII", "Verified", "Hunhold 2024 (tapered-precision)", "IEEE-754 backward-compatible tapered", "ally", "Hunhold 2024 (arXiv:2412.20273)" }, - { "takum16", "takum16", 16u, 1u, 0u, 0u, 0, -1.0, "u16", "PositUnumIII", "Verified", "Hunhold 2024", "single-rule ladder counterexample", "ally", "Hunhold 2024 (arXiv:2412.20273)" }, - { "takum32", "takum32", 32u, 1u, 0u, 0u, 0, -1.0, "u32", "PositUnumIII", "Verified", "Hunhold 2024", "tapered fp32-class", "ally", "Hunhold 2024" }, - { "takum64", "takum64", 64u, 1u, 0u, 0u, 0, -1.0, "u64", "PositUnumIII", "Verified", "Hunhold 2024", "tapered fp64-class", "ally", "Hunhold 2024" }, - { "lns8", "LNS-8", 8u, 1u, 7u, 0u, 0, -1.0, "u8", "Lns", "Verified", "Arnold 1990; LNS-Madam (2021)", "DSP, signal processing", "orthogonal", "Alam 2021 (arXiv:2106.13914)" }, - { "lns16", "LNS-16", 16u, 1u, 15u, 0u, 0, -1.0, "u16", "Lns", "Verified", "LNS-Madam (2021)", "log-domain training (mul -> add)", "orthogonal", "Alam 2021" }, - { "lns32", "LNS-32", 32u, 1u, 31u, 0u, 0, -1.0, "u32", "Lns", "Verified", "LNS-Madam (2021)", "log-domain DSP", "orthogonal", "Alam 2021" }, - { "lns64", "LNS-64", 64u, 1u, 63u, 0u, 0, -1.0, "u64", "Lns", "Verified", "LNS-Madam (2021)", "scientific log-domain", "orthogonal", "Alam 2021" }, - { "gfternary", "GFTernary", 2u, 1u, 0u, 2u, 0, 0.0, "u2", "GoldenFloat", "Verified", "this work; {-phi, 0, +phi}", "bulk layers (hybrid)", "self", "BENCH-007" }, - { "gf4", "GF4", 4u, 1u, 1u, 2u, 0, 0.118, "u8", "GoldenFloat", "Experimental", "this work; F0 minimal", "proof-of-concept", "self", "specs/numeric/gf4.t27" }, - { "gf8", "GF8", 8u, 1u, 3u, 4u, 3, 0.132, "u8", "GoldenFloat", "Verified", "this work; L1 Lucas", "edge / sensors", "self", "BENCH-007 (specs/numeric/gf8.t27)" }, - { "gf12", "GF12", 12u, 1u, 4u, 7u, 7, 0.047, "u16", "GoldenFloat", "Verified", "this work; L0/F3", "mid-range / audio", "self", "BENCH-007 (specs/numeric/gf12.t27)" }, - { "gf16", "GF16", 16u, 1u, 6u, 9u, 31, 0.049, "u16", "GoldenFloat", "Verified", "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7", "training and inference (production)", "self", "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)" }, - { "gf20", "GF20", 20u, 1u, 7u, 12u, 63, 0.035, "u32", "GoldenFloat", "Experimental", "this work; 17-squared empirical PHI_BIAS=289", "high-precision edge", "self", "specs/numeric/gf20.t27 (spec only)" }, - { "gf24", "GF24", 24u, 1u, 9u, 14u, 255, 0.025, "u32", "GoldenFloat", "Experimental", "this work; L15 PHI_BIAS=1364", "server inference", "self", "specs/numeric/gf24.t27 (spec only)" }, - { "gf32", "GF32", 32u, 1u, 12u, 19u, 2047, 0.014, "u32", "GoldenFloat", "Verified", "this work; F0 resolved", "fp32 drop-in", "self", "BENCH-012 (specs/numeric/gf32.t27)" }, - { "gf64", "GF64", 64u, 1u, 24u, 39u, 8388607, 0.003, "u64", "GoldenFloat", "Verified", "this work; EXP_MAX - BIAS", "scientific / double", "self", "BENCH-007b (specs/numeric/gf64.t27)" }, - { "gf6", "GF6 (predicted)", 6u, 1u, 2u, 3u, 1, 0.05, "u8_packed", "GoldenFloat", "Experimental", "this work; e=round(5/phi^2)=2, fills FP6 gap", "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint", "experimental", "section12.5" }, - { "gf128", "GF128 (predicted)", 128u, 1u, 48u, 79u, 0, 0.008, "u128", "GoldenFloat", "Experimental", "this work; e=round(127/phi^2)=48 (Open: bias TBD)", "OPEN R&D: phi-aligned binary128 alternative", "experimental", "section12.5" }, - { "gf256", "GF256 (predicted)", 256u, 1u, 97u, 158u, 0, 0.005, "u256_software", "GoldenFloat", "Experimental", "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)", "OPEN R&D: phi-aligned binary256 alternative", "experimental", "section12.5; bias Open per skill" }, - { "gf8_bfp", "GF8-BFP (block FP atop GF8)", 8u, 1u, 3u, 4u, 3, 0.132, "u8_plus_shared_exp", "GoldenFloat", "Experimental", "this work; per-tile shared exponent", "OPEN R&D: LLM-quantization-friendly GF8", "experimental", "section12.5" }, - { "gf_lns_hybrid", "GF + LNS hybrid (dual-space)", 16u, 1u, 6u, 9u, 31, 0.049, "u16_plus_lns_path", "GoldenFloat", "Experimental", "this work; mul in log-space, accumulate Lucas-closed", "OPEN R&D: dual-space arithmetic", "experimental", "section12.5" }, - { "mxgf6", "MXGF6 (microscaling GF6)", 6u, 1u, 2u, 3u, 1, 0.05, "u8_packed_plus_e8m0", "GoldenFloat", "Experimental", "this work; OCP MX block + GF6", "OPEN R&D: phi-aligned MX-6 candidate", "experimental", "section12.5" }, - { "mxgf4", "MXGF4 (microscaling GF4)", 4u, 1u, 1u, 2u, 0, 0.118, "u8_packed_plus_e8m0", "GoldenFloat", "Experimental", "this work; OCP MX block + GF4", "OPEN R&D: phi-aligned MX-4 candidate", "experimental", "section12.5" }, - { "int4", "INT4 / UINT4", 4u, 1u, 0u, 3u, 0, -1.0, "u8_packed", "IntegerFixed", "Verified", "two complement", "aggressive quantization", "competitor", "ISO/IEC 9899" }, - { "int8", "INT8 / UINT8", 8u, 1u, 0u, 7u, 0, -1.0, "u8", "IntegerFixed", "Verified", "two complement", "INT8 inference, per-channel scale", "competitor", "ISO/IEC 9899" }, - { "int16", "INT16 / UINT16", 16u, 1u, 0u, 15u, 0, -1.0, "u16", "IntegerFixed", "Verified", "two complement", "DSP, embedded ML", "competitor", "ISO/IEC 9899" }, - { "int32", "INT32 / UINT32", 32u, 1u, 0u, 31u, 0, -1.0, "u32", "IntegerFixed", "Verified", "two complement", "general CPU integer", "competitor", "ISO/IEC 9899" }, - { "int64", "INT64 / UINT64", 64u, 1u, 0u, 63u, 0, -1.0, "u64", "IntegerFixed", "Verified", "two complement", "databases, timestamps", "competitor", "ISO/IEC 9899" }, - { "int128", "INT128 / UINT128", 128u, 1u, 0u, 127u, 0, -1.0, "u128", "IntegerFixed", "Verified", "two complement", "crypto, big-int", "competitor", "Rust/Clang u128" }, - { "q_format", "Q-format (Qm.n)", 0u, 1u, 0u, 0u, 0, -1.0, "varies", "IntegerFixed", "Verified", "TI fixed-point", "audio DSP, fixed-point ML", "orthogonal", "TI SPRA704" }, - { "bcd", "BCD (binary-coded decimal)", 0u, 0u, 0u, 0u, 0, -1.0, "u4_per_digit", "IntegerFixed", "Historical", "IBM 1959", "calculators, GAAP", "orthogonal", "ISO/IEC 8859" }, - { "ibm_hfp32", "IBM HFP (single)", 32u, 1u, 7u, 24u, 64, -1.0, "u32", "HistoricalVendor", "Historical", "IBM System/360 (1964); base-16 exponent", "legacy mainframe", "orthogonal", "IBM POO" }, - { "ibm_hfp64", "IBM HFP (double)", 64u, 1u, 7u, 56u, 64, -1.0, "u64", "HistoricalVendor", "Historical", "IBM System/360 (1964)", "legacy mainframe", "orthogonal", "IBM POO" }, - { "ibm_hfp128", "IBM HFP (extended)", 128u, 1u, 7u, 120u, 64, -1.0, "u128", "HistoricalVendor", "Historical", "IBM z/Architecture", "legacy mainframe", "orthogonal", "IBM POO" }, - { "ms_mbf32", "Microsoft MBF (single)", 32u, 1u, 8u, 23u, 129, -1.0, "u32", "HistoricalVendor", "Historical", "MS BASIC / MS-DOS (pre-IEEE)", "MS BASIC legacy", "orthogonal", "MS-DOS docs" }, - { "ms_mbf64", "Microsoft MBF (double)", 64u, 1u, 8u, 55u, 129, -1.0, "u64", "HistoricalVendor", "Historical", "MS BASIC", "MS BASIC legacy", "orthogonal", "MS-DOS docs" }, - { "vax_f", "VAX F-float", 32u, 1u, 8u, 23u, 128, -1.0, "u32", "HistoricalVendor", "Historical", "DEC VAX", "DEC legacy", "orthogonal", "VAX Architecture Reference" }, - { "vax_d", "VAX D-float", 64u, 1u, 8u, 55u, 128, -1.0, "u64", "HistoricalVendor", "Historical", "DEC VAX", "DEC legacy double", "orthogonal", "VAX Architecture Reference" }, - { "vax_g", "VAX G-float", 64u, 1u, 11u, 52u, 1024, -1.0, "u64", "HistoricalVendor", "Historical", "DEC VAX (IEEE-like)", "DEC legacy", "orthogonal", "VAX Architecture Reference" }, - { "vax_h", "VAX H-float", 128u, 1u, 15u, 112u, 16384, -1.0, "u128", "HistoricalVendor", "Historical", "DEC VAX", "DEC quad", "orthogonal", "VAX Architecture Reference" }, - { "cray_float", "Cray float", 64u, 1u, 15u, 48u, 16384, -1.0, "u64", "HistoricalVendor", "Historical", "Cray-1 (1976); no NaN/Inf, unrounded mul", "Cray legacy", "orthogonal", "Cray-1 Hardware Reference" }, - { "minifloat", "minifloat (arbitrary E:M, <=16 bits)", 0u, 1u, 0u, 0u, 0, -1.0, "varies", "Theoretical", "Experimental", "parametric framework", "design space of GF4/GF8/GF12/GF16", "ally", "Higham 1996" }, - { "unum_i", "Unum I (tapered + ubound)", 0u, 1u, 0u, 0u, 0, -1.0, "varies", "Theoretical", "Experimental", "Gustafson 2015 (predecessor to posit)", "interval arithmetic", "ally", "Gustafson 2015 (The End of Error)" }, - { "unum_ii", "Unum II (SORN projective)", 0u, 0u, 0u, 0u, 0, -1.0, "lookup_table", "Theoretical", "Experimental", "Gustafson 2016", "lookup-table real arithmetic; not GF-comparable", "orthogonal", "Gustafson 2016" }, - { "tapered_fp", "tapered floating point", 0u, 1u, 0u, 0u, 0, -1.0, "varies", "Theoretical", "Experimental", "Morris 1971; posit ancestor", "variable mantissa via regime bits", "ally", "Morris 1971 (IEEE TC)" }, - { "block_fp", "block floating point (BFP)", 0u, 0u, 0u, 0u, 0, -1.0, "varies", "CompressionTrick", "Verified", "Wilkinson 1965; modern revivals", "per-tile shared exponent", "ally", "Darvish-Rouhani 2020" }, - { "shared_exp", "shared-exponent formats", 0u, 0u, 0u, 0u, 0, -1.0, "varies", "CompressionTrick", "Verified", "generalised BFP", "LLM quantization", "ally", "Darvish-Rouhani 2020" }, - { "per_channel_scale", "INT8 with per-channel scale", 8u, 1u, 0u, 7u, 0, -1.0, "u8_plus_fp32_scale", "CompressionTrick", "Verified", "Jacob 2018 (TFLite)", "standard quant inference", "competitor", "Jacob 2018 (CVPR)" }, - { "stochastic_rounding", "stochastic rounding (technique)", 0u, 0u, 0u, 0u, 0, -1.0, "varies", "CompressionTrick", "Verified", "Gupta 2015", "training small networks at low precision", "ally", "Gupta 2015 (ICML)" }, -}; - -#endif /* T27_FORMATS_CATALOG_H */ diff --git a/gen/numeric/formats_catalog.hpp b/gen/numeric/formats_catalog.hpp deleted file mode 100644 index 9f97ccd62..000000000 --- a/gen/numeric/formats_catalog.hpp +++ /dev/null @@ -1,108 +0,0 @@ -// Generated from formats_catalog.t27. Do not edit by hand. -// SPDX-License-Identifier: Apache-2.0 -#pragma once -#include -#include -#include - -namespace t27 { - -struct Format { - std::string_view id; - std::string_view name; - std::uint32_t bits; - std::uint32_t s_bits; - std::uint32_t e_bits; - std::uint32_t m_bits; - std::int64_t bias; - double phi_distance; // -1.0 == undefined - std::string_view storage; - std::string_view cluster; - std::string_view status; - std::string_view standard; - std::string_view use_case; - std::string_view gf_relation; - std::string_view source; -}; - -inline constexpr std::array FORMATS = {{ - Format{ "binary16", "binary16 (fp16, half)", 16u, 1u, 5u, 10u, 15, 0.118, "u16", "Ieee754Binary", "Verified", "IEEE 754-2008", "GPU activations, inference", "competitor", "IEEE 754-2008" }, - Format{ "binary32", "binary32 (fp32, single)", 32u, 1u, 8u, 23u, 127, 0.27, "u32", "Ieee754Binary", "Verified", "IEEE 754-1985", "industry default", "competitor", "IEEE 754-1985" }, - Format{ "binary64", "binary64 (fp64, double)", 64u, 1u, 11u, 52u, 1023, 0.406, "u64", "Ieee754Binary", "Verified", "IEEE 754-1985", "scientific computing", "competitor", "IEEE 754-1985" }, - Format{ "binary128", "binary128 (fp128, quad)", 128u, 1u, 15u, 112u, 16383, 0.484, "u128", "Ieee754Binary", "Verified", "IEEE 754-2008", "high-precision simulations", "competitor", "IEEE 754-2008" }, - Format{ "binary256", "binary256 (octuple)", 256u, 1u, 19u, 236u, 262143, 0.538, "u256_software", "Ieee754Binary", "Verified", "IEEE 754-2008", "astronomy, cryptography", "competitor", "IEEE 754-2008" }, - Format{ "decimal32", "decimal32", 32u, 1u, 11u, 20u, 101, -1.0, "u32", "Ieee754Decimal", "Verified", "IEEE 754-2008 (DPD/BID)", "banking, GAAP", "orthogonal", "IEEE 754-2008" }, - Format{ "decimal64", "decimal64", 64u, 1u, 13u, 50u, 398, -1.0, "u64", "Ieee754Decimal", "Verified", "IEEE 754-2008", "financial databases", "orthogonal", "IEEE 754-2008" }, - Format{ "decimal128", "decimal128", 128u, 1u, 17u, 110u, 6176, -1.0, "u128", "Ieee754Decimal", "Verified", "IEEE 754-2008", "audit ledgers", "orthogonal", "IEEE 754-2008" }, - Format{ "x87_fp80", "x87 FP80", 80u, 1u, 15u, 64u, 16383, -1.0, "u80_padded", "ExtendedFloat", "Historical", "Intel x87 (explicit integer bit)", "legacy long double on x86", "orthogonal", "Intel SDM" }, - Format{ "double_double", "double-double", 128u, 2u, 22u, 104u, 0, -1.0, "two_u64", "ExtendedFloat", "Verified", "Bailey/Hida (software)", "software extended precision", "orthogonal", "Bailey-Hida 2001" }, - Format{ "quad_double", "quad-double", 256u, 4u, 44u, 208u, 0, -1.0, "four_u64", "ExtendedFloat", "Verified", "Bailey/Hida (software)", "astrophysics, quad-precision sims", "orthogonal", "Bailey-Hida 2001" }, - Format{ "bfloat16", "bfloat16 (BF16)", 16u, 1u, 8u, 7u, 127, 0.525, "u16", "MlLowPrecision", "Verified", "Google Brain", "training (range > precision)", "competitor", "Wang-Kanwar 2019" }, - Format{ "tf32", "TensorFloat-32 (TF32)", 19u, 1u, 8u, 10u, 127, 0.27, "u32_padded", "MlLowPrecision", "Verified", "NVIDIA Ampere", "A100/H100 mixed precision", "competitor", "NVIDIA Ampere whitepaper" }, - Format{ "fp8_e4m3", "FP8 E4M3", 8u, 1u, 4u, 3u, 7, 0.715, "u8", "MlLowPrecision", "Verified", "OCP / NVIDIA / Arm / Intel", "inference, gradient ranges", "competitor", "Micikevicius 2022 (arXiv:2209.05433)" }, - Format{ "fp8_e5m2", "FP8 E5M2", 8u, 1u, 5u, 2u, 15, 1.882, "u8", "MlLowPrecision", "Verified", "OCP / NVIDIA", "activations, wide range", "competitor", "Micikevicius 2022" }, - Format{ "fp6_e3m2", "FP6 E3M2", 6u, 1u, 3u, 2u, 3, 0.882, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "aggressive quant inference", "competitor", "OCP MX v1.0 (2023)" }, - Format{ "fp6_e2m3", "FP6 E2M3", 6u, 1u, 2u, 3u, 1, 0.049, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "mantissa-heavy quant", "ally", "OCP MX v1.0 (2023)" }, - Format{ "fp4_e2m1", "FP4 E2M1", 4u, 1u, 2u, 1u, 1, 1.382, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "extreme quant inference", "competitor", "OCP MX v1.0 (2023)" }, - Format{ "mxfp8", "MXFP8", 8u, 1u, 4u, 3u, 7, 0.715, "u8_plus_shared_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "LLM inference", "ally", "Rouhani 2023 (arXiv:2310.10537)" }, - Format{ "mxfp6", "MXFP6", 6u, 1u, 3u, 2u, 3, 0.882, "u8_packed_plus_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "aggressive inference", "ally", "Rouhani 2023" }, - Format{ "mxfp4", "MXFP4", 4u, 1u, 2u, 1u, 1, 1.382, "u8_packed_plus_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "extreme quant", "ally", "Rouhani 2023" }, - Format{ "nf4", "NF4 (NormalFloat 4-bit)", 4u, 0u, 0u, 4u, 0, -1.0, "u8_packed", "QuantTuned", "Verified", "Dettmers 2023 (QLoRA)", "LLM weight quantization (quantile-based on N(0,1))", "orthogonal", "Dettmers 2023 (arXiv:2305.14314)" }, - Format{ "afp", "AFP (Adaptive Floating-Point)", 16u, 1u, 8u, 7u, 127, -1.0, "u16_plus_tensor_shift", "QuantTuned", "Verified", "Tambe 2020", "efficient training", "orthogonal", "Tambe 2020 (DAC)" }, - Format{ "posit8", "Posit8", 8u, 1u, 2u, 0u, 0, -1.0, "u8", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "inference", "ally", "Posit Standard 2022 (posithub.org)" }, - Format{ "posit16", "Posit16", 16u, 1u, 2u, 0u, 0, -1.0, "u16", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "mixed-precision training", "ally", "Posit Standard 2022" }, - Format{ "posit32", "Posit32", 32u, 1u, 2u, 0u, 0, -1.0, "u32", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "f32 replacement", "ally", "Posit Standard 2022" }, - Format{ "posit64", "Posit64", 64u, 1u, 2u, 0u, 0, -1.0, "u64", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "f64 replacement", "ally", "Posit Standard 2022" }, - Format{ "takum8", "takum8", 8u, 1u, 0u, 0u, 0, -1.0, "u8", "PositUnumIII", "Verified", "Hunhold 2024 (tapered-precision)", "IEEE-754 backward-compatible tapered", "ally", "Hunhold 2024 (arXiv:2412.20273)" }, - Format{ "takum16", "takum16", 16u, 1u, 0u, 0u, 0, -1.0, "u16", "PositUnumIII", "Verified", "Hunhold 2024", "single-rule ladder counterexample", "ally", "Hunhold 2024 (arXiv:2412.20273)" }, - Format{ "takum32", "takum32", 32u, 1u, 0u, 0u, 0, -1.0, "u32", "PositUnumIII", "Verified", "Hunhold 2024", "tapered fp32-class", "ally", "Hunhold 2024" }, - Format{ "takum64", "takum64", 64u, 1u, 0u, 0u, 0, -1.0, "u64", "PositUnumIII", "Verified", "Hunhold 2024", "tapered fp64-class", "ally", "Hunhold 2024" }, - Format{ "lns8", "LNS-8", 8u, 1u, 7u, 0u, 0, -1.0, "u8", "Lns", "Verified", "Arnold 1990; LNS-Madam (2021)", "DSP, signal processing", "orthogonal", "Alam 2021 (arXiv:2106.13914)" }, - Format{ "lns16", "LNS-16", 16u, 1u, 15u, 0u, 0, -1.0, "u16", "Lns", "Verified", "LNS-Madam (2021)", "log-domain training (mul -> add)", "orthogonal", "Alam 2021" }, - Format{ "lns32", "LNS-32", 32u, 1u, 31u, 0u, 0, -1.0, "u32", "Lns", "Verified", "LNS-Madam (2021)", "log-domain DSP", "orthogonal", "Alam 2021" }, - Format{ "lns64", "LNS-64", 64u, 1u, 63u, 0u, 0, -1.0, "u64", "Lns", "Verified", "LNS-Madam (2021)", "scientific log-domain", "orthogonal", "Alam 2021" }, - Format{ "gfternary", "GFTernary", 2u, 1u, 0u, 2u, 0, 0.0, "u2", "GoldenFloat", "Verified", "this work; {-phi, 0, +phi}", "bulk layers (hybrid)", "self", "BENCH-007" }, - Format{ "gf4", "GF4", 4u, 1u, 1u, 2u, 0, 0.118, "u8", "GoldenFloat", "Experimental", "this work; F0 minimal", "proof-of-concept", "self", "specs/numeric/gf4.t27" }, - Format{ "gf8", "GF8", 8u, 1u, 3u, 4u, 3, 0.132, "u8", "GoldenFloat", "Verified", "this work; L1 Lucas", "edge / sensors", "self", "BENCH-007 (specs/numeric/gf8.t27)" }, - Format{ "gf12", "GF12", 12u, 1u, 4u, 7u, 7, 0.047, "u16", "GoldenFloat", "Verified", "this work; L0/F3", "mid-range / audio", "self", "BENCH-007 (specs/numeric/gf12.t27)" }, - Format{ "gf16", "GF16", 16u, 1u, 6u, 9u, 31, 0.049, "u16", "GoldenFloat", "Verified", "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7", "training and inference (production)", "self", "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)" }, - Format{ "gf20", "GF20", 20u, 1u, 7u, 12u, 63, 0.035, "u32", "GoldenFloat", "Experimental", "this work; 17-squared empirical PHI_BIAS=289", "high-precision edge", "self", "specs/numeric/gf20.t27 (spec only)" }, - Format{ "gf24", "GF24", 24u, 1u, 9u, 14u, 255, 0.025, "u32", "GoldenFloat", "Experimental", "this work; L15 PHI_BIAS=1364", "server inference", "self", "specs/numeric/gf24.t27 (spec only)" }, - Format{ "gf32", "GF32", 32u, 1u, 12u, 19u, 2047, 0.014, "u32", "GoldenFloat", "Verified", "this work; F0 resolved", "fp32 drop-in", "self", "BENCH-012 (specs/numeric/gf32.t27)" }, - Format{ "gf64", "GF64", 64u, 1u, 24u, 39u, 8388607, 0.003, "u64", "GoldenFloat", "Verified", "this work; EXP_MAX - BIAS", "scientific / double", "self", "BENCH-007b (specs/numeric/gf64.t27)" }, - Format{ "gf6", "GF6 (predicted)", 6u, 1u, 2u, 3u, 1, 0.05, "u8_packed", "GoldenFloat", "Experimental", "this work; e=round(5/phi^2)=2, fills FP6 gap", "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint", "experimental", "section12.5" }, - Format{ "gf128", "GF128 (predicted)", 128u, 1u, 48u, 79u, 0, 0.008, "u128", "GoldenFloat", "Experimental", "this work; e=round(127/phi^2)=48 (Open: bias TBD)", "OPEN R&D: phi-aligned binary128 alternative", "experimental", "section12.5" }, - Format{ "gf256", "GF256 (predicted)", 256u, 1u, 97u, 158u, 0, 0.005, "u256_software", "GoldenFloat", "Experimental", "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)", "OPEN R&D: phi-aligned binary256 alternative", "experimental", "section12.5; bias Open per skill" }, - Format{ "gf8_bfp", "GF8-BFP (block FP atop GF8)", 8u, 1u, 3u, 4u, 3, 0.132, "u8_plus_shared_exp", "GoldenFloat", "Experimental", "this work; per-tile shared exponent", "OPEN R&D: LLM-quantization-friendly GF8", "experimental", "section12.5" }, - Format{ "gf_lns_hybrid", "GF + LNS hybrid (dual-space)", 16u, 1u, 6u, 9u, 31, 0.049, "u16_plus_lns_path", "GoldenFloat", "Experimental", "this work; mul in log-space, accumulate Lucas-closed", "OPEN R&D: dual-space arithmetic", "experimental", "section12.5" }, - Format{ "mxgf6", "MXGF6 (microscaling GF6)", 6u, 1u, 2u, 3u, 1, 0.05, "u8_packed_plus_e8m0", "GoldenFloat", "Experimental", "this work; OCP MX block + GF6", "OPEN R&D: phi-aligned MX-6 candidate", "experimental", "section12.5" }, - Format{ "mxgf4", "MXGF4 (microscaling GF4)", 4u, 1u, 1u, 2u, 0, 0.118, "u8_packed_plus_e8m0", "GoldenFloat", "Experimental", "this work; OCP MX block + GF4", "OPEN R&D: phi-aligned MX-4 candidate", "experimental", "section12.5" }, - Format{ "int4", "INT4 / UINT4", 4u, 1u, 0u, 3u, 0, -1.0, "u8_packed", "IntegerFixed", "Verified", "two complement", "aggressive quantization", "competitor", "ISO/IEC 9899" }, - Format{ "int8", "INT8 / UINT8", 8u, 1u, 0u, 7u, 0, -1.0, "u8", "IntegerFixed", "Verified", "two complement", "INT8 inference, per-channel scale", "competitor", "ISO/IEC 9899" }, - Format{ "int16", "INT16 / UINT16", 16u, 1u, 0u, 15u, 0, -1.0, "u16", "IntegerFixed", "Verified", "two complement", "DSP, embedded ML", "competitor", "ISO/IEC 9899" }, - Format{ "int32", "INT32 / UINT32", 32u, 1u, 0u, 31u, 0, -1.0, "u32", "IntegerFixed", "Verified", "two complement", "general CPU integer", "competitor", "ISO/IEC 9899" }, - Format{ "int64", "INT64 / UINT64", 64u, 1u, 0u, 63u, 0, -1.0, "u64", "IntegerFixed", "Verified", "two complement", "databases, timestamps", "competitor", "ISO/IEC 9899" }, - Format{ "int128", "INT128 / UINT128", 128u, 1u, 0u, 127u, 0, -1.0, "u128", "IntegerFixed", "Verified", "two complement", "crypto, big-int", "competitor", "Rust/Clang u128" }, - Format{ "q_format", "Q-format (Qm.n)", 0u, 1u, 0u, 0u, 0, -1.0, "varies", "IntegerFixed", "Verified", "TI fixed-point", "audio DSP, fixed-point ML", "orthogonal", "TI SPRA704" }, - Format{ "bcd", "BCD (binary-coded decimal)", 0u, 0u, 0u, 0u, 0, -1.0, "u4_per_digit", "IntegerFixed", "Historical", "IBM 1959", "calculators, GAAP", "orthogonal", "ISO/IEC 8859" }, - Format{ "ibm_hfp32", "IBM HFP (single)", 32u, 1u, 7u, 24u, 64, -1.0, "u32", "HistoricalVendor", "Historical", "IBM System/360 (1964); base-16 exponent", "legacy mainframe", "orthogonal", "IBM POO" }, - Format{ "ibm_hfp64", "IBM HFP (double)", 64u, 1u, 7u, 56u, 64, -1.0, "u64", "HistoricalVendor", "Historical", "IBM System/360 (1964)", "legacy mainframe", "orthogonal", "IBM POO" }, - Format{ "ibm_hfp128", "IBM HFP (extended)", 128u, 1u, 7u, 120u, 64, -1.0, "u128", "HistoricalVendor", "Historical", "IBM z/Architecture", "legacy mainframe", "orthogonal", "IBM POO" }, - Format{ "ms_mbf32", "Microsoft MBF (single)", 32u, 1u, 8u, 23u, 129, -1.0, "u32", "HistoricalVendor", "Historical", "MS BASIC / MS-DOS (pre-IEEE)", "MS BASIC legacy", "orthogonal", "MS-DOS docs" }, - Format{ "ms_mbf64", "Microsoft MBF (double)", 64u, 1u, 8u, 55u, 129, -1.0, "u64", "HistoricalVendor", "Historical", "MS BASIC", "MS BASIC legacy", "orthogonal", "MS-DOS docs" }, - Format{ "vax_f", "VAX F-float", 32u, 1u, 8u, 23u, 128, -1.0, "u32", "HistoricalVendor", "Historical", "DEC VAX", "DEC legacy", "orthogonal", "VAX Architecture Reference" }, - Format{ "vax_d", "VAX D-float", 64u, 1u, 8u, 55u, 128, -1.0, "u64", "HistoricalVendor", "Historical", "DEC VAX", "DEC legacy double", "orthogonal", "VAX Architecture Reference" }, - Format{ "vax_g", "VAX G-float", 64u, 1u, 11u, 52u, 1024, -1.0, "u64", "HistoricalVendor", "Historical", "DEC VAX (IEEE-like)", "DEC legacy", "orthogonal", "VAX Architecture Reference" }, - Format{ "vax_h", "VAX H-float", 128u, 1u, 15u, 112u, 16384, -1.0, "u128", "HistoricalVendor", "Historical", "DEC VAX", "DEC quad", "orthogonal", "VAX Architecture Reference" }, - Format{ "cray_float", "Cray float", 64u, 1u, 15u, 48u, 16384, -1.0, "u64", "HistoricalVendor", "Historical", "Cray-1 (1976); no NaN/Inf, unrounded mul", "Cray legacy", "orthogonal", "Cray-1 Hardware Reference" }, - Format{ "minifloat", "minifloat (arbitrary E:M, <=16 bits)", 0u, 1u, 0u, 0u, 0, -1.0, "varies", "Theoretical", "Experimental", "parametric framework", "design space of GF4/GF8/GF12/GF16", "ally", "Higham 1996" }, - Format{ "unum_i", "Unum I (tapered + ubound)", 0u, 1u, 0u, 0u, 0, -1.0, "varies", "Theoretical", "Experimental", "Gustafson 2015 (predecessor to posit)", "interval arithmetic", "ally", "Gustafson 2015 (The End of Error)" }, - Format{ "unum_ii", "Unum II (SORN projective)", 0u, 0u, 0u, 0u, 0, -1.0, "lookup_table", "Theoretical", "Experimental", "Gustafson 2016", "lookup-table real arithmetic; not GF-comparable", "orthogonal", "Gustafson 2016" }, - Format{ "tapered_fp", "tapered floating point", 0u, 1u, 0u, 0u, 0, -1.0, "varies", "Theoretical", "Experimental", "Morris 1971; posit ancestor", "variable mantissa via regime bits", "ally", "Morris 1971 (IEEE TC)" }, - Format{ "block_fp", "block floating point (BFP)", 0u, 0u, 0u, 0u, 0, -1.0, "varies", "CompressionTrick", "Verified", "Wilkinson 1965; modern revivals", "per-tile shared exponent", "ally", "Darvish-Rouhani 2020" }, - Format{ "shared_exp", "shared-exponent formats", 0u, 0u, 0u, 0u, 0, -1.0, "varies", "CompressionTrick", "Verified", "generalised BFP", "LLM quantization", "ally", "Darvish-Rouhani 2020" }, - Format{ "per_channel_scale", "INT8 with per-channel scale", 8u, 1u, 0u, 7u, 0, -1.0, "u8_plus_fp32_scale", "CompressionTrick", "Verified", "Jacob 2018 (TFLite)", "standard quant inference", "competitor", "Jacob 2018 (CVPR)" }, - Format{ "stochastic_rounding", "stochastic rounding (technique)", 0u, 0u, 0u, 0u, 0, -1.0, "varies", "CompressionTrick", "Verified", "Gupta 2015", "training small networks at low precision", "ally", "Gupta 2015 (ICML)" }, -}}; - -} // namespace t27 diff --git a/gen/numeric/formats_catalog.json b/gen/numeric/formats_catalog.json deleted file mode 100644 index 08f22450b..000000000 --- a/gen/numeric/formats_catalog.json +++ /dev/null @@ -1,1314 +0,0 @@ -{ - "count": 77, - "formats": [ - { - "id": "binary16", - "name": "binary16 (fp16, half)", - "bits": 16, - "s_bits": 1, - "e_bits": 5, - "m_bits": 10, - "bias": 15, - "phi_distance": 0.118, - "storage": "u16", - "cluster": "Ieee754Binary", - "status": "Verified", - "standard": "IEEE 754-2008", - "use_case": "GPU activations, inference", - "gf_relation": "competitor", - "source": "IEEE 754-2008" - }, - { - "id": "binary32", - "name": "binary32 (fp32, single)", - "bits": 32, - "s_bits": 1, - "e_bits": 8, - "m_bits": 23, - "bias": 127, - "phi_distance": 0.27, - "storage": "u32", - "cluster": "Ieee754Binary", - "status": "Verified", - "standard": "IEEE 754-1985", - "use_case": "industry default", - "gf_relation": "competitor", - "source": "IEEE 754-1985" - }, - { - "id": "binary64", - "name": "binary64 (fp64, double)", - "bits": 64, - "s_bits": 1, - "e_bits": 11, - "m_bits": 52, - "bias": 1023, - "phi_distance": 0.406, - "storage": "u64", - "cluster": "Ieee754Binary", - "status": "Verified", - "standard": "IEEE 754-1985", - "use_case": "scientific computing", - "gf_relation": "competitor", - "source": "IEEE 754-1985" - }, - { - "id": "binary128", - "name": "binary128 (fp128, quad)", - "bits": 128, - "s_bits": 1, - "e_bits": 15, - "m_bits": 112, - "bias": 16383, - "phi_distance": 0.484, - "storage": "u128", - "cluster": "Ieee754Binary", - "status": "Verified", - "standard": "IEEE 754-2008", - "use_case": "high-precision simulations", - "gf_relation": "competitor", - "source": "IEEE 754-2008" - }, - { - "id": "binary256", - "name": "binary256 (octuple)", - "bits": 256, - "s_bits": 1, - "e_bits": 19, - "m_bits": 236, - "bias": 262143, - "phi_distance": 0.538, - "storage": "u256_software", - "cluster": "Ieee754Binary", - "status": "Verified", - "standard": "IEEE 754-2008", - "use_case": "astronomy, cryptography", - "gf_relation": "competitor", - "source": "IEEE 754-2008" - }, - { - "id": "decimal32", - "name": "decimal32", - "bits": 32, - "s_bits": 1, - "e_bits": 11, - "m_bits": 20, - "bias": 101, - "phi_distance": -1.0, - "storage": "u32", - "cluster": "Ieee754Decimal", - "status": "Verified", - "standard": "IEEE 754-2008 (DPD/BID)", - "use_case": "banking, GAAP", - "gf_relation": "orthogonal", - "source": "IEEE 754-2008" - }, - { - "id": "decimal64", - "name": "decimal64", - "bits": 64, - "s_bits": 1, - "e_bits": 13, - "m_bits": 50, - "bias": 398, - "phi_distance": -1.0, - "storage": "u64", - "cluster": "Ieee754Decimal", - "status": "Verified", - "standard": "IEEE 754-2008", - "use_case": "financial databases", - "gf_relation": "orthogonal", - "source": "IEEE 754-2008" - }, - { - "id": "decimal128", - "name": "decimal128", - "bits": 128, - "s_bits": 1, - "e_bits": 17, - "m_bits": 110, - "bias": 6176, - "phi_distance": -1.0, - "storage": "u128", - "cluster": "Ieee754Decimal", - "status": "Verified", - "standard": "IEEE 754-2008", - "use_case": "audit ledgers", - "gf_relation": "orthogonal", - "source": "IEEE 754-2008" - }, - { - "id": "x87_fp80", - "name": "x87 FP80", - "bits": 80, - "s_bits": 1, - "e_bits": 15, - "m_bits": 64, - "bias": 16383, - "phi_distance": -1.0, - "storage": "u80_padded", - "cluster": "ExtendedFloat", - "status": "Historical", - "standard": "Intel x87 (explicit integer bit)", - "use_case": "legacy long double on x86", - "gf_relation": "orthogonal", - "source": "Intel SDM" - }, - { - "id": "double_double", - "name": "double-double", - "bits": 128, - "s_bits": 2, - "e_bits": 22, - "m_bits": 104, - "bias": 0, - "phi_distance": -1.0, - "storage": "two_u64", - "cluster": "ExtendedFloat", - "status": "Verified", - "standard": "Bailey/Hida (software)", - "use_case": "software extended precision", - "gf_relation": "orthogonal", - "source": "Bailey-Hida 2001" - }, - { - "id": "quad_double", - "name": "quad-double", - "bits": 256, - "s_bits": 4, - "e_bits": 44, - "m_bits": 208, - "bias": 0, - "phi_distance": -1.0, - "storage": "four_u64", - "cluster": "ExtendedFloat", - "status": "Verified", - "standard": "Bailey/Hida (software)", - "use_case": "astrophysics, quad-precision sims", - "gf_relation": "orthogonal", - "source": "Bailey-Hida 2001" - }, - { - "id": "bfloat16", - "name": "bfloat16 (BF16)", - "bits": 16, - "s_bits": 1, - "e_bits": 8, - "m_bits": 7, - "bias": 127, - "phi_distance": 0.525, - "storage": "u16", - "cluster": "MlLowPrecision", - "status": "Verified", - "standard": "Google Brain", - "use_case": "training (range > precision)", - "gf_relation": "competitor", - "source": "Wang-Kanwar 2019" - }, - { - "id": "tf32", - "name": "TensorFloat-32 (TF32)", - "bits": 19, - "s_bits": 1, - "e_bits": 8, - "m_bits": 10, - "bias": 127, - "phi_distance": 0.27, - "storage": "u32_padded", - "cluster": "MlLowPrecision", - "status": "Verified", - "standard": "NVIDIA Ampere", - "use_case": "A100/H100 mixed precision", - "gf_relation": "competitor", - "source": "NVIDIA Ampere whitepaper" - }, - { - "id": "fp8_e4m3", - "name": "FP8 E4M3", - "bits": 8, - "s_bits": 1, - "e_bits": 4, - "m_bits": 3, - "bias": 7, - "phi_distance": 0.715, - "storage": "u8", - "cluster": "MlLowPrecision", - "status": "Verified", - "standard": "OCP / NVIDIA / Arm / Intel", - "use_case": "inference, gradient ranges", - "gf_relation": "competitor", - "source": "Micikevicius 2022 (arXiv:2209.05433)" - }, - { - "id": "fp8_e5m2", - "name": "FP8 E5M2", - "bits": 8, - "s_bits": 1, - "e_bits": 5, - "m_bits": 2, - "bias": 15, - "phi_distance": 1.882, - "storage": "u8", - "cluster": "MlLowPrecision", - "status": "Verified", - "standard": "OCP / NVIDIA", - "use_case": "activations, wide range", - "gf_relation": "competitor", - "source": "Micikevicius 2022" - }, - { - "id": "fp6_e3m2", - "name": "FP6 E3M2", - "bits": 6, - "s_bits": 1, - "e_bits": 3, - "m_bits": 2, - "bias": 3, - "phi_distance": 0.882, - "storage": "u8_packed", - "cluster": "MlLowPrecision", - "status": "Verified", - "standard": "OCP MX", - "use_case": "aggressive quant inference", - "gf_relation": "competitor", - "source": "OCP MX v1.0 (2023)" - }, - { - "id": "fp6_e2m3", - "name": "FP6 E2M3", - "bits": 6, - "s_bits": 1, - "e_bits": 2, - "m_bits": 3, - "bias": 1, - "phi_distance": 0.049, - "storage": "u8_packed", - "cluster": "MlLowPrecision", - "status": "Verified", - "standard": "OCP MX", - "use_case": "mantissa-heavy quant", - "gf_relation": "ally", - "source": "OCP MX v1.0 (2023)" - }, - { - "id": "fp4_e2m1", - "name": "FP4 E2M1", - "bits": 4, - "s_bits": 1, - "e_bits": 2, - "m_bits": 1, - "bias": 1, - "phi_distance": 1.382, - "storage": "u8_packed", - "cluster": "MlLowPrecision", - "status": "Verified", - "standard": "OCP MX", - "use_case": "extreme quant inference", - "gf_relation": "competitor", - "source": "OCP MX v1.0 (2023)" - }, - { - "id": "mxfp8", - "name": "MXFP8", - "bits": 8, - "s_bits": 1, - "e_bits": 4, - "m_bits": 3, - "bias": 7, - "phi_distance": 0.715, - "storage": "u8_plus_shared_e8m0", - "cluster": "Microscaling", - "status": "Verified", - "standard": "OCP MX v1.0", - "use_case": "LLM inference", - "gf_relation": "ally", - "source": "Rouhani 2023 (arXiv:2310.10537)" - }, - { - "id": "mxfp6", - "name": "MXFP6", - "bits": 6, - "s_bits": 1, - "e_bits": 3, - "m_bits": 2, - "bias": 3, - "phi_distance": 0.882, - "storage": "u8_packed_plus_e8m0", - "cluster": "Microscaling", - "status": "Verified", - "standard": "OCP MX v1.0", - "use_case": "aggressive inference", - "gf_relation": "ally", - "source": "Rouhani 2023" - }, - { - "id": "mxfp4", - "name": "MXFP4", - "bits": 4, - "s_bits": 1, - "e_bits": 2, - "m_bits": 1, - "bias": 1, - "phi_distance": 1.382, - "storage": "u8_packed_plus_e8m0", - "cluster": "Microscaling", - "status": "Verified", - "standard": "OCP MX v1.0", - "use_case": "extreme quant", - "gf_relation": "ally", - "source": "Rouhani 2023" - }, - { - "id": "nf4", - "name": "NF4 (NormalFloat 4-bit)", - "bits": 4, - "s_bits": 0, - "e_bits": 0, - "m_bits": 4, - "bias": 0, - "phi_distance": -1.0, - "storage": "u8_packed", - "cluster": "QuantTuned", - "status": "Verified", - "standard": "Dettmers 2023 (QLoRA)", - "use_case": "LLM weight quantization (quantile-based on N(0,1))", - "gf_relation": "orthogonal", - "source": "Dettmers 2023 (arXiv:2305.14314)" - }, - { - "id": "afp", - "name": "AFP (Adaptive Floating-Point)", - "bits": 16, - "s_bits": 1, - "e_bits": 8, - "m_bits": 7, - "bias": 127, - "phi_distance": -1.0, - "storage": "u16_plus_tensor_shift", - "cluster": "QuantTuned", - "status": "Verified", - "standard": "Tambe 2020", - "use_case": "efficient training", - "gf_relation": "orthogonal", - "source": "Tambe 2020 (DAC)" - }, - { - "id": "posit8", - "name": "Posit8", - "bits": 8, - "s_bits": 1, - "e_bits": 2, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u8", - "cluster": "PositUnumIII", - "status": "Verified", - "standard": "Posit Standard 2022 (es=2)", - "use_case": "inference", - "gf_relation": "ally", - "source": "Posit Standard 2022 (posithub.org)" - }, - { - "id": "posit16", - "name": "Posit16", - "bits": 16, - "s_bits": 1, - "e_bits": 2, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u16", - "cluster": "PositUnumIII", - "status": "Verified", - "standard": "Posit Standard 2022 (es=2)", - "use_case": "mixed-precision training", - "gf_relation": "ally", - "source": "Posit Standard 2022" - }, - { - "id": "posit32", - "name": "Posit32", - "bits": 32, - "s_bits": 1, - "e_bits": 2, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u32", - "cluster": "PositUnumIII", - "status": "Verified", - "standard": "Posit Standard 2022 (es=2)", - "use_case": "f32 replacement", - "gf_relation": "ally", - "source": "Posit Standard 2022" - }, - { - "id": "posit64", - "name": "Posit64", - "bits": 64, - "s_bits": 1, - "e_bits": 2, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u64", - "cluster": "PositUnumIII", - "status": "Verified", - "standard": "Posit Standard 2022 (es=2)", - "use_case": "f64 replacement", - "gf_relation": "ally", - "source": "Posit Standard 2022" - }, - { - "id": "takum8", - "name": "takum8", - "bits": 8, - "s_bits": 1, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u8", - "cluster": "PositUnumIII", - "status": "Verified", - "standard": "Hunhold 2024 (tapered-precision)", - "use_case": "IEEE-754 backward-compatible tapered", - "gf_relation": "ally", - "source": "Hunhold 2024 (arXiv:2412.20273)" - }, - { - "id": "takum16", - "name": "takum16", - "bits": 16, - "s_bits": 1, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u16", - "cluster": "PositUnumIII", - "status": "Verified", - "standard": "Hunhold 2024", - "use_case": "single-rule ladder counterexample", - "gf_relation": "ally", - "source": "Hunhold 2024 (arXiv:2412.20273)" - }, - { - "id": "takum32", - "name": "takum32", - "bits": 32, - "s_bits": 1, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u32", - "cluster": "PositUnumIII", - "status": "Verified", - "standard": "Hunhold 2024", - "use_case": "tapered fp32-class", - "gf_relation": "ally", - "source": "Hunhold 2024" - }, - { - "id": "takum64", - "name": "takum64", - "bits": 64, - "s_bits": 1, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u64", - "cluster": "PositUnumIII", - "status": "Verified", - "standard": "Hunhold 2024", - "use_case": "tapered fp64-class", - "gf_relation": "ally", - "source": "Hunhold 2024" - }, - { - "id": "lns8", - "name": "LNS-8", - "bits": 8, - "s_bits": 1, - "e_bits": 7, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u8", - "cluster": "Lns", - "status": "Verified", - "standard": "Arnold 1990; LNS-Madam (2021)", - "use_case": "DSP, signal processing", - "gf_relation": "orthogonal", - "source": "Alam 2021 (arXiv:2106.13914)" - }, - { - "id": "lns16", - "name": "LNS-16", - "bits": 16, - "s_bits": 1, - "e_bits": 15, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u16", - "cluster": "Lns", - "status": "Verified", - "standard": "LNS-Madam (2021)", - "use_case": "log-domain training (mul -> add)", - "gf_relation": "orthogonal", - "source": "Alam 2021" - }, - { - "id": "lns32", - "name": "LNS-32", - "bits": 32, - "s_bits": 1, - "e_bits": 31, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u32", - "cluster": "Lns", - "status": "Verified", - "standard": "LNS-Madam (2021)", - "use_case": "log-domain DSP", - "gf_relation": "orthogonal", - "source": "Alam 2021" - }, - { - "id": "lns64", - "name": "LNS-64", - "bits": 64, - "s_bits": 1, - "e_bits": 63, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u64", - "cluster": "Lns", - "status": "Verified", - "standard": "LNS-Madam (2021)", - "use_case": "scientific log-domain", - "gf_relation": "orthogonal", - "source": "Alam 2021" - }, - { - "id": "gfternary", - "name": "GFTernary", - "bits": 2, - "s_bits": 1, - "e_bits": 0, - "m_bits": 2, - "bias": 0, - "phi_distance": 0.0, - "storage": "u2", - "cluster": "GoldenFloat", - "status": "Verified", - "standard": "this work; {-phi, 0, +phi}", - "use_case": "bulk layers (hybrid)", - "gf_relation": "self", - "source": "BENCH-007" - }, - { - "id": "gf4", - "name": "GF4", - "bits": 4, - "s_bits": 1, - "e_bits": 1, - "m_bits": 2, - "bias": 0, - "phi_distance": 0.118, - "storage": "u8", - "cluster": "GoldenFloat", - "status": "Experimental", - "standard": "this work; F0 minimal", - "use_case": "proof-of-concept", - "gf_relation": "self", - "source": "specs/numeric/gf4.t27" - }, - { - "id": "gf8", - "name": "GF8", - "bits": 8, - "s_bits": 1, - "e_bits": 3, - "m_bits": 4, - "bias": 3, - "phi_distance": 0.132, - "storage": "u8", - "cluster": "GoldenFloat", - "status": "Verified", - "standard": "this work; L1 Lucas", - "use_case": "edge / sensors", - "gf_relation": "self", - "source": "BENCH-007 (specs/numeric/gf8.t27)" - }, - { - "id": "gf12", - "name": "GF12", - "bits": 12, - "s_bits": 1, - "e_bits": 4, - "m_bits": 7, - "bias": 7, - "phi_distance": 0.047, - "storage": "u16", - "cluster": "GoldenFloat", - "status": "Verified", - "standard": "this work; L0/F3", - "use_case": "mid-range / audio", - "gf_relation": "self", - "source": "BENCH-007 (specs/numeric/gf12.t27)" - }, - { - "id": "gf16", - "name": "GF16", - "bits": 16, - "s_bits": 1, - "e_bits": 6, - "m_bits": 9, - "bias": 31, - "phi_distance": 0.049, - "storage": "u16", - "cluster": "GoldenFloat", - "status": "Verified", - "standard": "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7", - "use_case": "training and inference (production)", - "gf_relation": "self", - "source": "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)" - }, - { - "id": "gf20", - "name": "GF20", - "bits": 20, - "s_bits": 1, - "e_bits": 7, - "m_bits": 12, - "bias": 63, - "phi_distance": 0.035, - "storage": "u32", - "cluster": "GoldenFloat", - "status": "Experimental", - "standard": "this work; 17-squared empirical PHI_BIAS=289", - "use_case": "high-precision edge", - "gf_relation": "self", - "source": "specs/numeric/gf20.t27 (spec only)" - }, - { - "id": "gf24", - "name": "GF24", - "bits": 24, - "s_bits": 1, - "e_bits": 9, - "m_bits": 14, - "bias": 255, - "phi_distance": 0.025, - "storage": "u32", - "cluster": "GoldenFloat", - "status": "Experimental", - "standard": "this work; L15 PHI_BIAS=1364", - "use_case": "server inference", - "gf_relation": "self", - "source": "specs/numeric/gf24.t27 (spec only)" - }, - { - "id": "gf32", - "name": "GF32", - "bits": 32, - "s_bits": 1, - "e_bits": 12, - "m_bits": 19, - "bias": 2047, - "phi_distance": 0.014, - "storage": "u32", - "cluster": "GoldenFloat", - "status": "Verified", - "standard": "this work; F0 resolved", - "use_case": "fp32 drop-in", - "gf_relation": "self", - "source": "BENCH-012 (specs/numeric/gf32.t27)" - }, - { - "id": "gf64", - "name": "GF64", - "bits": 64, - "s_bits": 1, - "e_bits": 24, - "m_bits": 39, - "bias": 8388607, - "phi_distance": 0.003, - "storage": "u64", - "cluster": "GoldenFloat", - "status": "Verified", - "standard": "this work; EXP_MAX - BIAS", - "use_case": "scientific / double", - "gf_relation": "self", - "source": "BENCH-007b (specs/numeric/gf64.t27)" - }, - { - "id": "gf6", - "name": "GF6 (predicted)", - "bits": 6, - "s_bits": 1, - "e_bits": 2, - "m_bits": 3, - "bias": 1, - "phi_distance": 0.05, - "storage": "u8_packed", - "cluster": "GoldenFloat", - "status": "Experimental", - "standard": "this work; e=round(5/phi^2)=2, fills FP6 gap", - "use_case": "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint", - "gf_relation": "experimental", - "source": "section12.5" - }, - { - "id": "gf128", - "name": "GF128 (predicted)", - "bits": 128, - "s_bits": 1, - "e_bits": 48, - "m_bits": 79, - "bias": 0, - "phi_distance": 0.008, - "storage": "u128", - "cluster": "GoldenFloat", - "status": "Experimental", - "standard": "this work; e=round(127/phi^2)=48 (Open: bias TBD)", - "use_case": "OPEN R&D: phi-aligned binary128 alternative", - "gf_relation": "experimental", - "source": "section12.5" - }, - { - "id": "gf256", - "name": "GF256 (predicted)", - "bits": 256, - "s_bits": 1, - "e_bits": 97, - "m_bits": 158, - "bias": 0, - "phi_distance": 0.005, - "storage": "u256_software", - "cluster": "GoldenFloat", - "status": "Experimental", - "standard": "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)", - "use_case": "OPEN R&D: phi-aligned binary256 alternative", - "gf_relation": "experimental", - "source": "section12.5; bias Open per skill" - }, - { - "id": "gf8_bfp", - "name": "GF8-BFP (block FP atop GF8)", - "bits": 8, - "s_bits": 1, - "e_bits": 3, - "m_bits": 4, - "bias": 3, - "phi_distance": 0.132, - "storage": "u8_plus_shared_exp", - "cluster": "GoldenFloat", - "status": "Experimental", - "standard": "this work; per-tile shared exponent", - "use_case": "OPEN R&D: LLM-quantization-friendly GF8", - "gf_relation": "experimental", - "source": "section12.5" - }, - { - "id": "gf_lns_hybrid", - "name": "GF + LNS hybrid (dual-space)", - "bits": 16, - "s_bits": 1, - "e_bits": 6, - "m_bits": 9, - "bias": 31, - "phi_distance": 0.049, - "storage": "u16_plus_lns_path", - "cluster": "GoldenFloat", - "status": "Experimental", - "standard": "this work; mul in log-space, accumulate Lucas-closed", - "use_case": "OPEN R&D: dual-space arithmetic", - "gf_relation": "experimental", - "source": "section12.5" - }, - { - "id": "mxgf6", - "name": "MXGF6 (microscaling GF6)", - "bits": 6, - "s_bits": 1, - "e_bits": 2, - "m_bits": 3, - "bias": 1, - "phi_distance": 0.05, - "storage": "u8_packed_plus_e8m0", - "cluster": "GoldenFloat", - "status": "Experimental", - "standard": "this work; OCP MX block + GF6", - "use_case": "OPEN R&D: phi-aligned MX-6 candidate", - "gf_relation": "experimental", - "source": "section12.5" - }, - { - "id": "mxgf4", - "name": "MXGF4 (microscaling GF4)", - "bits": 4, - "s_bits": 1, - "e_bits": 1, - "m_bits": 2, - "bias": 0, - "phi_distance": 0.118, - "storage": "u8_packed_plus_e8m0", - "cluster": "GoldenFloat", - "status": "Experimental", - "standard": "this work; OCP MX block + GF4", - "use_case": "OPEN R&D: phi-aligned MX-4 candidate", - "gf_relation": "experimental", - "source": "section12.5" - }, - { - "id": "int4", - "name": "INT4 / UINT4", - "bits": 4, - "s_bits": 1, - "e_bits": 0, - "m_bits": 3, - "bias": 0, - "phi_distance": -1.0, - "storage": "u8_packed", - "cluster": "IntegerFixed", - "status": "Verified", - "standard": "two complement", - "use_case": "aggressive quantization", - "gf_relation": "competitor", - "source": "ISO/IEC 9899" - }, - { - "id": "int8", - "name": "INT8 / UINT8", - "bits": 8, - "s_bits": 1, - "e_bits": 0, - "m_bits": 7, - "bias": 0, - "phi_distance": -1.0, - "storage": "u8", - "cluster": "IntegerFixed", - "status": "Verified", - "standard": "two complement", - "use_case": "INT8 inference, per-channel scale", - "gf_relation": "competitor", - "source": "ISO/IEC 9899" - }, - { - "id": "int16", - "name": "INT16 / UINT16", - "bits": 16, - "s_bits": 1, - "e_bits": 0, - "m_bits": 15, - "bias": 0, - "phi_distance": -1.0, - "storage": "u16", - "cluster": "IntegerFixed", - "status": "Verified", - "standard": "two complement", - "use_case": "DSP, embedded ML", - "gf_relation": "competitor", - "source": "ISO/IEC 9899" - }, - { - "id": "int32", - "name": "INT32 / UINT32", - "bits": 32, - "s_bits": 1, - "e_bits": 0, - "m_bits": 31, - "bias": 0, - "phi_distance": -1.0, - "storage": "u32", - "cluster": "IntegerFixed", - "status": "Verified", - "standard": "two complement", - "use_case": "general CPU integer", - "gf_relation": "competitor", - "source": "ISO/IEC 9899" - }, - { - "id": "int64", - "name": "INT64 / UINT64", - "bits": 64, - "s_bits": 1, - "e_bits": 0, - "m_bits": 63, - "bias": 0, - "phi_distance": -1.0, - "storage": "u64", - "cluster": "IntegerFixed", - "status": "Verified", - "standard": "two complement", - "use_case": "databases, timestamps", - "gf_relation": "competitor", - "source": "ISO/IEC 9899" - }, - { - "id": "int128", - "name": "INT128 / UINT128", - "bits": 128, - "s_bits": 1, - "e_bits": 0, - "m_bits": 127, - "bias": 0, - "phi_distance": -1.0, - "storage": "u128", - "cluster": "IntegerFixed", - "status": "Verified", - "standard": "two complement", - "use_case": "crypto, big-int", - "gf_relation": "competitor", - "source": "Rust/Clang u128" - }, - { - "id": "q_format", - "name": "Q-format (Qm.n)", - "bits": 0, - "s_bits": 1, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "varies", - "cluster": "IntegerFixed", - "status": "Verified", - "standard": "TI fixed-point", - "use_case": "audio DSP, fixed-point ML", - "gf_relation": "orthogonal", - "source": "TI SPRA704" - }, - { - "id": "bcd", - "name": "BCD (binary-coded decimal)", - "bits": 0, - "s_bits": 0, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "u4_per_digit", - "cluster": "IntegerFixed", - "status": "Historical", - "standard": "IBM 1959", - "use_case": "calculators, GAAP", - "gf_relation": "orthogonal", - "source": "ISO/IEC 8859" - }, - { - "id": "ibm_hfp32", - "name": "IBM HFP (single)", - "bits": 32, - "s_bits": 1, - "e_bits": 7, - "m_bits": 24, - "bias": 64, - "phi_distance": -1.0, - "storage": "u32", - "cluster": "HistoricalVendor", - "status": "Historical", - "standard": "IBM System/360 (1964); base-16 exponent", - "use_case": "legacy mainframe", - "gf_relation": "orthogonal", - "source": "IBM POO" - }, - { - "id": "ibm_hfp64", - "name": "IBM HFP (double)", - "bits": 64, - "s_bits": 1, - "e_bits": 7, - "m_bits": 56, - "bias": 64, - "phi_distance": -1.0, - "storage": "u64", - "cluster": "HistoricalVendor", - "status": "Historical", - "standard": "IBM System/360 (1964)", - "use_case": "legacy mainframe", - "gf_relation": "orthogonal", - "source": "IBM POO" - }, - { - "id": "ibm_hfp128", - "name": "IBM HFP (extended)", - "bits": 128, - "s_bits": 1, - "e_bits": 7, - "m_bits": 120, - "bias": 64, - "phi_distance": -1.0, - "storage": "u128", - "cluster": "HistoricalVendor", - "status": "Historical", - "standard": "IBM z/Architecture", - "use_case": "legacy mainframe", - "gf_relation": "orthogonal", - "source": "IBM POO" - }, - { - "id": "ms_mbf32", - "name": "Microsoft MBF (single)", - "bits": 32, - "s_bits": 1, - "e_bits": 8, - "m_bits": 23, - "bias": 129, - "phi_distance": -1.0, - "storage": "u32", - "cluster": "HistoricalVendor", - "status": "Historical", - "standard": "MS BASIC / MS-DOS (pre-IEEE)", - "use_case": "MS BASIC legacy", - "gf_relation": "orthogonal", - "source": "MS-DOS docs" - }, - { - "id": "ms_mbf64", - "name": "Microsoft MBF (double)", - "bits": 64, - "s_bits": 1, - "e_bits": 8, - "m_bits": 55, - "bias": 129, - "phi_distance": -1.0, - "storage": "u64", - "cluster": "HistoricalVendor", - "status": "Historical", - "standard": "MS BASIC", - "use_case": "MS BASIC legacy", - "gf_relation": "orthogonal", - "source": "MS-DOS docs" - }, - { - "id": "vax_f", - "name": "VAX F-float", - "bits": 32, - "s_bits": 1, - "e_bits": 8, - "m_bits": 23, - "bias": 128, - "phi_distance": -1.0, - "storage": "u32", - "cluster": "HistoricalVendor", - "status": "Historical", - "standard": "DEC VAX", - "use_case": "DEC legacy", - "gf_relation": "orthogonal", - "source": "VAX Architecture Reference" - }, - { - "id": "vax_d", - "name": "VAX D-float", - "bits": 64, - "s_bits": 1, - "e_bits": 8, - "m_bits": 55, - "bias": 128, - "phi_distance": -1.0, - "storage": "u64", - "cluster": "HistoricalVendor", - "status": "Historical", - "standard": "DEC VAX", - "use_case": "DEC legacy double", - "gf_relation": "orthogonal", - "source": "VAX Architecture Reference" - }, - { - "id": "vax_g", - "name": "VAX G-float", - "bits": 64, - "s_bits": 1, - "e_bits": 11, - "m_bits": 52, - "bias": 1024, - "phi_distance": -1.0, - "storage": "u64", - "cluster": "HistoricalVendor", - "status": "Historical", - "standard": "DEC VAX (IEEE-like)", - "use_case": "DEC legacy", - "gf_relation": "orthogonal", - "source": "VAX Architecture Reference" - }, - { - "id": "vax_h", - "name": "VAX H-float", - "bits": 128, - "s_bits": 1, - "e_bits": 15, - "m_bits": 112, - "bias": 16384, - "phi_distance": -1.0, - "storage": "u128", - "cluster": "HistoricalVendor", - "status": "Historical", - "standard": "DEC VAX", - "use_case": "DEC quad", - "gf_relation": "orthogonal", - "source": "VAX Architecture Reference" - }, - { - "id": "cray_float", - "name": "Cray float", - "bits": 64, - "s_bits": 1, - "e_bits": 15, - "m_bits": 48, - "bias": 16384, - "phi_distance": -1.0, - "storage": "u64", - "cluster": "HistoricalVendor", - "status": "Historical", - "standard": "Cray-1 (1976); no NaN/Inf, unrounded mul", - "use_case": "Cray legacy", - "gf_relation": "orthogonal", - "source": "Cray-1 Hardware Reference" - }, - { - "id": "minifloat", - "name": "minifloat (arbitrary E:M, <=16 bits)", - "bits": 0, - "s_bits": 1, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "varies", - "cluster": "Theoretical", - "status": "Experimental", - "standard": "parametric framework", - "use_case": "design space of GF4/GF8/GF12/GF16", - "gf_relation": "ally", - "source": "Higham 1996" - }, - { - "id": "unum_i", - "name": "Unum I (tapered + ubound)", - "bits": 0, - "s_bits": 1, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "varies", - "cluster": "Theoretical", - "status": "Experimental", - "standard": "Gustafson 2015 (predecessor to posit)", - "use_case": "interval arithmetic", - "gf_relation": "ally", - "source": "Gustafson 2015 (The End of Error)" - }, - { - "id": "unum_ii", - "name": "Unum II (SORN projective)", - "bits": 0, - "s_bits": 0, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "lookup_table", - "cluster": "Theoretical", - "status": "Experimental", - "standard": "Gustafson 2016", - "use_case": "lookup-table real arithmetic; not GF-comparable", - "gf_relation": "orthogonal", - "source": "Gustafson 2016" - }, - { - "id": "tapered_fp", - "name": "tapered floating point", - "bits": 0, - "s_bits": 1, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "varies", - "cluster": "Theoretical", - "status": "Experimental", - "standard": "Morris 1971; posit ancestor", - "use_case": "variable mantissa via regime bits", - "gf_relation": "ally", - "source": "Morris 1971 (IEEE TC)" - }, - { - "id": "block_fp", - "name": "block floating point (BFP)", - "bits": 0, - "s_bits": 0, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "varies", - "cluster": "CompressionTrick", - "status": "Verified", - "standard": "Wilkinson 1965; modern revivals", - "use_case": "per-tile shared exponent", - "gf_relation": "ally", - "source": "Darvish-Rouhani 2020" - }, - { - "id": "shared_exp", - "name": "shared-exponent formats", - "bits": 0, - "s_bits": 0, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "varies", - "cluster": "CompressionTrick", - "status": "Verified", - "standard": "generalised BFP", - "use_case": "LLM quantization", - "gf_relation": "ally", - "source": "Darvish-Rouhani 2020" - }, - { - "id": "per_channel_scale", - "name": "INT8 with per-channel scale", - "bits": 8, - "s_bits": 1, - "e_bits": 0, - "m_bits": 7, - "bias": 0, - "phi_distance": -1.0, - "storage": "u8_plus_fp32_scale", - "cluster": "CompressionTrick", - "status": "Verified", - "standard": "Jacob 2018 (TFLite)", - "use_case": "standard quant inference", - "gf_relation": "competitor", - "source": "Jacob 2018 (CVPR)" - }, - { - "id": "stochastic_rounding", - "name": "stochastic rounding (technique)", - "bits": 0, - "s_bits": 0, - "e_bits": 0, - "m_bits": 0, - "bias": 0, - "phi_distance": -1.0, - "storage": "varies", - "cluster": "CompressionTrick", - "status": "Verified", - "standard": "Gupta 2015", - "use_case": "training small networks at low precision", - "gf_relation": "ally", - "source": "Gupta 2015 (ICML)" - } - ] -} diff --git a/gen/numeric/formats_catalog.kt b/gen/numeric/formats_catalog.kt deleted file mode 100644 index 3d5ec2604..000000000 --- a/gen/numeric/formats_catalog.kt +++ /dev/null @@ -1,101 +0,0 @@ -// Generated from formats_catalog.t27. Do not edit by hand. -// SPDX-License-Identifier: Apache-2.0 -package ai.t27.numeric - -data class Format( - val id: String, - val name: String, - val bits: Int, - val sBits: Int, - val eBits: Int, - val mBits: Int, - val bias: Long, - val phiDistance: Double, // -1.0 == undefined - val storage: String, - val cluster: String, - val status: String, - val standard: String, - val useCase: String, - val gfRelation: String, - val source: String, -) - -val FORMATS: List = listOf( - Format("binary16", "binary16 (fp16, half)", 16, 1, 5, 10, 15L, 0.118, "u16", "Ieee754Binary", "Verified", "IEEE 754-2008", "GPU activations, inference", "competitor", "IEEE 754-2008"), - Format("binary32", "binary32 (fp32, single)", 32, 1, 8, 23, 127L, 0.27, "u32", "Ieee754Binary", "Verified", "IEEE 754-1985", "industry default", "competitor", "IEEE 754-1985"), - Format("binary64", "binary64 (fp64, double)", 64, 1, 11, 52, 1023L, 0.406, "u64", "Ieee754Binary", "Verified", "IEEE 754-1985", "scientific computing", "competitor", "IEEE 754-1985"), - Format("binary128", "binary128 (fp128, quad)", 128, 1, 15, 112, 16383L, 0.484, "u128", "Ieee754Binary", "Verified", "IEEE 754-2008", "high-precision simulations", "competitor", "IEEE 754-2008"), - Format("binary256", "binary256 (octuple)", 256, 1, 19, 236, 262143L, 0.538, "u256_software", "Ieee754Binary", "Verified", "IEEE 754-2008", "astronomy, cryptography", "competitor", "IEEE 754-2008"), - Format("decimal32", "decimal32", 32, 1, 11, 20, 101L, -1.0, "u32", "Ieee754Decimal", "Verified", "IEEE 754-2008 (DPD/BID)", "banking, GAAP", "orthogonal", "IEEE 754-2008"), - Format("decimal64", "decimal64", 64, 1, 13, 50, 398L, -1.0, "u64", "Ieee754Decimal", "Verified", "IEEE 754-2008", "financial databases", "orthogonal", "IEEE 754-2008"), - Format("decimal128", "decimal128", 128, 1, 17, 110, 6176L, -1.0, "u128", "Ieee754Decimal", "Verified", "IEEE 754-2008", "audit ledgers", "orthogonal", "IEEE 754-2008"), - Format("x87_fp80", "x87 FP80", 80, 1, 15, 64, 16383L, -1.0, "u80_padded", "ExtendedFloat", "Historical", "Intel x87 (explicit integer bit)", "legacy long double on x86", "orthogonal", "Intel SDM"), - Format("double_double", "double-double", 128, 2, 22, 104, 0L, -1.0, "two_u64", "ExtendedFloat", "Verified", "Bailey/Hida (software)", "software extended precision", "orthogonal", "Bailey-Hida 2001"), - Format("quad_double", "quad-double", 256, 4, 44, 208, 0L, -1.0, "four_u64", "ExtendedFloat", "Verified", "Bailey/Hida (software)", "astrophysics, quad-precision sims", "orthogonal", "Bailey-Hida 2001"), - Format("bfloat16", "bfloat16 (BF16)", 16, 1, 8, 7, 127L, 0.525, "u16", "MlLowPrecision", "Verified", "Google Brain", "training (range > precision)", "competitor", "Wang-Kanwar 2019"), - Format("tf32", "TensorFloat-32 (TF32)", 19, 1, 8, 10, 127L, 0.27, "u32_padded", "MlLowPrecision", "Verified", "NVIDIA Ampere", "A100/H100 mixed precision", "competitor", "NVIDIA Ampere whitepaper"), - Format("fp8_e4m3", "FP8 E4M3", 8, 1, 4, 3, 7L, 0.715, "u8", "MlLowPrecision", "Verified", "OCP / NVIDIA / Arm / Intel", "inference, gradient ranges", "competitor", "Micikevicius 2022 (arXiv:2209.05433)"), - Format("fp8_e5m2", "FP8 E5M2", 8, 1, 5, 2, 15L, 1.882, "u8", "MlLowPrecision", "Verified", "OCP / NVIDIA", "activations, wide range", "competitor", "Micikevicius 2022"), - Format("fp6_e3m2", "FP6 E3M2", 6, 1, 3, 2, 3L, 0.882, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "aggressive quant inference", "competitor", "OCP MX v1.0 (2023)"), - Format("fp6_e2m3", "FP6 E2M3", 6, 1, 2, 3, 1L, 0.049, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "mantissa-heavy quant", "ally", "OCP MX v1.0 (2023)"), - Format("fp4_e2m1", "FP4 E2M1", 4, 1, 2, 1, 1L, 1.382, "u8_packed", "MlLowPrecision", "Verified", "OCP MX", "extreme quant inference", "competitor", "OCP MX v1.0 (2023)"), - Format("mxfp8", "MXFP8", 8, 1, 4, 3, 7L, 0.715, "u8_plus_shared_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "LLM inference", "ally", "Rouhani 2023 (arXiv:2310.10537)"), - Format("mxfp6", "MXFP6", 6, 1, 3, 2, 3L, 0.882, "u8_packed_plus_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "aggressive inference", "ally", "Rouhani 2023"), - Format("mxfp4", "MXFP4", 4, 1, 2, 1, 1L, 1.382, "u8_packed_plus_e8m0", "Microscaling", "Verified", "OCP MX v1.0", "extreme quant", "ally", "Rouhani 2023"), - Format("nf4", "NF4 (NormalFloat 4-bit)", 4, 0, 0, 4, 0L, -1.0, "u8_packed", "QuantTuned", "Verified", "Dettmers 2023 (QLoRA)", "LLM weight quantization (quantile-based on N(0,1))", "orthogonal", "Dettmers 2023 (arXiv:2305.14314)"), - Format("afp", "AFP (Adaptive Floating-Point)", 16, 1, 8, 7, 127L, -1.0, "u16_plus_tensor_shift", "QuantTuned", "Verified", "Tambe 2020", "efficient training", "orthogonal", "Tambe 2020 (DAC)"), - Format("posit8", "Posit8", 8, 1, 2, 0, 0L, -1.0, "u8", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "inference", "ally", "Posit Standard 2022 (posithub.org)"), - Format("posit16", "Posit16", 16, 1, 2, 0, 0L, -1.0, "u16", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "mixed-precision training", "ally", "Posit Standard 2022"), - Format("posit32", "Posit32", 32, 1, 2, 0, 0L, -1.0, "u32", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "f32 replacement", "ally", "Posit Standard 2022"), - Format("posit64", "Posit64", 64, 1, 2, 0, 0L, -1.0, "u64", "PositUnumIII", "Verified", "Posit Standard 2022 (es=2)", "f64 replacement", "ally", "Posit Standard 2022"), - Format("takum8", "takum8", 8, 1, 0, 0, 0L, -1.0, "u8", "PositUnumIII", "Verified", "Hunhold 2024 (tapered-precision)", "IEEE-754 backward-compatible tapered", "ally", "Hunhold 2024 (arXiv:2412.20273)"), - Format("takum16", "takum16", 16, 1, 0, 0, 0L, -1.0, "u16", "PositUnumIII", "Verified", "Hunhold 2024", "single-rule ladder counterexample", "ally", "Hunhold 2024 (arXiv:2412.20273)"), - Format("takum32", "takum32", 32, 1, 0, 0, 0L, -1.0, "u32", "PositUnumIII", "Verified", "Hunhold 2024", "tapered fp32-class", "ally", "Hunhold 2024"), - Format("takum64", "takum64", 64, 1, 0, 0, 0L, -1.0, "u64", "PositUnumIII", "Verified", "Hunhold 2024", "tapered fp64-class", "ally", "Hunhold 2024"), - Format("lns8", "LNS-8", 8, 1, 7, 0, 0L, -1.0, "u8", "Lns", "Verified", "Arnold 1990; LNS-Madam (2021)", "DSP, signal processing", "orthogonal", "Alam 2021 (arXiv:2106.13914)"), - Format("lns16", "LNS-16", 16, 1, 15, 0, 0L, -1.0, "u16", "Lns", "Verified", "LNS-Madam (2021)", "log-domain training (mul -> add)", "orthogonal", "Alam 2021"), - Format("lns32", "LNS-32", 32, 1, 31, 0, 0L, -1.0, "u32", "Lns", "Verified", "LNS-Madam (2021)", "log-domain DSP", "orthogonal", "Alam 2021"), - Format("lns64", "LNS-64", 64, 1, 63, 0, 0L, -1.0, "u64", "Lns", "Verified", "LNS-Madam (2021)", "scientific log-domain", "orthogonal", "Alam 2021"), - Format("gfternary", "GFTernary", 2, 1, 0, 2, 0L, 0.0, "u2", "GoldenFloat", "Verified", "this work; {-phi, 0, +phi}", "bulk layers (hybrid)", "self", "BENCH-007"), - Format("gf4", "GF4", 4, 1, 1, 2, 0L, 0.118, "u8", "GoldenFloat", "Experimental", "this work; F0 minimal", "proof-of-concept", "self", "specs/numeric/gf4.t27"), - Format("gf8", "GF8", 8, 1, 3, 4, 3L, 0.132, "u8", "GoldenFloat", "Verified", "this work; L1 Lucas", "edge / sensors", "self", "BENCH-007 (specs/numeric/gf8.t27)"), - Format("gf12", "GF12", 12, 1, 4, 7, 7L, 0.047, "u16", "GoldenFloat", "Verified", "this work; L0/F3", "mid-range / audio", "self", "BENCH-007 (specs/numeric/gf12.t27)"), - Format("gf16", "GF16", 16, 1, 6, 9, 31L, 0.049, "u16", "GoldenFloat", "Verified", "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7", "training and inference (production)", "self", "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)"), - Format("gf20", "GF20", 20, 1, 7, 12, 63L, 0.035, "u32", "GoldenFloat", "Experimental", "this work; 17-squared empirical PHI_BIAS=289", "high-precision edge", "self", "specs/numeric/gf20.t27 (spec only)"), - Format("gf24", "GF24", 24, 1, 9, 14, 255L, 0.025, "u32", "GoldenFloat", "Experimental", "this work; L15 PHI_BIAS=1364", "server inference", "self", "specs/numeric/gf24.t27 (spec only)"), - Format("gf32", "GF32", 32, 1, 12, 19, 2047L, 0.014, "u32", "GoldenFloat", "Verified", "this work; F0 resolved", "fp32 drop-in", "self", "BENCH-012 (specs/numeric/gf32.t27)"), - Format("gf64", "GF64", 64, 1, 24, 39, 8388607L, 0.003, "u64", "GoldenFloat", "Verified", "this work; EXP_MAX - BIAS", "scientific / double", "self", "BENCH-007b (specs/numeric/gf64.t27)"), - Format("gf6", "GF6 (predicted)", 6, 1, 2, 3, 1L, 0.05, "u8_packed", "GoldenFloat", "Experimental", "this work; e=round(5/phi^2)=2, fills FP6 gap", "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint", "experimental", "section12.5"), - Format("gf128", "GF128 (predicted)", 128, 1, 48, 79, 0L, 0.008, "u128", "GoldenFloat", "Experimental", "this work; e=round(127/phi^2)=48 (Open: bias TBD)", "OPEN R&D: phi-aligned binary128 alternative", "experimental", "section12.5"), - Format("gf256", "GF256 (predicted)", 256, 1, 97, 158, 0L, 0.005, "u256_software", "GoldenFloat", "Experimental", "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)", "OPEN R&D: phi-aligned binary256 alternative", "experimental", "section12.5; bias Open per skill"), - Format("gf8_bfp", "GF8-BFP (block FP atop GF8)", 8, 1, 3, 4, 3L, 0.132, "u8_plus_shared_exp", "GoldenFloat", "Experimental", "this work; per-tile shared exponent", "OPEN R&D: LLM-quantization-friendly GF8", "experimental", "section12.5"), - Format("gf_lns_hybrid", "GF + LNS hybrid (dual-space)", 16, 1, 6, 9, 31L, 0.049, "u16_plus_lns_path", "GoldenFloat", "Experimental", "this work; mul in log-space, accumulate Lucas-closed", "OPEN R&D: dual-space arithmetic", "experimental", "section12.5"), - Format("mxgf6", "MXGF6 (microscaling GF6)", 6, 1, 2, 3, 1L, 0.05, "u8_packed_plus_e8m0", "GoldenFloat", "Experimental", "this work; OCP MX block + GF6", "OPEN R&D: phi-aligned MX-6 candidate", "experimental", "section12.5"), - Format("mxgf4", "MXGF4 (microscaling GF4)", 4, 1, 1, 2, 0L, 0.118, "u8_packed_plus_e8m0", "GoldenFloat", "Experimental", "this work; OCP MX block + GF4", "OPEN R&D: phi-aligned MX-4 candidate", "experimental", "section12.5"), - Format("int4", "INT4 / UINT4", 4, 1, 0, 3, 0L, -1.0, "u8_packed", "IntegerFixed", "Verified", "two complement", "aggressive quantization", "competitor", "ISO/IEC 9899"), - Format("int8", "INT8 / UINT8", 8, 1, 0, 7, 0L, -1.0, "u8", "IntegerFixed", "Verified", "two complement", "INT8 inference, per-channel scale", "competitor", "ISO/IEC 9899"), - Format("int16", "INT16 / UINT16", 16, 1, 0, 15, 0L, -1.0, "u16", "IntegerFixed", "Verified", "two complement", "DSP, embedded ML", "competitor", "ISO/IEC 9899"), - Format("int32", "INT32 / UINT32", 32, 1, 0, 31, 0L, -1.0, "u32", "IntegerFixed", "Verified", "two complement", "general CPU integer", "competitor", "ISO/IEC 9899"), - Format("int64", "INT64 / UINT64", 64, 1, 0, 63, 0L, -1.0, "u64", "IntegerFixed", "Verified", "two complement", "databases, timestamps", "competitor", "ISO/IEC 9899"), - Format("int128", "INT128 / UINT128", 128, 1, 0, 127, 0L, -1.0, "u128", "IntegerFixed", "Verified", "two complement", "crypto, big-int", "competitor", "Rust/Clang u128"), - Format("q_format", "Q-format (Qm.n)", 0, 1, 0, 0, 0L, -1.0, "varies", "IntegerFixed", "Verified", "TI fixed-point", "audio DSP, fixed-point ML", "orthogonal", "TI SPRA704"), - Format("bcd", "BCD (binary-coded decimal)", 0, 0, 0, 0, 0L, -1.0, "u4_per_digit", "IntegerFixed", "Historical", "IBM 1959", "calculators, GAAP", "orthogonal", "ISO/IEC 8859"), - Format("ibm_hfp32", "IBM HFP (single)", 32, 1, 7, 24, 64L, -1.0, "u32", "HistoricalVendor", "Historical", "IBM System/360 (1964); base-16 exponent", "legacy mainframe", "orthogonal", "IBM POO"), - Format("ibm_hfp64", "IBM HFP (double)", 64, 1, 7, 56, 64L, -1.0, "u64", "HistoricalVendor", "Historical", "IBM System/360 (1964)", "legacy mainframe", "orthogonal", "IBM POO"), - Format("ibm_hfp128", "IBM HFP (extended)", 128, 1, 7, 120, 64L, -1.0, "u128", "HistoricalVendor", "Historical", "IBM z/Architecture", "legacy mainframe", "orthogonal", "IBM POO"), - Format("ms_mbf32", "Microsoft MBF (single)", 32, 1, 8, 23, 129L, -1.0, "u32", "HistoricalVendor", "Historical", "MS BASIC / MS-DOS (pre-IEEE)", "MS BASIC legacy", "orthogonal", "MS-DOS docs"), - Format("ms_mbf64", "Microsoft MBF (double)", 64, 1, 8, 55, 129L, -1.0, "u64", "HistoricalVendor", "Historical", "MS BASIC", "MS BASIC legacy", "orthogonal", "MS-DOS docs"), - Format("vax_f", "VAX F-float", 32, 1, 8, 23, 128L, -1.0, "u32", "HistoricalVendor", "Historical", "DEC VAX", "DEC legacy", "orthogonal", "VAX Architecture Reference"), - Format("vax_d", "VAX D-float", 64, 1, 8, 55, 128L, -1.0, "u64", "HistoricalVendor", "Historical", "DEC VAX", "DEC legacy double", "orthogonal", "VAX Architecture Reference"), - Format("vax_g", "VAX G-float", 64, 1, 11, 52, 1024L, -1.0, "u64", "HistoricalVendor", "Historical", "DEC VAX (IEEE-like)", "DEC legacy", "orthogonal", "VAX Architecture Reference"), - Format("vax_h", "VAX H-float", 128, 1, 15, 112, 16384L, -1.0, "u128", "HistoricalVendor", "Historical", "DEC VAX", "DEC quad", "orthogonal", "VAX Architecture Reference"), - Format("cray_float", "Cray float", 64, 1, 15, 48, 16384L, -1.0, "u64", "HistoricalVendor", "Historical", "Cray-1 (1976); no NaN/Inf, unrounded mul", "Cray legacy", "orthogonal", "Cray-1 Hardware Reference"), - Format("minifloat", "minifloat (arbitrary E:M, <=16 bits)", 0, 1, 0, 0, 0L, -1.0, "varies", "Theoretical", "Experimental", "parametric framework", "design space of GF4/GF8/GF12/GF16", "ally", "Higham 1996"), - Format("unum_i", "Unum I (tapered + ubound)", 0, 1, 0, 0, 0L, -1.0, "varies", "Theoretical", "Experimental", "Gustafson 2015 (predecessor to posit)", "interval arithmetic", "ally", "Gustafson 2015 (The End of Error)"), - Format("unum_ii", "Unum II (SORN projective)", 0, 0, 0, 0, 0L, -1.0, "lookup_table", "Theoretical", "Experimental", "Gustafson 2016", "lookup-table real arithmetic; not GF-comparable", "orthogonal", "Gustafson 2016"), - Format("tapered_fp", "tapered floating point", 0, 1, 0, 0, 0L, -1.0, "varies", "Theoretical", "Experimental", "Morris 1971; posit ancestor", "variable mantissa via regime bits", "ally", "Morris 1971 (IEEE TC)"), - Format("block_fp", "block floating point (BFP)", 0, 0, 0, 0, 0L, -1.0, "varies", "CompressionTrick", "Verified", "Wilkinson 1965; modern revivals", "per-tile shared exponent", "ally", "Darvish-Rouhani 2020"), - Format("shared_exp", "shared-exponent formats", 0, 0, 0, 0, 0L, -1.0, "varies", "CompressionTrick", "Verified", "generalised BFP", "LLM quantization", "ally", "Darvish-Rouhani 2020"), - Format("per_channel_scale", "INT8 with per-channel scale", 8, 1, 0, 7, 0L, -1.0, "u8_plus_fp32_scale", "CompressionTrick", "Verified", "Jacob 2018 (TFLite)", "standard quant inference", "competitor", "Jacob 2018 (CVPR)"), - Format("stochastic_rounding", "stochastic rounding (technique)", 0, 0, 0, 0, 0L, -1.0, "varies", "CompressionTrick", "Verified", "Gupta 2015", "training small networks at low precision", "ally", "Gupta 2015 (ICML)"), -) diff --git a/gen/numeric/formats_catalog.md b/gen/numeric/formats_catalog.md deleted file mode 100644 index 5ae411efb..000000000 --- a/gen/numeric/formats_catalog.md +++ /dev/null @@ -1,101 +0,0 @@ -# Universal Numeric Format Catalog - -Generated from specs/numeric/formats_catalog.t27 by the bootstrap -codegen (tools/gen_formats_catalog.py). Do not edit by hand. - -Status labels: Verified | EmpiricalFit | Open | Risk | Retracted | -Experimental | Historical. phi_distance: lower = more phi-aligned; --1 sentinel = undefined (non-radix-2 or non-FP). - -Total formats: 77. - -| ID | Bits | S:E:M | Bias | phi_dist | Storage | Cluster | Status | Standard | Use case | GF rel. | -|----|-----:|------|-----:|--------:|---------|---------|--------|----------|----------|---------| -| binary16 | 16 | 1:5:10 | 15 | 0.118 | u16 | Ieee754Binary | Verified | IEEE 754-2008 | GPU activations, inference | competitor | -| binary32 | 32 | 1:8:23 | 127 | 0.270 | u32 | Ieee754Binary | Verified | IEEE 754-1985 | industry default | competitor | -| binary64 | 64 | 1:11:52 | 1023 | 0.406 | u64 | Ieee754Binary | Verified | IEEE 754-1985 | scientific computing | competitor | -| binary128 | 128 | 1:15:112 | 16383 | 0.484 | u128 | Ieee754Binary | Verified | IEEE 754-2008 | high-precision simulations | competitor | -| binary256 | 256 | 1:19:236 | 262143 | 0.538 | u256_software | Ieee754Binary | Verified | IEEE 754-2008 | astronomy, cryptography | competitor | -| decimal32 | 32 | 1:11:20 | 101 | n/a | u32 | Ieee754Decimal | Verified | IEEE 754-2008 (DPD/BID) | banking, GAAP | orthogonal | -| decimal64 | 64 | 1:13:50 | 398 | n/a | u64 | Ieee754Decimal | Verified | IEEE 754-2008 | financial databases | orthogonal | -| decimal128 | 128 | 1:17:110 | 6176 | n/a | u128 | Ieee754Decimal | Verified | IEEE 754-2008 | audit ledgers | orthogonal | -| x87_fp80 | 80 | 1:15:64 | 16383 | n/a | u80_padded | ExtendedFloat | Historical | Intel x87 (explicit integer bit) | legacy long double on x86 | orthogonal | -| double_double | 128 | 2:22:104 | 0 | n/a | two_u64 | ExtendedFloat | Verified | Bailey/Hida (software) | software extended precision | orthogonal | -| quad_double | 256 | 4:44:208 | 0 | n/a | four_u64 | ExtendedFloat | Verified | Bailey/Hida (software) | astrophysics, quad-precision sims | orthogonal | -| bfloat16 | 16 | 1:8:7 | 127 | 0.525 | u16 | MlLowPrecision | Verified | Google Brain | training (range > precision) | competitor | -| tf32 | 19 | 1:8:10 | 127 | 0.270 | u32_padded | MlLowPrecision | Verified | NVIDIA Ampere | A100/H100 mixed precision | competitor | -| fp8_e4m3 | 8 | 1:4:3 | 7 | 0.715 | u8 | MlLowPrecision | Verified | OCP / NVIDIA / Arm / Intel | inference, gradient ranges | competitor | -| fp8_e5m2 | 8 | 1:5:2 | 15 | 1.882 | u8 | MlLowPrecision | Verified | OCP / NVIDIA | activations, wide range | competitor | -| fp6_e3m2 | 6 | 1:3:2 | 3 | 0.882 | u8_packed | MlLowPrecision | Verified | OCP MX | aggressive quant inference | competitor | -| fp6_e2m3 | 6 | 1:2:3 | 1 | 0.049 | u8_packed | MlLowPrecision | Verified | OCP MX | mantissa-heavy quant | ally | -| fp4_e2m1 | 4 | 1:2:1 | 1 | 1.382 | u8_packed | MlLowPrecision | Verified | OCP MX | extreme quant inference | competitor | -| mxfp8 | 8 | 1:4:3 | 7 | 0.715 | u8_plus_shared_e8m0 | Microscaling | Verified | OCP MX v1.0 | LLM inference | ally | -| mxfp6 | 6 | 1:3:2 | 3 | 0.882 | u8_packed_plus_e8m0 | Microscaling | Verified | OCP MX v1.0 | aggressive inference | ally | -| mxfp4 | 4 | 1:2:1 | 1 | 1.382 | u8_packed_plus_e8m0 | Microscaling | Verified | OCP MX v1.0 | extreme quant | ally | -| nf4 | 4 | 0:0:4 | 0 | n/a | u8_packed | QuantTuned | Verified | Dettmers 2023 (QLoRA) | LLM weight quantization (quantile-based on N(0,1)) | orthogonal | -| afp | 16 | 1:8:7 | 127 | n/a | u16_plus_tensor_shift | QuantTuned | Verified | Tambe 2020 | efficient training | orthogonal | -| posit8 | 8 | 1:2:0 | 0 | n/a | u8 | PositUnumIII | Verified | Posit Standard 2022 (es=2) | inference | ally | -| posit16 | 16 | 1:2:0 | 0 | n/a | u16 | PositUnumIII | Verified | Posit Standard 2022 (es=2) | mixed-precision training | ally | -| posit32 | 32 | 1:2:0 | 0 | n/a | u32 | PositUnumIII | Verified | Posit Standard 2022 (es=2) | f32 replacement | ally | -| posit64 | 64 | 1:2:0 | 0 | n/a | u64 | PositUnumIII | Verified | Posit Standard 2022 (es=2) | f64 replacement | ally | -| takum8 | 8 | 1:0:0 | 0 | n/a | u8 | PositUnumIII | Verified | Hunhold 2024 (tapered-precision) | IEEE-754 backward-compatible tapered | ally | -| takum16 | 16 | 1:0:0 | 0 | n/a | u16 | PositUnumIII | Verified | Hunhold 2024 | single-rule ladder counterexample | ally | -| takum32 | 32 | 1:0:0 | 0 | n/a | u32 | PositUnumIII | Verified | Hunhold 2024 | tapered fp32-class | ally | -| takum64 | 64 | 1:0:0 | 0 | n/a | u64 | PositUnumIII | Verified | Hunhold 2024 | tapered fp64-class | ally | -| lns8 | 8 | 1:7:0 | 0 | n/a | u8 | Lns | Verified | Arnold 1990; LNS-Madam (2021) | DSP, signal processing | orthogonal | -| lns16 | 16 | 1:15:0 | 0 | n/a | u16 | Lns | Verified | LNS-Madam (2021) | log-domain training (mul -> add) | orthogonal | -| lns32 | 32 | 1:31:0 | 0 | n/a | u32 | Lns | Verified | LNS-Madam (2021) | log-domain DSP | orthogonal | -| lns64 | 64 | 1:63:0 | 0 | n/a | u64 | Lns | Verified | LNS-Madam (2021) | scientific log-domain | orthogonal | -| gfternary | 2 | 1:0:2 | 0 | 0.000 | u2 | GoldenFloat | Verified | this work; {-phi, 0, +phi} | bulk layers (hybrid) | self | -| gf4 | 4 | 1:1:2 | 0 | 0.118 | u8 | GoldenFloat | Experimental | this work; F0 minimal | proof-of-concept | self | -| gf8 | 8 | 1:3:4 | 3 | 0.132 | u8 | GoldenFloat | Verified | this work; L1 Lucas | edge / sensors | self | -| gf12 | 12 | 1:4:7 | 7 | 0.047 | u16 | GoldenFloat | Verified | this work; L0/F3 | mid-range / audio | self | -| gf16 | 16 | 1:6:9 | 31 | 0.049 | u16 | GoldenFloat | Verified | this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7 | training and inference (production) | self | -| gf20 | 20 | 1:7:12 | 63 | 0.035 | u32 | GoldenFloat | Experimental | this work; 17-squared empirical PHI_BIAS=289 | high-precision edge | self | -| gf24 | 24 | 1:9:14 | 255 | 0.025 | u32 | GoldenFloat | Experimental | this work; L15 PHI_BIAS=1364 | server inference | self | -| gf32 | 32 | 1:12:19 | 2047 | 0.014 | u32 | GoldenFloat | Verified | this work; F0 resolved | fp32 drop-in | self | -| gf64 | 64 | 1:24:39 | 8388607 | 0.003 | u64 | GoldenFloat | Verified | this work; EXP_MAX - BIAS | scientific / double | self | -| gf6 | 6 | 1:2:3 | 1 | 0.050 | u8_packed | GoldenFloat | Experimental | this work; e=round(5/phi^2)=2, fills FP6 gap | OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint | experimental | -| gf128 | 128 | 1:48:79 | 0 | 0.008 | u128 | GoldenFloat | Experimental | this work; e=round(127/phi^2)=48 (Open: bias TBD) | OPEN R&D: phi-aligned binary128 alternative | experimental | -| gf256 | 256 | 1:97:158 | 0 | 0.005 | u256_software | GoldenFloat | Experimental | this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed) | OPEN R&D: phi-aligned binary256 alternative | experimental | -| gf8_bfp | 8 | 1:3:4 | 3 | 0.132 | u8_plus_shared_exp | GoldenFloat | Experimental | this work; per-tile shared exponent | OPEN R&D: LLM-quantization-friendly GF8 | experimental | -| gf_lns_hybrid | 16 | 1:6:9 | 31 | 0.049 | u16_plus_lns_path | GoldenFloat | Experimental | this work; mul in log-space, accumulate Lucas-closed | OPEN R&D: dual-space arithmetic | experimental | -| mxgf6 | 6 | 1:2:3 | 1 | 0.050 | u8_packed_plus_e8m0 | GoldenFloat | Experimental | this work; OCP MX block + GF6 | OPEN R&D: phi-aligned MX-6 candidate | experimental | -| mxgf4 | 4 | 1:1:2 | 0 | 0.118 | u8_packed_plus_e8m0 | GoldenFloat | Experimental | this work; OCP MX block + GF4 | OPEN R&D: phi-aligned MX-4 candidate | experimental | -| int4 | 4 | 1:0:3 | 0 | n/a | u8_packed | IntegerFixed | Verified | two complement | aggressive quantization | competitor | -| int8 | 8 | 1:0:7 | 0 | n/a | u8 | IntegerFixed | Verified | two complement | INT8 inference, per-channel scale | competitor | -| int16 | 16 | 1:0:15 | 0 | n/a | u16 | IntegerFixed | Verified | two complement | DSP, embedded ML | competitor | -| int32 | 32 | 1:0:31 | 0 | n/a | u32 | IntegerFixed | Verified | two complement | general CPU integer | competitor | -| int64 | 64 | 1:0:63 | 0 | n/a | u64 | IntegerFixed | Verified | two complement | databases, timestamps | competitor | -| int128 | 128 | 1:0:127 | 0 | n/a | u128 | IntegerFixed | Verified | two complement | crypto, big-int | competitor | -| q_format | 0 | 1:0:0 | 0 | n/a | varies | IntegerFixed | Verified | TI fixed-point | audio DSP, fixed-point ML | orthogonal | -| bcd | 0 | 0:0:0 | 0 | n/a | u4_per_digit | IntegerFixed | Historical | IBM 1959 | calculators, GAAP | orthogonal | -| ibm_hfp32 | 32 | 1:7:24 | 64 | n/a | u32 | HistoricalVendor | Historical | IBM System/360 (1964); base-16 exponent | legacy mainframe | orthogonal | -| ibm_hfp64 | 64 | 1:7:56 | 64 | n/a | u64 | HistoricalVendor | Historical | IBM System/360 (1964) | legacy mainframe | orthogonal | -| ibm_hfp128 | 128 | 1:7:120 | 64 | n/a | u128 | HistoricalVendor | Historical | IBM z/Architecture | legacy mainframe | orthogonal | -| ms_mbf32 | 32 | 1:8:23 | 129 | n/a | u32 | HistoricalVendor | Historical | MS BASIC / MS-DOS (pre-IEEE) | MS BASIC legacy | orthogonal | -| ms_mbf64 | 64 | 1:8:55 | 129 | n/a | u64 | HistoricalVendor | Historical | MS BASIC | MS BASIC legacy | orthogonal | -| vax_f | 32 | 1:8:23 | 128 | n/a | u32 | HistoricalVendor | Historical | DEC VAX | DEC legacy | orthogonal | -| vax_d | 64 | 1:8:55 | 128 | n/a | u64 | HistoricalVendor | Historical | DEC VAX | DEC legacy double | orthogonal | -| vax_g | 64 | 1:11:52 | 1024 | n/a | u64 | HistoricalVendor | Historical | DEC VAX (IEEE-like) | DEC legacy | orthogonal | -| vax_h | 128 | 1:15:112 | 16384 | n/a | u128 | HistoricalVendor | Historical | DEC VAX | DEC quad | orthogonal | -| cray_float | 64 | 1:15:48 | 16384 | n/a | u64 | HistoricalVendor | Historical | Cray-1 (1976); no NaN/Inf, unrounded mul | Cray legacy | orthogonal | -| minifloat | 0 | 1:0:0 | 0 | n/a | varies | Theoretical | Experimental | parametric framework | design space of GF4/GF8/GF12/GF16 | ally | -| unum_i | 0 | 1:0:0 | 0 | n/a | varies | Theoretical | Experimental | Gustafson 2015 (predecessor to posit) | interval arithmetic | ally | -| unum_ii | 0 | 0:0:0 | 0 | n/a | lookup_table | Theoretical | Experimental | Gustafson 2016 | lookup-table real arithmetic; not GF-comparable | orthogonal | -| tapered_fp | 0 | 1:0:0 | 0 | n/a | varies | Theoretical | Experimental | Morris 1971; posit ancestor | variable mantissa via regime bits | ally | -| block_fp | 0 | 0:0:0 | 0 | n/a | varies | CompressionTrick | Verified | Wilkinson 1965; modern revivals | per-tile shared exponent | ally | -| shared_exp | 0 | 0:0:0 | 0 | n/a | varies | CompressionTrick | Verified | generalised BFP | LLM quantization | ally | -| per_channel_scale | 8 | 1:0:7 | 0 | n/a | u8_plus_fp32_scale | CompressionTrick | Verified | Jacob 2018 (TFLite) | standard quant inference | competitor | -| stochastic_rounding | 0 | 0:0:0 | 0 | n/a | varies | CompressionTrick | Verified | Gupta 2015 | training small networks at low precision | ally | - -## Sources - -Per-row citation in the `source` field of the SSOT. - -## Honesty contract - -This catalog records cluster, status, phi_distance, and use case -only. Per-rung quality claims (better than posit / takum / OCP-MX / -LNS) live ONLY in FL-002 with the F1/F2/F3 falsification protocol. -Default status of any moat claim is Open conjecture. diff --git a/gen/numeric/formats_catalog.ml b/gen/numeric/formats_catalog.ml deleted file mode 100644 index b0bfa0e14..000000000 --- a/gen/numeric/formats_catalog.ml +++ /dev/null @@ -1,100 +0,0 @@ -(* Generated from formats_catalog.t27. Do not edit by hand. *) -(* SPDX-License-Identifier: Apache-2.0 *) - -type format = { - id : string; - name : string; - bits : int; - s_bits : int; - e_bits : int; - m_bits : int; - bias : int; - phi_distance : float; (* -1.0 == undefined *) - storage : string; - cluster : string; - status : string; - standard : string; - use_case : string; - gf_relation : string; - source : string; -} - -let formats : format list = [ - { id = "binary16"; name = "binary16 (fp16, half)"; bits = 16; s_bits = 1; e_bits = 5; m_bits = 10; bias = 15; phi_distance = 0.118; storage = "u16"; cluster = "Ieee754Binary"; status = "Verified"; standard = "IEEE 754-2008"; use_case = "GPU activations, inference"; gf_relation = "competitor"; source = "IEEE 754-2008" }; - { id = "binary32"; name = "binary32 (fp32, single)"; bits = 32; s_bits = 1; e_bits = 8; m_bits = 23; bias = 127; phi_distance = 0.27; storage = "u32"; cluster = "Ieee754Binary"; status = "Verified"; standard = "IEEE 754-1985"; use_case = "industry default"; gf_relation = "competitor"; source = "IEEE 754-1985" }; - { id = "binary64"; name = "binary64 (fp64, double)"; bits = 64; s_bits = 1; e_bits = 11; m_bits = 52; bias = 1023; phi_distance = 0.406; storage = "u64"; cluster = "Ieee754Binary"; status = "Verified"; standard = "IEEE 754-1985"; use_case = "scientific computing"; gf_relation = "competitor"; source = "IEEE 754-1985" }; - { id = "binary128"; name = "binary128 (fp128, quad)"; bits = 128; s_bits = 1; e_bits = 15; m_bits = 112; bias = 16383; phi_distance = 0.484; storage = "u128"; cluster = "Ieee754Binary"; status = "Verified"; standard = "IEEE 754-2008"; use_case = "high-precision simulations"; gf_relation = "competitor"; source = "IEEE 754-2008" }; - { id = "binary256"; name = "binary256 (octuple)"; bits = 256; s_bits = 1; e_bits = 19; m_bits = 236; bias = 262143; phi_distance = 0.538; storage = "u256_software"; cluster = "Ieee754Binary"; status = "Verified"; standard = "IEEE 754-2008"; use_case = "astronomy, cryptography"; gf_relation = "competitor"; source = "IEEE 754-2008" }; - { id = "decimal32"; name = "decimal32"; bits = 32; s_bits = 1; e_bits = 11; m_bits = 20; bias = 101; phi_distance = -1.0; storage = "u32"; cluster = "Ieee754Decimal"; status = "Verified"; standard = "IEEE 754-2008 (DPD/BID)"; use_case = "banking, GAAP"; gf_relation = "orthogonal"; source = "IEEE 754-2008" }; - { id = "decimal64"; name = "decimal64"; bits = 64; s_bits = 1; e_bits = 13; m_bits = 50; bias = 398; phi_distance = -1.0; storage = "u64"; cluster = "Ieee754Decimal"; status = "Verified"; standard = "IEEE 754-2008"; use_case = "financial databases"; gf_relation = "orthogonal"; source = "IEEE 754-2008" }; - { id = "decimal128"; name = "decimal128"; bits = 128; s_bits = 1; e_bits = 17; m_bits = 110; bias = 6176; phi_distance = -1.0; storage = "u128"; cluster = "Ieee754Decimal"; status = "Verified"; standard = "IEEE 754-2008"; use_case = "audit ledgers"; gf_relation = "orthogonal"; source = "IEEE 754-2008" }; - { id = "x87_fp80"; name = "x87 FP80"; bits = 80; s_bits = 1; e_bits = 15; m_bits = 64; bias = 16383; phi_distance = -1.0; storage = "u80_padded"; cluster = "ExtendedFloat"; status = "Historical"; standard = "Intel x87 (explicit integer bit)"; use_case = "legacy long double on x86"; gf_relation = "orthogonal"; source = "Intel SDM" }; - { id = "double_double"; name = "double-double"; bits = 128; s_bits = 2; e_bits = 22; m_bits = 104; bias = 0; phi_distance = -1.0; storage = "two_u64"; cluster = "ExtendedFloat"; status = "Verified"; standard = "Bailey/Hida (software)"; use_case = "software extended precision"; gf_relation = "orthogonal"; source = "Bailey-Hida 2001" }; - { id = "quad_double"; name = "quad-double"; bits = 256; s_bits = 4; e_bits = 44; m_bits = 208; bias = 0; phi_distance = -1.0; storage = "four_u64"; cluster = "ExtendedFloat"; status = "Verified"; standard = "Bailey/Hida (software)"; use_case = "astrophysics, quad-precision sims"; gf_relation = "orthogonal"; source = "Bailey-Hida 2001" }; - { id = "bfloat16"; name = "bfloat16 (BF16)"; bits = 16; s_bits = 1; e_bits = 8; m_bits = 7; bias = 127; phi_distance = 0.525; storage = "u16"; cluster = "MlLowPrecision"; status = "Verified"; standard = "Google Brain"; use_case = "training (range > precision)"; gf_relation = "competitor"; source = "Wang-Kanwar 2019" }; - { id = "tf32"; name = "TensorFloat-32 (TF32)"; bits = 19; s_bits = 1; e_bits = 8; m_bits = 10; bias = 127; phi_distance = 0.27; storage = "u32_padded"; cluster = "MlLowPrecision"; status = "Verified"; standard = "NVIDIA Ampere"; use_case = "A100/H100 mixed precision"; gf_relation = "competitor"; source = "NVIDIA Ampere whitepaper" }; - { id = "fp8_e4m3"; name = "FP8 E4M3"; bits = 8; s_bits = 1; e_bits = 4; m_bits = 3; bias = 7; phi_distance = 0.715; storage = "u8"; cluster = "MlLowPrecision"; status = "Verified"; standard = "OCP / NVIDIA / Arm / Intel"; use_case = "inference, gradient ranges"; gf_relation = "competitor"; source = "Micikevicius 2022 (arXiv:2209.05433)" }; - { id = "fp8_e5m2"; name = "FP8 E5M2"; bits = 8; s_bits = 1; e_bits = 5; m_bits = 2; bias = 15; phi_distance = 1.882; storage = "u8"; cluster = "MlLowPrecision"; status = "Verified"; standard = "OCP / NVIDIA"; use_case = "activations, wide range"; gf_relation = "competitor"; source = "Micikevicius 2022" }; - { id = "fp6_e3m2"; name = "FP6 E3M2"; bits = 6; s_bits = 1; e_bits = 3; m_bits = 2; bias = 3; phi_distance = 0.882; storage = "u8_packed"; cluster = "MlLowPrecision"; status = "Verified"; standard = "OCP MX"; use_case = "aggressive quant inference"; gf_relation = "competitor"; source = "OCP MX v1.0 (2023)" }; - { id = "fp6_e2m3"; name = "FP6 E2M3"; bits = 6; s_bits = 1; e_bits = 2; m_bits = 3; bias = 1; phi_distance = 0.049; storage = "u8_packed"; cluster = "MlLowPrecision"; status = "Verified"; standard = "OCP MX"; use_case = "mantissa-heavy quant"; gf_relation = "ally"; source = "OCP MX v1.0 (2023)" }; - { id = "fp4_e2m1"; name = "FP4 E2M1"; bits = 4; s_bits = 1; e_bits = 2; m_bits = 1; bias = 1; phi_distance = 1.382; storage = "u8_packed"; cluster = "MlLowPrecision"; status = "Verified"; standard = "OCP MX"; use_case = "extreme quant inference"; gf_relation = "competitor"; source = "OCP MX v1.0 (2023)" }; - { id = "mxfp8"; name = "MXFP8"; bits = 8; s_bits = 1; e_bits = 4; m_bits = 3; bias = 7; phi_distance = 0.715; storage = "u8_plus_shared_e8m0"; cluster = "Microscaling"; status = "Verified"; standard = "OCP MX v1.0"; use_case = "LLM inference"; gf_relation = "ally"; source = "Rouhani 2023 (arXiv:2310.10537)" }; - { id = "mxfp6"; name = "MXFP6"; bits = 6; s_bits = 1; e_bits = 3; m_bits = 2; bias = 3; phi_distance = 0.882; storage = "u8_packed_plus_e8m0"; cluster = "Microscaling"; status = "Verified"; standard = "OCP MX v1.0"; use_case = "aggressive inference"; gf_relation = "ally"; source = "Rouhani 2023" }; - { id = "mxfp4"; name = "MXFP4"; bits = 4; s_bits = 1; e_bits = 2; m_bits = 1; bias = 1; phi_distance = 1.382; storage = "u8_packed_plus_e8m0"; cluster = "Microscaling"; status = "Verified"; standard = "OCP MX v1.0"; use_case = "extreme quant"; gf_relation = "ally"; source = "Rouhani 2023" }; - { id = "nf4"; name = "NF4 (NormalFloat 4-bit)"; bits = 4; s_bits = 0; e_bits = 0; m_bits = 4; bias = 0; phi_distance = -1.0; storage = "u8_packed"; cluster = "QuantTuned"; status = "Verified"; standard = "Dettmers 2023 (QLoRA)"; use_case = "LLM weight quantization (quantile-based on N(0,1))"; gf_relation = "orthogonal"; source = "Dettmers 2023 (arXiv:2305.14314)" }; - { id = "afp"; name = "AFP (Adaptive Floating-Point)"; bits = 16; s_bits = 1; e_bits = 8; m_bits = 7; bias = 127; phi_distance = -1.0; storage = "u16_plus_tensor_shift"; cluster = "QuantTuned"; status = "Verified"; standard = "Tambe 2020"; use_case = "efficient training"; gf_relation = "orthogonal"; source = "Tambe 2020 (DAC)" }; - { id = "posit8"; name = "Posit8"; bits = 8; s_bits = 1; e_bits = 2; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u8"; cluster = "PositUnumIII"; status = "Verified"; standard = "Posit Standard 2022 (es=2)"; use_case = "inference"; gf_relation = "ally"; source = "Posit Standard 2022 (posithub.org)" }; - { id = "posit16"; name = "Posit16"; bits = 16; s_bits = 1; e_bits = 2; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u16"; cluster = "PositUnumIII"; status = "Verified"; standard = "Posit Standard 2022 (es=2)"; use_case = "mixed-precision training"; gf_relation = "ally"; source = "Posit Standard 2022" }; - { id = "posit32"; name = "Posit32"; bits = 32; s_bits = 1; e_bits = 2; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u32"; cluster = "PositUnumIII"; status = "Verified"; standard = "Posit Standard 2022 (es=2)"; use_case = "f32 replacement"; gf_relation = "ally"; source = "Posit Standard 2022" }; - { id = "posit64"; name = "Posit64"; bits = 64; s_bits = 1; e_bits = 2; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u64"; cluster = "PositUnumIII"; status = "Verified"; standard = "Posit Standard 2022 (es=2)"; use_case = "f64 replacement"; gf_relation = "ally"; source = "Posit Standard 2022" }; - { id = "takum8"; name = "takum8"; bits = 8; s_bits = 1; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u8"; cluster = "PositUnumIII"; status = "Verified"; standard = "Hunhold 2024 (tapered-precision)"; use_case = "IEEE-754 backward-compatible tapered"; gf_relation = "ally"; source = "Hunhold 2024 (arXiv:2412.20273)" }; - { id = "takum16"; name = "takum16"; bits = 16; s_bits = 1; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u16"; cluster = "PositUnumIII"; status = "Verified"; standard = "Hunhold 2024"; use_case = "single-rule ladder counterexample"; gf_relation = "ally"; source = "Hunhold 2024 (arXiv:2412.20273)" }; - { id = "takum32"; name = "takum32"; bits = 32; s_bits = 1; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u32"; cluster = "PositUnumIII"; status = "Verified"; standard = "Hunhold 2024"; use_case = "tapered fp32-class"; gf_relation = "ally"; source = "Hunhold 2024" }; - { id = "takum64"; name = "takum64"; bits = 64; s_bits = 1; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u64"; cluster = "PositUnumIII"; status = "Verified"; standard = "Hunhold 2024"; use_case = "tapered fp64-class"; gf_relation = "ally"; source = "Hunhold 2024" }; - { id = "lns8"; name = "LNS-8"; bits = 8; s_bits = 1; e_bits = 7; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u8"; cluster = "Lns"; status = "Verified"; standard = "Arnold 1990; LNS-Madam (2021)"; use_case = "DSP, signal processing"; gf_relation = "orthogonal"; source = "Alam 2021 (arXiv:2106.13914)" }; - { id = "lns16"; name = "LNS-16"; bits = 16; s_bits = 1; e_bits = 15; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u16"; cluster = "Lns"; status = "Verified"; standard = "LNS-Madam (2021)"; use_case = "log-domain training (mul -> add)"; gf_relation = "orthogonal"; source = "Alam 2021" }; - { id = "lns32"; name = "LNS-32"; bits = 32; s_bits = 1; e_bits = 31; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u32"; cluster = "Lns"; status = "Verified"; standard = "LNS-Madam (2021)"; use_case = "log-domain DSP"; gf_relation = "orthogonal"; source = "Alam 2021" }; - { id = "lns64"; name = "LNS-64"; bits = 64; s_bits = 1; e_bits = 63; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u64"; cluster = "Lns"; status = "Verified"; standard = "LNS-Madam (2021)"; use_case = "scientific log-domain"; gf_relation = "orthogonal"; source = "Alam 2021" }; - { id = "gfternary"; name = "GFTernary"; bits = 2; s_bits = 1; e_bits = 0; m_bits = 2; bias = 0; phi_distance = 0.0; storage = "u2"; cluster = "GoldenFloat"; status = "Verified"; standard = "this work; {-phi, 0, +phi}"; use_case = "bulk layers (hybrid)"; gf_relation = "self"; source = "BENCH-007" }; - { id = "gf4"; name = "GF4"; bits = 4; s_bits = 1; e_bits = 1; m_bits = 2; bias = 0; phi_distance = 0.118; storage = "u8"; cluster = "GoldenFloat"; status = "Experimental"; standard = "this work; F0 minimal"; use_case = "proof-of-concept"; gf_relation = "self"; source = "specs/numeric/gf4.t27" }; - { id = "gf8"; name = "GF8"; bits = 8; s_bits = 1; e_bits = 3; m_bits = 4; bias = 3; phi_distance = 0.132; storage = "u8"; cluster = "GoldenFloat"; status = "Verified"; standard = "this work; L1 Lucas"; use_case = "edge / sensors"; gf_relation = "self"; source = "BENCH-007 (specs/numeric/gf8.t27)" }; - { id = "gf12"; name = "GF12"; bits = 12; s_bits = 1; e_bits = 4; m_bits = 7; bias = 7; phi_distance = 0.047; storage = "u16"; cluster = "GoldenFloat"; status = "Verified"; standard = "this work; L0/F3"; use_case = "mid-range / audio"; gf_relation = "self"; source = "BENCH-007 (specs/numeric/gf12.t27)" }; - { id = "gf16"; name = "GF16"; bits = 16; s_bits = 1; e_bits = 6; m_bits = 9; bias = 31; phi_distance = 0.049; storage = "u16"; cluster = "GoldenFloat"; status = "Verified"; standard = "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7"; use_case = "training and inference (production)"; gf_relation = "self"; source = "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)" }; - { id = "gf20"; name = "GF20"; bits = 20; s_bits = 1; e_bits = 7; m_bits = 12; bias = 63; phi_distance = 0.035; storage = "u32"; cluster = "GoldenFloat"; status = "Experimental"; standard = "this work; 17-squared empirical PHI_BIAS=289"; use_case = "high-precision edge"; gf_relation = "self"; source = "specs/numeric/gf20.t27 (spec only)" }; - { id = "gf24"; name = "GF24"; bits = 24; s_bits = 1; e_bits = 9; m_bits = 14; bias = 255; phi_distance = 0.025; storage = "u32"; cluster = "GoldenFloat"; status = "Experimental"; standard = "this work; L15 PHI_BIAS=1364"; use_case = "server inference"; gf_relation = "self"; source = "specs/numeric/gf24.t27 (spec only)" }; - { id = "gf32"; name = "GF32"; bits = 32; s_bits = 1; e_bits = 12; m_bits = 19; bias = 2047; phi_distance = 0.014; storage = "u32"; cluster = "GoldenFloat"; status = "Verified"; standard = "this work; F0 resolved"; use_case = "fp32 drop-in"; gf_relation = "self"; source = "BENCH-012 (specs/numeric/gf32.t27)" }; - { id = "gf64"; name = "GF64"; bits = 64; s_bits = 1; e_bits = 24; m_bits = 39; bias = 8388607; phi_distance = 0.003; storage = "u64"; cluster = "GoldenFloat"; status = "Verified"; standard = "this work; EXP_MAX - BIAS"; use_case = "scientific / double"; gf_relation = "self"; source = "BENCH-007b (specs/numeric/gf64.t27)" }; - { id = "gf6"; name = "GF6 (predicted)"; bits = 6; s_bits = 1; e_bits = 2; m_bits = 3; bias = 1; phi_distance = 0.05; storage = "u8_packed"; cluster = "GoldenFloat"; status = "Experimental"; standard = "this work; e=round(5/phi^2)=2, fills FP6 gap"; use_case = "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint"; gf_relation = "experimental"; source = "section12.5" }; - { id = "gf128"; name = "GF128 (predicted)"; bits = 128; s_bits = 1; e_bits = 48; m_bits = 79; bias = 0; phi_distance = 0.008; storage = "u128"; cluster = "GoldenFloat"; status = "Experimental"; standard = "this work; e=round(127/phi^2)=48 (Open: bias TBD)"; use_case = "OPEN R&D: phi-aligned binary128 alternative"; gf_relation = "experimental"; source = "section12.5" }; - { id = "gf256"; name = "GF256 (predicted)"; bits = 256; s_bits = 1; e_bits = 97; m_bits = 158; bias = 0; phi_distance = 0.005; storage = "u256_software"; cluster = "GoldenFloat"; status = "Experimental"; standard = "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)"; use_case = "OPEN R&D: phi-aligned binary256 alternative"; gf_relation = "experimental"; source = "section12.5; bias Open per skill" }; - { id = "gf8_bfp"; name = "GF8-BFP (block FP atop GF8)"; bits = 8; s_bits = 1; e_bits = 3; m_bits = 4; bias = 3; phi_distance = 0.132; storage = "u8_plus_shared_exp"; cluster = "GoldenFloat"; status = "Experimental"; standard = "this work; per-tile shared exponent"; use_case = "OPEN R&D: LLM-quantization-friendly GF8"; gf_relation = "experimental"; source = "section12.5" }; - { id = "gf_lns_hybrid"; name = "GF + LNS hybrid (dual-space)"; bits = 16; s_bits = 1; e_bits = 6; m_bits = 9; bias = 31; phi_distance = 0.049; storage = "u16_plus_lns_path"; cluster = "GoldenFloat"; status = "Experimental"; standard = "this work; mul in log-space, accumulate Lucas-closed"; use_case = "OPEN R&D: dual-space arithmetic"; gf_relation = "experimental"; source = "section12.5" }; - { id = "mxgf6"; name = "MXGF6 (microscaling GF6)"; bits = 6; s_bits = 1; e_bits = 2; m_bits = 3; bias = 1; phi_distance = 0.05; storage = "u8_packed_plus_e8m0"; cluster = "GoldenFloat"; status = "Experimental"; standard = "this work; OCP MX block + GF6"; use_case = "OPEN R&D: phi-aligned MX-6 candidate"; gf_relation = "experimental"; source = "section12.5" }; - { id = "mxgf4"; name = "MXGF4 (microscaling GF4)"; bits = 4; s_bits = 1; e_bits = 1; m_bits = 2; bias = 0; phi_distance = 0.118; storage = "u8_packed_plus_e8m0"; cluster = "GoldenFloat"; status = "Experimental"; standard = "this work; OCP MX block + GF4"; use_case = "OPEN R&D: phi-aligned MX-4 candidate"; gf_relation = "experimental"; source = "section12.5" }; - { id = "int4"; name = "INT4 / UINT4"; bits = 4; s_bits = 1; e_bits = 0; m_bits = 3; bias = 0; phi_distance = -1.0; storage = "u8_packed"; cluster = "IntegerFixed"; status = "Verified"; standard = "two complement"; use_case = "aggressive quantization"; gf_relation = "competitor"; source = "ISO/IEC 9899" }; - { id = "int8"; name = "INT8 / UINT8"; bits = 8; s_bits = 1; e_bits = 0; m_bits = 7; bias = 0; phi_distance = -1.0; storage = "u8"; cluster = "IntegerFixed"; status = "Verified"; standard = "two complement"; use_case = "INT8 inference, per-channel scale"; gf_relation = "competitor"; source = "ISO/IEC 9899" }; - { id = "int16"; name = "INT16 / UINT16"; bits = 16; s_bits = 1; e_bits = 0; m_bits = 15; bias = 0; phi_distance = -1.0; storage = "u16"; cluster = "IntegerFixed"; status = "Verified"; standard = "two complement"; use_case = "DSP, embedded ML"; gf_relation = "competitor"; source = "ISO/IEC 9899" }; - { id = "int32"; name = "INT32 / UINT32"; bits = 32; s_bits = 1; e_bits = 0; m_bits = 31; bias = 0; phi_distance = -1.0; storage = "u32"; cluster = "IntegerFixed"; status = "Verified"; standard = "two complement"; use_case = "general CPU integer"; gf_relation = "competitor"; source = "ISO/IEC 9899" }; - { id = "int64"; name = "INT64 / UINT64"; bits = 64; s_bits = 1; e_bits = 0; m_bits = 63; bias = 0; phi_distance = -1.0; storage = "u64"; cluster = "IntegerFixed"; status = "Verified"; standard = "two complement"; use_case = "databases, timestamps"; gf_relation = "competitor"; source = "ISO/IEC 9899" }; - { id = "int128"; name = "INT128 / UINT128"; bits = 128; s_bits = 1; e_bits = 0; m_bits = 127; bias = 0; phi_distance = -1.0; storage = "u128"; cluster = "IntegerFixed"; status = "Verified"; standard = "two complement"; use_case = "crypto, big-int"; gf_relation = "competitor"; source = "Rust/Clang u128" }; - { id = "q_format"; name = "Q-format (Qm.n)"; bits = 0; s_bits = 1; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "varies"; cluster = "IntegerFixed"; status = "Verified"; standard = "TI fixed-point"; use_case = "audio DSP, fixed-point ML"; gf_relation = "orthogonal"; source = "TI SPRA704" }; - { id = "bcd"; name = "BCD (binary-coded decimal)"; bits = 0; s_bits = 0; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "u4_per_digit"; cluster = "IntegerFixed"; status = "Historical"; standard = "IBM 1959"; use_case = "calculators, GAAP"; gf_relation = "orthogonal"; source = "ISO/IEC 8859" }; - { id = "ibm_hfp32"; name = "IBM HFP (single)"; bits = 32; s_bits = 1; e_bits = 7; m_bits = 24; bias = 64; phi_distance = -1.0; storage = "u32"; cluster = "HistoricalVendor"; status = "Historical"; standard = "IBM System/360 (1964); base-16 exponent"; use_case = "legacy mainframe"; gf_relation = "orthogonal"; source = "IBM POO" }; - { id = "ibm_hfp64"; name = "IBM HFP (double)"; bits = 64; s_bits = 1; e_bits = 7; m_bits = 56; bias = 64; phi_distance = -1.0; storage = "u64"; cluster = "HistoricalVendor"; status = "Historical"; standard = "IBM System/360 (1964)"; use_case = "legacy mainframe"; gf_relation = "orthogonal"; source = "IBM POO" }; - { id = "ibm_hfp128"; name = "IBM HFP (extended)"; bits = 128; s_bits = 1; e_bits = 7; m_bits = 120; bias = 64; phi_distance = -1.0; storage = "u128"; cluster = "HistoricalVendor"; status = "Historical"; standard = "IBM z/Architecture"; use_case = "legacy mainframe"; gf_relation = "orthogonal"; source = "IBM POO" }; - { id = "ms_mbf32"; name = "Microsoft MBF (single)"; bits = 32; s_bits = 1; e_bits = 8; m_bits = 23; bias = 129; phi_distance = -1.0; storage = "u32"; cluster = "HistoricalVendor"; status = "Historical"; standard = "MS BASIC / MS-DOS (pre-IEEE)"; use_case = "MS BASIC legacy"; gf_relation = "orthogonal"; source = "MS-DOS docs" }; - { id = "ms_mbf64"; name = "Microsoft MBF (double)"; bits = 64; s_bits = 1; e_bits = 8; m_bits = 55; bias = 129; phi_distance = -1.0; storage = "u64"; cluster = "HistoricalVendor"; status = "Historical"; standard = "MS BASIC"; use_case = "MS BASIC legacy"; gf_relation = "orthogonal"; source = "MS-DOS docs" }; - { id = "vax_f"; name = "VAX F-float"; bits = 32; s_bits = 1; e_bits = 8; m_bits = 23; bias = 128; phi_distance = -1.0; storage = "u32"; cluster = "HistoricalVendor"; status = "Historical"; standard = "DEC VAX"; use_case = "DEC legacy"; gf_relation = "orthogonal"; source = "VAX Architecture Reference" }; - { id = "vax_d"; name = "VAX D-float"; bits = 64; s_bits = 1; e_bits = 8; m_bits = 55; bias = 128; phi_distance = -1.0; storage = "u64"; cluster = "HistoricalVendor"; status = "Historical"; standard = "DEC VAX"; use_case = "DEC legacy double"; gf_relation = "orthogonal"; source = "VAX Architecture Reference" }; - { id = "vax_g"; name = "VAX G-float"; bits = 64; s_bits = 1; e_bits = 11; m_bits = 52; bias = 1024; phi_distance = -1.0; storage = "u64"; cluster = "HistoricalVendor"; status = "Historical"; standard = "DEC VAX (IEEE-like)"; use_case = "DEC legacy"; gf_relation = "orthogonal"; source = "VAX Architecture Reference" }; - { id = "vax_h"; name = "VAX H-float"; bits = 128; s_bits = 1; e_bits = 15; m_bits = 112; bias = 16384; phi_distance = -1.0; storage = "u128"; cluster = "HistoricalVendor"; status = "Historical"; standard = "DEC VAX"; use_case = "DEC quad"; gf_relation = "orthogonal"; source = "VAX Architecture Reference" }; - { id = "cray_float"; name = "Cray float"; bits = 64; s_bits = 1; e_bits = 15; m_bits = 48; bias = 16384; phi_distance = -1.0; storage = "u64"; cluster = "HistoricalVendor"; status = "Historical"; standard = "Cray-1 (1976); no NaN/Inf, unrounded mul"; use_case = "Cray legacy"; gf_relation = "orthogonal"; source = "Cray-1 Hardware Reference" }; - { id = "minifloat"; name = "minifloat (arbitrary E:M, <=16 bits)"; bits = 0; s_bits = 1; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "varies"; cluster = "Theoretical"; status = "Experimental"; standard = "parametric framework"; use_case = "design space of GF4/GF8/GF12/GF16"; gf_relation = "ally"; source = "Higham 1996" }; - { id = "unum_i"; name = "Unum I (tapered + ubound)"; bits = 0; s_bits = 1; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "varies"; cluster = "Theoretical"; status = "Experimental"; standard = "Gustafson 2015 (predecessor to posit)"; use_case = "interval arithmetic"; gf_relation = "ally"; source = "Gustafson 2015 (The End of Error)" }; - { id = "unum_ii"; name = "Unum II (SORN projective)"; bits = 0; s_bits = 0; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "lookup_table"; cluster = "Theoretical"; status = "Experimental"; standard = "Gustafson 2016"; use_case = "lookup-table real arithmetic; not GF-comparable"; gf_relation = "orthogonal"; source = "Gustafson 2016" }; - { id = "tapered_fp"; name = "tapered floating point"; bits = 0; s_bits = 1; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "varies"; cluster = "Theoretical"; status = "Experimental"; standard = "Morris 1971; posit ancestor"; use_case = "variable mantissa via regime bits"; gf_relation = "ally"; source = "Morris 1971 (IEEE TC)" }; - { id = "block_fp"; name = "block floating point (BFP)"; bits = 0; s_bits = 0; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "varies"; cluster = "CompressionTrick"; status = "Verified"; standard = "Wilkinson 1965; modern revivals"; use_case = "per-tile shared exponent"; gf_relation = "ally"; source = "Darvish-Rouhani 2020" }; - { id = "shared_exp"; name = "shared-exponent formats"; bits = 0; s_bits = 0; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "varies"; cluster = "CompressionTrick"; status = "Verified"; standard = "generalised BFP"; use_case = "LLM quantization"; gf_relation = "ally"; source = "Darvish-Rouhani 2020" }; - { id = "per_channel_scale"; name = "INT8 with per-channel scale"; bits = 8; s_bits = 1; e_bits = 0; m_bits = 7; bias = 0; phi_distance = -1.0; storage = "u8_plus_fp32_scale"; cluster = "CompressionTrick"; status = "Verified"; standard = "Jacob 2018 (TFLite)"; use_case = "standard quant inference"; gf_relation = "competitor"; source = "Jacob 2018 (CVPR)" }; - { id = "stochastic_rounding"; name = "stochastic rounding (technique)"; bits = 0; s_bits = 0; e_bits = 0; m_bits = 0; bias = 0; phi_distance = -1.0; storage = "varies"; cluster = "CompressionTrick"; status = "Verified"; standard = "Gupta 2015"; use_case = "training small networks at low precision"; gf_relation = "ally"; source = "Gupta 2015 (ICML)" }; -] diff --git a/gen/numeric/formats_catalog.py b/gen/numeric/formats_catalog.py deleted file mode 100644 index f5ab58f7e..000000000 --- a/gen/numeric/formats_catalog.py +++ /dev/null @@ -1,106 +0,0 @@ -"""Universal Numeric Format Catalog (generated). - -Generated from specs/numeric/formats_catalog.t27. Do not edit. -""" -from __future__ import annotations -from dataclasses import dataclass - - -@dataclass(frozen=True) -class Format: - id: str - name: str - bits: int - s_bits: int - e_bits: int - m_bits: int - bias: int - phi_distance: float # -1.0 == undefined - storage: str - cluster: str - status: str - standard: str - use_case: str - gf_relation: str - source: str - - -FORMATS: list[Format] = [ - Format(id='binary16', name='binary16 (fp16, half)', bits=16, s_bits=1, e_bits=5, m_bits=10, bias=15, phi_distance=0.118, storage='u16', cluster='Ieee754Binary', status='Verified', standard='IEEE 754-2008', use_case='GPU activations, inference', gf_relation='competitor', source='IEEE 754-2008'), - Format(id='binary32', name='binary32 (fp32, single)', bits=32, s_bits=1, e_bits=8, m_bits=23, bias=127, phi_distance=0.27, storage='u32', cluster='Ieee754Binary', status='Verified', standard='IEEE 754-1985', use_case='industry default', gf_relation='competitor', source='IEEE 754-1985'), - Format(id='binary64', name='binary64 (fp64, double)', bits=64, s_bits=1, e_bits=11, m_bits=52, bias=1023, phi_distance=0.406, storage='u64', cluster='Ieee754Binary', status='Verified', standard='IEEE 754-1985', use_case='scientific computing', gf_relation='competitor', source='IEEE 754-1985'), - Format(id='binary128', name='binary128 (fp128, quad)', bits=128, s_bits=1, e_bits=15, m_bits=112, bias=16383, phi_distance=0.484, storage='u128', cluster='Ieee754Binary', status='Verified', standard='IEEE 754-2008', use_case='high-precision simulations', gf_relation='competitor', source='IEEE 754-2008'), - Format(id='binary256', name='binary256 (octuple)', bits=256, s_bits=1, e_bits=19, m_bits=236, bias=262143, phi_distance=0.538, storage='u256_software', cluster='Ieee754Binary', status='Verified', standard='IEEE 754-2008', use_case='astronomy, cryptography', gf_relation='competitor', source='IEEE 754-2008'), - Format(id='decimal32', name='decimal32', bits=32, s_bits=1, e_bits=11, m_bits=20, bias=101, phi_distance=-1.0, storage='u32', cluster='Ieee754Decimal', status='Verified', standard='IEEE 754-2008 (DPD/BID)', use_case='banking, GAAP', gf_relation='orthogonal', source='IEEE 754-2008'), - Format(id='decimal64', name='decimal64', bits=64, s_bits=1, e_bits=13, m_bits=50, bias=398, phi_distance=-1.0, storage='u64', cluster='Ieee754Decimal', status='Verified', standard='IEEE 754-2008', use_case='financial databases', gf_relation='orthogonal', source='IEEE 754-2008'), - Format(id='decimal128', name='decimal128', bits=128, s_bits=1, e_bits=17, m_bits=110, bias=6176, phi_distance=-1.0, storage='u128', cluster='Ieee754Decimal', status='Verified', standard='IEEE 754-2008', use_case='audit ledgers', gf_relation='orthogonal', source='IEEE 754-2008'), - Format(id='x87_fp80', name='x87 FP80', bits=80, s_bits=1, e_bits=15, m_bits=64, bias=16383, phi_distance=-1.0, storage='u80_padded', cluster='ExtendedFloat', status='Historical', standard='Intel x87 (explicit integer bit)', use_case='legacy long double on x86', gf_relation='orthogonal', source='Intel SDM'), - Format(id='double_double', name='double-double', bits=128, s_bits=2, e_bits=22, m_bits=104, bias=0, phi_distance=-1.0, storage='two_u64', cluster='ExtendedFloat', status='Verified', standard='Bailey/Hida (software)', use_case='software extended precision', gf_relation='orthogonal', source='Bailey-Hida 2001'), - Format(id='quad_double', name='quad-double', bits=256, s_bits=4, e_bits=44, m_bits=208, bias=0, phi_distance=-1.0, storage='four_u64', cluster='ExtendedFloat', status='Verified', standard='Bailey/Hida (software)', use_case='astrophysics, quad-precision sims', gf_relation='orthogonal', source='Bailey-Hida 2001'), - Format(id='bfloat16', name='bfloat16 (BF16)', bits=16, s_bits=1, e_bits=8, m_bits=7, bias=127, phi_distance=0.525, storage='u16', cluster='MlLowPrecision', status='Verified', standard='Google Brain', use_case='training (range > precision)', gf_relation='competitor', source='Wang-Kanwar 2019'), - Format(id='tf32', name='TensorFloat-32 (TF32)', bits=19, s_bits=1, e_bits=8, m_bits=10, bias=127, phi_distance=0.27, storage='u32_padded', cluster='MlLowPrecision', status='Verified', standard='NVIDIA Ampere', use_case='A100/H100 mixed precision', gf_relation='competitor', source='NVIDIA Ampere whitepaper'), - Format(id='fp8_e4m3', name='FP8 E4M3', bits=8, s_bits=1, e_bits=4, m_bits=3, bias=7, phi_distance=0.715, storage='u8', cluster='MlLowPrecision', status='Verified', standard='OCP / NVIDIA / Arm / Intel', use_case='inference, gradient ranges', gf_relation='competitor', source='Micikevicius 2022 (arXiv:2209.05433)'), - Format(id='fp8_e5m2', name='FP8 E5M2', bits=8, s_bits=1, e_bits=5, m_bits=2, bias=15, phi_distance=1.882, storage='u8', cluster='MlLowPrecision', status='Verified', standard='OCP / NVIDIA', use_case='activations, wide range', gf_relation='competitor', source='Micikevicius 2022'), - Format(id='fp6_e3m2', name='FP6 E3M2', bits=6, s_bits=1, e_bits=3, m_bits=2, bias=3, phi_distance=0.882, storage='u8_packed', cluster='MlLowPrecision', status='Verified', standard='OCP MX', use_case='aggressive quant inference', gf_relation='competitor', source='OCP MX v1.0 (2023)'), - Format(id='fp6_e2m3', name='FP6 E2M3', bits=6, s_bits=1, e_bits=2, m_bits=3, bias=1, phi_distance=0.049, storage='u8_packed', cluster='MlLowPrecision', status='Verified', standard='OCP MX', use_case='mantissa-heavy quant', gf_relation='ally', source='OCP MX v1.0 (2023)'), - Format(id='fp4_e2m1', name='FP4 E2M1', bits=4, s_bits=1, e_bits=2, m_bits=1, bias=1, phi_distance=1.382, storage='u8_packed', cluster='MlLowPrecision', status='Verified', standard='OCP MX', use_case='extreme quant inference', gf_relation='competitor', source='OCP MX v1.0 (2023)'), - Format(id='mxfp8', name='MXFP8', bits=8, s_bits=1, e_bits=4, m_bits=3, bias=7, phi_distance=0.715, storage='u8_plus_shared_e8m0', cluster='Microscaling', status='Verified', standard='OCP MX v1.0', use_case='LLM inference', gf_relation='ally', source='Rouhani 2023 (arXiv:2310.10537)'), - Format(id='mxfp6', name='MXFP6', bits=6, s_bits=1, e_bits=3, m_bits=2, bias=3, phi_distance=0.882, storage='u8_packed_plus_e8m0', cluster='Microscaling', status='Verified', standard='OCP MX v1.0', use_case='aggressive inference', gf_relation='ally', source='Rouhani 2023'), - Format(id='mxfp4', name='MXFP4', bits=4, s_bits=1, e_bits=2, m_bits=1, bias=1, phi_distance=1.382, storage='u8_packed_plus_e8m0', cluster='Microscaling', status='Verified', standard='OCP MX v1.0', use_case='extreme quant', gf_relation='ally', source='Rouhani 2023'), - Format(id='nf4', name='NF4 (NormalFloat 4-bit)', bits=4, s_bits=0, e_bits=0, m_bits=4, bias=0, phi_distance=-1.0, storage='u8_packed', cluster='QuantTuned', status='Verified', standard='Dettmers 2023 (QLoRA)', use_case='LLM weight quantization (quantile-based on N(0,1))', gf_relation='orthogonal', source='Dettmers 2023 (arXiv:2305.14314)'), - Format(id='afp', name='AFP (Adaptive Floating-Point)', bits=16, s_bits=1, e_bits=8, m_bits=7, bias=127, phi_distance=-1.0, storage='u16_plus_tensor_shift', cluster='QuantTuned', status='Verified', standard='Tambe 2020', use_case='efficient training', gf_relation='orthogonal', source='Tambe 2020 (DAC)'), - Format(id='posit8', name='Posit8', bits=8, s_bits=1, e_bits=2, m_bits=0, bias=0, phi_distance=-1.0, storage='u8', cluster='PositUnumIII', status='Verified', standard='Posit Standard 2022 (es=2)', use_case='inference', gf_relation='ally', source='Posit Standard 2022 (posithub.org)'), - Format(id='posit16', name='Posit16', bits=16, s_bits=1, e_bits=2, m_bits=0, bias=0, phi_distance=-1.0, storage='u16', cluster='PositUnumIII', status='Verified', standard='Posit Standard 2022 (es=2)', use_case='mixed-precision training', gf_relation='ally', source='Posit Standard 2022'), - Format(id='posit32', name='Posit32', bits=32, s_bits=1, e_bits=2, m_bits=0, bias=0, phi_distance=-1.0, storage='u32', cluster='PositUnumIII', status='Verified', standard='Posit Standard 2022 (es=2)', use_case='f32 replacement', gf_relation='ally', source='Posit Standard 2022'), - Format(id='posit64', name='Posit64', bits=64, s_bits=1, e_bits=2, m_bits=0, bias=0, phi_distance=-1.0, storage='u64', cluster='PositUnumIII', status='Verified', standard='Posit Standard 2022 (es=2)', use_case='f64 replacement', gf_relation='ally', source='Posit Standard 2022'), - Format(id='takum8', name='takum8', bits=8, s_bits=1, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='u8', cluster='PositUnumIII', status='Verified', standard='Hunhold 2024 (tapered-precision)', use_case='IEEE-754 backward-compatible tapered', gf_relation='ally', source='Hunhold 2024 (arXiv:2412.20273)'), - Format(id='takum16', name='takum16', bits=16, s_bits=1, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='u16', cluster='PositUnumIII', status='Verified', standard='Hunhold 2024', use_case='single-rule ladder counterexample', gf_relation='ally', source='Hunhold 2024 (arXiv:2412.20273)'), - Format(id='takum32', name='takum32', bits=32, s_bits=1, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='u32', cluster='PositUnumIII', status='Verified', standard='Hunhold 2024', use_case='tapered fp32-class', gf_relation='ally', source='Hunhold 2024'), - Format(id='takum64', name='takum64', bits=64, s_bits=1, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='u64', cluster='PositUnumIII', status='Verified', standard='Hunhold 2024', use_case='tapered fp64-class', gf_relation='ally', source='Hunhold 2024'), - Format(id='lns8', name='LNS-8', bits=8, s_bits=1, e_bits=7, m_bits=0, bias=0, phi_distance=-1.0, storage='u8', cluster='Lns', status='Verified', standard='Arnold 1990; LNS-Madam (2021)', use_case='DSP, signal processing', gf_relation='orthogonal', source='Alam 2021 (arXiv:2106.13914)'), - Format(id='lns16', name='LNS-16', bits=16, s_bits=1, e_bits=15, m_bits=0, bias=0, phi_distance=-1.0, storage='u16', cluster='Lns', status='Verified', standard='LNS-Madam (2021)', use_case='log-domain training (mul -> add)', gf_relation='orthogonal', source='Alam 2021'), - Format(id='lns32', name='LNS-32', bits=32, s_bits=1, e_bits=31, m_bits=0, bias=0, phi_distance=-1.0, storage='u32', cluster='Lns', status='Verified', standard='LNS-Madam (2021)', use_case='log-domain DSP', gf_relation='orthogonal', source='Alam 2021'), - Format(id='lns64', name='LNS-64', bits=64, s_bits=1, e_bits=63, m_bits=0, bias=0, phi_distance=-1.0, storage='u64', cluster='Lns', status='Verified', standard='LNS-Madam (2021)', use_case='scientific log-domain', gf_relation='orthogonal', source='Alam 2021'), - Format(id='gfternary', name='GFTernary', bits=2, s_bits=1, e_bits=0, m_bits=2, bias=0, phi_distance=0.0, storage='u2', cluster='GoldenFloat', status='Verified', standard='this work; {-phi, 0, +phi}', use_case='bulk layers (hybrid)', gf_relation='self', source='BENCH-007'), - Format(id='gf4', name='GF4', bits=4, s_bits=1, e_bits=1, m_bits=2, bias=0, phi_distance=0.118, storage='u8', cluster='GoldenFloat', status='Experimental', standard='this work; F0 minimal', use_case='proof-of-concept', gf_relation='self', source='specs/numeric/gf4.t27'), - Format(id='gf8', name='GF8', bits=8, s_bits=1, e_bits=3, m_bits=4, bias=3, phi_distance=0.132, storage='u8', cluster='GoldenFloat', status='Verified', standard='this work; L1 Lucas', use_case='edge / sensors', gf_relation='self', source='BENCH-007 (specs/numeric/gf8.t27)'), - Format(id='gf12', name='GF12', bits=12, s_bits=1, e_bits=4, m_bits=7, bias=7, phi_distance=0.047, storage='u16', cluster='GoldenFloat', status='Verified', standard='this work; L0/F3', use_case='mid-range / audio', gf_relation='self', source='BENCH-007 (specs/numeric/gf12.t27)'), - Format(id='gf16', name='GF16', bits=16, s_bits=1, e_bits=6, m_bits=9, bias=31, phi_distance=0.049, storage='u16', cluster='GoldenFloat', status='Verified', standard='this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7', use_case='training and inference (production)', gf_relation='self', source='specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)'), - Format(id='gf20', name='GF20', bits=20, s_bits=1, e_bits=7, m_bits=12, bias=63, phi_distance=0.035, storage='u32', cluster='GoldenFloat', status='Experimental', standard='this work; 17-squared empirical PHI_BIAS=289', use_case='high-precision edge', gf_relation='self', source='specs/numeric/gf20.t27 (spec only)'), - Format(id='gf24', name='GF24', bits=24, s_bits=1, e_bits=9, m_bits=14, bias=255, phi_distance=0.025, storage='u32', cluster='GoldenFloat', status='Experimental', standard='this work; L15 PHI_BIAS=1364', use_case='server inference', gf_relation='self', source='specs/numeric/gf24.t27 (spec only)'), - Format(id='gf32', name='GF32', bits=32, s_bits=1, e_bits=12, m_bits=19, bias=2047, phi_distance=0.014, storage='u32', cluster='GoldenFloat', status='Verified', standard='this work; F0 resolved', use_case='fp32 drop-in', gf_relation='self', source='BENCH-012 (specs/numeric/gf32.t27)'), - Format(id='gf64', name='GF64', bits=64, s_bits=1, e_bits=24, m_bits=39, bias=8388607, phi_distance=0.003, storage='u64', cluster='GoldenFloat', status='Verified', standard='this work; EXP_MAX - BIAS', use_case='scientific / double', gf_relation='self', source='BENCH-007b (specs/numeric/gf64.t27)'), - Format(id='gf6', name='GF6 (predicted)', bits=6, s_bits=1, e_bits=2, m_bits=3, bias=1, phi_distance=0.05, storage='u8_packed', cluster='GoldenFloat', status='Experimental', standard='this work; e=round(5/phi^2)=2, fills FP6 gap', use_case='OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint', gf_relation='experimental', source='section12.5'), - Format(id='gf128', name='GF128 (predicted)', bits=128, s_bits=1, e_bits=48, m_bits=79, bias=0, phi_distance=0.008, storage='u128', cluster='GoldenFloat', status='Experimental', standard='this work; e=round(127/phi^2)=48 (Open: bias TBD)', use_case='OPEN R&D: phi-aligned binary128 alternative', gf_relation='experimental', source='section12.5'), - Format(id='gf256', name='GF256 (predicted)', bits=256, s_bits=1, e_bits=97, m_bits=158, bias=0, phi_distance=0.005, storage='u256_software', cluster='GoldenFloat', status='Experimental', standard='this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)', use_case='OPEN R&D: phi-aligned binary256 alternative', gf_relation='experimental', source='section12.5; bias Open per skill'), - Format(id='gf8_bfp', name='GF8-BFP (block FP atop GF8)', bits=8, s_bits=1, e_bits=3, m_bits=4, bias=3, phi_distance=0.132, storage='u8_plus_shared_exp', cluster='GoldenFloat', status='Experimental', standard='this work; per-tile shared exponent', use_case='OPEN R&D: LLM-quantization-friendly GF8', gf_relation='experimental', source='section12.5'), - Format(id='gf_lns_hybrid', name='GF + LNS hybrid (dual-space)', bits=16, s_bits=1, e_bits=6, m_bits=9, bias=31, phi_distance=0.049, storage='u16_plus_lns_path', cluster='GoldenFloat', status='Experimental', standard='this work; mul in log-space, accumulate Lucas-closed', use_case='OPEN R&D: dual-space arithmetic', gf_relation='experimental', source='section12.5'), - Format(id='mxgf6', name='MXGF6 (microscaling GF6)', bits=6, s_bits=1, e_bits=2, m_bits=3, bias=1, phi_distance=0.05, storage='u8_packed_plus_e8m0', cluster='GoldenFloat', status='Experimental', standard='this work; OCP MX block + GF6', use_case='OPEN R&D: phi-aligned MX-6 candidate', gf_relation='experimental', source='section12.5'), - Format(id='mxgf4', name='MXGF4 (microscaling GF4)', bits=4, s_bits=1, e_bits=1, m_bits=2, bias=0, phi_distance=0.118, storage='u8_packed_plus_e8m0', cluster='GoldenFloat', status='Experimental', standard='this work; OCP MX block + GF4', use_case='OPEN R&D: phi-aligned MX-4 candidate', gf_relation='experimental', source='section12.5'), - Format(id='int4', name='INT4 / UINT4', bits=4, s_bits=1, e_bits=0, m_bits=3, bias=0, phi_distance=-1.0, storage='u8_packed', cluster='IntegerFixed', status='Verified', standard='two complement', use_case='aggressive quantization', gf_relation='competitor', source='ISO/IEC 9899'), - Format(id='int8', name='INT8 / UINT8', bits=8, s_bits=1, e_bits=0, m_bits=7, bias=0, phi_distance=-1.0, storage='u8', cluster='IntegerFixed', status='Verified', standard='two complement', use_case='INT8 inference, per-channel scale', gf_relation='competitor', source='ISO/IEC 9899'), - Format(id='int16', name='INT16 / UINT16', bits=16, s_bits=1, e_bits=0, m_bits=15, bias=0, phi_distance=-1.0, storage='u16', cluster='IntegerFixed', status='Verified', standard='two complement', use_case='DSP, embedded ML', gf_relation='competitor', source='ISO/IEC 9899'), - Format(id='int32', name='INT32 / UINT32', bits=32, s_bits=1, e_bits=0, m_bits=31, bias=0, phi_distance=-1.0, storage='u32', cluster='IntegerFixed', status='Verified', standard='two complement', use_case='general CPU integer', gf_relation='competitor', source='ISO/IEC 9899'), - Format(id='int64', name='INT64 / UINT64', bits=64, s_bits=1, e_bits=0, m_bits=63, bias=0, phi_distance=-1.0, storage='u64', cluster='IntegerFixed', status='Verified', standard='two complement', use_case='databases, timestamps', gf_relation='competitor', source='ISO/IEC 9899'), - Format(id='int128', name='INT128 / UINT128', bits=128, s_bits=1, e_bits=0, m_bits=127, bias=0, phi_distance=-1.0, storage='u128', cluster='IntegerFixed', status='Verified', standard='two complement', use_case='crypto, big-int', gf_relation='competitor', source='Rust/Clang u128'), - Format(id='q_format', name='Q-format (Qm.n)', bits=0, s_bits=1, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='varies', cluster='IntegerFixed', status='Verified', standard='TI fixed-point', use_case='audio DSP, fixed-point ML', gf_relation='orthogonal', source='TI SPRA704'), - Format(id='bcd', name='BCD (binary-coded decimal)', bits=0, s_bits=0, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='u4_per_digit', cluster='IntegerFixed', status='Historical', standard='IBM 1959', use_case='calculators, GAAP', gf_relation='orthogonal', source='ISO/IEC 8859'), - Format(id='ibm_hfp32', name='IBM HFP (single)', bits=32, s_bits=1, e_bits=7, m_bits=24, bias=64, phi_distance=-1.0, storage='u32', cluster='HistoricalVendor', status='Historical', standard='IBM System/360 (1964); base-16 exponent', use_case='legacy mainframe', gf_relation='orthogonal', source='IBM POO'), - Format(id='ibm_hfp64', name='IBM HFP (double)', bits=64, s_bits=1, e_bits=7, m_bits=56, bias=64, phi_distance=-1.0, storage='u64', cluster='HistoricalVendor', status='Historical', standard='IBM System/360 (1964)', use_case='legacy mainframe', gf_relation='orthogonal', source='IBM POO'), - Format(id='ibm_hfp128', name='IBM HFP (extended)', bits=128, s_bits=1, e_bits=7, m_bits=120, bias=64, phi_distance=-1.0, storage='u128', cluster='HistoricalVendor', status='Historical', standard='IBM z/Architecture', use_case='legacy mainframe', gf_relation='orthogonal', source='IBM POO'), - Format(id='ms_mbf32', name='Microsoft MBF (single)', bits=32, s_bits=1, e_bits=8, m_bits=23, bias=129, phi_distance=-1.0, storage='u32', cluster='HistoricalVendor', status='Historical', standard='MS BASIC / MS-DOS (pre-IEEE)', use_case='MS BASIC legacy', gf_relation='orthogonal', source='MS-DOS docs'), - Format(id='ms_mbf64', name='Microsoft MBF (double)', bits=64, s_bits=1, e_bits=8, m_bits=55, bias=129, phi_distance=-1.0, storage='u64', cluster='HistoricalVendor', status='Historical', standard='MS BASIC', use_case='MS BASIC legacy', gf_relation='orthogonal', source='MS-DOS docs'), - Format(id='vax_f', name='VAX F-float', bits=32, s_bits=1, e_bits=8, m_bits=23, bias=128, phi_distance=-1.0, storage='u32', cluster='HistoricalVendor', status='Historical', standard='DEC VAX', use_case='DEC legacy', gf_relation='orthogonal', source='VAX Architecture Reference'), - Format(id='vax_d', name='VAX D-float', bits=64, s_bits=1, e_bits=8, m_bits=55, bias=128, phi_distance=-1.0, storage='u64', cluster='HistoricalVendor', status='Historical', standard='DEC VAX', use_case='DEC legacy double', gf_relation='orthogonal', source='VAX Architecture Reference'), - Format(id='vax_g', name='VAX G-float', bits=64, s_bits=1, e_bits=11, m_bits=52, bias=1024, phi_distance=-1.0, storage='u64', cluster='HistoricalVendor', status='Historical', standard='DEC VAX (IEEE-like)', use_case='DEC legacy', gf_relation='orthogonal', source='VAX Architecture Reference'), - Format(id='vax_h', name='VAX H-float', bits=128, s_bits=1, e_bits=15, m_bits=112, bias=16384, phi_distance=-1.0, storage='u128', cluster='HistoricalVendor', status='Historical', standard='DEC VAX', use_case='DEC quad', gf_relation='orthogonal', source='VAX Architecture Reference'), - Format(id='cray_float', name='Cray float', bits=64, s_bits=1, e_bits=15, m_bits=48, bias=16384, phi_distance=-1.0, storage='u64', cluster='HistoricalVendor', status='Historical', standard='Cray-1 (1976); no NaN/Inf, unrounded mul', use_case='Cray legacy', gf_relation='orthogonal', source='Cray-1 Hardware Reference'), - Format(id='minifloat', name='minifloat (arbitrary E:M, <=16 bits)', bits=0, s_bits=1, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='varies', cluster='Theoretical', status='Experimental', standard='parametric framework', use_case='design space of GF4/GF8/GF12/GF16', gf_relation='ally', source='Higham 1996'), - Format(id='unum_i', name='Unum I (tapered + ubound)', bits=0, s_bits=1, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='varies', cluster='Theoretical', status='Experimental', standard='Gustafson 2015 (predecessor to posit)', use_case='interval arithmetic', gf_relation='ally', source='Gustafson 2015 (The End of Error)'), - Format(id='unum_ii', name='Unum II (SORN projective)', bits=0, s_bits=0, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='lookup_table', cluster='Theoretical', status='Experimental', standard='Gustafson 2016', use_case='lookup-table real arithmetic; not GF-comparable', gf_relation='orthogonal', source='Gustafson 2016'), - Format(id='tapered_fp', name='tapered floating point', bits=0, s_bits=1, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='varies', cluster='Theoretical', status='Experimental', standard='Morris 1971; posit ancestor', use_case='variable mantissa via regime bits', gf_relation='ally', source='Morris 1971 (IEEE TC)'), - Format(id='block_fp', name='block floating point (BFP)', bits=0, s_bits=0, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='varies', cluster='CompressionTrick', status='Verified', standard='Wilkinson 1965; modern revivals', use_case='per-tile shared exponent', gf_relation='ally', source='Darvish-Rouhani 2020'), - Format(id='shared_exp', name='shared-exponent formats', bits=0, s_bits=0, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='varies', cluster='CompressionTrick', status='Verified', standard='generalised BFP', use_case='LLM quantization', gf_relation='ally', source='Darvish-Rouhani 2020'), - Format(id='per_channel_scale', name='INT8 with per-channel scale', bits=8, s_bits=1, e_bits=0, m_bits=7, bias=0, phi_distance=-1.0, storage='u8_plus_fp32_scale', cluster='CompressionTrick', status='Verified', standard='Jacob 2018 (TFLite)', use_case='standard quant inference', gf_relation='competitor', source='Jacob 2018 (CVPR)'), - Format(id='stochastic_rounding', name='stochastic rounding (technique)', bits=0, s_bits=0, e_bits=0, m_bits=0, bias=0, phi_distance=-1.0, storage='varies', cluster='CompressionTrick', status='Verified', standard='Gupta 2015', use_case='training small networks at low precision', gf_relation='ally', source='Gupta 2015 (ICML)'), -] diff --git a/gen/numeric/formats_catalog.rs b/gen/numeric/formats_catalog.rs deleted file mode 100644 index 7a97dcacf..000000000 --- a/gen/numeric/formats_catalog.rs +++ /dev/null @@ -1,101 +0,0 @@ -// Generated from formats_catalog.t27. Do not edit by hand. -// SPDX-License-Identifier: Apache-2.0 - -#[derive(Debug, Clone, Copy)] -pub struct Format { - pub id: &'static str, - pub name: &'static str, - pub bits: u32, - pub s_bits: u32, - pub e_bits: u32, - pub m_bits: u32, - pub bias: i64, - pub phi_distance: f64, // -1.0 == undefined - pub storage: &'static str, - pub cluster: &'static str, - pub status: &'static str, - pub standard: &'static str, - pub use_case: &'static str, - pub gf_relation: &'static str, - pub source: &'static str, -} - -pub const FORMATS: [Format; 77] = [ - Format { id: 'binary16', name: 'binary16 (fp16, half)', bits: 16, s_bits: 1, e_bits: 5, m_bits: 10, bias: 15, phi_distance: 0.118f64, storage: 'u16', cluster: 'Ieee754Binary', status: 'Verified', standard: 'IEEE 754-2008', use_case: 'GPU activations, inference', gf_relation: 'competitor', source: 'IEEE 754-2008' }, - Format { id: 'binary32', name: 'binary32 (fp32, single)', bits: 32, s_bits: 1, e_bits: 8, m_bits: 23, bias: 127, phi_distance: 0.27f64, storage: 'u32', cluster: 'Ieee754Binary', status: 'Verified', standard: 'IEEE 754-1985', use_case: 'industry default', gf_relation: 'competitor', source: 'IEEE 754-1985' }, - Format { id: 'binary64', name: 'binary64 (fp64, double)', bits: 64, s_bits: 1, e_bits: 11, m_bits: 52, bias: 1023, phi_distance: 0.406f64, storage: 'u64', cluster: 'Ieee754Binary', status: 'Verified', standard: 'IEEE 754-1985', use_case: 'scientific computing', gf_relation: 'competitor', source: 'IEEE 754-1985' }, - Format { id: 'binary128', name: 'binary128 (fp128, quad)', bits: 128, s_bits: 1, e_bits: 15, m_bits: 112, bias: 16383, phi_distance: 0.484f64, storage: 'u128', cluster: 'Ieee754Binary', status: 'Verified', standard: 'IEEE 754-2008', use_case: 'high-precision simulations', gf_relation: 'competitor', source: 'IEEE 754-2008' }, - Format { id: 'binary256', name: 'binary256 (octuple)', bits: 256, s_bits: 1, e_bits: 19, m_bits: 236, bias: 262143, phi_distance: 0.538f64, storage: 'u256_software', cluster: 'Ieee754Binary', status: 'Verified', standard: 'IEEE 754-2008', use_case: 'astronomy, cryptography', gf_relation: 'competitor', source: 'IEEE 754-2008' }, - Format { id: 'decimal32', name: 'decimal32', bits: 32, s_bits: 1, e_bits: 11, m_bits: 20, bias: 101, phi_distance: -1.0f64, storage: 'u32', cluster: 'Ieee754Decimal', status: 'Verified', standard: 'IEEE 754-2008 (DPD/BID)', use_case: 'banking, GAAP', gf_relation: 'orthogonal', source: 'IEEE 754-2008' }, - Format { id: 'decimal64', name: 'decimal64', bits: 64, s_bits: 1, e_bits: 13, m_bits: 50, bias: 398, phi_distance: -1.0f64, storage: 'u64', cluster: 'Ieee754Decimal', status: 'Verified', standard: 'IEEE 754-2008', use_case: 'financial databases', gf_relation: 'orthogonal', source: 'IEEE 754-2008' }, - Format { id: 'decimal128', name: 'decimal128', bits: 128, s_bits: 1, e_bits: 17, m_bits: 110, bias: 6176, phi_distance: -1.0f64, storage: 'u128', cluster: 'Ieee754Decimal', status: 'Verified', standard: 'IEEE 754-2008', use_case: 'audit ledgers', gf_relation: 'orthogonal', source: 'IEEE 754-2008' }, - Format { id: 'x87_fp80', name: 'x87 FP80', bits: 80, s_bits: 1, e_bits: 15, m_bits: 64, bias: 16383, phi_distance: -1.0f64, storage: 'u80_padded', cluster: 'ExtendedFloat', status: 'Historical', standard: 'Intel x87 (explicit integer bit)', use_case: 'legacy long double on x86', gf_relation: 'orthogonal', source: 'Intel SDM' }, - Format { id: 'double_double', name: 'double-double', bits: 128, s_bits: 2, e_bits: 22, m_bits: 104, bias: 0, phi_distance: -1.0f64, storage: 'two_u64', cluster: 'ExtendedFloat', status: 'Verified', standard: 'Bailey/Hida (software)', use_case: 'software extended precision', gf_relation: 'orthogonal', source: 'Bailey-Hida 2001' }, - Format { id: 'quad_double', name: 'quad-double', bits: 256, s_bits: 4, e_bits: 44, m_bits: 208, bias: 0, phi_distance: -1.0f64, storage: 'four_u64', cluster: 'ExtendedFloat', status: 'Verified', standard: 'Bailey/Hida (software)', use_case: 'astrophysics, quad-precision sims', gf_relation: 'orthogonal', source: 'Bailey-Hida 2001' }, - Format { id: 'bfloat16', name: 'bfloat16 (BF16)', bits: 16, s_bits: 1, e_bits: 8, m_bits: 7, bias: 127, phi_distance: 0.525f64, storage: 'u16', cluster: 'MlLowPrecision', status: 'Verified', standard: 'Google Brain', use_case: 'training (range > precision)', gf_relation: 'competitor', source: 'Wang-Kanwar 2019' }, - Format { id: 'tf32', name: 'TensorFloat-32 (TF32)', bits: 19, s_bits: 1, e_bits: 8, m_bits: 10, bias: 127, phi_distance: 0.27f64, storage: 'u32_padded', cluster: 'MlLowPrecision', status: 'Verified', standard: 'NVIDIA Ampere', use_case: 'A100/H100 mixed precision', gf_relation: 'competitor', source: 'NVIDIA Ampere whitepaper' }, - Format { id: 'fp8_e4m3', name: 'FP8 E4M3', bits: 8, s_bits: 1, e_bits: 4, m_bits: 3, bias: 7, phi_distance: 0.715f64, storage: 'u8', cluster: 'MlLowPrecision', status: 'Verified', standard: 'OCP / NVIDIA / Arm / Intel', use_case: 'inference, gradient ranges', gf_relation: 'competitor', source: 'Micikevicius 2022 (arXiv:2209.05433)' }, - Format { id: 'fp8_e5m2', name: 'FP8 E5M2', bits: 8, s_bits: 1, e_bits: 5, m_bits: 2, bias: 15, phi_distance: 1.882f64, storage: 'u8', cluster: 'MlLowPrecision', status: 'Verified', standard: 'OCP / NVIDIA', use_case: 'activations, wide range', gf_relation: 'competitor', source: 'Micikevicius 2022' }, - Format { id: 'fp6_e3m2', name: 'FP6 E3M2', bits: 6, s_bits: 1, e_bits: 3, m_bits: 2, bias: 3, phi_distance: 0.882f64, storage: 'u8_packed', cluster: 'MlLowPrecision', status: 'Verified', standard: 'OCP MX', use_case: 'aggressive quant inference', gf_relation: 'competitor', source: 'OCP MX v1.0 (2023)' }, - Format { id: 'fp6_e2m3', name: 'FP6 E2M3', bits: 6, s_bits: 1, e_bits: 2, m_bits: 3, bias: 1, phi_distance: 0.049f64, storage: 'u8_packed', cluster: 'MlLowPrecision', status: 'Verified', standard: 'OCP MX', use_case: 'mantissa-heavy quant', gf_relation: 'ally', source: 'OCP MX v1.0 (2023)' }, - Format { id: 'fp4_e2m1', name: 'FP4 E2M1', bits: 4, s_bits: 1, e_bits: 2, m_bits: 1, bias: 1, phi_distance: 1.382f64, storage: 'u8_packed', cluster: 'MlLowPrecision', status: 'Verified', standard: 'OCP MX', use_case: 'extreme quant inference', gf_relation: 'competitor', source: 'OCP MX v1.0 (2023)' }, - Format { id: 'mxfp8', name: 'MXFP8', bits: 8, s_bits: 1, e_bits: 4, m_bits: 3, bias: 7, phi_distance: 0.715f64, storage: 'u8_plus_shared_e8m0', cluster: 'Microscaling', status: 'Verified', standard: 'OCP MX v1.0', use_case: 'LLM inference', gf_relation: 'ally', source: 'Rouhani 2023 (arXiv:2310.10537)' }, - Format { id: 'mxfp6', name: 'MXFP6', bits: 6, s_bits: 1, e_bits: 3, m_bits: 2, bias: 3, phi_distance: 0.882f64, storage: 'u8_packed_plus_e8m0', cluster: 'Microscaling', status: 'Verified', standard: 'OCP MX v1.0', use_case: 'aggressive inference', gf_relation: 'ally', source: 'Rouhani 2023' }, - Format { id: 'mxfp4', name: 'MXFP4', bits: 4, s_bits: 1, e_bits: 2, m_bits: 1, bias: 1, phi_distance: 1.382f64, storage: 'u8_packed_plus_e8m0', cluster: 'Microscaling', status: 'Verified', standard: 'OCP MX v1.0', use_case: 'extreme quant', gf_relation: 'ally', source: 'Rouhani 2023' }, - Format { id: 'nf4', name: 'NF4 (NormalFloat 4-bit)', bits: 4, s_bits: 0, e_bits: 0, m_bits: 4, bias: 0, phi_distance: -1.0f64, storage: 'u8_packed', cluster: 'QuantTuned', status: 'Verified', standard: 'Dettmers 2023 (QLoRA)', use_case: 'LLM weight quantization (quantile-based on N(0,1))', gf_relation: 'orthogonal', source: 'Dettmers 2023 (arXiv:2305.14314)' }, - Format { id: 'afp', name: 'AFP (Adaptive Floating-Point)', bits: 16, s_bits: 1, e_bits: 8, m_bits: 7, bias: 127, phi_distance: -1.0f64, storage: 'u16_plus_tensor_shift', cluster: 'QuantTuned', status: 'Verified', standard: 'Tambe 2020', use_case: 'efficient training', gf_relation: 'orthogonal', source: 'Tambe 2020 (DAC)' }, - Format { id: 'posit8', name: 'Posit8', bits: 8, s_bits: 1, e_bits: 2, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u8', cluster: 'PositUnumIII', status: 'Verified', standard: 'Posit Standard 2022 (es=2)', use_case: 'inference', gf_relation: 'ally', source: 'Posit Standard 2022 (posithub.org)' }, - Format { id: 'posit16', name: 'Posit16', bits: 16, s_bits: 1, e_bits: 2, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u16', cluster: 'PositUnumIII', status: 'Verified', standard: 'Posit Standard 2022 (es=2)', use_case: 'mixed-precision training', gf_relation: 'ally', source: 'Posit Standard 2022' }, - Format { id: 'posit32', name: 'Posit32', bits: 32, s_bits: 1, e_bits: 2, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u32', cluster: 'PositUnumIII', status: 'Verified', standard: 'Posit Standard 2022 (es=2)', use_case: 'f32 replacement', gf_relation: 'ally', source: 'Posit Standard 2022' }, - Format { id: 'posit64', name: 'Posit64', bits: 64, s_bits: 1, e_bits: 2, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u64', cluster: 'PositUnumIII', status: 'Verified', standard: 'Posit Standard 2022 (es=2)', use_case: 'f64 replacement', gf_relation: 'ally', source: 'Posit Standard 2022' }, - Format { id: 'takum8', name: 'takum8', bits: 8, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u8', cluster: 'PositUnumIII', status: 'Verified', standard: 'Hunhold 2024 (tapered-precision)', use_case: 'IEEE-754 backward-compatible tapered', gf_relation: 'ally', source: 'Hunhold 2024 (arXiv:2412.20273)' }, - Format { id: 'takum16', name: 'takum16', bits: 16, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u16', cluster: 'PositUnumIII', status: 'Verified', standard: 'Hunhold 2024', use_case: 'single-rule ladder counterexample', gf_relation: 'ally', source: 'Hunhold 2024 (arXiv:2412.20273)' }, - Format { id: 'takum32', name: 'takum32', bits: 32, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u32', cluster: 'PositUnumIII', status: 'Verified', standard: 'Hunhold 2024', use_case: 'tapered fp32-class', gf_relation: 'ally', source: 'Hunhold 2024' }, - Format { id: 'takum64', name: 'takum64', bits: 64, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u64', cluster: 'PositUnumIII', status: 'Verified', standard: 'Hunhold 2024', use_case: 'tapered fp64-class', gf_relation: 'ally', source: 'Hunhold 2024' }, - Format { id: 'lns8', name: 'LNS-8', bits: 8, s_bits: 1, e_bits: 7, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u8', cluster: 'Lns', status: 'Verified', standard: 'Arnold 1990; LNS-Madam (2021)', use_case: 'DSP, signal processing', gf_relation: 'orthogonal', source: 'Alam 2021 (arXiv:2106.13914)' }, - Format { id: 'lns16', name: 'LNS-16', bits: 16, s_bits: 1, e_bits: 15, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u16', cluster: 'Lns', status: 'Verified', standard: 'LNS-Madam (2021)', use_case: 'log-domain training (mul -> add)', gf_relation: 'orthogonal', source: 'Alam 2021' }, - Format { id: 'lns32', name: 'LNS-32', bits: 32, s_bits: 1, e_bits: 31, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u32', cluster: 'Lns', status: 'Verified', standard: 'LNS-Madam (2021)', use_case: 'log-domain DSP', gf_relation: 'orthogonal', source: 'Alam 2021' }, - Format { id: 'lns64', name: 'LNS-64', bits: 64, s_bits: 1, e_bits: 63, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u64', cluster: 'Lns', status: 'Verified', standard: 'LNS-Madam (2021)', use_case: 'scientific log-domain', gf_relation: 'orthogonal', source: 'Alam 2021' }, - Format { id: 'gfternary', name: 'GFTernary', bits: 2, s_bits: 1, e_bits: 0, m_bits: 2, bias: 0, phi_distance: 0.0f64, storage: 'u2', cluster: 'GoldenFloat', status: 'Verified', standard: 'this work; {-phi, 0, +phi}', use_case: 'bulk layers (hybrid)', gf_relation: 'self', source: 'BENCH-007' }, - Format { id: 'gf4', name: 'GF4', bits: 4, s_bits: 1, e_bits: 1, m_bits: 2, bias: 0, phi_distance: 0.118f64, storage: 'u8', cluster: 'GoldenFloat', status: 'Experimental', standard: 'this work; F0 minimal', use_case: 'proof-of-concept', gf_relation: 'self', source: 'specs/numeric/gf4.t27' }, - Format { id: 'gf8', name: 'GF8', bits: 8, s_bits: 1, e_bits: 3, m_bits: 4, bias: 3, phi_distance: 0.132f64, storage: 'u8', cluster: 'GoldenFloat', status: 'Verified', standard: 'this work; L1 Lucas', use_case: 'edge / sensors', gf_relation: 'self', source: 'BENCH-007 (specs/numeric/gf8.t27)' }, - Format { id: 'gf12', name: 'GF12', bits: 12, s_bits: 1, e_bits: 4, m_bits: 7, bias: 7, phi_distance: 0.047f64, storage: 'u16', cluster: 'GoldenFloat', status: 'Verified', standard: 'this work; L0/F3', use_case: 'mid-range / audio', gf_relation: 'self', source: 'BENCH-007 (specs/numeric/gf12.t27)' }, - Format { id: 'gf16', name: 'GF16', bits: 16, s_bits: 1, e_bits: 6, m_bits: 9, bias: 31, phi_distance: 0.049f64, storage: 'u16', cluster: 'GoldenFloat', status: 'Verified', standard: 'this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7', use_case: 'training and inference (production)', gf_relation: 'self', source: 'specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)' }, - Format { id: 'gf20', name: 'GF20', bits: 20, s_bits: 1, e_bits: 7, m_bits: 12, bias: 63, phi_distance: 0.035f64, storage: 'u32', cluster: 'GoldenFloat', status: 'Experimental', standard: 'this work; 17-squared empirical PHI_BIAS=289', use_case: 'high-precision edge', gf_relation: 'self', source: 'specs/numeric/gf20.t27 (spec only)' }, - Format { id: 'gf24', name: 'GF24', bits: 24, s_bits: 1, e_bits: 9, m_bits: 14, bias: 255, phi_distance: 0.025f64, storage: 'u32', cluster: 'GoldenFloat', status: 'Experimental', standard: 'this work; L15 PHI_BIAS=1364', use_case: 'server inference', gf_relation: 'self', source: 'specs/numeric/gf24.t27 (spec only)' }, - Format { id: 'gf32', name: 'GF32', bits: 32, s_bits: 1, e_bits: 12, m_bits: 19, bias: 2047, phi_distance: 0.014f64, storage: 'u32', cluster: 'GoldenFloat', status: 'Verified', standard: 'this work; F0 resolved', use_case: 'fp32 drop-in', gf_relation: 'self', source: 'BENCH-012 (specs/numeric/gf32.t27)' }, - Format { id: 'gf64', name: 'GF64', bits: 64, s_bits: 1, e_bits: 24, m_bits: 39, bias: 8388607, phi_distance: 0.003f64, storage: 'u64', cluster: 'GoldenFloat', status: 'Verified', standard: 'this work; EXP_MAX - BIAS', use_case: 'scientific / double', gf_relation: 'self', source: 'BENCH-007b (specs/numeric/gf64.t27)' }, - Format { id: 'gf6', name: 'GF6 (predicted)', bits: 6, s_bits: 1, e_bits: 2, m_bits: 3, bias: 1, phi_distance: 0.05f64, storage: 'u8_packed', cluster: 'GoldenFloat', status: 'Experimental', standard: 'this work; e=round(5/phi^2)=2, fills FP6 gap', use_case: 'OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint', gf_relation: 'experimental', source: 'section12.5' }, - Format { id: 'gf128', name: 'GF128 (predicted)', bits: 128, s_bits: 1, e_bits: 48, m_bits: 79, bias: 0, phi_distance: 0.008f64, storage: 'u128', cluster: 'GoldenFloat', status: 'Experimental', standard: 'this work; e=round(127/phi^2)=48 (Open: bias TBD)', use_case: 'OPEN R&D: phi-aligned binary128 alternative', gf_relation: 'experimental', source: 'section12.5' }, - Format { id: 'gf256', name: 'GF256 (predicted)', bits: 256, s_bits: 1, e_bits: 97, m_bits: 158, bias: 0, phi_distance: 0.005f64, storage: 'u256_software', cluster: 'GoldenFloat', status: 'Experimental', standard: 'this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)', use_case: 'OPEN R&D: phi-aligned binary256 alternative', gf_relation: 'experimental', source: 'section12.5; bias Open per skill' }, - Format { id: 'gf8_bfp', name: 'GF8-BFP (block FP atop GF8)', bits: 8, s_bits: 1, e_bits: 3, m_bits: 4, bias: 3, phi_distance: 0.132f64, storage: 'u8_plus_shared_exp', cluster: 'GoldenFloat', status: 'Experimental', standard: 'this work; per-tile shared exponent', use_case: 'OPEN R&D: LLM-quantization-friendly GF8', gf_relation: 'experimental', source: 'section12.5' }, - Format { id: 'gf_lns_hybrid', name: 'GF + LNS hybrid (dual-space)', bits: 16, s_bits: 1, e_bits: 6, m_bits: 9, bias: 31, phi_distance: 0.049f64, storage: 'u16_plus_lns_path', cluster: 'GoldenFloat', status: 'Experimental', standard: 'this work; mul in log-space, accumulate Lucas-closed', use_case: 'OPEN R&D: dual-space arithmetic', gf_relation: 'experimental', source: 'section12.5' }, - Format { id: 'mxgf6', name: 'MXGF6 (microscaling GF6)', bits: 6, s_bits: 1, e_bits: 2, m_bits: 3, bias: 1, phi_distance: 0.05f64, storage: 'u8_packed_plus_e8m0', cluster: 'GoldenFloat', status: 'Experimental', standard: 'this work; OCP MX block + GF6', use_case: 'OPEN R&D: phi-aligned MX-6 candidate', gf_relation: 'experimental', source: 'section12.5' }, - Format { id: 'mxgf4', name: 'MXGF4 (microscaling GF4)', bits: 4, s_bits: 1, e_bits: 1, m_bits: 2, bias: 0, phi_distance: 0.118f64, storage: 'u8_packed_plus_e8m0', cluster: 'GoldenFloat', status: 'Experimental', standard: 'this work; OCP MX block + GF4', use_case: 'OPEN R&D: phi-aligned MX-4 candidate', gf_relation: 'experimental', source: 'section12.5' }, - Format { id: 'int4', name: 'INT4 / UINT4', bits: 4, s_bits: 1, e_bits: 0, m_bits: 3, bias: 0, phi_distance: -1.0f64, storage: 'u8_packed', cluster: 'IntegerFixed', status: 'Verified', standard: 'two complement', use_case: 'aggressive quantization', gf_relation: 'competitor', source: 'ISO/IEC 9899' }, - Format { id: 'int8', name: 'INT8 / UINT8', bits: 8, s_bits: 1, e_bits: 0, m_bits: 7, bias: 0, phi_distance: -1.0f64, storage: 'u8', cluster: 'IntegerFixed', status: 'Verified', standard: 'two complement', use_case: 'INT8 inference, per-channel scale', gf_relation: 'competitor', source: 'ISO/IEC 9899' }, - Format { id: 'int16', name: 'INT16 / UINT16', bits: 16, s_bits: 1, e_bits: 0, m_bits: 15, bias: 0, phi_distance: -1.0f64, storage: 'u16', cluster: 'IntegerFixed', status: 'Verified', standard: 'two complement', use_case: 'DSP, embedded ML', gf_relation: 'competitor', source: 'ISO/IEC 9899' }, - Format { id: 'int32', name: 'INT32 / UINT32', bits: 32, s_bits: 1, e_bits: 0, m_bits: 31, bias: 0, phi_distance: -1.0f64, storage: 'u32', cluster: 'IntegerFixed', status: 'Verified', standard: 'two complement', use_case: 'general CPU integer', gf_relation: 'competitor', source: 'ISO/IEC 9899' }, - Format { id: 'int64', name: 'INT64 / UINT64', bits: 64, s_bits: 1, e_bits: 0, m_bits: 63, bias: 0, phi_distance: -1.0f64, storage: 'u64', cluster: 'IntegerFixed', status: 'Verified', standard: 'two complement', use_case: 'databases, timestamps', gf_relation: 'competitor', source: 'ISO/IEC 9899' }, - Format { id: 'int128', name: 'INT128 / UINT128', bits: 128, s_bits: 1, e_bits: 0, m_bits: 127, bias: 0, phi_distance: -1.0f64, storage: 'u128', cluster: 'IntegerFixed', status: 'Verified', standard: 'two complement', use_case: 'crypto, big-int', gf_relation: 'competitor', source: 'Rust/Clang u128' }, - Format { id: 'q_format', name: 'Q-format (Qm.n)', bits: 0, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'varies', cluster: 'IntegerFixed', status: 'Verified', standard: 'TI fixed-point', use_case: 'audio DSP, fixed-point ML', gf_relation: 'orthogonal', source: 'TI SPRA704' }, - Format { id: 'bcd', name: 'BCD (binary-coded decimal)', bits: 0, s_bits: 0, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'u4_per_digit', cluster: 'IntegerFixed', status: 'Historical', standard: 'IBM 1959', use_case: 'calculators, GAAP', gf_relation: 'orthogonal', source: 'ISO/IEC 8859' }, - Format { id: 'ibm_hfp32', name: 'IBM HFP (single)', bits: 32, s_bits: 1, e_bits: 7, m_bits: 24, bias: 64, phi_distance: -1.0f64, storage: 'u32', cluster: 'HistoricalVendor', status: 'Historical', standard: 'IBM System/360 (1964); base-16 exponent', use_case: 'legacy mainframe', gf_relation: 'orthogonal', source: 'IBM POO' }, - Format { id: 'ibm_hfp64', name: 'IBM HFP (double)', bits: 64, s_bits: 1, e_bits: 7, m_bits: 56, bias: 64, phi_distance: -1.0f64, storage: 'u64', cluster: 'HistoricalVendor', status: 'Historical', standard: 'IBM System/360 (1964)', use_case: 'legacy mainframe', gf_relation: 'orthogonal', source: 'IBM POO' }, - Format { id: 'ibm_hfp128', name: 'IBM HFP (extended)', bits: 128, s_bits: 1, e_bits: 7, m_bits: 120, bias: 64, phi_distance: -1.0f64, storage: 'u128', cluster: 'HistoricalVendor', status: 'Historical', standard: 'IBM z/Architecture', use_case: 'legacy mainframe', gf_relation: 'orthogonal', source: 'IBM POO' }, - Format { id: 'ms_mbf32', name: 'Microsoft MBF (single)', bits: 32, s_bits: 1, e_bits: 8, m_bits: 23, bias: 129, phi_distance: -1.0f64, storage: 'u32', cluster: 'HistoricalVendor', status: 'Historical', standard: 'MS BASIC / MS-DOS (pre-IEEE)', use_case: 'MS BASIC legacy', gf_relation: 'orthogonal', source: 'MS-DOS docs' }, - Format { id: 'ms_mbf64', name: 'Microsoft MBF (double)', bits: 64, s_bits: 1, e_bits: 8, m_bits: 55, bias: 129, phi_distance: -1.0f64, storage: 'u64', cluster: 'HistoricalVendor', status: 'Historical', standard: 'MS BASIC', use_case: 'MS BASIC legacy', gf_relation: 'orthogonal', source: 'MS-DOS docs' }, - Format { id: 'vax_f', name: 'VAX F-float', bits: 32, s_bits: 1, e_bits: 8, m_bits: 23, bias: 128, phi_distance: -1.0f64, storage: 'u32', cluster: 'HistoricalVendor', status: 'Historical', standard: 'DEC VAX', use_case: 'DEC legacy', gf_relation: 'orthogonal', source: 'VAX Architecture Reference' }, - Format { id: 'vax_d', name: 'VAX D-float', bits: 64, s_bits: 1, e_bits: 8, m_bits: 55, bias: 128, phi_distance: -1.0f64, storage: 'u64', cluster: 'HistoricalVendor', status: 'Historical', standard: 'DEC VAX', use_case: 'DEC legacy double', gf_relation: 'orthogonal', source: 'VAX Architecture Reference' }, - Format { id: 'vax_g', name: 'VAX G-float', bits: 64, s_bits: 1, e_bits: 11, m_bits: 52, bias: 1024, phi_distance: -1.0f64, storage: 'u64', cluster: 'HistoricalVendor', status: 'Historical', standard: 'DEC VAX (IEEE-like)', use_case: 'DEC legacy', gf_relation: 'orthogonal', source: 'VAX Architecture Reference' }, - Format { id: 'vax_h', name: 'VAX H-float', bits: 128, s_bits: 1, e_bits: 15, m_bits: 112, bias: 16384, phi_distance: -1.0f64, storage: 'u128', cluster: 'HistoricalVendor', status: 'Historical', standard: 'DEC VAX', use_case: 'DEC quad', gf_relation: 'orthogonal', source: 'VAX Architecture Reference' }, - Format { id: 'cray_float', name: 'Cray float', bits: 64, s_bits: 1, e_bits: 15, m_bits: 48, bias: 16384, phi_distance: -1.0f64, storage: 'u64', cluster: 'HistoricalVendor', status: 'Historical', standard: 'Cray-1 (1976); no NaN/Inf, unrounded mul', use_case: 'Cray legacy', gf_relation: 'orthogonal', source: 'Cray-1 Hardware Reference' }, - Format { id: 'minifloat', name: 'minifloat (arbitrary E:M, <=16 bits)', bits: 0, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'varies', cluster: 'Theoretical', status: 'Experimental', standard: 'parametric framework', use_case: 'design space of GF4/GF8/GF12/GF16', gf_relation: 'ally', source: 'Higham 1996' }, - Format { id: 'unum_i', name: 'Unum I (tapered + ubound)', bits: 0, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'varies', cluster: 'Theoretical', status: 'Experimental', standard: 'Gustafson 2015 (predecessor to posit)', use_case: 'interval arithmetic', gf_relation: 'ally', source: 'Gustafson 2015 (The End of Error)' }, - Format { id: 'unum_ii', name: 'Unum II (SORN projective)', bits: 0, s_bits: 0, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'lookup_table', cluster: 'Theoretical', status: 'Experimental', standard: 'Gustafson 2016', use_case: 'lookup-table real arithmetic; not GF-comparable', gf_relation: 'orthogonal', source: 'Gustafson 2016' }, - Format { id: 'tapered_fp', name: 'tapered floating point', bits: 0, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'varies', cluster: 'Theoretical', status: 'Experimental', standard: 'Morris 1971; posit ancestor', use_case: 'variable mantissa via regime bits', gf_relation: 'ally', source: 'Morris 1971 (IEEE TC)' }, - Format { id: 'block_fp', name: 'block floating point (BFP)', bits: 0, s_bits: 0, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'varies', cluster: 'CompressionTrick', status: 'Verified', standard: 'Wilkinson 1965; modern revivals', use_case: 'per-tile shared exponent', gf_relation: 'ally', source: 'Darvish-Rouhani 2020' }, - Format { id: 'shared_exp', name: 'shared-exponent formats', bits: 0, s_bits: 0, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'varies', cluster: 'CompressionTrick', status: 'Verified', standard: 'generalised BFP', use_case: 'LLM quantization', gf_relation: 'ally', source: 'Darvish-Rouhani 2020' }, - Format { id: 'per_channel_scale', name: 'INT8 with per-channel scale', bits: 8, s_bits: 1, e_bits: 0, m_bits: 7, bias: 0, phi_distance: -1.0f64, storage: 'u8_plus_fp32_scale', cluster: 'CompressionTrick', status: 'Verified', standard: 'Jacob 2018 (TFLite)', use_case: 'standard quant inference', gf_relation: 'competitor', source: 'Jacob 2018 (CVPR)' }, - Format { id: 'stochastic_rounding', name: 'stochastic rounding (technique)', bits: 0, s_bits: 0, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0f64, storage: 'varies', cluster: 'CompressionTrick', status: 'Verified', standard: 'Gupta 2015', use_case: 'training small networks at low precision', gf_relation: 'ally', source: 'Gupta 2015 (ICML)' }, -]; diff --git a/gen/numeric/formats_catalog.swift b/gen/numeric/formats_catalog.swift deleted file mode 100644 index f1079fe60..000000000 --- a/gen/numeric/formats_catalog.swift +++ /dev/null @@ -1,100 +0,0 @@ -// Generated from formats_catalog.t27. Do not edit by hand. -// SPDX-License-Identifier: Apache-2.0 - -public struct Format { - public let id: String - public let name: String - public let bits: UInt32 - public let sBits: UInt32 - public let eBits: UInt32 - public let mBits: UInt32 - public let bias: Int64 - public let phiDistance: Double // -1.0 == undefined - public let storage: String - public let cluster: String - public let status: String - public let standard: String - public let useCase: String - public let gfRelation: String - public let source: String -} - -public let FORMATS: [Format] = [ - Format(id: "binary16", name: "binary16 (fp16, half)", bits: 16, sBits: 1, eBits: 5, mBits: 10, bias: 15, phiDistance: 0.118, storage: "u16", cluster: "Ieee754Binary", status: "Verified", standard: "IEEE 754-2008", useCase: "GPU activations, inference", gfRelation: "competitor", source: "IEEE 754-2008"), - Format(id: "binary32", name: "binary32 (fp32, single)", bits: 32, sBits: 1, eBits: 8, mBits: 23, bias: 127, phiDistance: 0.27, storage: "u32", cluster: "Ieee754Binary", status: "Verified", standard: "IEEE 754-1985", useCase: "industry default", gfRelation: "competitor", source: "IEEE 754-1985"), - Format(id: "binary64", name: "binary64 (fp64, double)", bits: 64, sBits: 1, eBits: 11, mBits: 52, bias: 1023, phiDistance: 0.406, storage: "u64", cluster: "Ieee754Binary", status: "Verified", standard: "IEEE 754-1985", useCase: "scientific computing", gfRelation: "competitor", source: "IEEE 754-1985"), - Format(id: "binary128", name: "binary128 (fp128, quad)", bits: 128, sBits: 1, eBits: 15, mBits: 112, bias: 16383, phiDistance: 0.484, storage: "u128", cluster: "Ieee754Binary", status: "Verified", standard: "IEEE 754-2008", useCase: "high-precision simulations", gfRelation: "competitor", source: "IEEE 754-2008"), - Format(id: "binary256", name: "binary256 (octuple)", bits: 256, sBits: 1, eBits: 19, mBits: 236, bias: 262143, phiDistance: 0.538, storage: "u256_software", cluster: "Ieee754Binary", status: "Verified", standard: "IEEE 754-2008", useCase: "astronomy, cryptography", gfRelation: "competitor", source: "IEEE 754-2008"), - Format(id: "decimal32", name: "decimal32", bits: 32, sBits: 1, eBits: 11, mBits: 20, bias: 101, phiDistance: -1.0, storage: "u32", cluster: "Ieee754Decimal", status: "Verified", standard: "IEEE 754-2008 (DPD/BID)", useCase: "banking, GAAP", gfRelation: "orthogonal", source: "IEEE 754-2008"), - Format(id: "decimal64", name: "decimal64", bits: 64, sBits: 1, eBits: 13, mBits: 50, bias: 398, phiDistance: -1.0, storage: "u64", cluster: "Ieee754Decimal", status: "Verified", standard: "IEEE 754-2008", useCase: "financial databases", gfRelation: "orthogonal", source: "IEEE 754-2008"), - Format(id: "decimal128", name: "decimal128", bits: 128, sBits: 1, eBits: 17, mBits: 110, bias: 6176, phiDistance: -1.0, storage: "u128", cluster: "Ieee754Decimal", status: "Verified", standard: "IEEE 754-2008", useCase: "audit ledgers", gfRelation: "orthogonal", source: "IEEE 754-2008"), - Format(id: "x87_fp80", name: "x87 FP80", bits: 80, sBits: 1, eBits: 15, mBits: 64, bias: 16383, phiDistance: -1.0, storage: "u80_padded", cluster: "ExtendedFloat", status: "Historical", standard: "Intel x87 (explicit integer bit)", useCase: "legacy long double on x86", gfRelation: "orthogonal", source: "Intel SDM"), - Format(id: "double_double", name: "double-double", bits: 128, sBits: 2, eBits: 22, mBits: 104, bias: 0, phiDistance: -1.0, storage: "two_u64", cluster: "ExtendedFloat", status: "Verified", standard: "Bailey/Hida (software)", useCase: "software extended precision", gfRelation: "orthogonal", source: "Bailey-Hida 2001"), - Format(id: "quad_double", name: "quad-double", bits: 256, sBits: 4, eBits: 44, mBits: 208, bias: 0, phiDistance: -1.0, storage: "four_u64", cluster: "ExtendedFloat", status: "Verified", standard: "Bailey/Hida (software)", useCase: "astrophysics, quad-precision sims", gfRelation: "orthogonal", source: "Bailey-Hida 2001"), - Format(id: "bfloat16", name: "bfloat16 (BF16)", bits: 16, sBits: 1, eBits: 8, mBits: 7, bias: 127, phiDistance: 0.525, storage: "u16", cluster: "MlLowPrecision", status: "Verified", standard: "Google Brain", useCase: "training (range > precision)", gfRelation: "competitor", source: "Wang-Kanwar 2019"), - Format(id: "tf32", name: "TensorFloat-32 (TF32)", bits: 19, sBits: 1, eBits: 8, mBits: 10, bias: 127, phiDistance: 0.27, storage: "u32_padded", cluster: "MlLowPrecision", status: "Verified", standard: "NVIDIA Ampere", useCase: "A100/H100 mixed precision", gfRelation: "competitor", source: "NVIDIA Ampere whitepaper"), - Format(id: "fp8_e4m3", name: "FP8 E4M3", bits: 8, sBits: 1, eBits: 4, mBits: 3, bias: 7, phiDistance: 0.715, storage: "u8", cluster: "MlLowPrecision", status: "Verified", standard: "OCP / NVIDIA / Arm / Intel", useCase: "inference, gradient ranges", gfRelation: "competitor", source: "Micikevicius 2022 (arXiv:2209.05433)"), - Format(id: "fp8_e5m2", name: "FP8 E5M2", bits: 8, sBits: 1, eBits: 5, mBits: 2, bias: 15, phiDistance: 1.882, storage: "u8", cluster: "MlLowPrecision", status: "Verified", standard: "OCP / NVIDIA", useCase: "activations, wide range", gfRelation: "competitor", source: "Micikevicius 2022"), - Format(id: "fp6_e3m2", name: "FP6 E3M2", bits: 6, sBits: 1, eBits: 3, mBits: 2, bias: 3, phiDistance: 0.882, storage: "u8_packed", cluster: "MlLowPrecision", status: "Verified", standard: "OCP MX", useCase: "aggressive quant inference", gfRelation: "competitor", source: "OCP MX v1.0 (2023)"), - Format(id: "fp6_e2m3", name: "FP6 E2M3", bits: 6, sBits: 1, eBits: 2, mBits: 3, bias: 1, phiDistance: 0.049, storage: "u8_packed", cluster: "MlLowPrecision", status: "Verified", standard: "OCP MX", useCase: "mantissa-heavy quant", gfRelation: "ally", source: "OCP MX v1.0 (2023)"), - Format(id: "fp4_e2m1", name: "FP4 E2M1", bits: 4, sBits: 1, eBits: 2, mBits: 1, bias: 1, phiDistance: 1.382, storage: "u8_packed", cluster: "MlLowPrecision", status: "Verified", standard: "OCP MX", useCase: "extreme quant inference", gfRelation: "competitor", source: "OCP MX v1.0 (2023)"), - Format(id: "mxfp8", name: "MXFP8", bits: 8, sBits: 1, eBits: 4, mBits: 3, bias: 7, phiDistance: 0.715, storage: "u8_plus_shared_e8m0", cluster: "Microscaling", status: "Verified", standard: "OCP MX v1.0", useCase: "LLM inference", gfRelation: "ally", source: "Rouhani 2023 (arXiv:2310.10537)"), - Format(id: "mxfp6", name: "MXFP6", bits: 6, sBits: 1, eBits: 3, mBits: 2, bias: 3, phiDistance: 0.882, storage: "u8_packed_plus_e8m0", cluster: "Microscaling", status: "Verified", standard: "OCP MX v1.0", useCase: "aggressive inference", gfRelation: "ally", source: "Rouhani 2023"), - Format(id: "mxfp4", name: "MXFP4", bits: 4, sBits: 1, eBits: 2, mBits: 1, bias: 1, phiDistance: 1.382, storage: "u8_packed_plus_e8m0", cluster: "Microscaling", status: "Verified", standard: "OCP MX v1.0", useCase: "extreme quant", gfRelation: "ally", source: "Rouhani 2023"), - Format(id: "nf4", name: "NF4 (NormalFloat 4-bit)", bits: 4, sBits: 0, eBits: 0, mBits: 4, bias: 0, phiDistance: -1.0, storage: "u8_packed", cluster: "QuantTuned", status: "Verified", standard: "Dettmers 2023 (QLoRA)", useCase: "LLM weight quantization (quantile-based on N(0,1))", gfRelation: "orthogonal", source: "Dettmers 2023 (arXiv:2305.14314)"), - Format(id: "afp", name: "AFP (Adaptive Floating-Point)", bits: 16, sBits: 1, eBits: 8, mBits: 7, bias: 127, phiDistance: -1.0, storage: "u16_plus_tensor_shift", cluster: "QuantTuned", status: "Verified", standard: "Tambe 2020", useCase: "efficient training", gfRelation: "orthogonal", source: "Tambe 2020 (DAC)"), - Format(id: "posit8", name: "Posit8", bits: 8, sBits: 1, eBits: 2, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u8", cluster: "PositUnumIII", status: "Verified", standard: "Posit Standard 2022 (es=2)", useCase: "inference", gfRelation: "ally", source: "Posit Standard 2022 (posithub.org)"), - Format(id: "posit16", name: "Posit16", bits: 16, sBits: 1, eBits: 2, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u16", cluster: "PositUnumIII", status: "Verified", standard: "Posit Standard 2022 (es=2)", useCase: "mixed-precision training", gfRelation: "ally", source: "Posit Standard 2022"), - Format(id: "posit32", name: "Posit32", bits: 32, sBits: 1, eBits: 2, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u32", cluster: "PositUnumIII", status: "Verified", standard: "Posit Standard 2022 (es=2)", useCase: "f32 replacement", gfRelation: "ally", source: "Posit Standard 2022"), - Format(id: "posit64", name: "Posit64", bits: 64, sBits: 1, eBits: 2, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u64", cluster: "PositUnumIII", status: "Verified", standard: "Posit Standard 2022 (es=2)", useCase: "f64 replacement", gfRelation: "ally", source: "Posit Standard 2022"), - Format(id: "takum8", name: "takum8", bits: 8, sBits: 1, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u8", cluster: "PositUnumIII", status: "Verified", standard: "Hunhold 2024 (tapered-precision)", useCase: "IEEE-754 backward-compatible tapered", gfRelation: "ally", source: "Hunhold 2024 (arXiv:2412.20273)"), - Format(id: "takum16", name: "takum16", bits: 16, sBits: 1, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u16", cluster: "PositUnumIII", status: "Verified", standard: "Hunhold 2024", useCase: "single-rule ladder counterexample", gfRelation: "ally", source: "Hunhold 2024 (arXiv:2412.20273)"), - Format(id: "takum32", name: "takum32", bits: 32, sBits: 1, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u32", cluster: "PositUnumIII", status: "Verified", standard: "Hunhold 2024", useCase: "tapered fp32-class", gfRelation: "ally", source: "Hunhold 2024"), - Format(id: "takum64", name: "takum64", bits: 64, sBits: 1, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u64", cluster: "PositUnumIII", status: "Verified", standard: "Hunhold 2024", useCase: "tapered fp64-class", gfRelation: "ally", source: "Hunhold 2024"), - Format(id: "lns8", name: "LNS-8", bits: 8, sBits: 1, eBits: 7, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u8", cluster: "Lns", status: "Verified", standard: "Arnold 1990; LNS-Madam (2021)", useCase: "DSP, signal processing", gfRelation: "orthogonal", source: "Alam 2021 (arXiv:2106.13914)"), - Format(id: "lns16", name: "LNS-16", bits: 16, sBits: 1, eBits: 15, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u16", cluster: "Lns", status: "Verified", standard: "LNS-Madam (2021)", useCase: "log-domain training (mul -> add)", gfRelation: "orthogonal", source: "Alam 2021"), - Format(id: "lns32", name: "LNS-32", bits: 32, sBits: 1, eBits: 31, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u32", cluster: "Lns", status: "Verified", standard: "LNS-Madam (2021)", useCase: "log-domain DSP", gfRelation: "orthogonal", source: "Alam 2021"), - Format(id: "lns64", name: "LNS-64", bits: 64, sBits: 1, eBits: 63, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u64", cluster: "Lns", status: "Verified", standard: "LNS-Madam (2021)", useCase: "scientific log-domain", gfRelation: "orthogonal", source: "Alam 2021"), - Format(id: "gfternary", name: "GFTernary", bits: 2, sBits: 1, eBits: 0, mBits: 2, bias: 0, phiDistance: 0.0, storage: "u2", cluster: "GoldenFloat", status: "Verified", standard: "this work; {-phi, 0, +phi}", useCase: "bulk layers (hybrid)", gfRelation: "self", source: "BENCH-007"), - Format(id: "gf4", name: "GF4", bits: 4, sBits: 1, eBits: 1, mBits: 2, bias: 0, phiDistance: 0.118, storage: "u8", cluster: "GoldenFloat", status: "Experimental", standard: "this work; F0 minimal", useCase: "proof-of-concept", gfRelation: "self", source: "specs/numeric/gf4.t27"), - Format(id: "gf8", name: "GF8", bits: 8, sBits: 1, eBits: 3, mBits: 4, bias: 3, phiDistance: 0.132, storage: "u8", cluster: "GoldenFloat", status: "Verified", standard: "this work; L1 Lucas", useCase: "edge / sensors", gfRelation: "self", source: "BENCH-007 (specs/numeric/gf8.t27)"), - Format(id: "gf12", name: "GF12", bits: 12, sBits: 1, eBits: 4, mBits: 7, bias: 7, phiDistance: 0.047, storage: "u16", cluster: "GoldenFloat", status: "Verified", standard: "this work; L0/F3", useCase: "mid-range / audio", gfRelation: "self", source: "BENCH-007 (specs/numeric/gf12.t27)"), - Format(id: "gf16", name: "GF16", bits: 16, sBits: 1, eBits: 6, mBits: 9, bias: 31, phiDistance: 0.049, storage: "u16", cluster: "GoldenFloat", status: "Verified", standard: "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7", useCase: "training and inference (production)", gfRelation: "self", source: "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)"), - Format(id: "gf20", name: "GF20", bits: 20, sBits: 1, eBits: 7, mBits: 12, bias: 63, phiDistance: 0.035, storage: "u32", cluster: "GoldenFloat", status: "Experimental", standard: "this work; 17-squared empirical PHI_BIAS=289", useCase: "high-precision edge", gfRelation: "self", source: "specs/numeric/gf20.t27 (spec only)"), - Format(id: "gf24", name: "GF24", bits: 24, sBits: 1, eBits: 9, mBits: 14, bias: 255, phiDistance: 0.025, storage: "u32", cluster: "GoldenFloat", status: "Experimental", standard: "this work; L15 PHI_BIAS=1364", useCase: "server inference", gfRelation: "self", source: "specs/numeric/gf24.t27 (spec only)"), - Format(id: "gf32", name: "GF32", bits: 32, sBits: 1, eBits: 12, mBits: 19, bias: 2047, phiDistance: 0.014, storage: "u32", cluster: "GoldenFloat", status: "Verified", standard: "this work; F0 resolved", useCase: "fp32 drop-in", gfRelation: "self", source: "BENCH-012 (specs/numeric/gf32.t27)"), - Format(id: "gf64", name: "GF64", bits: 64, sBits: 1, eBits: 24, mBits: 39, bias: 8388607, phiDistance: 0.003, storage: "u64", cluster: "GoldenFloat", status: "Verified", standard: "this work; EXP_MAX - BIAS", useCase: "scientific / double", gfRelation: "self", source: "BENCH-007b (specs/numeric/gf64.t27)"), - Format(id: "gf6", name: "GF6 (predicted)", bits: 6, sBits: 1, eBits: 2, mBits: 3, bias: 1, phiDistance: 0.05, storage: "u8_packed", cluster: "GoldenFloat", status: "Experimental", standard: "this work; e=round(5/phi^2)=2, fills FP6 gap", useCase: "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint", gfRelation: "experimental", source: "section12.5"), - Format(id: "gf128", name: "GF128 (predicted)", bits: 128, sBits: 1, eBits: 48, mBits: 79, bias: 0, phiDistance: 0.008, storage: "u128", cluster: "GoldenFloat", status: "Experimental", standard: "this work; e=round(127/phi^2)=48 (Open: bias TBD)", useCase: "OPEN R&D: phi-aligned binary128 alternative", gfRelation: "experimental", source: "section12.5"), - Format(id: "gf256", name: "GF256 (predicted)", bits: 256, sBits: 1, eBits: 97, mBits: 158, bias: 0, phiDistance: 0.005, storage: "u256_software", cluster: "GoldenFloat", status: "Experimental", standard: "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)", useCase: "OPEN R&D: phi-aligned binary256 alternative", gfRelation: "experimental", source: "section12.5; bias Open per skill"), - Format(id: "gf8_bfp", name: "GF8-BFP (block FP atop GF8)", bits: 8, sBits: 1, eBits: 3, mBits: 4, bias: 3, phiDistance: 0.132, storage: "u8_plus_shared_exp", cluster: "GoldenFloat", status: "Experimental", standard: "this work; per-tile shared exponent", useCase: "OPEN R&D: LLM-quantization-friendly GF8", gfRelation: "experimental", source: "section12.5"), - Format(id: "gf_lns_hybrid", name: "GF + LNS hybrid (dual-space)", bits: 16, sBits: 1, eBits: 6, mBits: 9, bias: 31, phiDistance: 0.049, storage: "u16_plus_lns_path", cluster: "GoldenFloat", status: "Experimental", standard: "this work; mul in log-space, accumulate Lucas-closed", useCase: "OPEN R&D: dual-space arithmetic", gfRelation: "experimental", source: "section12.5"), - Format(id: "mxgf6", name: "MXGF6 (microscaling GF6)", bits: 6, sBits: 1, eBits: 2, mBits: 3, bias: 1, phiDistance: 0.05, storage: "u8_packed_plus_e8m0", cluster: "GoldenFloat", status: "Experimental", standard: "this work; OCP MX block + GF6", useCase: "OPEN R&D: phi-aligned MX-6 candidate", gfRelation: "experimental", source: "section12.5"), - Format(id: "mxgf4", name: "MXGF4 (microscaling GF4)", bits: 4, sBits: 1, eBits: 1, mBits: 2, bias: 0, phiDistance: 0.118, storage: "u8_packed_plus_e8m0", cluster: "GoldenFloat", status: "Experimental", standard: "this work; OCP MX block + GF4", useCase: "OPEN R&D: phi-aligned MX-4 candidate", gfRelation: "experimental", source: "section12.5"), - Format(id: "int4", name: "INT4 / UINT4", bits: 4, sBits: 1, eBits: 0, mBits: 3, bias: 0, phiDistance: -1.0, storage: "u8_packed", cluster: "IntegerFixed", status: "Verified", standard: "two complement", useCase: "aggressive quantization", gfRelation: "competitor", source: "ISO/IEC 9899"), - Format(id: "int8", name: "INT8 / UINT8", bits: 8, sBits: 1, eBits: 0, mBits: 7, bias: 0, phiDistance: -1.0, storage: "u8", cluster: "IntegerFixed", status: "Verified", standard: "two complement", useCase: "INT8 inference, per-channel scale", gfRelation: "competitor", source: "ISO/IEC 9899"), - Format(id: "int16", name: "INT16 / UINT16", bits: 16, sBits: 1, eBits: 0, mBits: 15, bias: 0, phiDistance: -1.0, storage: "u16", cluster: "IntegerFixed", status: "Verified", standard: "two complement", useCase: "DSP, embedded ML", gfRelation: "competitor", source: "ISO/IEC 9899"), - Format(id: "int32", name: "INT32 / UINT32", bits: 32, sBits: 1, eBits: 0, mBits: 31, bias: 0, phiDistance: -1.0, storage: "u32", cluster: "IntegerFixed", status: "Verified", standard: "two complement", useCase: "general CPU integer", gfRelation: "competitor", source: "ISO/IEC 9899"), - Format(id: "int64", name: "INT64 / UINT64", bits: 64, sBits: 1, eBits: 0, mBits: 63, bias: 0, phiDistance: -1.0, storage: "u64", cluster: "IntegerFixed", status: "Verified", standard: "two complement", useCase: "databases, timestamps", gfRelation: "competitor", source: "ISO/IEC 9899"), - Format(id: "int128", name: "INT128 / UINT128", bits: 128, sBits: 1, eBits: 0, mBits: 127, bias: 0, phiDistance: -1.0, storage: "u128", cluster: "IntegerFixed", status: "Verified", standard: "two complement", useCase: "crypto, big-int", gfRelation: "competitor", source: "Rust/Clang u128"), - Format(id: "q_format", name: "Q-format (Qm.n)", bits: 0, sBits: 1, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "varies", cluster: "IntegerFixed", status: "Verified", standard: "TI fixed-point", useCase: "audio DSP, fixed-point ML", gfRelation: "orthogonal", source: "TI SPRA704"), - Format(id: "bcd", name: "BCD (binary-coded decimal)", bits: 0, sBits: 0, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "u4_per_digit", cluster: "IntegerFixed", status: "Historical", standard: "IBM 1959", useCase: "calculators, GAAP", gfRelation: "orthogonal", source: "ISO/IEC 8859"), - Format(id: "ibm_hfp32", name: "IBM HFP (single)", bits: 32, sBits: 1, eBits: 7, mBits: 24, bias: 64, phiDistance: -1.0, storage: "u32", cluster: "HistoricalVendor", status: "Historical", standard: "IBM System/360 (1964); base-16 exponent", useCase: "legacy mainframe", gfRelation: "orthogonal", source: "IBM POO"), - Format(id: "ibm_hfp64", name: "IBM HFP (double)", bits: 64, sBits: 1, eBits: 7, mBits: 56, bias: 64, phiDistance: -1.0, storage: "u64", cluster: "HistoricalVendor", status: "Historical", standard: "IBM System/360 (1964)", useCase: "legacy mainframe", gfRelation: "orthogonal", source: "IBM POO"), - Format(id: "ibm_hfp128", name: "IBM HFP (extended)", bits: 128, sBits: 1, eBits: 7, mBits: 120, bias: 64, phiDistance: -1.0, storage: "u128", cluster: "HistoricalVendor", status: "Historical", standard: "IBM z/Architecture", useCase: "legacy mainframe", gfRelation: "orthogonal", source: "IBM POO"), - Format(id: "ms_mbf32", name: "Microsoft MBF (single)", bits: 32, sBits: 1, eBits: 8, mBits: 23, bias: 129, phiDistance: -1.0, storage: "u32", cluster: "HistoricalVendor", status: "Historical", standard: "MS BASIC / MS-DOS (pre-IEEE)", useCase: "MS BASIC legacy", gfRelation: "orthogonal", source: "MS-DOS docs"), - Format(id: "ms_mbf64", name: "Microsoft MBF (double)", bits: 64, sBits: 1, eBits: 8, mBits: 55, bias: 129, phiDistance: -1.0, storage: "u64", cluster: "HistoricalVendor", status: "Historical", standard: "MS BASIC", useCase: "MS BASIC legacy", gfRelation: "orthogonal", source: "MS-DOS docs"), - Format(id: "vax_f", name: "VAX F-float", bits: 32, sBits: 1, eBits: 8, mBits: 23, bias: 128, phiDistance: -1.0, storage: "u32", cluster: "HistoricalVendor", status: "Historical", standard: "DEC VAX", useCase: "DEC legacy", gfRelation: "orthogonal", source: "VAX Architecture Reference"), - Format(id: "vax_d", name: "VAX D-float", bits: 64, sBits: 1, eBits: 8, mBits: 55, bias: 128, phiDistance: -1.0, storage: "u64", cluster: "HistoricalVendor", status: "Historical", standard: "DEC VAX", useCase: "DEC legacy double", gfRelation: "orthogonal", source: "VAX Architecture Reference"), - Format(id: "vax_g", name: "VAX G-float", bits: 64, sBits: 1, eBits: 11, mBits: 52, bias: 1024, phiDistance: -1.0, storage: "u64", cluster: "HistoricalVendor", status: "Historical", standard: "DEC VAX (IEEE-like)", useCase: "DEC legacy", gfRelation: "orthogonal", source: "VAX Architecture Reference"), - Format(id: "vax_h", name: "VAX H-float", bits: 128, sBits: 1, eBits: 15, mBits: 112, bias: 16384, phiDistance: -1.0, storage: "u128", cluster: "HistoricalVendor", status: "Historical", standard: "DEC VAX", useCase: "DEC quad", gfRelation: "orthogonal", source: "VAX Architecture Reference"), - Format(id: "cray_float", name: "Cray float", bits: 64, sBits: 1, eBits: 15, mBits: 48, bias: 16384, phiDistance: -1.0, storage: "u64", cluster: "HistoricalVendor", status: "Historical", standard: "Cray-1 (1976); no NaN/Inf, unrounded mul", useCase: "Cray legacy", gfRelation: "orthogonal", source: "Cray-1 Hardware Reference"), - Format(id: "minifloat", name: "minifloat (arbitrary E:M, <=16 bits)", bits: 0, sBits: 1, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "varies", cluster: "Theoretical", status: "Experimental", standard: "parametric framework", useCase: "design space of GF4/GF8/GF12/GF16", gfRelation: "ally", source: "Higham 1996"), - Format(id: "unum_i", name: "Unum I (tapered + ubound)", bits: 0, sBits: 1, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "varies", cluster: "Theoretical", status: "Experimental", standard: "Gustafson 2015 (predecessor to posit)", useCase: "interval arithmetic", gfRelation: "ally", source: "Gustafson 2015 (The End of Error)"), - Format(id: "unum_ii", name: "Unum II (SORN projective)", bits: 0, sBits: 0, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "lookup_table", cluster: "Theoretical", status: "Experimental", standard: "Gustafson 2016", useCase: "lookup-table real arithmetic; not GF-comparable", gfRelation: "orthogonal", source: "Gustafson 2016"), - Format(id: "tapered_fp", name: "tapered floating point", bits: 0, sBits: 1, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "varies", cluster: "Theoretical", status: "Experimental", standard: "Morris 1971; posit ancestor", useCase: "variable mantissa via regime bits", gfRelation: "ally", source: "Morris 1971 (IEEE TC)"), - Format(id: "block_fp", name: "block floating point (BFP)", bits: 0, sBits: 0, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "varies", cluster: "CompressionTrick", status: "Verified", standard: "Wilkinson 1965; modern revivals", useCase: "per-tile shared exponent", gfRelation: "ally", source: "Darvish-Rouhani 2020"), - Format(id: "shared_exp", name: "shared-exponent formats", bits: 0, sBits: 0, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "varies", cluster: "CompressionTrick", status: "Verified", standard: "generalised BFP", useCase: "LLM quantization", gfRelation: "ally", source: "Darvish-Rouhani 2020"), - Format(id: "per_channel_scale", name: "INT8 with per-channel scale", bits: 8, sBits: 1, eBits: 0, mBits: 7, bias: 0, phiDistance: -1.0, storage: "u8_plus_fp32_scale", cluster: "CompressionTrick", status: "Verified", standard: "Jacob 2018 (TFLite)", useCase: "standard quant inference", gfRelation: "competitor", source: "Jacob 2018 (CVPR)"), - Format(id: "stochastic_rounding", name: "stochastic rounding (technique)", bits: 0, sBits: 0, eBits: 0, mBits: 0, bias: 0, phiDistance: -1.0, storage: "varies", cluster: "CompressionTrick", status: "Verified", standard: "Gupta 2015", useCase: "training small networks at low precision", gfRelation: "ally", source: "Gupta 2015 (ICML)"), -] diff --git a/gen/numeric/formats_catalog.ts b/gen/numeric/formats_catalog.ts deleted file mode 100644 index 8c90247a7..000000000 --- a/gen/numeric/formats_catalog.ts +++ /dev/null @@ -1,100 +0,0 @@ -// Generated from formats_catalog.t27. Do not edit by hand. -// SPDX-License-Identifier: Apache-2.0 - -export interface NumericFormat { - id: string; - name: string; - bits: number; - s_bits: number; - e_bits: number; - m_bits: number; - bias: number; - phi_distance: number; // -1 == undefined - storage: string; - cluster: string; - status: string; - standard: string; - use_case: string; - gf_relation: string; - source: string; -} - -export const FORMATS: ReadonlyArray = [ - { id: "binary16", name: "binary16 (fp16, half)", bits: 16, s_bits: 1, e_bits: 5, m_bits: 10, bias: 15, phi_distance: 0.118, storage: "u16", cluster: "Ieee754Binary", status: "Verified", standard: "IEEE 754-2008", use_case: "GPU activations, inference", gf_relation: "competitor", source: "IEEE 754-2008" }, - { id: "binary32", name: "binary32 (fp32, single)", bits: 32, s_bits: 1, e_bits: 8, m_bits: 23, bias: 127, phi_distance: 0.27, storage: "u32", cluster: "Ieee754Binary", status: "Verified", standard: "IEEE 754-1985", use_case: "industry default", gf_relation: "competitor", source: "IEEE 754-1985" }, - { id: "binary64", name: "binary64 (fp64, double)", bits: 64, s_bits: 1, e_bits: 11, m_bits: 52, bias: 1023, phi_distance: 0.406, storage: "u64", cluster: "Ieee754Binary", status: "Verified", standard: "IEEE 754-1985", use_case: "scientific computing", gf_relation: "competitor", source: "IEEE 754-1985" }, - { id: "binary128", name: "binary128 (fp128, quad)", bits: 128, s_bits: 1, e_bits: 15, m_bits: 112, bias: 16383, phi_distance: 0.484, storage: "u128", cluster: "Ieee754Binary", status: "Verified", standard: "IEEE 754-2008", use_case: "high-precision simulations", gf_relation: "competitor", source: "IEEE 754-2008" }, - { id: "binary256", name: "binary256 (octuple)", bits: 256, s_bits: 1, e_bits: 19, m_bits: 236, bias: 262143, phi_distance: 0.538, storage: "u256_software", cluster: "Ieee754Binary", status: "Verified", standard: "IEEE 754-2008", use_case: "astronomy, cryptography", gf_relation: "competitor", source: "IEEE 754-2008" }, - { id: "decimal32", name: "decimal32", bits: 32, s_bits: 1, e_bits: 11, m_bits: 20, bias: 101, phi_distance: -1.0, storage: "u32", cluster: "Ieee754Decimal", status: "Verified", standard: "IEEE 754-2008 (DPD/BID)", use_case: "banking, GAAP", gf_relation: "orthogonal", source: "IEEE 754-2008" }, - { id: "decimal64", name: "decimal64", bits: 64, s_bits: 1, e_bits: 13, m_bits: 50, bias: 398, phi_distance: -1.0, storage: "u64", cluster: "Ieee754Decimal", status: "Verified", standard: "IEEE 754-2008", use_case: "financial databases", gf_relation: "orthogonal", source: "IEEE 754-2008" }, - { id: "decimal128", name: "decimal128", bits: 128, s_bits: 1, e_bits: 17, m_bits: 110, bias: 6176, phi_distance: -1.0, storage: "u128", cluster: "Ieee754Decimal", status: "Verified", standard: "IEEE 754-2008", use_case: "audit ledgers", gf_relation: "orthogonal", source: "IEEE 754-2008" }, - { id: "x87_fp80", name: "x87 FP80", bits: 80, s_bits: 1, e_bits: 15, m_bits: 64, bias: 16383, phi_distance: -1.0, storage: "u80_padded", cluster: "ExtendedFloat", status: "Historical", standard: "Intel x87 (explicit integer bit)", use_case: "legacy long double on x86", gf_relation: "orthogonal", source: "Intel SDM" }, - { id: "double_double", name: "double-double", bits: 128, s_bits: 2, e_bits: 22, m_bits: 104, bias: 0, phi_distance: -1.0, storage: "two_u64", cluster: "ExtendedFloat", status: "Verified", standard: "Bailey/Hida (software)", use_case: "software extended precision", gf_relation: "orthogonal", source: "Bailey-Hida 2001" }, - { id: "quad_double", name: "quad-double", bits: 256, s_bits: 4, e_bits: 44, m_bits: 208, bias: 0, phi_distance: -1.0, storage: "four_u64", cluster: "ExtendedFloat", status: "Verified", standard: "Bailey/Hida (software)", use_case: "astrophysics, quad-precision sims", gf_relation: "orthogonal", source: "Bailey-Hida 2001" }, - { id: "bfloat16", name: "bfloat16 (BF16)", bits: 16, s_bits: 1, e_bits: 8, m_bits: 7, bias: 127, phi_distance: 0.525, storage: "u16", cluster: "MlLowPrecision", status: "Verified", standard: "Google Brain", use_case: "training (range > precision)", gf_relation: "competitor", source: "Wang-Kanwar 2019" }, - { id: "tf32", name: "TensorFloat-32 (TF32)", bits: 19, s_bits: 1, e_bits: 8, m_bits: 10, bias: 127, phi_distance: 0.27, storage: "u32_padded", cluster: "MlLowPrecision", status: "Verified", standard: "NVIDIA Ampere", use_case: "A100/H100 mixed precision", gf_relation: "competitor", source: "NVIDIA Ampere whitepaper" }, - { id: "fp8_e4m3", name: "FP8 E4M3", bits: 8, s_bits: 1, e_bits: 4, m_bits: 3, bias: 7, phi_distance: 0.715, storage: "u8", cluster: "MlLowPrecision", status: "Verified", standard: "OCP / NVIDIA / Arm / Intel", use_case: "inference, gradient ranges", gf_relation: "competitor", source: "Micikevicius 2022 (arXiv:2209.05433)" }, - { id: "fp8_e5m2", name: "FP8 E5M2", bits: 8, s_bits: 1, e_bits: 5, m_bits: 2, bias: 15, phi_distance: 1.882, storage: "u8", cluster: "MlLowPrecision", status: "Verified", standard: "OCP / NVIDIA", use_case: "activations, wide range", gf_relation: "competitor", source: "Micikevicius 2022" }, - { id: "fp6_e3m2", name: "FP6 E3M2", bits: 6, s_bits: 1, e_bits: 3, m_bits: 2, bias: 3, phi_distance: 0.882, storage: "u8_packed", cluster: "MlLowPrecision", status: "Verified", standard: "OCP MX", use_case: "aggressive quant inference", gf_relation: "competitor", source: "OCP MX v1.0 (2023)" }, - { id: "fp6_e2m3", name: "FP6 E2M3", bits: 6, s_bits: 1, e_bits: 2, m_bits: 3, bias: 1, phi_distance: 0.049, storage: "u8_packed", cluster: "MlLowPrecision", status: "Verified", standard: "OCP MX", use_case: "mantissa-heavy quant", gf_relation: "ally", source: "OCP MX v1.0 (2023)" }, - { id: "fp4_e2m1", name: "FP4 E2M1", bits: 4, s_bits: 1, e_bits: 2, m_bits: 1, bias: 1, phi_distance: 1.382, storage: "u8_packed", cluster: "MlLowPrecision", status: "Verified", standard: "OCP MX", use_case: "extreme quant inference", gf_relation: "competitor", source: "OCP MX v1.0 (2023)" }, - { id: "mxfp8", name: "MXFP8", bits: 8, s_bits: 1, e_bits: 4, m_bits: 3, bias: 7, phi_distance: 0.715, storage: "u8_plus_shared_e8m0", cluster: "Microscaling", status: "Verified", standard: "OCP MX v1.0", use_case: "LLM inference", gf_relation: "ally", source: "Rouhani 2023 (arXiv:2310.10537)" }, - { id: "mxfp6", name: "MXFP6", bits: 6, s_bits: 1, e_bits: 3, m_bits: 2, bias: 3, phi_distance: 0.882, storage: "u8_packed_plus_e8m0", cluster: "Microscaling", status: "Verified", standard: "OCP MX v1.0", use_case: "aggressive inference", gf_relation: "ally", source: "Rouhani 2023" }, - { id: "mxfp4", name: "MXFP4", bits: 4, s_bits: 1, e_bits: 2, m_bits: 1, bias: 1, phi_distance: 1.382, storage: "u8_packed_plus_e8m0", cluster: "Microscaling", status: "Verified", standard: "OCP MX v1.0", use_case: "extreme quant", gf_relation: "ally", source: "Rouhani 2023" }, - { id: "nf4", name: "NF4 (NormalFloat 4-bit)", bits: 4, s_bits: 0, e_bits: 0, m_bits: 4, bias: 0, phi_distance: -1.0, storage: "u8_packed", cluster: "QuantTuned", status: "Verified", standard: "Dettmers 2023 (QLoRA)", use_case: "LLM weight quantization (quantile-based on N(0,1))", gf_relation: "orthogonal", source: "Dettmers 2023 (arXiv:2305.14314)" }, - { id: "afp", name: "AFP (Adaptive Floating-Point)", bits: 16, s_bits: 1, e_bits: 8, m_bits: 7, bias: 127, phi_distance: -1.0, storage: "u16_plus_tensor_shift", cluster: "QuantTuned", status: "Verified", standard: "Tambe 2020", use_case: "efficient training", gf_relation: "orthogonal", source: "Tambe 2020 (DAC)" }, - { id: "posit8", name: "Posit8", bits: 8, s_bits: 1, e_bits: 2, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u8", cluster: "PositUnumIII", status: "Verified", standard: "Posit Standard 2022 (es=2)", use_case: "inference", gf_relation: "ally", source: "Posit Standard 2022 (posithub.org)" }, - { id: "posit16", name: "Posit16", bits: 16, s_bits: 1, e_bits: 2, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u16", cluster: "PositUnumIII", status: "Verified", standard: "Posit Standard 2022 (es=2)", use_case: "mixed-precision training", gf_relation: "ally", source: "Posit Standard 2022" }, - { id: "posit32", name: "Posit32", bits: 32, s_bits: 1, e_bits: 2, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u32", cluster: "PositUnumIII", status: "Verified", standard: "Posit Standard 2022 (es=2)", use_case: "f32 replacement", gf_relation: "ally", source: "Posit Standard 2022" }, - { id: "posit64", name: "Posit64", bits: 64, s_bits: 1, e_bits: 2, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u64", cluster: "PositUnumIII", status: "Verified", standard: "Posit Standard 2022 (es=2)", use_case: "f64 replacement", gf_relation: "ally", source: "Posit Standard 2022" }, - { id: "takum8", name: "takum8", bits: 8, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u8", cluster: "PositUnumIII", status: "Verified", standard: "Hunhold 2024 (tapered-precision)", use_case: "IEEE-754 backward-compatible tapered", gf_relation: "ally", source: "Hunhold 2024 (arXiv:2412.20273)" }, - { id: "takum16", name: "takum16", bits: 16, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u16", cluster: "PositUnumIII", status: "Verified", standard: "Hunhold 2024", use_case: "single-rule ladder counterexample", gf_relation: "ally", source: "Hunhold 2024 (arXiv:2412.20273)" }, - { id: "takum32", name: "takum32", bits: 32, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u32", cluster: "PositUnumIII", status: "Verified", standard: "Hunhold 2024", use_case: "tapered fp32-class", gf_relation: "ally", source: "Hunhold 2024" }, - { id: "takum64", name: "takum64", bits: 64, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u64", cluster: "PositUnumIII", status: "Verified", standard: "Hunhold 2024", use_case: "tapered fp64-class", gf_relation: "ally", source: "Hunhold 2024" }, - { id: "lns8", name: "LNS-8", bits: 8, s_bits: 1, e_bits: 7, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u8", cluster: "Lns", status: "Verified", standard: "Arnold 1990; LNS-Madam (2021)", use_case: "DSP, signal processing", gf_relation: "orthogonal", source: "Alam 2021 (arXiv:2106.13914)" }, - { id: "lns16", name: "LNS-16", bits: 16, s_bits: 1, e_bits: 15, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u16", cluster: "Lns", status: "Verified", standard: "LNS-Madam (2021)", use_case: "log-domain training (mul -> add)", gf_relation: "orthogonal", source: "Alam 2021" }, - { id: "lns32", name: "LNS-32", bits: 32, s_bits: 1, e_bits: 31, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u32", cluster: "Lns", status: "Verified", standard: "LNS-Madam (2021)", use_case: "log-domain DSP", gf_relation: "orthogonal", source: "Alam 2021" }, - { id: "lns64", name: "LNS-64", bits: 64, s_bits: 1, e_bits: 63, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u64", cluster: "Lns", status: "Verified", standard: "LNS-Madam (2021)", use_case: "scientific log-domain", gf_relation: "orthogonal", source: "Alam 2021" }, - { id: "gfternary", name: "GFTernary", bits: 2, s_bits: 1, e_bits: 0, m_bits: 2, bias: 0, phi_distance: 0.0, storage: "u2", cluster: "GoldenFloat", status: "Verified", standard: "this work; {-phi, 0, +phi}", use_case: "bulk layers (hybrid)", gf_relation: "self", source: "BENCH-007" }, - { id: "gf4", name: "GF4", bits: 4, s_bits: 1, e_bits: 1, m_bits: 2, bias: 0, phi_distance: 0.118, storage: "u8", cluster: "GoldenFloat", status: "Experimental", standard: "this work; F0 minimal", use_case: "proof-of-concept", gf_relation: "self", source: "specs/numeric/gf4.t27" }, - { id: "gf8", name: "GF8", bits: 8, s_bits: 1, e_bits: 3, m_bits: 4, bias: 3, phi_distance: 0.132, storage: "u8", cluster: "GoldenFloat", status: "Verified", standard: "this work; L1 Lucas", use_case: "edge / sensors", gf_relation: "self", source: "BENCH-007 (specs/numeric/gf8.t27)" }, - { id: "gf12", name: "GF12", bits: 12, s_bits: 1, e_bits: 4, m_bits: 7, bias: 7, phi_distance: 0.047, storage: "u16", cluster: "GoldenFloat", status: "Verified", standard: "this work; L0/F3", use_case: "mid-range / audio", gf_relation: "self", source: "BENCH-007 (specs/numeric/gf12.t27)" }, - { id: "gf16", name: "GF16", bits: 16, s_bits: 1, e_bits: 6, m_bits: 9, bias: 31, phi_distance: 0.049, storage: "u16", cluster: "GoldenFloat", status: "Verified", standard: "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7", use_case: "training and inference (production)", gf_relation: "self", source: "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)" }, - { id: "gf20", name: "GF20", bits: 20, s_bits: 1, e_bits: 7, m_bits: 12, bias: 63, phi_distance: 0.035, storage: "u32", cluster: "GoldenFloat", status: "Experimental", standard: "this work; 17-squared empirical PHI_BIAS=289", use_case: "high-precision edge", gf_relation: "self", source: "specs/numeric/gf20.t27 (spec only)" }, - { id: "gf24", name: "GF24", bits: 24, s_bits: 1, e_bits: 9, m_bits: 14, bias: 255, phi_distance: 0.025, storage: "u32", cluster: "GoldenFloat", status: "Experimental", standard: "this work; L15 PHI_BIAS=1364", use_case: "server inference", gf_relation: "self", source: "specs/numeric/gf24.t27 (spec only)" }, - { id: "gf32", name: "GF32", bits: 32, s_bits: 1, e_bits: 12, m_bits: 19, bias: 2047, phi_distance: 0.014, storage: "u32", cluster: "GoldenFloat", status: "Verified", standard: "this work; F0 resolved", use_case: "fp32 drop-in", gf_relation: "self", source: "BENCH-012 (specs/numeric/gf32.t27)" }, - { id: "gf64", name: "GF64", bits: 64, s_bits: 1, e_bits: 24, m_bits: 39, bias: 8388607, phi_distance: 0.003, storage: "u64", cluster: "GoldenFloat", status: "Verified", standard: "this work; EXP_MAX - BIAS", use_case: "scientific / double", gf_relation: "self", source: "BENCH-007b (specs/numeric/gf64.t27)" }, - { id: "gf6", name: "GF6 (predicted)", bits: 6, s_bits: 1, e_bits: 2, m_bits: 3, bias: 1, phi_distance: 0.05, storage: "u8_packed", cluster: "GoldenFloat", status: "Experimental", standard: "this work; e=round(5/phi^2)=2, fills FP6 gap", use_case: "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint", gf_relation: "experimental", source: "section12.5" }, - { id: "gf128", name: "GF128 (predicted)", bits: 128, s_bits: 1, e_bits: 48, m_bits: 79, bias: 0, phi_distance: 0.008, storage: "u128", cluster: "GoldenFloat", status: "Experimental", standard: "this work; e=round(127/phi^2)=48 (Open: bias TBD)", use_case: "OPEN R&D: phi-aligned binary128 alternative", gf_relation: "experimental", source: "section12.5" }, - { id: "gf256", name: "GF256 (predicted)", bits: 256, s_bits: 1, e_bits: 97, m_bits: 158, bias: 0, phi_distance: 0.005, storage: "u256_software", cluster: "GoldenFloat", status: "Experimental", standard: "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)", use_case: "OPEN R&D: phi-aligned binary256 alternative", gf_relation: "experimental", source: "section12.5; bias Open per skill" }, - { id: "gf8_bfp", name: "GF8-BFP (block FP atop GF8)", bits: 8, s_bits: 1, e_bits: 3, m_bits: 4, bias: 3, phi_distance: 0.132, storage: "u8_plus_shared_exp", cluster: "GoldenFloat", status: "Experimental", standard: "this work; per-tile shared exponent", use_case: "OPEN R&D: LLM-quantization-friendly GF8", gf_relation: "experimental", source: "section12.5" }, - { id: "gf_lns_hybrid", name: "GF + LNS hybrid (dual-space)", bits: 16, s_bits: 1, e_bits: 6, m_bits: 9, bias: 31, phi_distance: 0.049, storage: "u16_plus_lns_path", cluster: "GoldenFloat", status: "Experimental", standard: "this work; mul in log-space, accumulate Lucas-closed", use_case: "OPEN R&D: dual-space arithmetic", gf_relation: "experimental", source: "section12.5" }, - { id: "mxgf6", name: "MXGF6 (microscaling GF6)", bits: 6, s_bits: 1, e_bits: 2, m_bits: 3, bias: 1, phi_distance: 0.05, storage: "u8_packed_plus_e8m0", cluster: "GoldenFloat", status: "Experimental", standard: "this work; OCP MX block + GF6", use_case: "OPEN R&D: phi-aligned MX-6 candidate", gf_relation: "experimental", source: "section12.5" }, - { id: "mxgf4", name: "MXGF4 (microscaling GF4)", bits: 4, s_bits: 1, e_bits: 1, m_bits: 2, bias: 0, phi_distance: 0.118, storage: "u8_packed_plus_e8m0", cluster: "GoldenFloat", status: "Experimental", standard: "this work; OCP MX block + GF4", use_case: "OPEN R&D: phi-aligned MX-4 candidate", gf_relation: "experimental", source: "section12.5" }, - { id: "int4", name: "INT4 / UINT4", bits: 4, s_bits: 1, e_bits: 0, m_bits: 3, bias: 0, phi_distance: -1.0, storage: "u8_packed", cluster: "IntegerFixed", status: "Verified", standard: "two complement", use_case: "aggressive quantization", gf_relation: "competitor", source: "ISO/IEC 9899" }, - { id: "int8", name: "INT8 / UINT8", bits: 8, s_bits: 1, e_bits: 0, m_bits: 7, bias: 0, phi_distance: -1.0, storage: "u8", cluster: "IntegerFixed", status: "Verified", standard: "two complement", use_case: "INT8 inference, per-channel scale", gf_relation: "competitor", source: "ISO/IEC 9899" }, - { id: "int16", name: "INT16 / UINT16", bits: 16, s_bits: 1, e_bits: 0, m_bits: 15, bias: 0, phi_distance: -1.0, storage: "u16", cluster: "IntegerFixed", status: "Verified", standard: "two complement", use_case: "DSP, embedded ML", gf_relation: "competitor", source: "ISO/IEC 9899" }, - { id: "int32", name: "INT32 / UINT32", bits: 32, s_bits: 1, e_bits: 0, m_bits: 31, bias: 0, phi_distance: -1.0, storage: "u32", cluster: "IntegerFixed", status: "Verified", standard: "two complement", use_case: "general CPU integer", gf_relation: "competitor", source: "ISO/IEC 9899" }, - { id: "int64", name: "INT64 / UINT64", bits: 64, s_bits: 1, e_bits: 0, m_bits: 63, bias: 0, phi_distance: -1.0, storage: "u64", cluster: "IntegerFixed", status: "Verified", standard: "two complement", use_case: "databases, timestamps", gf_relation: "competitor", source: "ISO/IEC 9899" }, - { id: "int128", name: "INT128 / UINT128", bits: 128, s_bits: 1, e_bits: 0, m_bits: 127, bias: 0, phi_distance: -1.0, storage: "u128", cluster: "IntegerFixed", status: "Verified", standard: "two complement", use_case: "crypto, big-int", gf_relation: "competitor", source: "Rust/Clang u128" }, - { id: "q_format", name: "Q-format (Qm.n)", bits: 0, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "varies", cluster: "IntegerFixed", status: "Verified", standard: "TI fixed-point", use_case: "audio DSP, fixed-point ML", gf_relation: "orthogonal", source: "TI SPRA704" }, - { id: "bcd", name: "BCD (binary-coded decimal)", bits: 0, s_bits: 0, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "u4_per_digit", cluster: "IntegerFixed", status: "Historical", standard: "IBM 1959", use_case: "calculators, GAAP", gf_relation: "orthogonal", source: "ISO/IEC 8859" }, - { id: "ibm_hfp32", name: "IBM HFP (single)", bits: 32, s_bits: 1, e_bits: 7, m_bits: 24, bias: 64, phi_distance: -1.0, storage: "u32", cluster: "HistoricalVendor", status: "Historical", standard: "IBM System/360 (1964); base-16 exponent", use_case: "legacy mainframe", gf_relation: "orthogonal", source: "IBM POO" }, - { id: "ibm_hfp64", name: "IBM HFP (double)", bits: 64, s_bits: 1, e_bits: 7, m_bits: 56, bias: 64, phi_distance: -1.0, storage: "u64", cluster: "HistoricalVendor", status: "Historical", standard: "IBM System/360 (1964)", use_case: "legacy mainframe", gf_relation: "orthogonal", source: "IBM POO" }, - { id: "ibm_hfp128", name: "IBM HFP (extended)", bits: 128, s_bits: 1, e_bits: 7, m_bits: 120, bias: 64, phi_distance: -1.0, storage: "u128", cluster: "HistoricalVendor", status: "Historical", standard: "IBM z/Architecture", use_case: "legacy mainframe", gf_relation: "orthogonal", source: "IBM POO" }, - { id: "ms_mbf32", name: "Microsoft MBF (single)", bits: 32, s_bits: 1, e_bits: 8, m_bits: 23, bias: 129, phi_distance: -1.0, storage: "u32", cluster: "HistoricalVendor", status: "Historical", standard: "MS BASIC / MS-DOS (pre-IEEE)", use_case: "MS BASIC legacy", gf_relation: "orthogonal", source: "MS-DOS docs" }, - { id: "ms_mbf64", name: "Microsoft MBF (double)", bits: 64, s_bits: 1, e_bits: 8, m_bits: 55, bias: 129, phi_distance: -1.0, storage: "u64", cluster: "HistoricalVendor", status: "Historical", standard: "MS BASIC", use_case: "MS BASIC legacy", gf_relation: "orthogonal", source: "MS-DOS docs" }, - { id: "vax_f", name: "VAX F-float", bits: 32, s_bits: 1, e_bits: 8, m_bits: 23, bias: 128, phi_distance: -1.0, storage: "u32", cluster: "HistoricalVendor", status: "Historical", standard: "DEC VAX", use_case: "DEC legacy", gf_relation: "orthogonal", source: "VAX Architecture Reference" }, - { id: "vax_d", name: "VAX D-float", bits: 64, s_bits: 1, e_bits: 8, m_bits: 55, bias: 128, phi_distance: -1.0, storage: "u64", cluster: "HistoricalVendor", status: "Historical", standard: "DEC VAX", use_case: "DEC legacy double", gf_relation: "orthogonal", source: "VAX Architecture Reference" }, - { id: "vax_g", name: "VAX G-float", bits: 64, s_bits: 1, e_bits: 11, m_bits: 52, bias: 1024, phi_distance: -1.0, storage: "u64", cluster: "HistoricalVendor", status: "Historical", standard: "DEC VAX (IEEE-like)", use_case: "DEC legacy", gf_relation: "orthogonal", source: "VAX Architecture Reference" }, - { id: "vax_h", name: "VAX H-float", bits: 128, s_bits: 1, e_bits: 15, m_bits: 112, bias: 16384, phi_distance: -1.0, storage: "u128", cluster: "HistoricalVendor", status: "Historical", standard: "DEC VAX", use_case: "DEC quad", gf_relation: "orthogonal", source: "VAX Architecture Reference" }, - { id: "cray_float", name: "Cray float", bits: 64, s_bits: 1, e_bits: 15, m_bits: 48, bias: 16384, phi_distance: -1.0, storage: "u64", cluster: "HistoricalVendor", status: "Historical", standard: "Cray-1 (1976); no NaN/Inf, unrounded mul", use_case: "Cray legacy", gf_relation: "orthogonal", source: "Cray-1 Hardware Reference" }, - { id: "minifloat", name: "minifloat (arbitrary E:M, <=16 bits)", bits: 0, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "varies", cluster: "Theoretical", status: "Experimental", standard: "parametric framework", use_case: "design space of GF4/GF8/GF12/GF16", gf_relation: "ally", source: "Higham 1996" }, - { id: "unum_i", name: "Unum I (tapered + ubound)", bits: 0, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "varies", cluster: "Theoretical", status: "Experimental", standard: "Gustafson 2015 (predecessor to posit)", use_case: "interval arithmetic", gf_relation: "ally", source: "Gustafson 2015 (The End of Error)" }, - { id: "unum_ii", name: "Unum II (SORN projective)", bits: 0, s_bits: 0, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "lookup_table", cluster: "Theoretical", status: "Experimental", standard: "Gustafson 2016", use_case: "lookup-table real arithmetic; not GF-comparable", gf_relation: "orthogonal", source: "Gustafson 2016" }, - { id: "tapered_fp", name: "tapered floating point", bits: 0, s_bits: 1, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "varies", cluster: "Theoretical", status: "Experimental", standard: "Morris 1971; posit ancestor", use_case: "variable mantissa via regime bits", gf_relation: "ally", source: "Morris 1971 (IEEE TC)" }, - { id: "block_fp", name: "block floating point (BFP)", bits: 0, s_bits: 0, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "varies", cluster: "CompressionTrick", status: "Verified", standard: "Wilkinson 1965; modern revivals", use_case: "per-tile shared exponent", gf_relation: "ally", source: "Darvish-Rouhani 2020" }, - { id: "shared_exp", name: "shared-exponent formats", bits: 0, s_bits: 0, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "varies", cluster: "CompressionTrick", status: "Verified", standard: "generalised BFP", use_case: "LLM quantization", gf_relation: "ally", source: "Darvish-Rouhani 2020" }, - { id: "per_channel_scale", name: "INT8 with per-channel scale", bits: 8, s_bits: 1, e_bits: 0, m_bits: 7, bias: 0, phi_distance: -1.0, storage: "u8_plus_fp32_scale", cluster: "CompressionTrick", status: "Verified", standard: "Jacob 2018 (TFLite)", use_case: "standard quant inference", gf_relation: "competitor", source: "Jacob 2018 (CVPR)" }, - { id: "stochastic_rounding", name: "stochastic rounding (technique)", bits: 0, s_bits: 0, e_bits: 0, m_bits: 0, bias: 0, phi_distance: -1.0, storage: "varies", cluster: "CompressionTrick", status: "Verified", standard: "Gupta 2015", use_case: "training small networks at low precision", gf_relation: "ally", source: "Gupta 2015 (ICML)" }, -]; diff --git a/gen/numeric/formats_catalog.vh b/gen/numeric/formats_catalog.vh deleted file mode 100644 index f7f18a3b7..000000000 --- a/gen/numeric/formats_catalog.vh +++ /dev/null @@ -1,397 +0,0 @@ -// Generated from formats_catalog.t27. Do not edit by hand. -// SPDX-License-Identifier: Apache-2.0 -// Per-format bit-width parameters for HDL synthesis. String fields -// are intentionally omitted; consult the .h / .json artefact for -// metadata. Identifiers are ASCII, uppercased, dashes -> underscore. -`ifndef T27_FORMATS_CATALOG_VH -`define T27_FORMATS_CATALOG_VH - -`define T27_FORMAT_COUNT 77 - -`define T27_FMT_BINARY16_BITS 16 -`define T27_FMT_BINARY16_S 1 -`define T27_FMT_BINARY16_E 5 -`define T27_FMT_BINARY16_M 10 -`define T27_FMT_BINARY16_BIAS 15 -`define T27_FMT_BINARY32_BITS 32 -`define T27_FMT_BINARY32_S 1 -`define T27_FMT_BINARY32_E 8 -`define T27_FMT_BINARY32_M 23 -`define T27_FMT_BINARY32_BIAS 127 -`define T27_FMT_BINARY64_BITS 64 -`define T27_FMT_BINARY64_S 1 -`define T27_FMT_BINARY64_E 11 -`define T27_FMT_BINARY64_M 52 -`define T27_FMT_BINARY64_BIAS 1023 -`define T27_FMT_BINARY128_BITS 128 -`define T27_FMT_BINARY128_S 1 -`define T27_FMT_BINARY128_E 15 -`define T27_FMT_BINARY128_M 112 -`define T27_FMT_BINARY128_BIAS 16383 -`define T27_FMT_BINARY256_BITS 256 -`define T27_FMT_BINARY256_S 1 -`define T27_FMT_BINARY256_E 19 -`define T27_FMT_BINARY256_M 236 -`define T27_FMT_BINARY256_BIAS 262143 -`define T27_FMT_DECIMAL32_BITS 32 -`define T27_FMT_DECIMAL32_S 1 -`define T27_FMT_DECIMAL32_E 11 -`define T27_FMT_DECIMAL32_M 20 -`define T27_FMT_DECIMAL32_BIAS 101 -`define T27_FMT_DECIMAL64_BITS 64 -`define T27_FMT_DECIMAL64_S 1 -`define T27_FMT_DECIMAL64_E 13 -`define T27_FMT_DECIMAL64_M 50 -`define T27_FMT_DECIMAL64_BIAS 398 -`define T27_FMT_DECIMAL128_BITS 128 -`define T27_FMT_DECIMAL128_S 1 -`define T27_FMT_DECIMAL128_E 17 -`define T27_FMT_DECIMAL128_M 110 -`define T27_FMT_DECIMAL128_BIAS 6176 -`define T27_FMT_X87_FP80_BITS 80 -`define T27_FMT_X87_FP80_S 1 -`define T27_FMT_X87_FP80_E 15 -`define T27_FMT_X87_FP80_M 64 -`define T27_FMT_X87_FP80_BIAS 16383 -`define T27_FMT_DOUBLE_DOUBLE_BITS 128 -`define T27_FMT_DOUBLE_DOUBLE_S 2 -`define T27_FMT_DOUBLE_DOUBLE_E 22 -`define T27_FMT_DOUBLE_DOUBLE_M 104 -`define T27_FMT_DOUBLE_DOUBLE_BIAS 0 -`define T27_FMT_QUAD_DOUBLE_BITS 256 -`define T27_FMT_QUAD_DOUBLE_S 4 -`define T27_FMT_QUAD_DOUBLE_E 44 -`define T27_FMT_QUAD_DOUBLE_M 208 -`define T27_FMT_QUAD_DOUBLE_BIAS 0 -`define T27_FMT_BFLOAT16_BITS 16 -`define T27_FMT_BFLOAT16_S 1 -`define T27_FMT_BFLOAT16_E 8 -`define T27_FMT_BFLOAT16_M 7 -`define T27_FMT_BFLOAT16_BIAS 127 -`define T27_FMT_TF32_BITS 19 -`define T27_FMT_TF32_S 1 -`define T27_FMT_TF32_E 8 -`define T27_FMT_TF32_M 10 -`define T27_FMT_TF32_BIAS 127 -`define T27_FMT_FP8_E4M3_BITS 8 -`define T27_FMT_FP8_E4M3_S 1 -`define T27_FMT_FP8_E4M3_E 4 -`define T27_FMT_FP8_E4M3_M 3 -`define T27_FMT_FP8_E4M3_BIAS 7 -`define T27_FMT_FP8_E5M2_BITS 8 -`define T27_FMT_FP8_E5M2_S 1 -`define T27_FMT_FP8_E5M2_E 5 -`define T27_FMT_FP8_E5M2_M 2 -`define T27_FMT_FP8_E5M2_BIAS 15 -`define T27_FMT_FP6_E3M2_BITS 6 -`define T27_FMT_FP6_E3M2_S 1 -`define T27_FMT_FP6_E3M2_E 3 -`define T27_FMT_FP6_E3M2_M 2 -`define T27_FMT_FP6_E3M2_BIAS 3 -`define T27_FMT_FP6_E2M3_BITS 6 -`define T27_FMT_FP6_E2M3_S 1 -`define T27_FMT_FP6_E2M3_E 2 -`define T27_FMT_FP6_E2M3_M 3 -`define T27_FMT_FP6_E2M3_BIAS 1 -`define T27_FMT_FP4_E2M1_BITS 4 -`define T27_FMT_FP4_E2M1_S 1 -`define T27_FMT_FP4_E2M1_E 2 -`define T27_FMT_FP4_E2M1_M 1 -`define T27_FMT_FP4_E2M1_BIAS 1 -`define T27_FMT_MXFP8_BITS 8 -`define T27_FMT_MXFP8_S 1 -`define T27_FMT_MXFP8_E 4 -`define T27_FMT_MXFP8_M 3 -`define T27_FMT_MXFP8_BIAS 7 -`define T27_FMT_MXFP6_BITS 6 -`define T27_FMT_MXFP6_S 1 -`define T27_FMT_MXFP6_E 3 -`define T27_FMT_MXFP6_M 2 -`define T27_FMT_MXFP6_BIAS 3 -`define T27_FMT_MXFP4_BITS 4 -`define T27_FMT_MXFP4_S 1 -`define T27_FMT_MXFP4_E 2 -`define T27_FMT_MXFP4_M 1 -`define T27_FMT_MXFP4_BIAS 1 -`define T27_FMT_NF4_BITS 4 -`define T27_FMT_NF4_S 0 -`define T27_FMT_NF4_E 0 -`define T27_FMT_NF4_M 4 -`define T27_FMT_NF4_BIAS 0 -`define T27_FMT_AFP_BITS 16 -`define T27_FMT_AFP_S 1 -`define T27_FMT_AFP_E 8 -`define T27_FMT_AFP_M 7 -`define T27_FMT_AFP_BIAS 127 -`define T27_FMT_POSIT8_BITS 8 -`define T27_FMT_POSIT8_S 1 -`define T27_FMT_POSIT8_E 2 -`define T27_FMT_POSIT8_M 0 -`define T27_FMT_POSIT8_BIAS 0 -`define T27_FMT_POSIT16_BITS 16 -`define T27_FMT_POSIT16_S 1 -`define T27_FMT_POSIT16_E 2 -`define T27_FMT_POSIT16_M 0 -`define T27_FMT_POSIT16_BIAS 0 -`define T27_FMT_POSIT32_BITS 32 -`define T27_FMT_POSIT32_S 1 -`define T27_FMT_POSIT32_E 2 -`define T27_FMT_POSIT32_M 0 -`define T27_FMT_POSIT32_BIAS 0 -`define T27_FMT_POSIT64_BITS 64 -`define T27_FMT_POSIT64_S 1 -`define T27_FMT_POSIT64_E 2 -`define T27_FMT_POSIT64_M 0 -`define T27_FMT_POSIT64_BIAS 0 -`define T27_FMT_TAKUM8_BITS 8 -`define T27_FMT_TAKUM8_S 1 -`define T27_FMT_TAKUM8_E 0 -`define T27_FMT_TAKUM8_M 0 -`define T27_FMT_TAKUM8_BIAS 0 -`define T27_FMT_TAKUM16_BITS 16 -`define T27_FMT_TAKUM16_S 1 -`define T27_FMT_TAKUM16_E 0 -`define T27_FMT_TAKUM16_M 0 -`define T27_FMT_TAKUM16_BIAS 0 -`define T27_FMT_TAKUM32_BITS 32 -`define T27_FMT_TAKUM32_S 1 -`define T27_FMT_TAKUM32_E 0 -`define T27_FMT_TAKUM32_M 0 -`define T27_FMT_TAKUM32_BIAS 0 -`define T27_FMT_TAKUM64_BITS 64 -`define T27_FMT_TAKUM64_S 1 -`define T27_FMT_TAKUM64_E 0 -`define T27_FMT_TAKUM64_M 0 -`define T27_FMT_TAKUM64_BIAS 0 -`define T27_FMT_LNS8_BITS 8 -`define T27_FMT_LNS8_S 1 -`define T27_FMT_LNS8_E 7 -`define T27_FMT_LNS8_M 0 -`define T27_FMT_LNS8_BIAS 0 -`define T27_FMT_LNS16_BITS 16 -`define T27_FMT_LNS16_S 1 -`define T27_FMT_LNS16_E 15 -`define T27_FMT_LNS16_M 0 -`define T27_FMT_LNS16_BIAS 0 -`define T27_FMT_LNS32_BITS 32 -`define T27_FMT_LNS32_S 1 -`define T27_FMT_LNS32_E 31 -`define T27_FMT_LNS32_M 0 -`define T27_FMT_LNS32_BIAS 0 -`define T27_FMT_LNS64_BITS 64 -`define T27_FMT_LNS64_S 1 -`define T27_FMT_LNS64_E 63 -`define T27_FMT_LNS64_M 0 -`define T27_FMT_LNS64_BIAS 0 -`define T27_FMT_GFTERNARY_BITS 2 -`define T27_FMT_GFTERNARY_S 1 -`define T27_FMT_GFTERNARY_E 0 -`define T27_FMT_GFTERNARY_M 2 -`define T27_FMT_GFTERNARY_BIAS 0 -`define T27_FMT_GF4_BITS 4 -`define T27_FMT_GF4_S 1 -`define T27_FMT_GF4_E 1 -`define T27_FMT_GF4_M 2 -`define T27_FMT_GF4_BIAS 0 -`define T27_FMT_GF8_BITS 8 -`define T27_FMT_GF8_S 1 -`define T27_FMT_GF8_E 3 -`define T27_FMT_GF8_M 4 -`define T27_FMT_GF8_BIAS 3 -`define T27_FMT_GF12_BITS 12 -`define T27_FMT_GF12_S 1 -`define T27_FMT_GF12_E 4 -`define T27_FMT_GF12_M 7 -`define T27_FMT_GF12_BIAS 7 -`define T27_FMT_GF16_BITS 16 -`define T27_FMT_GF16_S 1 -`define T27_FMT_GF16_E 6 -`define T27_FMT_GF16_M 9 -`define T27_FMT_GF16_BIAS 31 -`define T27_FMT_GF20_BITS 20 -`define T27_FMT_GF20_S 1 -`define T27_FMT_GF20_E 7 -`define T27_FMT_GF20_M 12 -`define T27_FMT_GF20_BIAS 63 -`define T27_FMT_GF24_BITS 24 -`define T27_FMT_GF24_S 1 -`define T27_FMT_GF24_E 9 -`define T27_FMT_GF24_M 14 -`define T27_FMT_GF24_BIAS 255 -`define T27_FMT_GF32_BITS 32 -`define T27_FMT_GF32_S 1 -`define T27_FMT_GF32_E 12 -`define T27_FMT_GF32_M 19 -`define T27_FMT_GF32_BIAS 2047 -`define T27_FMT_GF64_BITS 64 -`define T27_FMT_GF64_S 1 -`define T27_FMT_GF64_E 24 -`define T27_FMT_GF64_M 39 -`define T27_FMT_GF64_BIAS 8388607 -`define T27_FMT_GF6_BITS 6 -`define T27_FMT_GF6_S 1 -`define T27_FMT_GF6_E 2 -`define T27_FMT_GF6_M 3 -`define T27_FMT_GF6_BIAS 1 -`define T27_FMT_GF128_BITS 128 -`define T27_FMT_GF128_S 1 -`define T27_FMT_GF128_E 48 -`define T27_FMT_GF128_M 79 -`define T27_FMT_GF128_BIAS 0 -`define T27_FMT_GF256_BITS 256 -`define T27_FMT_GF256_S 1 -`define T27_FMT_GF256_E 97 -`define T27_FMT_GF256_M 158 -`define T27_FMT_GF256_BIAS 0 -`define T27_FMT_GF8_BFP_BITS 8 -`define T27_FMT_GF8_BFP_S 1 -`define T27_FMT_GF8_BFP_E 3 -`define T27_FMT_GF8_BFP_M 4 -`define T27_FMT_GF8_BFP_BIAS 3 -`define T27_FMT_GF_LNS_HYBRID_BITS 16 -`define T27_FMT_GF_LNS_HYBRID_S 1 -`define T27_FMT_GF_LNS_HYBRID_E 6 -`define T27_FMT_GF_LNS_HYBRID_M 9 -`define T27_FMT_GF_LNS_HYBRID_BIAS 31 -`define T27_FMT_MXGF6_BITS 6 -`define T27_FMT_MXGF6_S 1 -`define T27_FMT_MXGF6_E 2 -`define T27_FMT_MXGF6_M 3 -`define T27_FMT_MXGF6_BIAS 1 -`define T27_FMT_MXGF4_BITS 4 -`define T27_FMT_MXGF4_S 1 -`define T27_FMT_MXGF4_E 1 -`define T27_FMT_MXGF4_M 2 -`define T27_FMT_MXGF4_BIAS 0 -`define T27_FMT_INT4_BITS 4 -`define T27_FMT_INT4_S 1 -`define T27_FMT_INT4_E 0 -`define T27_FMT_INT4_M 3 -`define T27_FMT_INT4_BIAS 0 -`define T27_FMT_INT8_BITS 8 -`define T27_FMT_INT8_S 1 -`define T27_FMT_INT8_E 0 -`define T27_FMT_INT8_M 7 -`define T27_FMT_INT8_BIAS 0 -`define T27_FMT_INT16_BITS 16 -`define T27_FMT_INT16_S 1 -`define T27_FMT_INT16_E 0 -`define T27_FMT_INT16_M 15 -`define T27_FMT_INT16_BIAS 0 -`define T27_FMT_INT32_BITS 32 -`define T27_FMT_INT32_S 1 -`define T27_FMT_INT32_E 0 -`define T27_FMT_INT32_M 31 -`define T27_FMT_INT32_BIAS 0 -`define T27_FMT_INT64_BITS 64 -`define T27_FMT_INT64_S 1 -`define T27_FMT_INT64_E 0 -`define T27_FMT_INT64_M 63 -`define T27_FMT_INT64_BIAS 0 -`define T27_FMT_INT128_BITS 128 -`define T27_FMT_INT128_S 1 -`define T27_FMT_INT128_E 0 -`define T27_FMT_INT128_M 127 -`define T27_FMT_INT128_BIAS 0 -`define T27_FMT_Q_FORMAT_BITS 0 -`define T27_FMT_Q_FORMAT_S 1 -`define T27_FMT_Q_FORMAT_E 0 -`define T27_FMT_Q_FORMAT_M 0 -`define T27_FMT_Q_FORMAT_BIAS 0 -`define T27_FMT_BCD_BITS 0 -`define T27_FMT_BCD_S 0 -`define T27_FMT_BCD_E 0 -`define T27_FMT_BCD_M 0 -`define T27_FMT_BCD_BIAS 0 -`define T27_FMT_IBM_HFP32_BITS 32 -`define T27_FMT_IBM_HFP32_S 1 -`define T27_FMT_IBM_HFP32_E 7 -`define T27_FMT_IBM_HFP32_M 24 -`define T27_FMT_IBM_HFP32_BIAS 64 -`define T27_FMT_IBM_HFP64_BITS 64 -`define T27_FMT_IBM_HFP64_S 1 -`define T27_FMT_IBM_HFP64_E 7 -`define T27_FMT_IBM_HFP64_M 56 -`define T27_FMT_IBM_HFP64_BIAS 64 -`define T27_FMT_IBM_HFP128_BITS 128 -`define T27_FMT_IBM_HFP128_S 1 -`define T27_FMT_IBM_HFP128_E 7 -`define T27_FMT_IBM_HFP128_M 120 -`define T27_FMT_IBM_HFP128_BIAS 64 -`define T27_FMT_MS_MBF32_BITS 32 -`define T27_FMT_MS_MBF32_S 1 -`define T27_FMT_MS_MBF32_E 8 -`define T27_FMT_MS_MBF32_M 23 -`define T27_FMT_MS_MBF32_BIAS 129 -`define T27_FMT_MS_MBF64_BITS 64 -`define T27_FMT_MS_MBF64_S 1 -`define T27_FMT_MS_MBF64_E 8 -`define T27_FMT_MS_MBF64_M 55 -`define T27_FMT_MS_MBF64_BIAS 129 -`define T27_FMT_VAX_F_BITS 32 -`define T27_FMT_VAX_F_S 1 -`define T27_FMT_VAX_F_E 8 -`define T27_FMT_VAX_F_M 23 -`define T27_FMT_VAX_F_BIAS 128 -`define T27_FMT_VAX_D_BITS 64 -`define T27_FMT_VAX_D_S 1 -`define T27_FMT_VAX_D_E 8 -`define T27_FMT_VAX_D_M 55 -`define T27_FMT_VAX_D_BIAS 128 -`define T27_FMT_VAX_G_BITS 64 -`define T27_FMT_VAX_G_S 1 -`define T27_FMT_VAX_G_E 11 -`define T27_FMT_VAX_G_M 52 -`define T27_FMT_VAX_G_BIAS 1024 -`define T27_FMT_VAX_H_BITS 128 -`define T27_FMT_VAX_H_S 1 -`define T27_FMT_VAX_H_E 15 -`define T27_FMT_VAX_H_M 112 -`define T27_FMT_VAX_H_BIAS 16384 -`define T27_FMT_CRAY_FLOAT_BITS 64 -`define T27_FMT_CRAY_FLOAT_S 1 -`define T27_FMT_CRAY_FLOAT_E 15 -`define T27_FMT_CRAY_FLOAT_M 48 -`define T27_FMT_CRAY_FLOAT_BIAS 16384 -`define T27_FMT_MINIFLOAT_BITS 0 -`define T27_FMT_MINIFLOAT_S 1 -`define T27_FMT_MINIFLOAT_E 0 -`define T27_FMT_MINIFLOAT_M 0 -`define T27_FMT_MINIFLOAT_BIAS 0 -`define T27_FMT_UNUM_I_BITS 0 -`define T27_FMT_UNUM_I_S 1 -`define T27_FMT_UNUM_I_E 0 -`define T27_FMT_UNUM_I_M 0 -`define T27_FMT_UNUM_I_BIAS 0 -`define T27_FMT_UNUM_II_BITS 0 -`define T27_FMT_UNUM_II_S 0 -`define T27_FMT_UNUM_II_E 0 -`define T27_FMT_UNUM_II_M 0 -`define T27_FMT_UNUM_II_BIAS 0 -`define T27_FMT_TAPERED_FP_BITS 0 -`define T27_FMT_TAPERED_FP_S 1 -`define T27_FMT_TAPERED_FP_E 0 -`define T27_FMT_TAPERED_FP_M 0 -`define T27_FMT_TAPERED_FP_BIAS 0 -`define T27_FMT_BLOCK_FP_BITS 0 -`define T27_FMT_BLOCK_FP_S 0 -`define T27_FMT_BLOCK_FP_E 0 -`define T27_FMT_BLOCK_FP_M 0 -`define T27_FMT_BLOCK_FP_BIAS 0 -`define T27_FMT_SHARED_EXP_BITS 0 -`define T27_FMT_SHARED_EXP_S 0 -`define T27_FMT_SHARED_EXP_E 0 -`define T27_FMT_SHARED_EXP_M 0 -`define T27_FMT_SHARED_EXP_BIAS 0 -`define T27_FMT_PER_CHANNEL_SCALE_BITS 8 -`define T27_FMT_PER_CHANNEL_SCALE_S 1 -`define T27_FMT_PER_CHANNEL_SCALE_E 0 -`define T27_FMT_PER_CHANNEL_SCALE_M 7 -`define T27_FMT_PER_CHANNEL_SCALE_BIAS 0 -`define T27_FMT_STOCHASTIC_ROUNDING_BITS 0 -`define T27_FMT_STOCHASTIC_ROUNDING_S 0 -`define T27_FMT_STOCHASTIC_ROUNDING_E 0 -`define T27_FMT_STOCHASTIC_ROUNDING_M 0 -`define T27_FMT_STOCHASTIC_ROUNDING_BIAS 0 - -`endif // T27_FORMATS_CATALOG_VH diff --git a/gen/numeric/formats_catalog.zig b/gen/numeric/formats_catalog.zig deleted file mode 100644 index 039c4b2f6..000000000 --- a/gen/numeric/formats_catalog.zig +++ /dev/null @@ -1,100 +0,0 @@ -// Generated from formats_catalog.t27. Do not edit by hand. -// SPDX-License-Identifier: Apache-2.0 - -pub const Format = struct { - id: []const u8, - name: []const u8, - bits: u32, - s_bits: u32, - e_bits: u32, - m_bits: u32, - bias: i64, - phi_distance: f64, // -1.0 == undefined - storage: []const u8, - cluster: []const u8, - status: []const u8, - standard: []const u8, - use_case: []const u8, - gf_relation: []const u8, - source: []const u8, -}; - -pub const formats = [_]Format{ - .{ .id = "binary16", .name = "binary16 (fp16, half)", .bits = 16, .s_bits = 1, .e_bits = 5, .m_bits = 10, .bias = 15, .phi_distance = 0.118, .storage = "u16", .cluster = "Ieee754Binary", .status = "Verified", .standard = "IEEE 754-2008", .use_case = "GPU activations, inference", .gf_relation = "competitor", .source = "IEEE 754-2008" }, - .{ .id = "binary32", .name = "binary32 (fp32, single)", .bits = 32, .s_bits = 1, .e_bits = 8, .m_bits = 23, .bias = 127, .phi_distance = 0.27, .storage = "u32", .cluster = "Ieee754Binary", .status = "Verified", .standard = "IEEE 754-1985", .use_case = "industry default", .gf_relation = "competitor", .source = "IEEE 754-1985" }, - .{ .id = "binary64", .name = "binary64 (fp64, double)", .bits = 64, .s_bits = 1, .e_bits = 11, .m_bits = 52, .bias = 1023, .phi_distance = 0.406, .storage = "u64", .cluster = "Ieee754Binary", .status = "Verified", .standard = "IEEE 754-1985", .use_case = "scientific computing", .gf_relation = "competitor", .source = "IEEE 754-1985" }, - .{ .id = "binary128", .name = "binary128 (fp128, quad)", .bits = 128, .s_bits = 1, .e_bits = 15, .m_bits = 112, .bias = 16383, .phi_distance = 0.484, .storage = "u128", .cluster = "Ieee754Binary", .status = "Verified", .standard = "IEEE 754-2008", .use_case = "high-precision simulations", .gf_relation = "competitor", .source = "IEEE 754-2008" }, - .{ .id = "binary256", .name = "binary256 (octuple)", .bits = 256, .s_bits = 1, .e_bits = 19, .m_bits = 236, .bias = 262143, .phi_distance = 0.538, .storage = "u256_software", .cluster = "Ieee754Binary", .status = "Verified", .standard = "IEEE 754-2008", .use_case = "astronomy, cryptography", .gf_relation = "competitor", .source = "IEEE 754-2008" }, - .{ .id = "decimal32", .name = "decimal32", .bits = 32, .s_bits = 1, .e_bits = 11, .m_bits = 20, .bias = 101, .phi_distance = -1.0, .storage = "u32", .cluster = "Ieee754Decimal", .status = "Verified", .standard = "IEEE 754-2008 (DPD/BID)", .use_case = "banking, GAAP", .gf_relation = "orthogonal", .source = "IEEE 754-2008" }, - .{ .id = "decimal64", .name = "decimal64", .bits = 64, .s_bits = 1, .e_bits = 13, .m_bits = 50, .bias = 398, .phi_distance = -1.0, .storage = "u64", .cluster = "Ieee754Decimal", .status = "Verified", .standard = "IEEE 754-2008", .use_case = "financial databases", .gf_relation = "orthogonal", .source = "IEEE 754-2008" }, - .{ .id = "decimal128", .name = "decimal128", .bits = 128, .s_bits = 1, .e_bits = 17, .m_bits = 110, .bias = 6176, .phi_distance = -1.0, .storage = "u128", .cluster = "Ieee754Decimal", .status = "Verified", .standard = "IEEE 754-2008", .use_case = "audit ledgers", .gf_relation = "orthogonal", .source = "IEEE 754-2008" }, - .{ .id = "x87_fp80", .name = "x87 FP80", .bits = 80, .s_bits = 1, .e_bits = 15, .m_bits = 64, .bias = 16383, .phi_distance = -1.0, .storage = "u80_padded", .cluster = "ExtendedFloat", .status = "Historical", .standard = "Intel x87 (explicit integer bit)", .use_case = "legacy long double on x86", .gf_relation = "orthogonal", .source = "Intel SDM" }, - .{ .id = "double_double", .name = "double-double", .bits = 128, .s_bits = 2, .e_bits = 22, .m_bits = 104, .bias = 0, .phi_distance = -1.0, .storage = "two_u64", .cluster = "ExtendedFloat", .status = "Verified", .standard = "Bailey/Hida (software)", .use_case = "software extended precision", .gf_relation = "orthogonal", .source = "Bailey-Hida 2001" }, - .{ .id = "quad_double", .name = "quad-double", .bits = 256, .s_bits = 4, .e_bits = 44, .m_bits = 208, .bias = 0, .phi_distance = -1.0, .storage = "four_u64", .cluster = "ExtendedFloat", .status = "Verified", .standard = "Bailey/Hida (software)", .use_case = "astrophysics, quad-precision sims", .gf_relation = "orthogonal", .source = "Bailey-Hida 2001" }, - .{ .id = "bfloat16", .name = "bfloat16 (BF16)", .bits = 16, .s_bits = 1, .e_bits = 8, .m_bits = 7, .bias = 127, .phi_distance = 0.525, .storage = "u16", .cluster = "MlLowPrecision", .status = "Verified", .standard = "Google Brain", .use_case = "training (range > precision)", .gf_relation = "competitor", .source = "Wang-Kanwar 2019" }, - .{ .id = "tf32", .name = "TensorFloat-32 (TF32)", .bits = 19, .s_bits = 1, .e_bits = 8, .m_bits = 10, .bias = 127, .phi_distance = 0.27, .storage = "u32_padded", .cluster = "MlLowPrecision", .status = "Verified", .standard = "NVIDIA Ampere", .use_case = "A100/H100 mixed precision", .gf_relation = "competitor", .source = "NVIDIA Ampere whitepaper" }, - .{ .id = "fp8_e4m3", .name = "FP8 E4M3", .bits = 8, .s_bits = 1, .e_bits = 4, .m_bits = 3, .bias = 7, .phi_distance = 0.715, .storage = "u8", .cluster = "MlLowPrecision", .status = "Verified", .standard = "OCP / NVIDIA / Arm / Intel", .use_case = "inference, gradient ranges", .gf_relation = "competitor", .source = "Micikevicius 2022 (arXiv:2209.05433)" }, - .{ .id = "fp8_e5m2", .name = "FP8 E5M2", .bits = 8, .s_bits = 1, .e_bits = 5, .m_bits = 2, .bias = 15, .phi_distance = 1.882, .storage = "u8", .cluster = "MlLowPrecision", .status = "Verified", .standard = "OCP / NVIDIA", .use_case = "activations, wide range", .gf_relation = "competitor", .source = "Micikevicius 2022" }, - .{ .id = "fp6_e3m2", .name = "FP6 E3M2", .bits = 6, .s_bits = 1, .e_bits = 3, .m_bits = 2, .bias = 3, .phi_distance = 0.882, .storage = "u8_packed", .cluster = "MlLowPrecision", .status = "Verified", .standard = "OCP MX", .use_case = "aggressive quant inference", .gf_relation = "competitor", .source = "OCP MX v1.0 (2023)" }, - .{ .id = "fp6_e2m3", .name = "FP6 E2M3", .bits = 6, .s_bits = 1, .e_bits = 2, .m_bits = 3, .bias = 1, .phi_distance = 0.049, .storage = "u8_packed", .cluster = "MlLowPrecision", .status = "Verified", .standard = "OCP MX", .use_case = "mantissa-heavy quant", .gf_relation = "ally", .source = "OCP MX v1.0 (2023)" }, - .{ .id = "fp4_e2m1", .name = "FP4 E2M1", .bits = 4, .s_bits = 1, .e_bits = 2, .m_bits = 1, .bias = 1, .phi_distance = 1.382, .storage = "u8_packed", .cluster = "MlLowPrecision", .status = "Verified", .standard = "OCP MX", .use_case = "extreme quant inference", .gf_relation = "competitor", .source = "OCP MX v1.0 (2023)" }, - .{ .id = "mxfp8", .name = "MXFP8", .bits = 8, .s_bits = 1, .e_bits = 4, .m_bits = 3, .bias = 7, .phi_distance = 0.715, .storage = "u8_plus_shared_e8m0", .cluster = "Microscaling", .status = "Verified", .standard = "OCP MX v1.0", .use_case = "LLM inference", .gf_relation = "ally", .source = "Rouhani 2023 (arXiv:2310.10537)" }, - .{ .id = "mxfp6", .name = "MXFP6", .bits = 6, .s_bits = 1, .e_bits = 3, .m_bits = 2, .bias = 3, .phi_distance = 0.882, .storage = "u8_packed_plus_e8m0", .cluster = "Microscaling", .status = "Verified", .standard = "OCP MX v1.0", .use_case = "aggressive inference", .gf_relation = "ally", .source = "Rouhani 2023" }, - .{ .id = "mxfp4", .name = "MXFP4", .bits = 4, .s_bits = 1, .e_bits = 2, .m_bits = 1, .bias = 1, .phi_distance = 1.382, .storage = "u8_packed_plus_e8m0", .cluster = "Microscaling", .status = "Verified", .standard = "OCP MX v1.0", .use_case = "extreme quant", .gf_relation = "ally", .source = "Rouhani 2023" }, - .{ .id = "nf4", .name = "NF4 (NormalFloat 4-bit)", .bits = 4, .s_bits = 0, .e_bits = 0, .m_bits = 4, .bias = 0, .phi_distance = -1.0, .storage = "u8_packed", .cluster = "QuantTuned", .status = "Verified", .standard = "Dettmers 2023 (QLoRA)", .use_case = "LLM weight quantization (quantile-based on N(0,1))", .gf_relation = "orthogonal", .source = "Dettmers 2023 (arXiv:2305.14314)" }, - .{ .id = "afp", .name = "AFP (Adaptive Floating-Point)", .bits = 16, .s_bits = 1, .e_bits = 8, .m_bits = 7, .bias = 127, .phi_distance = -1.0, .storage = "u16_plus_tensor_shift", .cluster = "QuantTuned", .status = "Verified", .standard = "Tambe 2020", .use_case = "efficient training", .gf_relation = "orthogonal", .source = "Tambe 2020 (DAC)" }, - .{ .id = "posit8", .name = "Posit8", .bits = 8, .s_bits = 1, .e_bits = 2, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u8", .cluster = "PositUnumIII", .status = "Verified", .standard = "Posit Standard 2022 (es=2)", .use_case = "inference", .gf_relation = "ally", .source = "Posit Standard 2022 (posithub.org)" }, - .{ .id = "posit16", .name = "Posit16", .bits = 16, .s_bits = 1, .e_bits = 2, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u16", .cluster = "PositUnumIII", .status = "Verified", .standard = "Posit Standard 2022 (es=2)", .use_case = "mixed-precision training", .gf_relation = "ally", .source = "Posit Standard 2022" }, - .{ .id = "posit32", .name = "Posit32", .bits = 32, .s_bits = 1, .e_bits = 2, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u32", .cluster = "PositUnumIII", .status = "Verified", .standard = "Posit Standard 2022 (es=2)", .use_case = "f32 replacement", .gf_relation = "ally", .source = "Posit Standard 2022" }, - .{ .id = "posit64", .name = "Posit64", .bits = 64, .s_bits = 1, .e_bits = 2, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u64", .cluster = "PositUnumIII", .status = "Verified", .standard = "Posit Standard 2022 (es=2)", .use_case = "f64 replacement", .gf_relation = "ally", .source = "Posit Standard 2022" }, - .{ .id = "takum8", .name = "takum8", .bits = 8, .s_bits = 1, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u8", .cluster = "PositUnumIII", .status = "Verified", .standard = "Hunhold 2024 (tapered-precision)", .use_case = "IEEE-754 backward-compatible tapered", .gf_relation = "ally", .source = "Hunhold 2024 (arXiv:2412.20273)" }, - .{ .id = "takum16", .name = "takum16", .bits = 16, .s_bits = 1, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u16", .cluster = "PositUnumIII", .status = "Verified", .standard = "Hunhold 2024", .use_case = "single-rule ladder counterexample", .gf_relation = "ally", .source = "Hunhold 2024 (arXiv:2412.20273)" }, - .{ .id = "takum32", .name = "takum32", .bits = 32, .s_bits = 1, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u32", .cluster = "PositUnumIII", .status = "Verified", .standard = "Hunhold 2024", .use_case = "tapered fp32-class", .gf_relation = "ally", .source = "Hunhold 2024" }, - .{ .id = "takum64", .name = "takum64", .bits = 64, .s_bits = 1, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u64", .cluster = "PositUnumIII", .status = "Verified", .standard = "Hunhold 2024", .use_case = "tapered fp64-class", .gf_relation = "ally", .source = "Hunhold 2024" }, - .{ .id = "lns8", .name = "LNS-8", .bits = 8, .s_bits = 1, .e_bits = 7, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u8", .cluster = "Lns", .status = "Verified", .standard = "Arnold 1990; LNS-Madam (2021)", .use_case = "DSP, signal processing", .gf_relation = "orthogonal", .source = "Alam 2021 (arXiv:2106.13914)" }, - .{ .id = "lns16", .name = "LNS-16", .bits = 16, .s_bits = 1, .e_bits = 15, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u16", .cluster = "Lns", .status = "Verified", .standard = "LNS-Madam (2021)", .use_case = "log-domain training (mul -> add)", .gf_relation = "orthogonal", .source = "Alam 2021" }, - .{ .id = "lns32", .name = "LNS-32", .bits = 32, .s_bits = 1, .e_bits = 31, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u32", .cluster = "Lns", .status = "Verified", .standard = "LNS-Madam (2021)", .use_case = "log-domain DSP", .gf_relation = "orthogonal", .source = "Alam 2021" }, - .{ .id = "lns64", .name = "LNS-64", .bits = 64, .s_bits = 1, .e_bits = 63, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u64", .cluster = "Lns", .status = "Verified", .standard = "LNS-Madam (2021)", .use_case = "scientific log-domain", .gf_relation = "orthogonal", .source = "Alam 2021" }, - .{ .id = "gfternary", .name = "GFTernary", .bits = 2, .s_bits = 1, .e_bits = 0, .m_bits = 2, .bias = 0, .phi_distance = 0.0, .storage = "u2", .cluster = "GoldenFloat", .status = "Verified", .standard = "this work; {-phi, 0, +phi}", .use_case = "bulk layers (hybrid)", .gf_relation = "self", .source = "BENCH-007" }, - .{ .id = "gf4", .name = "GF4", .bits = 4, .s_bits = 1, .e_bits = 1, .m_bits = 2, .bias = 0, .phi_distance = 0.118, .storage = "u8", .cluster = "GoldenFloat", .status = "Experimental", .standard = "this work; F0 minimal", .use_case = "proof-of-concept", .gf_relation = "self", .source = "specs/numeric/gf4.t27" }, - .{ .id = "gf8", .name = "GF8", .bits = 8, .s_bits = 1, .e_bits = 3, .m_bits = 4, .bias = 3, .phi_distance = 0.132, .storage = "u8", .cluster = "GoldenFloat", .status = "Verified", .standard = "this work; L1 Lucas", .use_case = "edge / sensors", .gf_relation = "self", .source = "BENCH-007 (specs/numeric/gf8.t27)" }, - .{ .id = "gf12", .name = "GF12", .bits = 12, .s_bits = 1, .e_bits = 4, .m_bits = 7, .bias = 7, .phi_distance = 0.047, .storage = "u16", .cluster = "GoldenFloat", .status = "Verified", .standard = "this work; L0/F3", .use_case = "mid-range / audio", .gf_relation = "self", .source = "BENCH-007 (specs/numeric/gf12.t27)" }, - .{ .id = "gf16", .name = "GF16", .bits = 16, .s_bits = 1, .e_bits = 6, .m_bits = 9, .bias = 31, .phi_distance = 0.049, .storage = "u16", .cluster = "GoldenFloat", .status = "Verified", .standard = "this work; PHI_BIAS=60; FPGA 35/35 at 323 MHz Artix-7", .use_case = "training and inference (production)", .gf_relation = "self", .source = "specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)" }, - .{ .id = "gf20", .name = "GF20", .bits = 20, .s_bits = 1, .e_bits = 7, .m_bits = 12, .bias = 63, .phi_distance = 0.035, .storage = "u32", .cluster = "GoldenFloat", .status = "Experimental", .standard = "this work; 17-squared empirical PHI_BIAS=289", .use_case = "high-precision edge", .gf_relation = "self", .source = "specs/numeric/gf20.t27 (spec only)" }, - .{ .id = "gf24", .name = "GF24", .bits = 24, .s_bits = 1, .e_bits = 9, .m_bits = 14, .bias = 255, .phi_distance = 0.025, .storage = "u32", .cluster = "GoldenFloat", .status = "Experimental", .standard = "this work; L15 PHI_BIAS=1364", .use_case = "server inference", .gf_relation = "self", .source = "specs/numeric/gf24.t27 (spec only)" }, - .{ .id = "gf32", .name = "GF32", .bits = 32, .s_bits = 1, .e_bits = 12, .m_bits = 19, .bias = 2047, .phi_distance = 0.014, .storage = "u32", .cluster = "GoldenFloat", .status = "Verified", .standard = "this work; F0 resolved", .use_case = "fp32 drop-in", .gf_relation = "self", .source = "BENCH-012 (specs/numeric/gf32.t27)" }, - .{ .id = "gf64", .name = "GF64", .bits = 64, .s_bits = 1, .e_bits = 24, .m_bits = 39, .bias = 8388607, .phi_distance = 0.003, .storage = "u64", .cluster = "GoldenFloat", .status = "Verified", .standard = "this work; EXP_MAX - BIAS", .use_case = "scientific / double", .gf_relation = "self", .source = "BENCH-007b (specs/numeric/gf64.t27)" }, - .{ .id = "gf6", .name = "GF6 (predicted)", .bits = 6, .s_bits = 1, .e_bits = 2, .m_bits = 3, .bias = 1, .phi_distance = 0.05, .storage = "u8_packed", .cluster = "GoldenFloat", .status = "Experimental", .standard = "this work; e=round(5/phi^2)=2, fills FP6 gap", .use_case = "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint", .gf_relation = "experimental", .source = "section12.5" }, - .{ .id = "gf128", .name = "GF128 (predicted)", .bits = 128, .s_bits = 1, .e_bits = 48, .m_bits = 79, .bias = 0, .phi_distance = 0.008, .storage = "u128", .cluster = "GoldenFloat", .status = "Experimental", .standard = "this work; e=round(127/phi^2)=48 (Open: bias TBD)", .use_case = "OPEN R&D: phi-aligned binary128 alternative", .gf_relation = "experimental", .source = "section12.5" }, - .{ .id = "gf256", .name = "GF256 (predicted)", .bits = 256, .s_bits = 1, .e_bits = 97, .m_bits = 158, .bias = 0, .phi_distance = 0.005, .storage = "u256_software", .cluster = "GoldenFloat", .status = "Experimental", .standard = "this work; e=round(255/phi^2)=97 (Open: bias ~2^71 unconfirmed)", .use_case = "OPEN R&D: phi-aligned binary256 alternative", .gf_relation = "experimental", .source = "section12.5; bias Open per skill" }, - .{ .id = "gf8_bfp", .name = "GF8-BFP (block FP atop GF8)", .bits = 8, .s_bits = 1, .e_bits = 3, .m_bits = 4, .bias = 3, .phi_distance = 0.132, .storage = "u8_plus_shared_exp", .cluster = "GoldenFloat", .status = "Experimental", .standard = "this work; per-tile shared exponent", .use_case = "OPEN R&D: LLM-quantization-friendly GF8", .gf_relation = "experimental", .source = "section12.5" }, - .{ .id = "gf_lns_hybrid", .name = "GF + LNS hybrid (dual-space)", .bits = 16, .s_bits = 1, .e_bits = 6, .m_bits = 9, .bias = 31, .phi_distance = 0.049, .storage = "u16_plus_lns_path", .cluster = "GoldenFloat", .status = "Experimental", .standard = "this work; mul in log-space, accumulate Lucas-closed", .use_case = "OPEN R&D: dual-space arithmetic", .gf_relation = "experimental", .source = "section12.5" }, - .{ .id = "mxgf6", .name = "MXGF6 (microscaling GF6)", .bits = 6, .s_bits = 1, .e_bits = 2, .m_bits = 3, .bias = 1, .phi_distance = 0.05, .storage = "u8_packed_plus_e8m0", .cluster = "GoldenFloat", .status = "Experimental", .standard = "this work; OCP MX block + GF6", .use_case = "OPEN R&D: phi-aligned MX-6 candidate", .gf_relation = "experimental", .source = "section12.5" }, - .{ .id = "mxgf4", .name = "MXGF4 (microscaling GF4)", .bits = 4, .s_bits = 1, .e_bits = 1, .m_bits = 2, .bias = 0, .phi_distance = 0.118, .storage = "u8_packed_plus_e8m0", .cluster = "GoldenFloat", .status = "Experimental", .standard = "this work; OCP MX block + GF4", .use_case = "OPEN R&D: phi-aligned MX-4 candidate", .gf_relation = "experimental", .source = "section12.5" }, - .{ .id = "int4", .name = "INT4 / UINT4", .bits = 4, .s_bits = 1, .e_bits = 0, .m_bits = 3, .bias = 0, .phi_distance = -1.0, .storage = "u8_packed", .cluster = "IntegerFixed", .status = "Verified", .standard = "two complement", .use_case = "aggressive quantization", .gf_relation = "competitor", .source = "ISO/IEC 9899" }, - .{ .id = "int8", .name = "INT8 / UINT8", .bits = 8, .s_bits = 1, .e_bits = 0, .m_bits = 7, .bias = 0, .phi_distance = -1.0, .storage = "u8", .cluster = "IntegerFixed", .status = "Verified", .standard = "two complement", .use_case = "INT8 inference, per-channel scale", .gf_relation = "competitor", .source = "ISO/IEC 9899" }, - .{ .id = "int16", .name = "INT16 / UINT16", .bits = 16, .s_bits = 1, .e_bits = 0, .m_bits = 15, .bias = 0, .phi_distance = -1.0, .storage = "u16", .cluster = "IntegerFixed", .status = "Verified", .standard = "two complement", .use_case = "DSP, embedded ML", .gf_relation = "competitor", .source = "ISO/IEC 9899" }, - .{ .id = "int32", .name = "INT32 / UINT32", .bits = 32, .s_bits = 1, .e_bits = 0, .m_bits = 31, .bias = 0, .phi_distance = -1.0, .storage = "u32", .cluster = "IntegerFixed", .status = "Verified", .standard = "two complement", .use_case = "general CPU integer", .gf_relation = "competitor", .source = "ISO/IEC 9899" }, - .{ .id = "int64", .name = "INT64 / UINT64", .bits = 64, .s_bits = 1, .e_bits = 0, .m_bits = 63, .bias = 0, .phi_distance = -1.0, .storage = "u64", .cluster = "IntegerFixed", .status = "Verified", .standard = "two complement", .use_case = "databases, timestamps", .gf_relation = "competitor", .source = "ISO/IEC 9899" }, - .{ .id = "int128", .name = "INT128 / UINT128", .bits = 128, .s_bits = 1, .e_bits = 0, .m_bits = 127, .bias = 0, .phi_distance = -1.0, .storage = "u128", .cluster = "IntegerFixed", .status = "Verified", .standard = "two complement", .use_case = "crypto, big-int", .gf_relation = "competitor", .source = "Rust/Clang u128" }, - .{ .id = "q_format", .name = "Q-format (Qm.n)", .bits = 0, .s_bits = 1, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "varies", .cluster = "IntegerFixed", .status = "Verified", .standard = "TI fixed-point", .use_case = "audio DSP, fixed-point ML", .gf_relation = "orthogonal", .source = "TI SPRA704" }, - .{ .id = "bcd", .name = "BCD (binary-coded decimal)", .bits = 0, .s_bits = 0, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "u4_per_digit", .cluster = "IntegerFixed", .status = "Historical", .standard = "IBM 1959", .use_case = "calculators, GAAP", .gf_relation = "orthogonal", .source = "ISO/IEC 8859" }, - .{ .id = "ibm_hfp32", .name = "IBM HFP (single)", .bits = 32, .s_bits = 1, .e_bits = 7, .m_bits = 24, .bias = 64, .phi_distance = -1.0, .storage = "u32", .cluster = "HistoricalVendor", .status = "Historical", .standard = "IBM System/360 (1964); base-16 exponent", .use_case = "legacy mainframe", .gf_relation = "orthogonal", .source = "IBM POO" }, - .{ .id = "ibm_hfp64", .name = "IBM HFP (double)", .bits = 64, .s_bits = 1, .e_bits = 7, .m_bits = 56, .bias = 64, .phi_distance = -1.0, .storage = "u64", .cluster = "HistoricalVendor", .status = "Historical", .standard = "IBM System/360 (1964)", .use_case = "legacy mainframe", .gf_relation = "orthogonal", .source = "IBM POO" }, - .{ .id = "ibm_hfp128", .name = "IBM HFP (extended)", .bits = 128, .s_bits = 1, .e_bits = 7, .m_bits = 120, .bias = 64, .phi_distance = -1.0, .storage = "u128", .cluster = "HistoricalVendor", .status = "Historical", .standard = "IBM z/Architecture", .use_case = "legacy mainframe", .gf_relation = "orthogonal", .source = "IBM POO" }, - .{ .id = "ms_mbf32", .name = "Microsoft MBF (single)", .bits = 32, .s_bits = 1, .e_bits = 8, .m_bits = 23, .bias = 129, .phi_distance = -1.0, .storage = "u32", .cluster = "HistoricalVendor", .status = "Historical", .standard = "MS BASIC / MS-DOS (pre-IEEE)", .use_case = "MS BASIC legacy", .gf_relation = "orthogonal", .source = "MS-DOS docs" }, - .{ .id = "ms_mbf64", .name = "Microsoft MBF (double)", .bits = 64, .s_bits = 1, .e_bits = 8, .m_bits = 55, .bias = 129, .phi_distance = -1.0, .storage = "u64", .cluster = "HistoricalVendor", .status = "Historical", .standard = "MS BASIC", .use_case = "MS BASIC legacy", .gf_relation = "orthogonal", .source = "MS-DOS docs" }, - .{ .id = "vax_f", .name = "VAX F-float", .bits = 32, .s_bits = 1, .e_bits = 8, .m_bits = 23, .bias = 128, .phi_distance = -1.0, .storage = "u32", .cluster = "HistoricalVendor", .status = "Historical", .standard = "DEC VAX", .use_case = "DEC legacy", .gf_relation = "orthogonal", .source = "VAX Architecture Reference" }, - .{ .id = "vax_d", .name = "VAX D-float", .bits = 64, .s_bits = 1, .e_bits = 8, .m_bits = 55, .bias = 128, .phi_distance = -1.0, .storage = "u64", .cluster = "HistoricalVendor", .status = "Historical", .standard = "DEC VAX", .use_case = "DEC legacy double", .gf_relation = "orthogonal", .source = "VAX Architecture Reference" }, - .{ .id = "vax_g", .name = "VAX G-float", .bits = 64, .s_bits = 1, .e_bits = 11, .m_bits = 52, .bias = 1024, .phi_distance = -1.0, .storage = "u64", .cluster = "HistoricalVendor", .status = "Historical", .standard = "DEC VAX (IEEE-like)", .use_case = "DEC legacy", .gf_relation = "orthogonal", .source = "VAX Architecture Reference" }, - .{ .id = "vax_h", .name = "VAX H-float", .bits = 128, .s_bits = 1, .e_bits = 15, .m_bits = 112, .bias = 16384, .phi_distance = -1.0, .storage = "u128", .cluster = "HistoricalVendor", .status = "Historical", .standard = "DEC VAX", .use_case = "DEC quad", .gf_relation = "orthogonal", .source = "VAX Architecture Reference" }, - .{ .id = "cray_float", .name = "Cray float", .bits = 64, .s_bits = 1, .e_bits = 15, .m_bits = 48, .bias = 16384, .phi_distance = -1.0, .storage = "u64", .cluster = "HistoricalVendor", .status = "Historical", .standard = "Cray-1 (1976); no NaN/Inf, unrounded mul", .use_case = "Cray legacy", .gf_relation = "orthogonal", .source = "Cray-1 Hardware Reference" }, - .{ .id = "minifloat", .name = "minifloat (arbitrary E:M, <=16 bits)", .bits = 0, .s_bits = 1, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "varies", .cluster = "Theoretical", .status = "Experimental", .standard = "parametric framework", .use_case = "design space of GF4/GF8/GF12/GF16", .gf_relation = "ally", .source = "Higham 1996" }, - .{ .id = "unum_i", .name = "Unum I (tapered + ubound)", .bits = 0, .s_bits = 1, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "varies", .cluster = "Theoretical", .status = "Experimental", .standard = "Gustafson 2015 (predecessor to posit)", .use_case = "interval arithmetic", .gf_relation = "ally", .source = "Gustafson 2015 (The End of Error)" }, - .{ .id = "unum_ii", .name = "Unum II (SORN projective)", .bits = 0, .s_bits = 0, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "lookup_table", .cluster = "Theoretical", .status = "Experimental", .standard = "Gustafson 2016", .use_case = "lookup-table real arithmetic; not GF-comparable", .gf_relation = "orthogonal", .source = "Gustafson 2016" }, - .{ .id = "tapered_fp", .name = "tapered floating point", .bits = 0, .s_bits = 1, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "varies", .cluster = "Theoretical", .status = "Experimental", .standard = "Morris 1971; posit ancestor", .use_case = "variable mantissa via regime bits", .gf_relation = "ally", .source = "Morris 1971 (IEEE TC)" }, - .{ .id = "block_fp", .name = "block floating point (BFP)", .bits = 0, .s_bits = 0, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "varies", .cluster = "CompressionTrick", .status = "Verified", .standard = "Wilkinson 1965; modern revivals", .use_case = "per-tile shared exponent", .gf_relation = "ally", .source = "Darvish-Rouhani 2020" }, - .{ .id = "shared_exp", .name = "shared-exponent formats", .bits = 0, .s_bits = 0, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "varies", .cluster = "CompressionTrick", .status = "Verified", .standard = "generalised BFP", .use_case = "LLM quantization", .gf_relation = "ally", .source = "Darvish-Rouhani 2020" }, - .{ .id = "per_channel_scale", .name = "INT8 with per-channel scale", .bits = 8, .s_bits = 1, .e_bits = 0, .m_bits = 7, .bias = 0, .phi_distance = -1.0, .storage = "u8_plus_fp32_scale", .cluster = "CompressionTrick", .status = "Verified", .standard = "Jacob 2018 (TFLite)", .use_case = "standard quant inference", .gf_relation = "competitor", .source = "Jacob 2018 (CVPR)" }, - .{ .id = "stochastic_rounding", .name = "stochastic rounding (technique)", .bits = 0, .s_bits = 0, .e_bits = 0, .m_bits = 0, .bias = 0, .phi_distance = -1.0, .storage = "varies", .cluster = "CompressionTrick", .status = "Verified", .standard = "Gupta 2015", .use_case = "training small networks at low precision", .gf_relation = "ally", .source = "Gupta 2015 (ICML)" }, -};