Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import type { Block } from '../types'

export const body: Block[] = [
{ kind: 'p', text: '[measured — committed oracle, not board hardware] W991 reran the competitor table from the repository’s committed oracles. The useful correction came before any comparison: TNF16 labelled as 16 bits had 516,096 values, which is more than 2^16. Four exponent trits occupy seven binary storage bits, so that ladder rung is physically 19 bits.' },
{ kind: 'h', text: 'The table now asks the physical question' },
{ kind: 'p', text: 'The repair keys the comparison by physical width and refuses a width that no rung occupies. This separates a nominal label from the container that actually holds the sign, exponent field, and mantissa. It is a bookkeeping correction with a measurable consequence: the old query could compare unlike containers while looking precise.' },
{ kind: 'table', head: ['physical width', 'TNF rung', 'TNF values', 'posit es=1 values', 'TNF step at 1.0', 'posit step at 1.0'], rows: [
['6 bits', 'TNF4 (2 trits, 1 mantissa bit)', '56', '62', '25%', '12.5%'],
['10 bits', 'TNF8 (3 trits, 4 mantissa bits)', '960', '1022', '3.125%', '0.781%'],
['19 bits', 'TNF16 (4 trits, 11 mantissa bits)', '516,096', '524,286', '0.024%', '0.002%']
] },
{ kind: 'p', text: 'At every matched width in this ladder, TNF has fewer reachable values and a coarser local step at 1.0 than posit with es=1. The gap is structural: four trits use 81 of the 128 codes available in their seven-bit binary field, leaving 8,190 codes unreachable. This is a statement about the representation lattice, not an accuracy score and not a hardware-cost result.' },
{ kind: 'h', text: 'The comparison is not the conclusion' },
{ kind: 'quote', text: 'A table can be internally exact and still answer the wrong width question.' },
{ kind: 'p', text: 'The corrected table does not establish that one format is preferable for a workload. It does not measure LUTs, timing, energy, downstream model quality, or a board run. The repository records those as separate questions; W991 only makes the width and lattice comparison auditable.' },
{ kind: 'h', text: 'What the patch leaves open' },
{ kind: 'ul', items: [
'Whether the physical-width comparison changes a workload-level choice is not measured.',
'The table does not provide a cost model; area, timing, and energy remain separate measurements.',
'The displayed local step describes the neighbourhood of 1.0 and is not a summary of every extreme of a tapered format.',
'The TNF ladder and the posit oracle are compared at matched container widths; no claim about takum accuracy is made here.'
] },
{ kind: 'p', text: 'The practical lesson is small and reusable: before comparing numeric formats, derive the stored width from the encoding and make the tool reject impossible widths. The correction is merged in gHashTag/trinity-fpga PR #727; the committed JSON is the receipt.' }
]

export const ruBody: Block[] = [
{ kind: 'p', text: '[измерено — зафиксированный оракул, не плата] В работе W991 таблица конкурирующих форматов была пересчитана по зафиксированным в репозитории оракулам. Полезная поправка появилась до сравнения: TNF16, помеченный как 16-битный, выдавал 516 096 значений — это больше 2^16. Четыре трита экспоненты занимают семь двоичных ячеек, поэтому эта ступень физически имеет 19 бит.' },
{ kind: 'h', text: 'Таблица теперь задаёт физический вопрос' },
{ kind: 'p', text: 'После исправления сравнение индексируется физической шириной и отказывается от ширины, которой нет ни на одной ступени. Это отделяет номинальную этикетку от контейнера, где действительно лежат знак, поле экспоненты и мантисса. Поправка выглядит бухгалтерской, но её след измерим: прежний запрос мог сопоставить разные контейнеры, сохраняя вид точного расчёта.' },
{ kind: 'table', head: ['физическая ширина', 'ступень TNF', 'значения TNF', 'значения posit es=1', 'шаг TNF при 1.0', 'шаг posit при 1.0'], rows: [
['6 бит', 'TNF4 (2 трита, 1 бит мантиссы)', '56', '62', '25%', '12.5%'],
['10 бит', 'TNF8 (3 трита, 4 бита мантиссы)', '960', '1022', '3.125%', '0.781%'],
['19 бит', 'TNF16 (4 трита, 11 бит мантиссы)', '516 096', '524 286', '0.024%', '0.002%']
] },
{ kind: 'p', text: 'На каждой сопоставленной ширине этой лестницы у TNF меньше достижимых значений и крупнее локальный шаг около 1.0, чем у posit с es=1. Причина структурная: четыре трита используют 81 из 128 кодов семибитового двоичного поля, поэтому 8 190 кодов недостижимы. Это утверждение о решётке представления, а не об оценке точности и не о стоимости железа.' },
{ kind: 'h', text: 'Сравнение не является выводом о выборе' },
{ kind: 'quote', text: 'Таблица может быть внутренне точной и всё равно задавать неправильный вопрос о ширине.' },
{ kind: 'p', text: 'Исправленная таблица не устанавливает, что один формат предпочтительнее для какой-либо нагрузки. Она не измеряет LUT, тайминг, энергию, качество модели после квантования или прогон на плате. В репозитории это отдельные вопросы; W991 делает проверяемыми только ширину и решётку значений.' },
{ kind: 'h', text: 'Что поправка оставляет открытым' },
{ kind: 'ul', items: [
'Изменит ли физическое сопоставление ширин выбор для реальной нагрузки — не измерено.',
'Таблица не является моделью стоимости: площадь, тайминг и энергия требуют отдельных замеров.',
'Показанный локальный шаг описывает окрестность 1.0 и не суммирует все крайние зоны tapered-формата.',
'Лестница TNF и оракул posit сопоставлены по ширине контейнера; утверждения о точности takum здесь нет.'
] },
{ kind: 'p', text: 'Практический урок небольшой и переносимый: перед сравнением числовых форматов вывести хранимую ширину из кодировки и заставить инструмент отвергать невозможные ширины. Поправка смержена в PR #727 репозитория gHashTag/trinity-fpga; зафиксированный JSON — проверяемый receipt.' }
]
30 changes: 30 additions & 0 deletions apps/website/src/data/blog/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,36 @@ import type { PostMeta } from './types'

/** Индекс блога: список и метаданные без тяжёлых тел публикаций. */
export const postsIndex: PostMeta[] = [
{
slug: 'physical-width-changed-the-question',
title: 'Physical width changed the question',
summary: 'A committed-oracle comparison exposed a nominal-width error: TNF16 labelled as 16 bits occupies 19 physical bits, so the table now matches containers before comparing lattices.',
date: '2026-08-23',
readingMinutes: 7,
tags: ['Number formats', 'Conformance', 'Measurement', 'Self-critique'],
receipts: [
{ label: 'gHashTag/trinity-fpga PR #727 — W991/W992 merged', href: 'https://github.com/gHashTag/trinity-fpga/pull/727' },
{ label: 'W991 committed measurement table', href: 'https://github.com/gHashTag/trinity-fpga/blob/main/research/arxiv_tnf/measurements/compare_w991.json' },
{ label: 'Merge commit 78987a4', href: 'https://github.com/gHashTag/trinity-fpga/commit/78987a4e0757de47b4ab6e9a2a9d486180e688f4' },
],
openQuestions: [
'Whether matching physical width changes a workload-level choice is not measured. W991 compares the representation lattice only.',
'No LUT, timing, energy, or board measurement follows from this table. Those are separate artifacts and remain open.',
'The local step at 1.0 does not summarize the extreme behaviour of a tapered format, so it must not be read as a whole-range accuracy claim.',
'The comparison is with posit for the committed lattice table; no accuracy comparison with takum is made here, and no claim about a preferred format is supported.'
],
published: true,
ru: {
title: 'Физическая ширина изменила вопрос',
summary: 'Сравнение по зафиксированным оракулам обнаружило ошибку номинальной ширины: TNF16, помеченный как 16-битный, занимает 19 физических бит, поэтому сначала сопоставляются контейнеры, а потом решётки значений.',
openQuestions: [
'Изменит ли сопоставление по физической ширине выбор для реальной нагрузки — не измерено. W991 сравнивает только решётку представления.',
'Из этой таблицы не следуют замеры LUT, тайминга, энергии или платы. Это отдельные артефакты, и вопрос остаётся открытым.',
'Локальный шаг при 1.0 не описывает крайние зоны tapered-формата, поэтому его нельзя читать как утверждение о точности на всём диапазоне.',
'В таблице решётка сопоставлена с posit; сравнение точности с takum здесь не проводится, и предпочтительный формат не выбирается.'
]
}
},
{
slug: 'nobodys-example',
title: "Nobody's example",
Expand Down
2 changes: 2 additions & 0 deletions apps/website/src/data/blog/posts.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { postsIndex } from './index'
import { body as body_a_health_snapshot_changed_its_denominator, ruBody as ruBody_a_health_snapshot_changed_its_denominator } from './bodies/a-health-snapshot-changed-its-denominator'
import type { Post, PostBody } from './types'
import { body as body_physical_width_changed_the_question, ruBody as ruBody_physical_width_changed_the_question } from './bodies/physical-width-changed-the-question'
import { body as body_nobodys_example, ruBody as ruBody_nobodys_example } from './bodies/nobodys-example'
import { body as body_the_silence_was_a_saturated_readout, ruBody as ruBody_the_silence_was_a_saturated_readout } from './bodies/the-silence-was-a-saturated-readout'
import { body as body_twenty_merged_in_three_days, ruBody as ruBody_twenty_merged_in_three_days } from './bodies/twenty-merged-in-three-days'
Expand Down Expand Up @@ -55,6 +56,7 @@ import { body as body_the_scanner_scored_what_it_could_not_see, ruBody as ruBody
import { body as body_i_wrote_the_post_then_did_the_thing, ruBody as ruBody_i_wrote_the_post_then_did_the_thing } from './bodies/i-wrote-the-post-then-did-the-thing'

const bodies: Record<string, PostBody> = {
'physical-width-changed-the-question': { body: body_physical_width_changed_the_question, ruBody: ruBody_physical_width_changed_the_question },
'nobodys-example': { body: body_nobodys_example, ruBody: ruBody_nobodys_example },
'the-silence-was-a-saturated-readout': { body: body_the_silence_was_a_saturated_readout, ruBody: ruBody_the_silence_was_a_saturated_readout },
'twenty-merged-in-three-days': { body: body_twenty_merged_in_three_days, ruBody: ruBody_twenty_merged_in_three_days },
Expand Down
Loading