Comments 20
Картинки очень мешают. Разрывают текст, а сами смысловой нагрузки не несут.
φ² = φ + 1. Из него же следует менее известное, но очень удобное тождество:
φ² + φ⁻² = 3А как оно следует?
В числах Люка пропущена 4 и 11
Золотое сечение - это деление, отношение. Есть Золотое число связанное с Золотым сечением.
Это все мелочи, отбросим. Основные вопросы - "Каков критерий или критерии "лучшести" такого формата представления чисел?" и собственно, "Какова связь этого "золотого" представления с троичной системой?" Если Вы поделите биты Сверхзолотым сечением (https://ru.wikipedia.org/wiki/Сверхзолотое_сечение) внизу тоже придете к троичной, а еще ниже к двоичной системе.
φ² + φ⁻² = (φ + 1) + 1 / ( φ + 1 ) = ( (φ + 1)² + 1 ) / ( φ + 1 ) = ( φ² + 2 φ + 1 + 1) / ( φ + 1 ) = ( φ + 1 + 2 φ + 1 + 1 ) / ( φ + 1 ) = (3 φ + 3 ) / ( φ + 1 ) = 3
Да, да, спасибо. Это Вы проверили тождество, меня же зацепило слово "следует", т.е. как из ф2=ф+1 следует ф2 - ф-2=3. Если бы было написано "можно преобразовать в..." то я бы поковырялся, но на "следует" моего математического чутья не хватает. Следует оно так:
Но чем эта форма лучше чем начальная, для меня не понятно.
Спасибо за внимательный разбор — это ровно те вопросы, ради которых статью и стоило писать.
Про «следует». Вы оба правы, и @Medeyko уже привёл прямой вывод. Соглашусь с замечанием materiatura: аккуратнее говорить «преобразуется», а не «следует как теорема». Самый короткий путь — через Люка: при целом n выполняется Ln=φn+(−φ)−nL_n = \varphi^n + (-\varphi)^{-n}Ln=φn+(−φ)−n, откуда φ2+φ−2=L2=3\varphi^2 + \varphi^{-2} = L_2 = 3φ2+φ−2=L2=3. То есть это просто второй член последовательности Люка, а не отдельное «магическое» тождество. Поправлю формулировку в тексте на «преобразуется к».
Про числа Люка. Тут небольшая неточность: 4 и 11 в последовательности есть — 2, 1, 3, 4, 7, 11, 18, 29… Пропущенными они кажутся, если смотреть на L₀=2, L₁=1 и дальше через одно. Так что L2=3 L_2=3 L2=3 и L4=7 L_4=7 L4=7 на своих местах.
Чем эта форма лучше исходной. Честный ответ: сама по себе φ2+φ−2=3\varphi^2+\varphi^{-2}=3φ2+φ−2=3 ничем не «лучше» — это эстетика. Практическая польза в другом: она даёт одну целочисленную реперную точку. В формате GF16 операция dot4(1,2,3,4) обязана дать значение с битовым отпечатком 0x47C0. Это не «доказательство красоты», а тестовый якорь: одно целое число (3), которое должно бит-в-бит совпасть во всех реализациях — от JSON до RTL на кремнии. Если совпало — линейка не сбита.
Критерий «лучшести» формата. Здесь я намеренно не утверждаю превосходства. В каталоге у φ-семейства нет метрики «лучше всех» — есть деление битов по правилу e=round((N−1)/φ2)e=\mathrm{round}((N-1)/\varphi^2)e=round((N−1)/φ2) и честные статус-метки зрелости. takum-формат Хунхольда (arXiv:2412.20273) я держу в каталоге как контрпример, а не прячу. «Критерий» у меня операционный: воспроизводимость (якорь 0x47C0), наличие RTL и проверка против эталона — а не абстрактная оптимальность.
Про троичную систему и сверхзолотое сечение. Это самое интересное замечание, спасибо. Связь φ с троичной у меня идёт не через деление битов, а через то, что L₂=3 — мост к троичной «Сетунь» (об этом была первая статья). А вы указываете на другой, более глубокий мост: сверхзолотое сечение ψ — корень x3=x2+1x^3=x^2+1x3=x2+1 (нарайяновская рекурсия), и оно естественнее ложится на основание 3, тогда как φ (корень x2=x+1x^2=x+1x2=x+1) — на основание 2. Это честная развилка, которую я в φ-семействе не использовал: оно двоичное по разрядке битов, а «троичность» появляется только на уровне тождества L₂=3, не на уровне кодирования. Ваш намёк на лестницу ψ→3→2 мне нравится — это отдельная ветка, которую стоит проверить, а не выдавать за уже сделанное.
как из ф2=ф+1 следует ф2 - ф-2=3. Если бы было написано "можно преобразовать в..."
Так это ж синонимы. А математическое чутьё тут ни при чём.
Синонимы, - они на то и синонимы, что имеют различия. В моем опыте чтения, "следует" - больше к логическому выводу, логическому следствию. Если же формула преобразуется в другой вид, более удобный в конкретном случае, это точнее описывается фразой типа "можно преобразовать, представить в виде и т.д." в старорежимной литературе это впитывается автоматически.
Вот возьмите представление комплексного числа в показательной форме
если Вам легко увидеть, что из этого следует его геометрическая форма
то я искренне Вами восхищаюсь, я так не могу.
Мне не известно другое опубликованное семейство float-форматов, у которого сплит E:M по всей лестнице от 2 до 256 бит порождался бы одним замкнутым правилом.
А как же IEEE 754?! Куда уж опубликованнее?! Распределение бит по мантиссе/экспоненте там по конкретному замкнутому правилу:
exp_width = 4*log2(n)-13
Можете сами посмотреть, странца 23, таблица 3.5 (24-ая в pdf-ке): Standard 754-2019.pdf
Изначальные распределения для 8-16 бит были выбраны руками в прошлом веке в результате экспериментов. Эмперически подобрали баланс между допустимым интервалом чисел и точностью. Но потом, при введении 128 и более битных чисел формулу обобщили.
Далее, почему вы взяли золотое сечение, а не Pi/4, например? Вы никак не аргументировали. Чистая нумерология и магическое мышление и есть.
Тождество дающее 3, конечно, очень красиво, но притянуто за уши:
То есть когда вы накапливаете суммы определённого вида, результат можно держать в точной целочисленной арифметике, без накопления ошибки округления.
В IEEE 754 точно так же есть суммы определенного вида, не дающие ошибки округления. Более того, я уверен, что это будут точно эти же суммы. Потому что это зависит от системы счисления в первую очередь, а не от соотношения размера экспоненты и мантиссы. Соотношение - это баланс между точностью и размерностью чисел. Чем больше точность, тем больше сумм без ошибки округления, но тем больше сумм с ошибкой переполнения.
Связь с phi тут тупо совпадение, не более.
Формула IEEE w = round(4·log2(k)) − 13 действует НЕ по всей лестнице, а только для k ≥ 128. Это видно прямо в Table 3.5: binary16/32/64 заданы отдельными строками с конкретными числами (5/8/11 бит экспоненты), а формула стоит в строке binary{k}, k ≥ 128. И если подставить в неё k=16 или k=32 — она даёт неправильные значения, реальные экспоненты у binary16 и binary32 шире. Цитирую разбор стандарта: «The formula does not hold for 16 or 32 bits; it is only said to hold for 64 bits and widths that are multiples of 32 greater than or equal to 128 (so not widths 32 or 96)».
Более того — в самом стандарте эта формула не нормативная. Она дана как пояснительная заметка: «There is no mandated mathematical rule for the numbers of bits in the significand or the exponent. IEEE 754-2008 does show a formula that describes its listed interchange formats for certain sizes, but this is in a non-normative note» (там же). То есть это подгонка-описание под уже существующие форматы, а не закон, из которого они выводятся.
И низ лестницы выбран эмпирически — это вы сами сказали, и первоисточник это подтверждает. binary32/64 — это по сути форматы DEC VAX F и G от PDP-11; 8 бит экспоненты в single выбраны под диапазон физических констант, а не выведены формулой. Историю принёс Kahan с Coonen как K-C-S draft (интервью Kahan, Berkeley EECS; MathWorks: Floating-Point Arithmetic Before IEEE 754, таблица VAX F/G).
Итого по фактам: у IEEE 754 нет единого замкнутого правила по всей лестнице. Есть эмпирически выбранный низ (16/32/64, исторически из VAX/PDP-11) плюс ненормативная формула-подгонка для k ≥ 128 — причём она пропускает даже 32 и 96. Так что ваш же пример (k≥128 против ручных 16/32/64) — это ровно то различие, которое я и провожу: правило по всей лестнице, включая малые ширины, без сшивки «ручной низ + формула для верха». В этой точной форме IEEE контрпримером не является.
А теперь главный вопрос. Чем "ненормативная формула подгонка" хуже "закона, из которого они выводятся"? На первый взгляд всё наоборот. Форматы выбраны из практических соображений, и это логично. Потом они формализованы.
Поступать наоборот - это как в рассказе про "вервие простое".
Хуже» — неправильное слово, я его не использую. Эмпирический выбор + поздняя формализация — это нормальный и часто лучший инженерный путь, IEEE 754 тому подтверждение. Моё утверждение у́же: у IEEE нет ОДНОГО замкнутого правила по всей лестнице (низ 16/32/64 — ручной, исторически из VAX/PDP-11; формула для k≥128 ненормативна и пропускает 32 и 96). У φ-семейства одно правило покрывает всю лестницу от 2 до 1024 бит. Это не «лучше», это «однороднее по происхождению» — и единственная практическая польза такой однородности — проще механически порождать и проверять декодеры. Никакого превосходства по точности я отсюда не вывожу. Так что «вервие простое» тут не про подмену причины следствием, а ровно про воспроизводимость кодогена, и только.
У вас в первом теге пропущена G.
Мне интересно, хоть кто-нибудь из наших "троичников" может излагать свои мысли без потрясания "святюми мощами" и вот этого всего в духе "70 лет назад мы опередили время" и т.п.
При всем уважении к заслугам великих ученых, попытки сейчас выезжать на их славе выглядят довольно убого.
Справедливый упрёк, и я постараюсь его не заслуживать. Брусенцов и «Сетунь» в статье — не аргумент в мою пользу и не «мы 70 лет назад опередили время». Это просто исторический контекст троичности, потому что L₂=3 — мост к основанию 3. Никакого «наследования величия» я не заявляю: моя работа — это таблица форматов и RTL, которые либо гоняются на тестах, либо честно помечены как непроверенные. Если в тексте звучит пафос «мощей» — это дефект формулировки, укажите место, перепишу суше.
От золотого сечения до троичности Брусенцова: одно семейство числовых форматов от 2 до 1024 бит