Линейка для чисел: как я собрал каталог из 83 форматов с плавающей точкой — и почему он всё время «не сходится»

Wait 5 sec.

Любой, кто дебажил несовпадение точности между двумя реализациями нейросети, знает это чувство: один и тот же matmul на двух устройствах даёт разный результат — баг это или просто bf16 так округлил? Инженеры на разных концах конвейера меряют один результат разными линейками.Я собрал одну линейку с точными насечками — машинно-проверяемый каталог из 83 числовых форматов в 13 кластерах. Для каждого: разрядка битов (знак/экспонента/мантисса), смещение, кодирование inf/NaN/субнормалей и единый якорь проверки 0x47C0. Из одного источника истины генерируются Markdown, JSON, Python, Rust, C и RTL для кремния.Главное в проекте — не размер, а честные статус-метки: 51 формат Verified, 12 Historical, 11 Experimental, 9 Open. И отдельная честная ось — граница RTL: где правило e = round((N−1)/φ²) ещё работающее железо (GF16 проверен вплоть до кремния), а где уже гипотеза (GF512/GF1024 — чистая экстраполяция без единой строки Verilog). Парадокс: самая близкая к φ ступень — наименее проверенная.Внутри — лестница зрелости форматов, связь с IEEE P3109 и реальный баг в умножителе, который нашли только потому, что под форматом есть железо Как устроена линейка