Аксиомата и точката, която се движи

Фиксираната запетая дава дисциплина, но една скала може да разпилее точност. Dweve AXIOM позволява на всяка стойност да избира от изричен списък с...

Аксиомата и точката, която се движи

Точката се премести, договорът не

Аритметиката с фиксирана запетая е привлекателна, защото е честна. Избираш мащаб, казваш къде живее точката, и машината спира да се преструва, че всяко число е малка прогноза за времето. Това прави повторното изпълнение по-спокойно, вградените цели по-лесни за разбиране, а одитите по-малко зависими от изрази като „достатъчно близо“. Прекрасно. И непълно.

Един фиксиран мащаб може да е твърде груб. Избереш ли мащаб, който покрива много малки стойности, по-големите стойности остават без място. Избереш ли мащаб за по-големи стойности, малките губят полезна точност. Можеш да разделиш работата между няколко типа, но тогава кодовата база получава различен вид бъркотия. Поздравления, десетичната запетая вече е кадрови проблем.

AXIOM съществува за случаите, в които точката трябва да се премести, без числовият слой да се превърне отново в супа от плаваща запетая. В кодовата база Dweve това е адаптивно семейство с променлива точка: всяка конкретна стойност носи знак, индекс в списък от експоненти и мантиса в компактно 32-битово представяне. Експонентата не е някакво случайно хардуерно настроение. Тя се избира от изричен списък. Мантисата е целочислен товар. Представената стойност е знак по мантиса по две на минус избраната експонента. Това изречение не е красиво, но в него е целият трик.

Важното не е, че точката се движи. Плаващата запетая също движи точката. Важното е, че AXIOM я движи през обявен списък, който може да се преглежда, тества, специализира и поддържа детерминиран. Кодът не моли платформата да импровизира числова личност. Той дава на стойността компактен договор и кара аритметиката да се връща към този договор след всяка операция.

AXIOM не е магическа десетична запетая. Конкретната стойност е опакована дума със знак, избор на експонента и мантиса. Полезната дисциплина е, че всяка част има своя задача.

В сорс кода конкретната форма е Axiom<M, E>. Ширината на мантисата трябва да отговаря на представянето, с практически псевдоними като Adp4, Adp8, Adp16, Adp23, AdpNN4 и AdpNN8. Тези имена не са украшение. Те ти казват колко товар и какъв профил на експонентите се очаква да използва стойността. Стойност със списък от експоненти във формата NN не е същото обещание като стойност с по-широк общ списък. Да ги третираш като еднакви, защото и двете изглеждат числови, е начинът, по който сериозните кодови бази започват да трупат фолклор.

Променливата точка не е въпрос на усещане

Изразът адаптивна променлива точка може да звучи като някой да е прекръстил плаващата запетая, за да мине поръчката на съвещание. Това не се случва. AXIOM не превръща експонентата в невидим страничен ефект. Експонентата се избира от списък, прикрепен към типа или стратегията. В текущия сорс конкретните списъци от експоненти включват стандартен [16, 8, 4, 0], плътен [12, 8, 4, 0], за тегла на невронни мрежи [8, 6, 4, 0] и фин списък [16, 14, 12, 10, 8, 6, 4, 0]. Това са текущите стойности в сорса, и това различие има значение, защото сорсът се е променял с времето; настоящите твърдения трябва да следват настоящия код, а не остарели списъци от експоненти.

Списъкът е продуктовото решение. Стандартният списък дава няколко широки диапазона. Плътният списък променя къде се намират диапазоните. Списъкът NN е оформен за данни, подобни на тегла. Финият списък предлага повече близки възможности. Нищо от това не премахва преценката. То премества преценката на място, където прегледът на кода може да я види.

Това е разликата между контролирано адаптивно представяне и общо извинение. Фиксираната запетая казва, че всяка стойност тук използва тази скала. AXIOM казва, че всяка стойност тук избира от този обявен набор от скали. Това е по-широк договор, а не липсващ такъв. Точката се движи, но се движи по релси. Много холандско, наистина. Дори десетичната запетая има инфраструктура.

Фиксираната запетая дава една равномерна мрежа. AXIOM дава обявен набор от експонентни ленти. Този допълнителен избор е полезен само защото остава изричен.

Струва си да сме точни за това какво AXIOM не е. Той не е точно рационално смятане. Не е лиценз да пренебрегваш анализа на обхвата. Не е претенция за бенчмарк. Не е гаранция, че избраният списък от експоненти пасва на твоето натоварване, защото акронимът изглеждаше енергичен. Все още трябва да разбираш стойностите, динамичния обхват, допустимата грешка, целевата платформа за внедряване и изискванията за повторно изпълнение. AXIOM прави тези избори по-лесни за проверка. Не ги кара да изчезнат. Ако нещо, прави мързеливото числово мислене по-трудно за скриване, а там обикновено започва писъкът.

Аритметиката трябва да се прибере у дома

Числовият формат е лесен за рисуване и по-труден за правене на полезен. Полезната част е аритметиката. Събирането и изваждането трябва да се справят със стойности, които може да са на различни експонентни ленти. Умножението и делението трябва да извършват по-широка целочислена мантиса, преди да върнат резултата към целевата форма. След операцията стойността трябва да се нормализира обратно в наличен експонентен избор. Тази последна стъпка е важна, защото представяне, което не може да се прибере у дома, е просто почивка в чужбина с по-добър брандинг.

Следователно аритметиката на AXIOM има ритъм. Вкарваш опаковани стойности. Подравняваш или разширяваш, колкото е нужно. Извършваш целочислената операция. Нормализираш. Записваш резултата обратно в обявената форма. Ако не се побира, това трябва да се вижда като проблем на представянето, а не тихо да се прехвърля на настроението на машината. Договорът е полезен, защото има ръбове.

Това е същата причина, поради която Numerus има значение около него. По-широкият стек не се опитва да събира числови формати като марки. Иска аритметика, която може да преживее повторно изпълнение, вградено разполагане, симулация, компресия на модели, тестове и одитни следи. AXIOM е едно семейство в тази история. Той се занимава с конкретен проблем: стойности, чиято полезна скала се променя, но чието поведение все пак трябва да е детерминистично.

Операцията не е приключила, когато мантисите са били докоснати. Резултатът трябва да се върне в обявена форма на AXIOM, иначе представянето е престанало да бъде договор.

Това е скучното изречение, което по-късно спасява екипи: нормализирай обратно във формата. Звучи като детайл от имплементацията, докато повторно изпълнение не се различава, праг не се преобърне или компресиран модел не се държи различно на по-малка платформа. Тогава става изречението, което всички си пожелават да е било в архитектурния документ.

Защо AXIOM стои под Numerus

Публичната история на Numerus е умишлено по-проста от дървото на изходния код. Повечето читатели искат да знаят дали числовият слой може да даде детерминистична аритметика, семейства с фиксирана запетая, десетично поведение, no_std позиция, целочислени профили за вградени системи, верификация и същия отговор два пъти. Не им трябва всеки вътрешен тип на първата страница. Това не е тайна. Това е милост.

Отдолу общият числов слой е по-широк. Той носи двоични, троични, естествени и подбайтови целочислени типове, псевдоними за фиксирана запетая, типове, свързани с плаваща запетая, за съвместимост, и адаптивен AXIOM. Споделените характеристики дават на тези семейства обща повърхност. След това Numerus обгръща частите, които трябва да са насочени към продукта: двоична и десетична фиксирана запетая, AXIOM, цели числа, операции, DSL повърхности и верификационна позиция. Това разделение е здравословно. Една основа може да е широка, без публичната страница да изглежда като меню от ресторант, който е загубил увереност.

AXIOM заслужава собствена статия, защото не е просто пореден запис в този списък. Фиксираната запетая е за поставяне на точката на едно място. Десетичната фиксирана запетая е за точни десетични позиции. Двоичните и троичните форми са за компактни нискобитови пътища. AXIOM е за превръщането на точката в контролирана част от стойността. Това променя начина, по който мислиш за представяне, аритметика, тестове и внедряване.

Това също променя начина, по който трябва да бъдат формулирани публичните твърдения. Производителността на AXIOM принадлежи на текущите бенчмаркове върху текущия код, а не на наследен фолклор. По-широкият стек не трябва да се описва като нула операции с плаваща запетая, защото повърхностите за преобразуване и показване може да преминат тази граница. По-безопасното и по-точно твърдение е, че основната фиксирана и адаптивна аритметика е ориентирана към цели числа и е проектирана за детерминирано поведение. Това изречение е по-малко бляскаво. Добре. Бляскавите числови твърдения са начинът, по който таблата се превръщат в генератори на извинения.

Няколко изчислителни пътя, едно семейство

Конкретната опакована стойност е само началото. Изходният код съдържа повече от един начин за използване на AXIOM, защото работните натоварвания не са достатъчно учтиви, за да се поберат в едно оформление завинаги. Съществува опакованият конкретен път за списъци с експоненти по време на компилация. Съществува Flex<S> за съхранение на експоненти по време на изпълнение върху целочислени размери за съхранение. Съществуват тензорни и блокови форми, където споделената структура на експонентите може да е полезна. Съществува стратифицирана обработка. Съществува APoT, където стойностите могат да бъдат представени като суми от степени на двойката със знак, така че умножението да може да се превърне в премествания и събирания. Наоколо има и изследователски код за профилиране и научени експоненти.

Това разпространение не е причина за смели твърдения. То е причина да внимаваш с работното натоварване. Скаларен път за повторение, пакетен път за квантуване, тензороподобен път и APoT път за тегла имат различни натоварвания. Разположението на паметта, повторното използване на експоненти, обхватът, нормализацията и формата на хардуера имат значение. AXIOM дава речник за тези избори. Не освобождава никого от правенето им.

AXIOM е семейство от изчислителни пътища. Опакованите стойности, гъвкавото съхранение на експоненти, тензорните или блоковите оформления и APoT пътищата с преместване и събиране са различни инструменти, а не един маркетингов слайд.

Тук инженерството става интересно. APoT не е просто симпатичен трик за компресия. За подходящи стойности той превръща умножението в задача с премествания и събирания. Тензорните и блоковите пътища могат да споделят структура на експонентите, когато работното натоварване има достатъчно форма. Flex поддържа съхранението на експоненти по време на изпълнение, когато списъците на ниво тип са твърде строги. Нито едно от тях не трябва да бъде избрано, защото диаграмата изглеждаше добре. Работното натоварване избира, или докладът за грешка ще избере по-късно и ще бъде много по-малко очарователен за това.

Как да прегледаш избор на AXIOM

Първият въпрос за преглед е скучен и затова полезен: защо не по-прост числов тип? Ако стойността е пари или регулирана десетична сума, Decimal може да е правилният отговор. Ако диапазонът е малък и добре ограничен, тип с фиксирана запетая във Q-формат може да е по-спокоен. Ако числото съществува само за да взаимодейства с файлов формат или външен API, тип, свързан с плаваща запетая, може да е честният адаптер за ръба. AXIOM оправдава съществуването си, когато работното натоварване има променлива величина, все пак изисква детерминиран договор и се възползва от изричен набор от експоненти.

Вторият въпрос е дали списъкът с експоненти описва данните или просто ласкае инженера. Списък с четири широки ленти е различен компромис от дребнозърнест списък с осем записа. Списъкът с формата NN не е декоративен етикет. Той казва, че се очаква стойностите да се държат като данни за тегла. Ако разпределението не съответства на списъка, представянето пак ще работи. Софтуерът често е готов да прави грешното нещо с впечатляваща скорост. Това не го прави дизайн.

Третият въпрос е къде се появява натискът за нормализиране. Събирането между отдалечени експонентни ленти може да изхвърли детайли. Умножението може да създаде резултат, който изисква различна лента. Повтарящите се операции могат да натрупат натиск точно на местата, които демонстрацията не е посетила. Прегледът трябва да изисква гранични тестове около нула, промени на знака, преходи на експонента, големи мантиси и повтарящи се операции. Ако тези случаи изглеждат досадни, добре. Вероятно това са случаите, които имат значение.

Последният въпрос е как представянето оставя доказателства. Кой псевдоним на тип избрахме? Кой списък с експоненти? Коя ширина на мантисата? Кой път на преобразуване? Кой оракул или property тест подкрепя твърдението? Ако отговорът е разпръснат из коментари и оптимизъм, системата вече е загубила част от ползата. AXIOM е най-полезен, когато числовият избор стане част от архитектурния запис, а не умен локален трик, скрит три модула по-надолу.

Проверката побеждава геройските числа

Числовите формати привличат геройски числа. По-малък. По-бърз. По-ефективен. По-добър. Думите са евтини и обикновено пристигат преди тестовата среда, което е точно грешният ред. За AXIOM отговорната позиция е да се третират бенчмарковете като доказателство за всяка версия, а не като митология. Ако бенчмаркът не е пуснат отново върху текущия изходен код, текущия компилатор, текущите флагове и текущия хардуер, той не е публично твърдение. Той е пощенска картичка от предишен следобед.

По-важно е пътят на проверката. Кодирането и декодирането остават ли в рамките на обявения договор? Нормализират ли операциите в законна форма? Държат ли се граничните случаи около границите на експонентата преднамерено? Покриват ли property тестовете досадните стойности, които хората забравят, защото хората имат хобита? Съществува ли оракул с висока точност там, където сравнението има смисъл? Може ли повторното изпълнение да възстанови същия път на стойността?

Този последен въпрос е причината това да е част от нашия стек. Dweve продължава да изгражда системи, в които изчисленията оставят доказателства: парсери с разписки, регистри с типизирани събития, извличане с детерминирани пътища, формати за данни, които не влачат каруца с повтарящи се ключове, слоеве за симулация и числени изчисления, които могат да се възпроизвеждат. AXIOM пасва, защото преместването на точката не трябва да означава загуба на разписката.

Урокът

Урокът от AXIOM не е, че фиксираната запетая е била грешна. Фиксираната запетая все още е един от най-чистите инструменти, които имаме. Урокът е, че една фиксирана скала не винаги е достатъчна и алтернативата не трябва да е непрозрачното поведение на плаващата запетая. Една стойност може да носи контролиран избор на експонента. Точката може да се движи, докато договорът остава видим.

Това е публичната история, която си струва да се разкаже. Пакетите Dweve AXIOM съдържат знак, индекс на експонентата и мантиса. Те избират от изрични списъци с експоненти. Използват целочислена аритметика и нормализират резултатите обратно в обявените форми. В кодовата база има конкретни, гъвкави, тензорни, блокови, стратифицирани, APoT и изследователски пътища. Те принадлежат към Numerus, защото детерминистичната аритметика не е странична задача. Тя е част от начина, по който сериозните системи получават един и същ отговор два пъти.

Точката се мести. Отговорността не се мести. Това е полезната част.