Число́ з рухо́мою ко́мою — форма подання дійсних чисел, в якій число зберігається у формі мантиси і показника степеня.
Число з рухомою комою має фіксовану відносну точність, залежну від кількості розрядів мантиси, і змінювану абсолютну. Найчастіше використовувані подання затверджено в стандарті IEEE 754. Реалізація математичних операцій з числами з рухомою комою у комп'ютерах може бути як апаратною, так і програмною.
В обчислювальній техніці числа з рухомою комою (FP) — спосіб подання підмножини дійсних чисел за допомогою цілого числа з фіксованою точністю, яке називається мантисою, масштабованим за допомогою цілого показника фіксованої основи. Наприклад, 12,345 — це число з рухомою комою за основою десять із п’ятьма цифрами точності:
Однак, на відміну від 12.345, 12.3456 не є числом з рухомою комою за основою десять із п’ятьма цифрами точності — воно потребує шести цифр точності; найближче число з рухомою комою лише з п’яти цифр дорівнює 12,346. На практиці більшість систем з рухомою комою використовують основу два, хоча також поширена основа десять (десяткове число з рухомою комою).
Арифметичні операції з рухомою комою, такі як додавання та ділення, наближають відповідні арифметичні операції з дійсними числами шляхом округлення будь-якого результату, який сам по собі не є числом з рухомою комою, до найближчого числа з рухомою комою. Наприклад, в арифметиці з рухомою комою з точністю до п’яти десятих цифр суму 12,345 + 1,0001 = 13,3451 можна округлити до 13,345.
Термін «рухома кома» означає той факт, що кома основи числа може «плавати» будь-де ліворуч, праворуч або між значущими цифрами числа. Ця позиція позначається експонентою, тому кому з рухомою комою можна вважати формою наукового позначення.
Систему з рухомою комою можна використовувати для подання, з фіксованою кількістю цифр, чисел дуже різних порядків — наприклад, кількість метрів між галактиками або між протонами в атомі. З цієї причини арифметика з рухомою комою часто використовується для отримання дуже малих і дуже великих дійсних чисел, які потребують швидкого часу опрацювання. Результатом цього динамічного діапазону є те, що числа, які можна представити, розташовані нерівномірно; різниця між двома послідовними числами, які можна представити, змінюється залежно від їх експоненти.
Протягом багатьох років у комп’ютерах використовували різноманітні подання чисел з рухомою комою. У 1985 році було створено стандарт IEEE 754 для арифметики з рухомою комою, і з 1990-х років найчастіше зустрічаються представлення, визначені IEEE.
Швидкість операцій з рухомою комою, яка зазвичай вимірюється через FLOPS, є важливою характеристикою комп’ютерної системи, особливо для програм, які передбачають інтенсивні математичні обчислення.
Блок з рухомою комою (FPU, розмовно - математичний співпроцесор) — це частина комп’ютерної системи, спеціально розроблена для виконання операцій над числами з рухомою комою.
Огляд
Числа з рухомою комою
Представлення числа визначає певний спосіб кодування числа, зазвичай у вигляді рядка цифр.
Існує кілька механізмів, за допомогою яких рядки цифр можуть представляти числа. У стандартній математичній нотації рядок цифр може мати будь-яку довжину, а розташування коми основи вказується шляхом розміщення там явного символу «крапка» (крапка або кома). Якщо кому основи не вказано, то рядок неявно представляє ціле число, а невказана кома основи буде розташована з правого кінця рядка, поруч із молодшою цифрою. У системах із фіксованою комою позиція в рядку вказується для коми основи. Таким чином, у схемі з фіксованою комою може використовуватися рядок із 8 десяткових цифр із десятковою крапкою посередині, де "00012345" представлятиме 0001,2345.
У науковій нотації дане число масштабується за степенями 10, так що воно лежить у певному діапазоні — як правило, між 1 і 10, при цьому кома в основі з’являється відразу після першої цифри. Як степінь десяти, коефіцієнт масштабування вказується окремо в кінці числа. Наприклад, орбітальний період супутника Юпітера Іо становить 152 853,5047 секунд, значення, яке буде представлено в стандартній формі наукового запису як 1,528535047 × 105 секунд.
Представлення з рухомою комою подібне за концепцією до наукової нотації. Логічно число з рухомою комою складається з:
- Цифровий рядок зі знаком (що означає додатним або від’ємним є число) заданої довжини в заданій основі (або основі). Цей рядок цифр називають мантисою. Довжина мантиси визначає точність, з якою можуть бути представлені числа. Вважається, що положення коми основи завжди знаходиться десь у межах цифр мантиси — часто відразу після або безпосередньо перед старшою цифрою або праворуч від крайньої правої (найменшої значущої) цифри.
- Показник цілого числа зі знаком (також відомий як характеристика або шкала), який змінює величину числа.
Щоб отримати значення числа з рухомою комою, мантиса множиться на основу, піднесену до степеня експоненти, що еквівалентно зсуву коми основи з її неявної позиції на кількість знаків, що дорівнює значенню експоненти, щоб отримати праворуч, якщо показник степеня додатний, або ліворуч, якщо показник степеня від’ємний.
Використовуючи основу 10 (відомий десятковий запис) як приклад, число 152 853,5047, що має десять десяткових цифр точності, представлено як мантиса 1 528 535 047 разом із показником 5. Щоб визначити фактичне значення, після першої цифри мантиси ставлять десяткову кому і результат множать на 105 , тобто 1,528535047 × 105, або 152 853,5047. При збереженні такого числа не потрібно зберігати основу (10), оскільки вона буде однаковою для всього діапазону підтримуваних чисел і, таким чином, може бути виведена.
Символічно це записується так:
Історично склалося так, що кілька основ числення використовувалися для представлення чисел з рухомою комою, причому основа два (двійкова) є найпоширенішою, за нею йде основа десять (десяткова з рухомою комою) та інші менш поширені різновиди, такі як основа шістнадцять (шістнадцяткова з рухомою комою ), основа вісім (вісімкове число з рухомою комою ), основа чотири (четвертинне число з рухомою комою ), основа три (збалансована трійка з рухомою комою ) і парна основа 256 і основа 65 536.
Число з рухомою комою є раціональним числом, оскільки воно може бути представлене як одне ціле число, поділене на інше; наприклад1,45 × 103 це (145/100) × 1000 або 145 000 /100. Основа визначає дроби, які можна представити; наприклад, 1/5 не можна точно представити як число з рухомою комою за допомогою двійкової системи, але 1/5 можна точно представити за допомогою десяткової системи (0,2 або2 × 10−1). Однак 1/3 не може бути точно представлена ні двійковою (0,010101...), ні десятковою (0,333...), але в основі 3 це тривіально (0,1 або 1×3−1). Випадки, коли відбуваються нескінченні розширення, залежать від основи та її простих множників.
Спосіб, у який мантиса (включаючи його знак) і експоненту зберігаються в комп’ютері, залежить від реалізації. Загальні формати IEEE детально описані пізніше та в інших місцях, але як приклад у двійковому представленні з рухомою комою одинарної точності (32 біта), , отже, мантисою є рядок із 24 бітів. Наприклад, перші 33 біти числа π :
Можна вимагати, щоб старша цифра мантиси ненульового числа була відмінною від нуля (за винятком випадків, коли відповідний показник степеня буде меншим за мінімальний). Цей процес називається нормалізацією. Для двійкових форматів (у яких використовуються лише цифри0 і1), ця ненульова цифра є обов’язковою1. Таким чином, його не потрібно представляти в пам’яті, дозволяючи формату мати ще один біт точності. Це правило по-різному називається угодою про провідні біти, неявною угодою про біти, угодою про приховані біти або угодою про передбачувані біти.
Альтернативи числам з рухомою комою
Представлення з рухомою комою є найпоширенішим способом представлення в комп’ютерах наближення до дійсних чисел. Однак є альтернативи:
- Представлення з фіксованою комою використовує цілочисельні апаратні операції, керовані програмною реалізацією певної угоди про розташування двійкової або десяткової коми, наприклад, 6 біт або цифр справа. Апаратне забезпечення для маніпулювання цими представленнями є менш дорогим, ніж з рухомою комою, і його також можна використовувати для виконання звичайних цілочисельних операцій. Двійкова фіксована кома зазвичай використовується в програмах спеціального призначення на вбудованих процесорах, які можуть виконувати лише цілочисельну арифметику, але фіксована кома в десятковому вигляді поширена в комерційних програмах.
- Логарифмічні системи числення (LNS) представляють дійсне число логарифмом його абсолютного значення та знакового біта. Розподіл значень подібний до числа з рухомою комою, але крива від значення до представлення (тобто графік функції логарифма) є плавною (за винятком 0). На відміну від арифметики з рухомою комою, у логарифмічній системі числення множення, ділення та піднесення до степеня є простими для реалізації, але додавання та віднімання є складними. (Симетрична) арифметика рівня індексу (LI та SLI) Чарльза Кленшоу, Френка Олвера та Пітера Тернера є схемою, заснованою на узагальненому логарифмічному представленні.
- Конічне представлення з рухомою комою, яке, здається, не використовується на практиці.
- Деякі прості раціональні числа (наприклад, 1/3 і 1/10) не можуть бути точно представлені у двійковій формі з рухомою комою, незалежно від точності. Використання іншої основи дозволяє відобразити деякі з них (наприклад, 1/10 у десятковій комі з рухомою комою), але можливості залишаються обмеженими. Програмні пакети, які виконують раціональну арифметику, представляють числа у вигляді дробів із цілим чисельником і знаменником, і тому можуть точно представляти будь-яке раціональне число. Такі пакети, як правило, повинні використовувати арифметику "bignum" для окремих цілих чисел.
- Інтервальна арифметика дозволяє представляти числа у вигляді інтервалів і отримувати гарантовані межі результатів. Зазвичай він базується на іншій арифметиці, зокрема з рухомою комою.
- Системи комп’ютерної алгебри, такі як Mathematica, Maxima та Maple, часто можуть обробляти ірраціональні числа, наприклад або цілком «формальним» способом (символьне обчислення), не маючи справу з конкретним кодуванням мантиси. Така програма може обчислювати такі вирази, як "" саме тому, оскільки він запрограмований на обробку основної математики безпосередньо, замість використання приблизних значень для кожного проміжного обчислення.
Історія
У 1914 році іспанський інженер Леонардо Торрес Кеведо опублікував «Нариси з автоматики», де він розробив спеціальний електромеханічний калькулятор на основі аналітичної машини Чарльза Беббіджа та описав спосіб узгодженого зберігання чисел з рухомою комою. Він заявив, що числа будуть зберігатися в експоненціальному форматі n x 10, і запропонував три правила, за якими машини можуть реалізовувати послідовне маніпулювання числами з рухомою комою. Для Торреса « n завжди матиме однакову кількість цифр (наприклад, шість), перша цифра n матиме порядок десятих, друга — сотих тощо, і кожну кількість записуватимемо у формі: n ; m." Формат, який він запропонував, показує потребу в значенні фіксованого розміру, який зараз використовується для даних з рухомою комою, фіксації розташування десяткової крапки в значенні, щоб кожне представлення було унікальним, і як форматувати такі числа, вказавши синтаксис які можна було ввести через друкарську машинку, як це було у випадку з його електромеханічним арифмометром у 1920 році.
У 1938 році Конрад Цузе з Берліна створив Z1, перший двійковий, програмований механічний комп'ютер, він використовував 24-бітне двійкове представлення чисел з рухомою комою з 7-бітним порядком зі знаком, 17-бітною мантисою (включаючи один неявний біт) і бітом знака. Більш надійний Z3 на основі реле, був завершений у 1941 році, мав представлення як для додатньої, так і для від'ємної нескінченності; зокрема, він реалізує визначені операції з нескінченністю, такі як , і він зупиняється на невизначених операціях, таких як .
Цузе також запропонував, але не завершив, ретельно округлену арифметику з рухомою комою, яка включає і представлення NaN, випереджаючи особливості стандарту IEEE на чотири десятиліття. Навпаки, фон Нейман рекомендував не використовувати числа з рухомою комою для машини IAS 1951 року, стверджуючи, що арифметика з фіксованою комою є кращою.
Першим комерційним комп'ютером з апаратним забезпеченням для операцій з рухомою комою був комп'ютер Z4 Zuse, розроблений у 1942–1945 роках. У 1946 році Bell Laboratories представила модель V, яка реалізувала десяткові числа з рухомою комою.
Комп'ютер Pilot ACE мав двійкову арифметику з рухомою комою, і він почав працювати в 1950 році в Національній фізичній лабораторії Великобританії. Пізніше тридцять три машини були комерційно продані як English Electric DEUCE. Арифметика фактично реалізована в програмному забезпеченні, але з тактовою частотою в один мегагерц швидкість операцій з рухомою та фіксованою комою в цій машині спочатку була вищою, ніж у багатьох конкуруючих комп’ютерів.
Масове виробництво IBM 704 розпочалося в 1954 році; він запровадив використання зміщеного показника степеня. Протягом багатьох десятиліть після цього апаратне забезпечення з рухомою комою було, як правило, додатковою функцією, а комп’ютери, які його мали, називали «науковими комп’ютерами» або такими, що мали можливість «наукових обчислень» (SC). Лише після випуску Intel i486 у 1989 році персональні комп’ютери загального призначення мали апаратне забезпечення з рухомою комою як стандартну функцію.
Серія UNIVAC 1100/2200, представлена в 1962 році, підтримувала два представлення з рухомою комою:
- Одинарна точність : 36 біт, організованих як 1-бітовий знак, 8-бітний порядок і 27-бітна мантиса.
- Подвійна точність : 72 біти, організовані як 1-бітний знак, 11-бітний порядок і 60-бітова мантиса.
IBM 7094, також представлений у 1962 році, підтримував представлення одинарної та подвійної точності, але не мав відношення до представлень UNIVAC. Дійсно, у 1964 році IBM представила шістнадцяткове представлення з рухомою комою у своїх мейнфреймах System/360 ; ці ж представлення все ще доступні для використання в сучасних системах z/Architecture. У 1998 році IBM реалізувала IEEE-сумісну двійкову арифметику з рухомою комою у своїх мейнфреймах; у 2005 році IBM також додала сумісну з IEEE десяткову арифметику з рухомою комою.
Спочатку комп’ютери використовували багато різних представлень для чисел з рухомою комою. Відсутність стандартизації на рівні мейнфреймів була постійною проблемою на початку 1970-х років для тих, хто писав і підтримував вихідний код вищого рівня; ці стандарти виробників із рухомою комою відрізнялися розмірами слів, представленнями, поведінкою округлення та загальною точністю операцій. Сумісність із рухомою комою в багатьох обчислювальних системах відчайдушно потребувала стандартизації на початку 1980-х років, що призвело до створення стандарту IEEE 754, коли слово 32-bit (або 64-bit) стало звичним. Цей стандарт значною мірою ґрунтувався на пропозиції Intel, яка розробляла матемтичний співпроцесор i8087; Motorola, яка приблизно в той же час розробляла 68000, також внесла значний внесок.
У 1989 році математик і інформатик Вільям Кахан був удостоєний премії Тюрінга за те, що він був головним архітектором цієї пропозиції; йому допомагали його учень Джером Кунен і запрошений професор Гарольд Стоун.
Серед нововведень x86 такі:
- Точно задане представлення з рухомою комою на рівні бітового рядка, щоб усі сумісні комп’ютери інтерпретували бітові шаблони однаково. Це дає змогу точно й ефективно передавати числа з рухомою комою з одного комп’ютера на інший (після врахування порядку байтів).
- Точно задана поведінка для арифметичних операцій: потрібно отримати результат так, ніби нескінченно точна арифметика використовується для отримання значення, яке потім округлюється відповідно до певних правил. Це означає, що сумісна комп’ютерна програма завжди дасть той самий результат, якщо їй нададуть певний вхідний сигнал, таким чином пом’якшуючи майже містичну репутацію обчислень із рухомою комою завдяки своїй, здавалося б, недетермінованій поведінці.
- Здатність надзвичайних умов (переповнення, ділення на нуль тощо) поширюватися через обчислення м’яким чином, а потім контролюватись програмним забезпеченням.
Діапазон чисел з рухомою комою
Число з рухомою комою складається з двох компонентів із фіксованою комою, діапазон яких залежить виключно від кількості бітів або цифр у їх представленні. У той час як компоненти лінійно залежать від свого діапазону, діапазон із рухомою комою лінійно залежить від значущого діапазону та експоненціально від діапазону експонентного компонента, який додає надзвичайно широкий діапазон до числа.
У типовій комп’ютерній системі двійкове число з рухомою комою подвійної точності (64-розрядне) має коефіцієнт 53 біти (включаючи 1 неявний біт), експоненту 11 бітів і 1 знаковий біт. Оскільки 2 10 = 1024, повний діапазон додатних нормальних чисел з рухомою комою в цьому форматі становить від 2 −1022 ≈ 2 × 10 −308 до приблизно 2 1024 ≈ 2 × 10 308.
Кількість нормальних чисел з рухомою комою в системі (B, P, L, U), де
- B — основа системи,
- P — точність мантиси (за основою B),
- L – найменший показник системи,
- U — найбільший показник системи,
є ..
Існує найменше додатне нормальне число з рухомою комою,
- Нижній рівень = UFL = , ,
яка має 1 як початкову цифру та 0 для решти цифр мантиси, і найменше можливе значення для експоненти.
Є найбільше число з рухомою комою,
- Рівень переповнення = OFL = , ,
який має B − 1 як значення для кожної цифри мантиси і найбільше можливе значення для експоненти.
Крім того, існують репрезентовані значення строго між −UFL і UFL. А саме позитивні та негативні нулі, а також субнормальні числа.
IEEE 754: числа з рухомою комою в сучасних комп’ютерах
Основна стаття: IEEE 754
IEEE стандартизував комп’ютерне представлення двійкових чисел з рухомою комою в IEEE 754 (він же IEC 60559) у 1985 році. Цього першого стандарту дотримуються майже всі сучасні машини. Його було переглянуто в 2008 році. Мейнфрейми IBM підтримують власний шістнадцятковий формат з рухомою комою IBM і десятковий формат з рухомою комою IEEE 754-2008 на додаток до двійкового формату IEEE 754. Серія Cray T90 мала версію IEEE, але SV1 все ще використовує формат Cray з рухомою комою.
Стандарт передбачає багато тісно пов'язаних форматів, що відрізняються лише декількома деталями. П'ять із цих форматів називаються базовими форматами, а інші — форматами розширеної точності та форматом розширеної точності. Три формати особливо широко використовуються в комп’ютерному обладнанні та мовах: [ потрібна цитата ]
- Одинарна точність (binary32), зазвичай використовується для представлення типу "float" у родині мов C. Це двійковий формат, який займає 32 біти (4 байти), а його символ має точність 24 біти (приблизно 7 десяткових цифр).
- Подвійна точність (binary64), зазвичай використовується для представлення типу "double" у родині мов C. Це двійковий формат, який займає 64 біти (8 байтів) і має точність 53 біти (приблизно 16 десяткових цифр).
- Подвійний розширений формат, який також неоднозначно називають форматом "розширеної точності". Це двійковий формат, який займає щонайменше 79 бітів (80, якщо не використовується правило прихованих/неявних бітів), а його мантиса має точність щонайменше 64 біти (приблизно 19 десяткових цифр). Стандарти C99 і C11 сімейства мов C у своєму додатку F ("IEC 60559 арифметика з рухомою комою") рекомендують надавати такий розширений формат як " long double ". Архітектура x86 забезпечує формат, що задовольняє мінімальні вимоги (64-бітна мантиса, 15-бітний експонентний показник, що відповідає 80 бітам). Часто на таких процесорах цей формат можна використовувати з "long double", хоча розширена точність недоступна з MSVC. Для цілей вирівнювання багато інструментів зберігають це 80-бітове значення в 96- або 128-бітному просторі. На інших процесорах «довга подвійна» може означати більший формат, такий як почетверна точність, або просто подвійна точність, якщо будь-яка форма розширеної точності недоступна.
Підвищення точності представлення з рухомою комою зазвичай зменшує кількість накопиченої помилки округлення, викликаної проміжними обчисленнями. Інші формати IEEE включають:
- Формати з рухомою комою Decimal64 і decimal128. Ці формати (особливо decimal128) широко поширені у фінансових операціях, оскільки разом із форматом decimal32 вони дозволяють правильно округляти десяткове число.
- Четверна точність (двійковий 128). Це двійковий формат, який займає 128 біт (16 байт) і має точність 113 біт (приблизно 34 десяткові цифри).
- Половина точності, також називається binary16, 16-бітне значення з рухомою комою. Він використовується в графічній мові NVIDIA Cg і в стандарті openEXR.
Будь-яке ціле число з абсолютним значенням менше 2 24 може бути точно представлено у форматі одинарної точності, а будь-яке ціле число з абсолютним значенням менше 2 53 може бути точно представлено у форматі подвійної точності. Крім того, можна представити широкий діапазон степенів, що вдвічі більше такого числа. Ці властивості іноді використовуються для чисто цілих даних, щоб отримати 53-розрядні цілі на платформах, які мають подвійну точність з рухомою комою, але лише 32-розрядні цілі.
Стандарт визначає деякі спеціальні значення та їх представлення: позитивна нескінченність (+∞), негативна нескінченність (−∞), негативний нуль (−0), відмінний від звичайного («позитивного») нуля, і значення «не числа» (NaN).
Порівняння чисел з рухомою комою, як визначено стандартом IEEE, дещо відрізняється від звичайного цілочисельного порівняння. Від’ємний і додатний нулі порівнюються, а кожен NaN не дорівнює кожному значенню, включаючи себе. Усі скінченні числа з рухомою комою строго менші за +∞ і строго більші за −∞, і вони впорядковані так само, як і їхні значення (у наборі дійсних чисел).
Внутрішнє подання
Числа з рухомою комою зазвичай упаковуються в дані комп’ютера як біт знака, поле експоненти та мантиса зліва направо. Для двійкових форматів IEEE 754 (базового та розширеного), які мають існуючі апаратні реалізації, вони розподіляються таким чином:
Тип | Кількість бітів | Зсув експоненти | Точність бітів | Кількість десяткових цифр | ||||
---|---|---|---|---|---|---|---|---|
Знак | Порядок | Мантиса | Разом | |||||
половинна (IEEE 754-2008) | 1 | 5 | 10 | 16 | 15 | 11 | ~3.3 | |
одинарна | 1 | 8 | 23 | 32 | 127 | 24 | ~7.2 | |
подвійна | 1 | 11 | 52 | 64 | 1023 | 53 | ~15.9 | |
розширена точність x86 | 1 | 15 | 64 | 80 | 16383 | 64 | ~19.2 | |
четверна | 1 | 15 | 112 | 128 | 16383 | 113 | ~34,0 |
Хоча експонента може бути додатною або від’ємною, у двійкових форматах вона зберігається як число без знаку, до якого додається фіксоване «зміщення». Значення всіх нулів у цьому полі зарезервовані для нулів і субнормальних чисел ; значення всіх одиниць зарезервовані для нескінченностей і NaN. Діапазон експонент для звичайних чисел становить [−126, 127] для одинарної точності, [−1022, 1023] для подвійної або [−16382, 16383] для квадратичної. Нормальні числа виключають субнормальні значення, нулі, нескінченності та NaN.
У двійкових форматах обміну IEEE початковий 1 біт нормалізованої мантиси фактично не зберігається в даних комп’ютера. Його називають «прихованим» або «неявним» бітом. Через це формат одинарної точності фактично має значущу точність із 24 бітами, формат подвійної точності має 53, а формат quad має 113.
Наприклад, було показано вище, що π, округлене до 24 біт з точністю, має:
- знак = 0; e = 1; s = 110010010000111111011011 (включаючи прихований біт)
Сума зміщення експоненти (127) і експоненти (1) дорівнює 128, тому це представлено у форматі одинарної точності як
- 0 10000000 10010010000111111011011 (за винятком прихованого біта) = 40490FDB як шістнадцяткове число.
Приклад макета для 32-розрядного числа з рухомою комою
і 64-розрядна ("подвійна") розкладка схожа.
Інші відомі формати з рухомою комою
На додаток до широко використовуваних стандартних форматів IEEE 754, інші формати з рухомою комою використовуються або використовувалися в певних доменних областях.
- Microsoft Binary Format (MBF) був розроблений для мовних продуктів Microsoft BASIC, включаючи перший продукт Microsoft Altair BASIC (1975), TRS-80 LEVEL II, MBASIC CP/M, BASICA IBM PC 5150, MS- DOS GW -BASIC і QuickBASIC до версії 4.00. QuickBASIC версії 4.00 і 4.50 перейшли на формат IEEE 754-1985, але можуть повернутися до формату MBF за допомогою параметра команди /MBF. MBF був розроблений і розроблений на симульованому Intel 8080 Монте Давідоффом, колегою Білла Гейтса, навесні 1975 року для MITS Altair 8800. Початковий випуск у липні 1975 року підтримував формат одинарної точності (32 біти) через вартість 4-кілобайтної пам’яті MITS Altair 8800. У грудні 1975 року 8-кілобайтна версія додала формат подвійної точності (64 біти). Варіант формату з одинарною точністю (40 біт) був прийнятий для інших процесорів, зокрема для MOS 6502 (Apple //, Commodore PET, Atari), Motorola 6800 (MITS Altair 680) і Motorola 6809 (кольоровий комп’ютер TRS-80). Усі мовні продукти Microsoft з 1975 по 1987 роки використовували двійковий формат Microsoft, доки Microsoft не прийняла стандартний формат IEEE-754 у всіх своїх продуктах, починаючи з 1988 року до їхніх поточних випусків. MBF складається з формату MBF одинарної точності (32 біти, «6-розрядний BASIC»), формат MBF розширеної точності (40 біт, «9-розрядний BASIC»), і формат MBF подвійної точності (64 біти); кожен з них представлений 8-бітним експонентою, за яким йде знаковий біт, за яким слідує мантиса відповідно 23, 31 і 55 біт.
- Формат Bfloat16 потребує такого ж об’єму пам’яті (16 біт), що й формат напівточності IEEE 754, але експоненті виділяє 8 біт замість 5, таким чином забезпечуючи той самий діапазон, що й число одинарної точності IEEE 754. Компромісом є знижена точність, оскільки завершальне значуще поле зменшено з 10 до 7 біт. Цей формат в основному використовується при навчанні моделей машинного навчання, де діапазон є більш цінним, ніж точність. Багато прискорювачів машинного навчання забезпечують апаратну підтримку цього формату.
- Формат TensorFloat-32 поєднує 8 біт експоненти Bfloat16 з 10 бітами кінцевого значущого поля форматів напівточності, що призводить до розміру 19 біт. Цей формат був представлений компанією Nvidia, яка забезпечує його апаратну підтримку в тензорних ядрах своїх графічних процесорів на основі архітектури Nvidia Ampere. Недоліком цього формату є його розмір, який не є степенем 2. Однак, згідно з Nvidia, цей формат має використовуватися апаратним забезпеченням лише внутрішньо для прискорення обчислень, тоді як вхідні та вихідні дані мають зберігатися в 32-розрядному єдиному файлі. -точний формат IEEE 754.
- Графічні процесори з архітектурою Hopper забезпечують два формати FP8: один із таким же числовим діапазоном, як напівточність (E5M2), і інший із вищою точністю, але меншим діапазоном (E4M3).
Тип | Знак | Експонента | Кінцеве значуще поле | Всього біт |
---|---|---|---|---|
FP8 (E4M3) | 1 | 4 | 3 | 8 |
FP8 (E5M2) | 1 | 5 | 2 | 8 |
Напівточність | 1 | 5 | 10 | 16 |
Bfloat16 | 1 | 8 | 7 | 16 |
TensorFloat-32 | 1 | 8 | 10 | 19 |
Одинарна точність | 1 | 8 | 23 | 32 |
Представлені числа, перетворення та округлення
За своєю природою всі числа, виражені у форматі з рухомою комою, є раціональними числами з кінцевим розкладанням за відповідною основою (наприклад, кінцевим десятковим розкладанням за основою 10 або кінцевим двійковим розкладанням за основою 2). Ірраціональні числа, такі як π або √2, або некінцеві раціональні числа, повинні бути апроксимовані. Кількість цифр (або бітів) точності також обмежує набір раціональних чисел, які можуть бути представлені точно. Наприклад, десяткове число 123456789 не може бути точно представлено, якщо доступні лише вісім десяткових цифр точності (воно буде округлено до одного з двох значень, які можна представити, 12345678 × 101 або 12345679 × 101), те ж саме стосується не кінцевих цифр (.5 округляються до .55555555 або .55555556).
Коли число представлено в певному форматі (наприклад, рядок символів), який не є власним представленням із рухомою комою, що підтримується комп’ютерною реалізацією, тоді воно потребуватиме перетворення, перш ніж його можна буде використовувати в цій реалізації. Якщо число можна точно представити у форматі з рухомою комою, то перетворення є точним. Якщо немає точного представлення, тоді для перетворення потрібно вибрати, яке число з рухомою комою використовувати для представлення початкового значення. Вибране представлення матиме значення, відмінне від оригіналу, а відкориговане таким чином значення називається округленим значенням.
Чи має раціональне число кінцеве розширення, залежить від основи. Наприклад, за основою 10 число 1/2 має закінчення (0,5), тоді як число 1/3 не має (0,333...). За основою 2 завершуються лише раціональні числа зі знаменниками, які є степенями 2 (наприклад, 1/2 або 3/16). Будь-яке раціональне число зі знаменником, який має простий множник, відмінний від 2, матиме нескінченне двійкове розкладання. Це означає, що числа, які здаються короткими та точними, коли записуються в десятковому форматі, можуть потребувати наближення під час перетворення у двійкові числа з рухомою комою. Наприклад, десяткове число 0,1 не можна представити у двійковій формі з рухомою комою будь-якої кінцевої точності; точне двійкове представлення матиме послідовність «1100», яка продовжується нескінченно:
- e = −4; s = 1100110011001100110011001100110011...,
де, як і раніше, s — мантиса, а e — показник степеня.
При округленні до 24 бітів це стає
- e = −4; s = 110011001100110011001101,
що насправді дорівнює 0,100000001490116119384765625 у десятковій системі.
Як наступний приклад, дійсне число π, представлене у двійковій системі у вигляді нескінченної послідовності бітів, є
- 11,0010010000111111011010101000100010000101101000110000100011010011...
але є
- 11,0010010000111111011011
при наближенні округленням до 24 бітів.
У двійковій формі з рухомою комою одинарної точності це представлено як s = 1,10010010000111111011011 з e = 1. Це має десяткове значення
- 3,141592 7410125732421875,
тоді як точніше наближення справжнього значення π є
- 3,14159265358979323846264338327950 ...
Результат округлення відрізняється від справжнього значення приблизно на 0,03 частини на мільйон і збігається з десятковим представленням числа π у перших 7 цифрах. Різниця полягає в похибці дискретизації і обмежена епсилоном машини.
Арифметична різниця між двома послідовними числами з рухомою комою, які можна представити й мають однаковий показник, називається одиницею на останньому місці (ULP). Наприклад, якщо між представленими числами 1,45a70c22 hex і 1,45a70c24 hex немає числа, яке можна представити, ULP дорівнює 2×16 −8 або 2 −31. Для чисел із частиною експоненти за основою 2, яка дорівнює 0, тобто чисел із абсолютним значенням, вищим або рівним 1, але меншим за 2, ULP дорівнює рівно 2 −23 або приблизно 10 −7 з одиничною точністю, і точно 2 −53 або приблизно 10 −16 у подвійній точності. Обов’язкова поведінка обладнання, сумісного з IEEE, полягає в тому, щоб результат був у межах половини ULP.
Режими округлення
Округлення використовується, коли точний результат операції з рухомою комою (або перетворення у формат із рухомою комою) потребує більше цифр, ніж цифр у мантисі. IEEE 754 вимагає правильного округлення : тобто округлений результат виглядає так, ніби для обчислення значення було використано нескінченно точну арифметику, а потім округлено (хоча в реалізації для забезпечення цього потрібні лише три додаткові біти). Існує кілька різних схем округлення (або режимів округлення). Історично типовим підходом було скорочення. З моменту введення IEEE 754 метод за замовчуванням (округлення до найближчого, прив’язка до парного, іноді званий банківським округленням) використовується частіше. Цей метод округлює ідеальний (нескінченно точний) результат арифметичної операції до найближчого значення, яке можна представити, і дає це представлення як результат. У разі рівності вибирається значення, за якого мантиса закінчується парною цифрою. Стандарт IEEE 754 вимагає застосування однакового округлення до всіх основних алгебраїчних операцій, включаючи квадратний корінь і перетворення, коли є числовий результат (не NaN). Це означає, що результати операцій IEEE 754 повністю визначені у всіх бітах результату, за винятком представлення NaN. (Функції «Бібліотеки», такі як косинус і логарифм, не є обов’язковими.)
Також доступні альтернативні варіанти округлення. IEEE 754 визначає такі режими округлення:
- округлення до найближчого, де прив’язує округлення до найближчої парної цифри в необхідній позиції (за замовчуванням і на сьогоднішній день найпоширеніший режим)
- округлення до найближчого, де округлення від нуля (необов’язковий для двійкового числа з рухомою комою та зазвичай використовується в десятковому)
- округлення в більшу сторону (до +∞; негативні результати, таким чином, округлення до нуля)
- округлити вниз (у бік −∞; негативні результати, таким чином, округлити від нуля)
- округлення до нуля (усічення; це подібно до звичайної поведінки перетворень з рухомою комою в ціле число, які перетворюють −3,9 у −3 і 3,9 у 3)
Альтернативні режими корисні, коли кількість введеної помилки має бути обмеженою. Програми, які вимагають обмеженої помилки, це числення з рухомою комою та інтервальна арифметика. Альтернативні режими округлення також корисні для діагностики чисельної нестабільності: якщо результати підпрограми суттєво відрізняються між округленням до + і − нескінченності, то вона, ймовірно, чисельно нестабільна та на неї впливає помилка округлення.
Перетворення двійкової системи в десяткову з мінімальною кількістю цифр
Перетворення двійкового числа з рухомою комою подвійної точності в десятковий рядок є звичайною операцією, але алгоритм, який дає водночас точні та мінімальні результати, не з’явився у друку до 1990 року, коли Стіл і Вайт випустили Dragon4. Деякі з покращень з тих пір включають:
- dtoa.c Девіда М. Гея, практична реалізація багатьох ідей у Dragon4 з відкритим кодом.
- Grisu3 із 4-кратним прискоренням, оскільки він усуває використання bignums. Необхідно використовувати з резервним варіантом, оскільки він не працює приблизно в 0,5% випадків.
- Errol3, завжди успішний алгоритм, подібний до Grisu3, але повільніший за нього. Мабуть, не так добре, як Грізу з достроковим припиненням із запасним ударом.
- Ryū, завжди успішний алгоритм, швидший і простіший за Grisu3.
- Schubfach, завжди успішний алгоритм, який базується на подібній ідеї до Ryū, розроблений майже одночасно та незалежно. У певних тестах працює краще, ніж Ryū та Grisu3.
Багато сучасних мовних середовищ виконання використовують Grisu3 із резервним Dragon4.
Перетворення десяткової системи в двійкову
Проблема розбору десяткового рядка в двійкове представлення FP є складною, точний синтаксичний аналізатор не з’явився до роботи Клінгера 1990 року (реалізовано в dtoa.c). Подальша робота також просувалась у напрямку швидшого аналізу.
Операції з рухомою комою
Для зручності представлення та розуміння в прикладах буде використано десяткове число з точністю до 7 цифр, як у форматі IEEE 754 decimal32. Фундаментальні принципи однакові в будь-якому розрахунку чи точності, за винятком того, що нормалізація необов’язкова (вона не впливає на числове значення результату). Тут s позначає мантису, а e позначає показник степеня.
Додавання і віднімання
Простий спосіб додавання чисел з рухомою комою полягає в тому, щоб спочатку представити їх за допомогою того самого показника. У наведеному нижче прикладі друге число зсувається праворуч на три цифри, а потім виконується звичайний метод додавання:
123456,7 = 1,234567 × 10^5 101,7654 = 1,017654 × 10^2 = 0,001017654 × 10^5
Отже: 123456,7 + 101,7654 = (1,234567 × 10^5) + (1,017654 × 10^2) = (1,234567 × 10^5) + (0,001017654 × 10^5) = (1,234567 + 0,001017654) × 10^5 = 1,235584654 × 10^5
Детально:
e=5; s=1,234567 (123456,7) + e=2; s=1,017654 (101,7654)
e=5; s=1,234567 + e=5; s=0,001017654 (після зсуву) -------------------- e=5; s=1,235584654 (дійсна сума: 123558,4654)
Це справжній результат, точна сума операндів. Його буде округлено до семи цифр, а потім нормалізовано, якщо необхідно. Кінцевий результат є
e=5; s=1,235585 (кінцева сума: 123558,5)
Наймолодші три цифри другого операнда (654) по суті втрачаються. Це помилка округлення. У крайньому випадку сума двох ненульових чисел може дорівнювати одному з них:
e=5; s=1,234567 + e=−3; s=9,876543
e=5; s=1,234567 + e=5; s=0,00000009876543 (після зсуву) ---------------------- e=5; s=1,23456709876543 (справжня сума) e=5; s=1,234567 (після округлення та нормалізації)
У наведених вище концептуальних прикладах здається, що суматор повинен надати велику кількість додаткових цифр, щоб забезпечити правильне округлення; однак, для двійкового додавання або віднімання з використанням ретельних методів реалізації лише захисний біт, біт округлення та один додатковий липкий біт потрібно виносити за межі точності операндів.
Інша проблема втрати значущості виникає, коли віднімаються наближення до двох майже рівних чисел. У наступному прикладі e = 5; s = 1,234571 і e = 5; s = 1,234567 є наближеними значеннями раціональних чисел 123457,1467 і 123456,659.
e=5; s=1,234571 − e=5; s=1,234567 ---------------- e=5; s=0,000004 e=−1; s=4,000000 (після округлення та нормалізації)
Різниця з рухомою комою обчислюється точно, тому що числа близькі — лема Штербенза гарантує це, навіть у випадку недоповнення, коли підтримується поступове недоповнення. Незважаючи на це, різниця вихідних чисел e = −1; s = 4,877000, що більш ніж на 20% відрізняється від різниці e = −1; s = 4,000000 наближень. У крайніх випадках усі значущі цифри точності можуть бути втрачені. Це скасування ілюструє небезпеку припущення, що всі цифри обчисленого результату є значущими. Робота з наслідками цих помилок є темою числового аналізу ; див. також проблеми з точністю.
Множення і ділення
Для множення значущі множаться, а показники додаються, а результат округлюється та нормалізується.
e=3; s=4,734612 × e=5; s=5,417242 ----------------------- e=8; s=25,648538980104 (справжній продукт) e=8; s=25,64854 (після округлення) e=9; s=2,564854 (після нормалізації)
Подібним чином ділення виконується шляхом віднімання показника степеня дільника від показника степеня діленого та ділення значущого діленного на значуще дільника.
Немає проблем зі скасуванням або поглинанням при множенні або діленні, хоча невеликі помилки можуть накопичуватися під час послідовного виконання операцій. На практиці спосіб виконання цих операцій у цифровій логіці може бути досить складним (див. Алгоритм множення Бута та Алгоритм ділення). Щоб отримати швидкий і простий метод, перегляньте метод Горнера.
Літеральний синтаксис
Літерали для чисел з рухомою комою залежать від мов. Вони зазвичай використовують e
або E
для позначення наукової нотації. Мова програмування C і стандарт IEEE 754 також визначають синтаксис шістнадцяткового літералу з експонентою за основою 2 замість 10. У таких мовах, як C, коли десятковий експонент пропускається, десяткова кома необхідна, щоб відрізнити їх від цілих чисел. Інші мови не мають цілочисельного типу (наприклад, JavaScript) або допускають перевантаження числових типів (наприклад, Haskell). У цих випадках цифрові рядки, такі як, 123
також можуть бути літералами з рухомою комою.
Приклади літералів із рухомою комою:
99.9
-5000.12
6.02e23
-3e-45
0x1.fffffep+127
у C та IEEE 754
Робота з винятковими випадками
Додаткова інформація: IEEE 754 § Обробка винятків
Обчислення з рухомою комою в комп’ютері можуть стикатися з проблемами трьох типів:
- Операція може бути математично невизначеною, як-от ∞/∞ або ділення на нуль.
- Операція може бути допустимою в принципі, але не підтримуватися певним форматом, наприклад, обчислення квадратного кореня з −1 або аверссинуса з 2 (обидва з яких призводять до комплексних чисел).
- Операція може бути допустимою в принципі, але результат може бути неможливим для представлення у вказаному форматі, оскільки експонента занадто велика або занадто мала для кодування в полі експоненти. Така подія називається переповненням (експонента надто велика), underflow (експонента надто мала) або деноралізацією (втрата точності).
До стандарту IEEE такі умови зазвичай спричиняли завершення програми або запускали якусь пастку, яку програміст міг зловити. Те, як це працювало, залежало від системи, тобто програми з рухомою комою не були переносними. (Термін «виняток», який використовується в IEEE 754, є загальним терміном, що означає виняткову умову, яка не обов’язково є помилкою, і є іншим використанням, ніж зазвичай визначене в мовах програмування, таких як C++ або Java, у яких « винятком " є альтернативний потік керування, ближче до того, що називається "пастка" в термінології IEEE 754.)
Тут обговорюється необхідний стандартний метод обробки винятків відповідно до IEEE 754 (додаткове перехоплення IEEE 754 та інші режими «альтернативної обробки винятків» не обговорюються). Арифметичні винятки (за замовчуванням) повинні бути записані в "липких" бітах прапора стану. Те, що вони «липкі», означає, що вони не скидаються наступною (арифметичною) операцією, а залишаються встановленими до явного скидання. Таким чином, використання «липких» прапорів дозволяє відкласти тестування виняткових умов до завершення повного виразу з рухомою комою або підпрограми: без них виняткові умови, які інакше не можна було б проігнорувати, вимагали б явного тестування відразу після кожної операції з рухомою комою. За замовчуванням операція завжди повертає результат відповідно до специфікації без переривання обчислення. Наприклад, 1/0 повертає +∞, а також встановлює біт прапора ділення на нуль (це значення за замовчуванням ∞ призначене для того, щоб часто повертати кінцевий результат під час використання в наступних операціях, тому його безпечно ігнорувати).
Оригінальний стандарт IEEE 754, однак, не рекомендував операції для обробки таких наборів бітів арифметичних винятків. Отже, хоча вони були реалізовані в апаратному забезпеченні, початкові реалізації мови програмування зазвичай не надавали засобів доступу до них (крім асемблера). З часом деякі стандарти мов програмування (наприклад, C99 /C11 і Fortran) були оновлені, щоб визначити методи доступу та зміни бітів прапора стану. Версія стандарту IEEE 754 2008 року тепер визначає кілька операцій для доступу та обробки бітів арифметичних прапорів. Модель програмування базується на одному потоці виконання, і використання їх декількома потоками має оброблятися засобами, що не входять до стандарту (наприклад, C11 вказує, що прапори мають локальне зберігання потоків).
IEEE 754 визначає п’ять арифметичних винятків, які мають бути записані в прапори стану («липкі біти»):
- inexact, встановлюється, якщо округлене (і повернуте) значення відрізняється від математично точного результату операції.
- underflow, встановлюється, якщо округлене значення крихітне (як визначено в IEEE 754) і неточне (або, можливо, обмежене, якщо воно має втрати денормалізації, згідно з версією IEEE 754 1985 року), повертаючи субнормальне значення, включаючи нулі.
- overflow, встановлюється, якщо абсолютне значення округленого значення занадто велике для представлення. Повертається нескінченне або максимальне кінцеве значення, залежно від того, яке округлення використовується.
- divide-by-zero, встановлюється, якщо результат нескінченний із заданими кінцевими операндами, повертаючи нескінченність, або +∞, або −∞.
- invalid, встановлюється, якщо дійсний результат не може бути повернутий, наприклад sqrt(-1) або 0/0, повертаючи тихий NaN.
Значення, що повертається за замовчуванням для кожного з винятків, призначене для надання правильного результату в більшості випадків, так що винятки можна ігнорувати в більшості кодів. inexact повертає правильно округлений результат, а underflow повертає значення, яке менше або дорівнює найменшому позитивному нормальному числу за величиною, і його майже завжди можна ігнорувати. divide-by-zero точно повертає нескінченність, яка, як правило, потім ділить скінченне число та дає нуль, або згодом видає недійсний виняток, якщо ні, і тому його також зазвичай можна ігнорувати. Наприклад, ефективний опір n резисторів, з’єднаних паралельно (див. рис. 1), визначається як. Якщо виникає коротке замикання з встановити 0, поверне +нескінченність, що дасть фінал 0, як і очікувалося (див. приклад обґрунтування дизайну IEEE 754 для іншого прикладу).
Переповнення та недійсні винятки зазвичай не можна ігнорувати, але вони не обов’язково представляють помилки: наприклад, підпрограма пошуку кореня, як частина її нормальної роботи, може оцінити передану функцію зі значеннями за межами її домену, повертаючи NaN і недійсний прапор винятку , який слід ігнорувати, доки не буде знайдено корисну початкову кому.
Проблеми з точністю
Той факт, що числа з рухомою комою не можуть точно представляти всі дійсні числа, а операції з рухомою комою не можуть точно представляти справжні арифметичні операції, призводить до багатьох несподіваних ситуацій. Це пов’язано зі скінченною точністю, з якою комп’ютери зазвичай представляють числа.
Наприклад, десяткові числа 0,1 і 0,01 не можуть бути представлені точно як двійкові числа з рухомою комою. У двійковому32 форматі IEEE 754 з його 24-бітною мантисою спроби звести наближення до 0,1 не є ані 0,01, ані найближче до нього число, яке можна представити. Десяткове число 0,1 представлено у двійковій системі як e = −4 ; s = 110011001100110011001101, тобто
0,100000001490116119384765625 точно.
Зведення цього числа в квадрат дає
0,010000000298023226097399174250313080847263336181640625 точно.
Зведення його в квадрат із округленням до 24-бітної точності дає
0,010000000707805156707763671875 точно.
Але число, яке можна представити найближче до 0,01, є
0,009999999776482582092285156250 точно.
Крім того, нерепрезентативність π (та π/2) означає, що спроба обчислення tan(π/2) не дасть результату нескінченності, і навіть не буде переповнення у звичайних форматах з рухомою комою (за умови точного виконання тен). Стандартне апаратне забезпечення з рухомою комою просто не може спробувати обчислити tan(π/2), оскільки π/2 не може бути представлено точно. Це обчислення в C:
/* Достатньо цифр, щоб переконатися, що ми отримуємо правильне наближення. */ подвійне пі = 3,1415926535897932384626433832795 ; подвійний z = тан (пі / 2,0);
дасть результат 16331239353195370,0. З одиничною точністю (з використанням tanf
функції) результат буде −22877332,0.
Таким же чином, спроба обчислення sin(π) не дасть нуля. Результат буде (приблизно) 0,1225 × 10 −15 з подвійною точністю або −0,8742 × 10 −7 з одинарною точністю.
Хоча додавання та множення з рухомою комою комутативні (a + b = b + a та a × b = b × a), вони не обов’язково асоціативні. Тобто (a + b) + c не обов’язково дорівнює a + (b + c). Використовуючи 7-значну та десяткову арифметику:
a = 1234,567, b = 45,67834, c = 0,0004
(a + b) + c: 1234.567 (a) + 45,67834 (б) ____________ 1280,24534 округляється до 1280,245
1280,245 (а + б) + 0,0004 (c) ____________ 1280,2454 округляється до 1280,245 ← (a + b) + c
a + (b + c): 45,67834 (б) + 0,0004 (c) ____________ 45,67874
1234.567 (a) + 45,67874 (б + в) ____________ 1280,24574 округлює до 1280,246 ← a + (b + c)
Вони також не обов'язково є розподільними. Тобто (a + b) × c може не збігатися з a × c + b × c :
1234,567 × 3,333333 = 4115,223 1,234567 × 3,333333 = 4,115223 4115,223 + 4,115223 = 4119,338 але 1234,567 + 1,234567 = 1235,802 1235,802 × 3,333333 = 4119,340
Окрім втрати значущості, неможливості точного представлення таких чисел, як π і 0,1, та інших незначних неточностей, можуть виникнути такі явища:
- Скасування : віднімання майже рівних операндів може призвести до надзвичайної втрати точності. Коли ми віднімаємо два майже рівні числа, ми встановлюємо старші цифри рівними нулю, залишаючи собі лише незначущі та найбільш помилкові цифри. Наприклад, при визначенні похідної функції використовується наступна формула: Інтуїтивно зрозуміло, що h буде дуже близьким до нуля; однак, коли використовуються операції з рухомою комою, найменше число не дасть найкращого наближення похідної. Коли h стає меншим, різниця між f (a + h) і f (a) зменшується, скасовуючи найбільш значущі та найменш помилкові цифри, а найбільш хибні цифри стають більш важливими. У результаті найменше можливе число h дасть більш хибне наближення похідної, ніж дещо більше число. Це, мабуть, найпоширеніша і серйозна проблема точності.
- Перетворення в ціле число не є інтуїтивно зрозумілим: перетворення (63,0/9,0) у ціле число дає 7, але перетворення (0,63/0,09) може дати 6. Це тому, що перетворення зазвичай скорочуються, а не округлюються. Функції підлоги та стелі можуть давати відповіді, які на одиницю відрізняються від інтуїтивно очікуваного значення.
- Обмежений діапазон експонент: результати можуть бути переповненими, що дасть нескінченність, або заниженим, що дасть субнормальне число або нуль. У цих випадках точність буде втрачена.
- Перевірка безпечного ділення проблематична: перевірка того, що дільник не дорівнює нулю, не гарантує, що ділення не переповниться.
- Перевірка на рівність є проблематичною. Дві математично рівні обчислювальні послідовності цілком можуть давати різні значення з рухомою комою.
Інциденти
- 25 лютого 1991 року ракетна батарея MIM -104 Patriot втратила значення і не змогла перехопити ракету «Скад», що наближалася в Дахрані, Саудівська Аравія, що призвело до загибелі 28 солдатів 14-го інтендантського загону армії США.
Точність машини та аналіз зворотних помилок
Машинна точність — це величина, яка характеризує точність системи з рухомою комою та використовується в зворотному аналізі помилок алгоритмів з рухомою комою. Він також відомий як одиниця округлення або машинний епсилон. Зазвичай позначається Ε mach, його значення залежить від конкретного округлення, яке використовується.
З округленням до нуля,
Це важливо, оскільки воно обмежує відносну похибку в представленні будь-якого ненульового дійсного числа x у межах нормалізованого діапазону системи з рухомою комою:
Мінімізація впливу проблем із точністю
Хоча окремі арифметичні операції IEEE 754 гарантовано точні з точністю до половини ULP, складніші формули можуть мати більші помилки з різних причин. Втрата точності може бути суттєвою, якщо проблема або її дані погано обумовлені, тобто правильний результат надчутливий до дрібних збурень у своїх даних. Однак навіть добре обумовлені функції можуть постраждати від значної втрати точності, якщо для цих даних використовується чисельно нестабільний алгоритм: очевидно еквівалентні формулювання виразів на мові програмування можуть помітно відрізнятися своєю чисельною стабільністю. Одним із підходів до усунення ризику такої втрати точності є розробка та аналіз чисельно стабільних алгоритмів, що є метою розділу математики, відомого як чисельний аналіз. Іншим підходом, який може захистити від ризику чисельної нестабільності, є обчислення проміжних (скретч-значень) в алгоритмі з вищою точністю, ніж вимагає кінцевий результат, що може видалити або зменшити на порядки такий ризик: IEEE 754 чотирикратна точність і розширена точність розроблені для цієї мети при обчисленні з подвійною точністю.
Наприклад, наступний алгоритм є прямою реалізацією для обчислення функції A (x) = (x −1) / (exp( x −1) − 1), яка добре обумовлена на 1,0, однак вона може виявляється чисельно нестабільним і втрачає до половини значущих цифр, що містяться в арифметиці, коли обчислюється близько 1,0.
double A(double X) { double Y, Z; // [1] Y = X - 1.0; Z = exp(Y); if (Z != 1.0) Z = Y / (Z - 1.0); // [2] return Z; }
Проте, якщо всі проміжні обчислення виконуються з підвищеною точністю (наприклад, встановлюючи рядок [1] на C99 long double
), тоді можна підтримувати повну точність кінцевого подвійного результату. Альтернативно, чисельний аналіз алгоритму показує, що якщо внести наступну неочевидну зміну до рядка [2]:
Z = log(Z) / (Z - 1.0);
тоді алгоритм стає чисельно стабільним і може виконувати обчислення з повною подвійною точністю.
Для підтримки властивостей таких ретельно побудованих чисельно стабільних програм потрібне обережне поводження з компілятором. Певні «оптимізації», які можуть зробити компілятори (наприклад, операції зміни порядку), можуть працювати проти цілей правильного програмного забезпечення. Існують деякі суперечки щодо недоліків компіляторів і дизайну мови в цій області: C99 є прикладом мови, де такі оптимізації ретельно визначені для підтримки чисельної точності. Перегляньте зовнішні посилання внизу цієї статті.
Детальний опис методів написання високоякісного програмного забезпечення з рухомою комою виходить за рамки цієї статті, і читач має посилання на та інші посилання внизу цієї статті. Кахан пропонує кілька емпіричних правил, які можуть суттєво зменшити на порядки ризик чисельних аномалій, на додаток до більш ретельного чисельного аналізу або замість нього. До них належать: як зазначено вище, обчислення всіх виразів і проміжних результатів із найвищою точністю, яка підтримується апаратним забезпеченням (загальним емпіричним правилом є подвійна точність бажаного результату, тобто обчислення з подвійною точністю для кінцевого результату з одинарною точністю, або з подвійною розширеною або квадратною точністю для результатів до подвійної точності ); і округлення вхідних даних і результатів до точності, необхідної та підтримуваної вхідними даними (перенесення надлишкової точності в кінцевому результаті, що перевищує необхідну та підтримується вхідними даними, може ввести в оману, збільшити вартість зберігання та зменшити швидкість, а надлишок бітів може впливають на збіжність чисельних процедур: зокрема, перша форма ітераційного прикладу, наведеного нижче, збігається правильно при використанні цього практичного правила). Нижче наведено короткі описи кількох додаткових проблем і методів.
Оскільки десяткові дроби часто не можуть бути точно представлені у двійковій формі з рухомою комою, така арифметика є найкращою, коли її просто використовують для вимірювання реальних величин у широкому діапазоні масштабів (таких як орбітальний період місяця навколо Сатурна). або маса протона), і в гіршому випадку, коли очікується моделювання взаємодії величин, виражених у вигляді десяткових рядків, які, як очікується, будуть точними. Прикладом останнього випадку є фінансові розрахунки. З цієї причини фінансове програмне забезпечення, як правило, не використовує двійкове представлення чисел з рухомою комою. «Десятковий» тип даних мов програмування C# і Python, а також десяткові формати стандарту IEEE 754-2008 розроблені для уникнення проблем двійкових представлень із рухомою комою при застосуванні до введених людиною точних десяткових значень., і зробити так, щоб арифметика завжди поводилася належним чином, коли числа друкуються в десятковому вигляді.
Очікування від математики можуть не реалізуватися в області обчислень з рухомою комою. Наприклад, відомо, що , і це , однак на ці факти не можна покладатися, якщо задіяні величини є результатом обчислення з рухомою комою.
Використання перевірки рівності (if (x==y) ...
) вимагає обережності при роботі з числами з рухомою комою. Навіть такі прості вирази, як 0.6/0.2-3==0
, на більшості комп’ютерів не відповідають дійсності (у IEEE 754 подвійна точність, наприклад, 0.6/0.2 - 3
приблизно дорівнює -4,44089209850063e-16). Отже, такі тести іноді замінюють «нечіткими» порівняннями (if (abs(x-y) < epsilon) ...
, де епсилон достатньо малий і адаптований до програми, наприклад 1.0E−13). Доцільність робити це дуже різна, і може знадобитися числовий аналіз для обмеження епсилона. Значення, отримані з представлення первинних даних, і їх порівняння повинні виконуватися з ширшою, розширеною точністю, щоб мінімізувати ризик таких невідповідностей через помилки округлення. Часто краще організувати код таким чином, щоб такі тести були непотрібними. Наприклад, в обчислювальній геометрії точні перевірки того, чи лежить кома на прямій або площині, визначеній іншими комами, можна виконати за допомогою методів адаптивної точності або точної арифметики.
Невеликі помилки в арифметиці з рухомою комою можуть зростати, коли математичні алгоритми виконують операції величезну кількість разів. Кілька прикладів: інверсія матриці, обчислення власного вектора та розв’язування диференціальних рівнянь. Ці алгоритми мають бути дуже ретельно розроблені з використанням чисельних підходів, таких як ітераційне уточнення, якщо вони хочуть добре працювати.
Підсумовування вектора значень з рухомою комою є основним алгоритмом у наукових обчисленнях, тому важливо знати, коли може статися втрата значущості. Наприклад, якщо додавати дуже велику кількість чисел, окремі доданки дуже малі порівняно з сумою. Це може призвести до втрати значущості. Типовим додаванням буде щось на кшталт
3253,671 + 3,141276 ----------- 3256,812
Молодші 3 цифри доданків фактично втрачаються. Припустимо, наприклад, що потрібно додати багато чисел, усі приблизно дорівнюють 3. Після додавання 1000 з них поточна сума становить близько 3000; втрачені цифри не відновлюються. Алгоритм підсумовування Кахана може бути використаний для зменшення помилок. Помилка округлення може вплинути на збіжність і точність ітераційних чисельних процедур. Наприклад, Архімед апроксимував π шляхом обчислення периметрів багатокутників, що вписують і описують коло, починаючи з шестикутників і послідовно подвоюючи кількість сторін. Як зазначалося вище, обчислення можуть бути переорганізовані таким чином, щоб бути математично еквівалентним, але менш схильним до помилок (числовий аналіз).
Дві форми рекурентної формули для описаного многокутника: [ потрібна цитата ]
- перша форма:
- друга форма:
- , що сходяться як
Ось обчислення з використанням арифметики IEEE "double" (мантиса з точністю 53 біти):
i 6 × 2 i × t i, перша форма 6 × 2 i × t i, друга форма -------------------------------------------------- ------- 0 3 .4641016151377543863 3 .4641016151377543863 1 3 .2153903091734710173 3 .2153903091734723496 2 3,1 596599420974940120 3,1 596599420975006733 3 3,14 60862151314012979 3,14 60862151314352708 4 3,14 27145996453136334 3,14 27145996453689225 5 3,141 8730499801259536 3,141 8730499798241950 6 3,141 6627470548084133 3,141 6627470568494473 7 3,141 6101765997805905 3,141 6101766046906629 8 3,14159 70343230776862 3,14159 70343215275928 9 3,14159 37488171150615 3,14159 37487713536668 10 3,141592 9278733740748 3,141592 9273850979885 11 3,141592 7256228504127 3,141592 7220386148377 12 3,1415926 717412858693 3,1415926 707019992125 13 3,1415926 189011456060 3,14159265 78678454728 14 3,1415926 717412858693 3,14159265 46593073709 15 3,14159 19358822321783 3,141592653 8571730119 16 3,1415926 717412858693 3,141592653 6566394222 17 3,1415 810075796233302 3,141592653 6065061913 18 3,1415926 717412858693 3,1415926535 939728836 19 3,141 4061547378810956 3,1415926535 908393901 20 3,14 05434924008406305 3,1415926535 900560168 21 3,14 00068646912273617 3,141592653589 8608396 22 3,1 349453756585929919 3,141592653589 8122118 23 3,14 00068646912273617 3,14159265358979 95552 24 3 .2245152435345525443 3.14159265358979 68907 25 3,14159265358979 62246 26 3,14159265358979 62246 27 3,14159265358979 62246 28 3,14159265358979 62246 Справжнє значення 3,14159265358979323846264338327...
Хоча дві форми рекурентної формули явно математично еквівалентні, перша віднімає 1 від числа, дуже близького до 1, що призводить до все більш проблематичної втрати значущих цифр. Коли рецидив застосовується багаторазово, точність спочатку покращується, але потім погіршується. Він ніколи не стає кращим, ніж приблизно 8 цифр, навіть якщо 53-бітна арифметика повинна мати точність приблизно 16 цифр. Коли використовується друга форма повторення, значення збігається з точністю до 15 цифр.
Оптимізація "Швидка математика".
Вищезазначена відсутність асоціативності операцій з рухомою комою загалом означає, що компілятори не можуть так само ефективно перевпорядковувати арифметичні вирази, як вони могли б з цілочисельною арифметикою та арифметикою з фіксованою комою, створюючи перешкоду для оптимізації, такої як усунення загальних підвиразів і автовекторизація. Опція «швидкої математики» в багатьох компіляторах (ICC, GCC, Clang, MSVC...) вмикає реасоціацію разом із небезпечними припущеннями, такими як відсутність NaN і нескінченні числа в IEEE 754. Деякі компілятори також пропонують більш деталізацію параметри, щоб увімкнути лише реасоціацію. У будь-якому випадку програміст наражається на багато пасток точності, згаданих вище для частини програми, яка використовує «швидку» математику.
У деяких компіляторах (GCC і Clang) увімкнення «швидкої» математики може призвести до того, що програма вимкне субнормальні числа з рухомою комою під час запуску, впливаючи на поведінку з рухомою комою не лише згенерованого коду, але й будь-якої програми, яка використовує такий код як бібліотеку.
У більшості компіляторів Fortran, як це дозволено стандартом ISO/IEC 1539-1:2004 Fortran, повторна асоціація є типовою, а пошкодження значною мірою запобігає налаштування «захистити дужки» (також увімкнено за замовчуванням). Цей параметр запобігає повторному асоціюванню компілятора за межами дужок. Компілятор Intel Fortran є помітним викидом.
Поширеною проблемою у «швидкій» математиці є те, що підвирази можуть бути неоднаково оптимізовані від місця до місця, що призводить до неочікуваних відмінностей. Одне з тлумачень проблеми полягає в тому, що «швидка» математика, реалізована на даний момент, має погано визначену семантику. Одна спроба формалізації «швидкої» математичної оптимізації спостерігається в Icing, перевіреному компіляторі.
«Рухома кома» та «рухома крапка»
В англомовних країнах (див. докладний список десятковий розділювач) при запису чисел ціла частина відділяється від дробової крапкою, то в термінології цих країн фігурує назва «рухома крапка» (англ. floating point). Оскільки в Україні ціла частина числа від дробової традиційно відділяється комою, то для позначення того ж поняття історично використовується термін «рухома кома», проте в літературі та технічній документації можна зустріти обидва варіанти.
Походження назви
Назва «рухома кома» походить від того, що кома в позиційному поданні числа (десяткова кома, або, для комп'ютерів, двійкова кома — далі по тексту просто кома) може бути поміщена де завгодно відносно цифр у рядку. Це положення коми вказується окремо у внутрішньому поданні. Таким чином, подання числа у формі з рухомою комою може розглядатися як комп'ютерна реалізація експоненційного запису чисел.
Перевага використання подання чисел у форматі з рухомою комою порівняно з використанням у форматі з фіксованою комою (і цілими числами) полягає в тому, що можна використовувати істотно ширший діапазон значень за незмінної відносної точності. Наприклад, у формі з фіксованою комою число, що має 8 розрядів у цілій частині і 2 розряди після коми, можна подати у вигляді 123456,78; 8765,43; 123,00 і так далі. У свою чергу, у форматі з рухомою комою (в тих же 8 розрядах) можна записати числа 1,2345678; 1234567,8; 0,000012345678; 12345678000000000 і так далі, але для цього потрібне дворозрядне[] додаткове поле для запису показника степеня 10 від 0 до 1610, при цьому загальне число розрядів складе 8+2=10.
Швидкість виконання комп'ютером операцій з числами, поданими у формі з рухомою комою, вимірюється в мегафлопсах (від англ. FLOPS — число операцій з рухомою комою за секунду), гігафлопсах і так далі, і є однією з основних одиниць вимірювання швидкодії обчислювальних систем.
Нормальна форма та нормалізована форма
Нормальною формою числа з рухомою комою називається така форма, в якій мантиса (без урахування знаку) міститься на напівінтервалі [0; 1) (). Така форма запису має недолік: деякі числа записуються неоднозначно (наприклад, 0,0001 можна записати в 4 формах — 0,0001× 100, 0,001× 10-1, 0,01× 10-2, 0,1× 10-3), тому поширеною (особливо в інформатиці) є й інша форма запису — нормалізована, в якій мантиса десяткового числа набуває значень від 1 (включно) до 10 (НЕ включно), а мантиса двійкового числа набуває значень від 1 (включно) до 2 (НЕ включно) (). У такій формі будь-яке число (крім 0) записується єдиним чином. Недолік полягає в тому, що в такому вигляді неможливо отримати 0, тому представлення чисел в інформатиці передбачає спеціальну ознаку (біт) для числа 0.
Оскільки старший розряд (ціла частина числа) мантиси двійкового числа (крім 0) в нормалізованому вигляді дорівнює «1», то при записі мантиси числа в ЕОМ старший розряд можна не записувати, що й використовується в стандарті IEEE 754. В позиційних системах числення з основою, більшою, ніж 2 (у трійковій, четвірковій та інших), цієї властивості немає.
Використання в обчислювальних машинах
В обчислювальних машинах показник степеня прийнято відокремлювати від мантиси літерою «E» (англ. exponent). Наприклад, число 1,528535047× 10-25 у більшості мов програмування високого рівня записується як 1.528535047E-25.
Див. також
Примітки
- number // Англійсько-український словник з математики та інформатики 2010 р. (Є. Мейнарович, М. Кратко).
- number // Англійсько-українсько-англійський словник наукової мови (фізика та споріднені науки). Частина І англійсько-українська 2010 р. (О. Кочерга, Є. Мейнарович).
- число // Українсько-англійський словник з радіоелектроніки 2015 (Богдан Рицар, Леонід Сніцарук, Роман Мисак).
Посилання
- Арифметика рухомої коми
Література
- Криницкий Н. А., Миронов Г. А., Фролов Г. Д. Программирование. — М. : Государственное издательство физико-математической литературы, 1963. — 384 с.
- Генри С. Уоррен, мл. Глава 15. Числа с плавающей точкой // Алгоритмические трюки для программистов = Hacker's Delight. — М. : Вильямс, 2007. — С. 288. — .
Ця стаття містить , але походження тверджень у ній через практично повну відсутність . |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Chislo z ruho moyu ko moyu forma podannya dijsnih chisel v yakij chislo zberigayetsya u formi mantisi i pokaznika stepenya Chislo z ruhomoyu komoyu maye fiksovanu vidnosnu tochnist zalezhnu vid kilkosti rozryadiv mantisi i zminyuvanu absolyutnu Najchastishe vikoristovuvani podannya zatverdzheno v standarti IEEE 754 Realizaciya matematichnih operacij z chislami z ruhomoyu komoyu u komp yuterah mozhe buti yak aparatnoyu tak i programnoyu Z3 odin z pershih elektromehanichnih programovanih komp yuteriv vikoristovuvav chisla z ruhomoyu komoyu kopiya z Nimeckogo muzeyu v Myunheni V obchislyuvalnij tehnici chisla z ruhomoyu komoyu FP sposib podannya pidmnozhini dijsnih chisel za dopomogoyu cilogo chisla z fiksovanoyu tochnistyu yake nazivayetsya mantisoyu masshtabovanim za dopomogoyu cilogo pokaznika fiksovanoyi osnovi Napriklad 12 345 ce chislo z ruhomoyu komoyu za osnovoyu desyat iz p yatma ciframi tochnosti Odnak na vidminu vid 12 345 12 3456 ne ye chislom z ruhomoyu komoyu za osnovoyu desyat iz p yatma ciframi tochnosti vono potrebuye shesti cifr tochnosti najblizhche chislo z ruhomoyu komoyu lishe z p yati cifr dorivnyuye 12 346 Na praktici bilshist sistem z ruhomoyu komoyu vikoristovuyut osnovu dva hocha takozh poshirena osnova desyat desyatkove chislo z ruhomoyu komoyu Arifmetichni operaciyi z ruhomoyu komoyu taki yak dodavannya ta dilennya nablizhayut vidpovidni arifmetichni operaciyi z dijsnimi chislami shlyahom okruglennya bud yakogo rezultatu yakij sam po sobi ne ye chislom z ruhomoyu komoyu do najblizhchogo chisla z ruhomoyu komoyu Napriklad v arifmetici z ruhomoyu komoyu z tochnistyu do p yati desyatih cifr sumu 12 345 1 0001 13 3451 mozhna okrugliti do 13 345 Termin ruhoma koma oznachaye toj fakt sho koma osnovi chisla mozhe plavati bud de livoruch pravoruch abo mizh znachushimi ciframi chisla Cya poziciya poznachayetsya eksponentoyu tomu komu z ruhomoyu komoyu mozhna vvazhati formoyu naukovogo poznachennya Sistemu z ruhomoyu komoyu mozhna vikoristovuvati dlya podannya z fiksovanoyu kilkistyu cifr chisel duzhe riznih poryadkiv napriklad kilkist metriv mizh galaktikami abo mizh protonami v atomi Z ciyeyi prichini arifmetika z ruhomoyu komoyu chasto vikoristovuyetsya dlya otrimannya duzhe malih i duzhe velikih dijsnih chisel yaki potrebuyut shvidkogo chasu opracyuvannya Rezultatom cogo dinamichnogo diapazonu ye te sho chisla yaki mozhna predstaviti roztashovani nerivnomirno riznicya mizh dvoma poslidovnimi chislami yaki mozhna predstaviti zminyuyetsya zalezhno vid yih eksponenti Protyagom bagatoh rokiv u komp yuterah vikoristovuvali riznomanitni podannya chisel z ruhomoyu komoyu U 1985 roci bulo stvoreno standart IEEE 754 dlya arifmetiki z ruhomoyu komoyu i z 1990 h rokiv najchastishe zustrichayutsya predstavlennya viznacheni IEEE Shvidkist operacij z ruhomoyu komoyu yaka zazvichaj vimiryuyetsya cherez FLOPS ye vazhlivoyu harakteristikoyu komp yuternoyi sistemi osoblivo dlya program yaki peredbachayut intensivni matematichni obchislennya Blok z ruhomoyu komoyu FPU rozmovno matematichnij spivprocesor ce chastina komp yuternoyi sistemi specialno rozroblena dlya vikonannya operacij nad chislami z ruhomoyu komoyu OglyadChisla z ruhomoyu komoyu Predstavlennya chisla viznachaye pevnij sposib koduvannya chisla zazvichaj u viglyadi ryadka cifr Isnuye kilka mehanizmiv za dopomogoyu yakih ryadki cifr mozhut predstavlyati chisla U standartnij matematichnij notaciyi ryadok cifr mozhe mati bud yaku dovzhinu a roztashuvannya komi osnovi vkazuyetsya shlyahom rozmishennya tam yavnogo simvolu krapka krapka abo koma Yaksho komu osnovi ne vkazano to ryadok neyavno predstavlyaye cile chislo a nevkazana koma osnovi bude roztashovana z pravogo kincya ryadka poruch iz molodshoyu cifroyu U sistemah iz fiksovanoyu komoyu poziciya v ryadku vkazuyetsya dlya komi osnovi Takim chinom u shemi z fiksovanoyu komoyu mozhe vikoristovuvatisya ryadok iz 8 desyatkovih cifr iz desyatkovoyu krapkoyu poseredini de 00012345 predstavlyatime 0001 2345 U naukovij notaciyi dane chislo masshtabuyetsya za stepenyami 10 tak sho vono lezhit u pevnomu diapazoni yak pravilo mizh 1 i 10 pri comu koma v osnovi z yavlyayetsya vidrazu pislya pershoyi cifri Yak stepin desyati koeficiyent masshtabuvannya vkazuyetsya okremo v kinci chisla Napriklad orbitalnij period suputnika Yupitera Io stanovit 152 853 5047 sekund znachennya yake bude predstavleno v standartnij formi naukovogo zapisu yak 1 528535047 105 sekund Predstavlennya z ruhomoyu komoyu podibne za koncepciyeyu do naukovoyi notaciyi Logichno chislo z ruhomoyu komoyu skladayetsya z Cifrovij ryadok zi znakom sho oznachaye dodatnim abo vid yemnim ye chislo zadanoyi dovzhini v zadanij osnovi abo osnovi Cej ryadok cifr nazivayut mantisoyu Dovzhina mantisi viznachaye tochnist z yakoyu mozhut buti predstavleni chisla Vvazhayetsya sho polozhennya komi osnovi zavzhdi znahoditsya des u mezhah cifr mantisi chasto vidrazu pislya abo bezposeredno pered starshoyu cifroyu abo pravoruch vid krajnoyi pravoyi najmenshoyi znachushoyi cifri Pokaznik cilogo chisla zi znakom takozh vidomij yak harakteristika abo shkala yakij zminyuye velichinu chisla Shob otrimati znachennya chisla z ruhomoyu komoyu mantisa mnozhitsya na osnovu pidnesenu do stepenya eksponenti sho ekvivalentno zsuvu komi osnovi z yiyi neyavnoyi poziciyi na kilkist znakiv sho dorivnyuye znachennyu eksponenti shob otrimati pravoruch yaksho pokaznik stepenya dodatnij abo livoruch yaksho pokaznik stepenya vid yemnij Vikoristovuyuchi osnovu 10 vidomij desyatkovij zapis yak priklad chislo 152 853 5047 sho maye desyat desyatkovih cifr tochnosti predstavleno yak mantisa 1 528 535 047 razom iz pokaznikom 5 Shob viznachiti faktichne znachennya pislya pershoyi cifri mantisi stavlyat desyatkovu komu i rezultat mnozhat na 105 tobto 1 528535047 105 abo 152 853 5047 Pri zberezhenni takogo chisla ne potribno zberigati osnovu 10 oskilki vona bude odnakovoyu dlya vsogo diapazonu pidtrimuvanih chisel i takim chinom mozhe buti vivedena Simvolichno ce zapisuyetsya tak s b p 1 b e displaystyle frac s b p 1 times b e de s mantisa bez urahuvannya bud yakoyi neyavnoyi desyatkovoyi komi p tochnist kilkist cifr u mantisi b osnova u nashomu prikladi ce chislo desyat a e eksponenta poryadok Istorichno sklalosya tak sho kilka osnov chislennya vikoristovuvalisya dlya predstavlennya chisel z ruhomoyu komoyu prichomu osnova dva dvijkova ye najposhirenishoyu za neyu jde osnova desyat desyatkova z ruhomoyu komoyu ta inshi mensh poshireni riznovidi taki yak osnova shistnadcyat shistnadcyatkova z ruhomoyu komoyu osnova visim visimkove chislo z ruhomoyu komoyu osnova chotiri chetvertinne chislo z ruhomoyu komoyu osnova tri zbalansovana trijka z ruhomoyu komoyu i parna osnova 256 i osnova 65 536 Chislo z ruhomoyu komoyu ye racionalnim chislom oskilki vono mozhe buti predstavlene yak odne cile chislo podilene na inshe napriklad1 45 103 ce 145 100 1000 abo 145 000 100 Osnova viznachaye drobi yaki mozhna predstaviti napriklad 1 5 ne mozhna tochno predstaviti yak chislo z ruhomoyu komoyu za dopomogoyu dvijkovoyi sistemi ale 1 5 mozhna tochno predstaviti za dopomogoyu desyatkovoyi sistemi 0 2 abo2 10 1 Odnak 1 3 ne mozhe buti tochno predstavlena ni dvijkovoyu 0 010101 ni desyatkovoyu 0 333 ale v osnovi 3 ce trivialno 0 1 abo 1 3 1 Vipadki koli vidbuvayutsya neskinchenni rozshirennya zalezhat vid osnovi ta yiyi prostih mnozhnikiv Sposib u yakij mantisa vklyuchayuchi jogo znak i eksponentu zberigayutsya v komp yuteri zalezhit vid realizaciyi Zagalni formati IEEE detalno opisani piznishe ta v inshih miscyah ale yak priklad u dvijkovomu predstavlenni z ruhomoyu komoyu odinarnoyi tochnosti 32 bita p 24 displaystyle p 24 otzhe mantisoyu ye ryadok iz 24 bitiv Napriklad pershi 33 biti chisla p 11001001 00001111 1101101 0 10100010 0 displaystyle 11001001 00001111 1101101 underline 0 10100010 0 U comu dvijkovomu rozshirenni poznachimo poziciyi vid 0 krajnij livij bit abo starshij bit do 32 krajnij pravij bit 24 rozryadna mantisa zupinyatimetsya na poziciyi 23 pokazanij yak pidkreslenij bit0 vishe Nastupnij bit u poziciyi 24 nazivayetsya bitom okruglennya Vin vikoristovuyetsya dlya okruglennya 33 bitnogo nablizhennya do najblizhchogo 24 bitnogo chisla isnuyut specialni pravila dlya polovinnih znachen ale tut ne tak Cej bit yakij ye 1 u comu prikladi dodayetsya do cilogo chisla utvorenogo krajnimi livimi 24 bitami sho daye 11001001 00001111 1101101 1 displaystyle 11001001 00001111 1101101 underline 1 Koli ce zberigayetsya v pam yati za dopomogoyu koduvannya IEEE 754 ce staye mantisoyu Peredbachayetsya sho mantisa maye dvijkovu komu pravoruch vid krajnogo livogo bita Otzhe dvijkove predstavlennya p obchislyuyetsya zliva napravo nastupnim chinom n 0 p 1 bit n 2 n 2 e 1 2 0 1 2 1 0 2 2 0 2 3 1 2 4 1 2 23 2 1 1 5707964 2 3 1415928 displaystyle begin aligned amp left sum n 0 p 1 text bit n times 2 n right times 2 e amp left 1 times 2 0 1 times 2 1 0 times 2 2 0 times 2 3 1 times 2 4 cdots 1 times 2 23 right times 2 1 approx amp 1 5707964 times 2 approx amp 3 1415928 end aligned de p tochnist 24 u comu prikladi n ce poziciya bita mantisi zliva pochinayuchi z0 i zakinchuyuchi o23 tut a e pokaznik stepenya 1 u comu prikladi Mozhna vimagati shob starsha cifra mantisi nenulovogo chisla bula vidminnoyu vid nulya za vinyatkom vipadkiv koli vidpovidnij pokaznik stepenya bude menshim za minimalnij Cej proces nazivayetsya normalizaciyeyu Dlya dvijkovih formativ u yakih vikoristovuyutsya lishe cifri0 i1 cya nenulova cifra ye obov yazkovoyu1 Takim chinom jogo ne potribno predstavlyati v pam yati dozvolyayuchi formatu mati she odin bit tochnosti Ce pravilo po riznomu nazivayetsya ugodoyu pro providni biti neyavnoyu ugodoyu pro biti ugodoyu pro prihovani biti abo ugodoyu pro peredbachuvani biti Alternativi chislam z ruhomoyu komoyu Predstavlennya z ruhomoyu komoyu ye najposhirenishim sposobom predstavlennya v komp yuterah nablizhennya do dijsnih chisel Odnak ye alternativi Predstavlennya z fiksovanoyu komoyu vikoristovuye cilochiselni aparatni operaciyi kerovani programnoyu realizaciyeyu pevnoyi ugodi pro roztashuvannya dvijkovoyi abo desyatkovoyi komi napriklad 6 bit abo cifr sprava Aparatne zabezpechennya dlya manipulyuvannya cimi predstavlennyami ye mensh dorogim nizh z ruhomoyu komoyu i jogo takozh mozhna vikoristovuvati dlya vikonannya zvichajnih cilochiselnih operacij Dvijkova fiksovana koma zazvichaj vikoristovuyetsya v programah specialnogo priznachennya na vbudovanih procesorah yaki mozhut vikonuvati lishe cilochiselnu arifmetiku ale fiksovana koma v desyatkovomu viglyadi poshirena v komercijnih programah Logarifmichni sistemi chislennya LNS predstavlyayut dijsne chislo logarifmom jogo absolyutnogo znachennya ta znakovogo bita Rozpodil znachen podibnij do chisla z ruhomoyu komoyu ale kriva vid znachennya do predstavlennya tobto grafik funkciyi logarifma ye plavnoyu za vinyatkom 0 Na vidminu vid arifmetiki z ruhomoyu komoyu u logarifmichnij sistemi chislennya mnozhennya dilennya ta pidnesennya do stepenya ye prostimi dlya realizaciyi ale dodavannya ta vidnimannya ye skladnimi Simetrichna arifmetika rivnya indeksu LI ta SLI Charlza Klenshou Frenka Olvera ta Pitera Ternera ye shemoyu zasnovanoyu na uzagalnenomu logarifmichnomu predstavlenni Konichne predstavlennya z ruhomoyu komoyu yake zdayetsya ne vikoristovuyetsya na praktici Deyaki prosti racionalni chisla napriklad 1 3 i 1 10 ne mozhut buti tochno predstavleni u dvijkovij formi z ruhomoyu komoyu nezalezhno vid tochnosti Vikoristannya inshoyi osnovi dozvolyaye vidobraziti deyaki z nih napriklad 1 10 u desyatkovij komi z ruhomoyu komoyu ale mozhlivosti zalishayutsya obmezhenimi Programni paketi yaki vikonuyut racionalnu arifmetiku predstavlyayut chisla u viglyadi drobiv iz cilim chiselnikom i znamennikom i tomu mozhut tochno predstavlyati bud yake racionalne chislo Taki paketi yak pravilo povinni vikoristovuvati arifmetiku bignum dlya okremih cilih chisel Intervalna arifmetika dozvolyaye predstavlyati chisla u viglyadi intervaliv i otrimuvati garantovani mezhi rezultativ Zazvichaj vin bazuyetsya na inshij arifmetici zokrema z ruhomoyu komoyu Sistemi komp yuternoyi algebri taki yak Mathematica Maxima ta Maple chasto mozhut obroblyati irracionalni chisla napriklad p displaystyle pi abo 3 displaystyle sqrt 3 cilkom formalnim sposobom simvolne obchislennya ne mayuchi spravu z konkretnim koduvannyam mantisi Taka programa mozhe obchislyuvati taki virazi yak sin 3 p displaystyle sin 3 pi same tomu oskilki vin zaprogramovanij na obrobku osnovnoyi matematiki bezposeredno zamist vikoristannya pribliznih znachen dlya kozhnogo promizhnogo obchislennya Istoriya 1914 roku opublikuvav robotu shodo vikoristannya chisel z ruhomoyu komoyu v Analitichnij mashini U 1914 roci ispanskij inzhener Leonardo Torres Kevedo opublikuvav Narisi z avtomatiki de vin rozrobiv specialnij elektromehanichnij kalkulyator na osnovi analitichnoyi mashini Charlza Bebbidzha ta opisav sposib uzgodzhenogo zberigannya chisel z ruhomoyu komoyu Vin zayaviv sho chisla budut zberigatisya v eksponencialnomu formati n x 10m displaystyle m i zaproponuvav tri pravila za yakimi mashini mozhut realizovuvati poslidovne manipulyuvannya chislami z ruhomoyu komoyu Dlya Torresa n zavzhdi matime odnakovu kilkist cifr napriklad shist persha cifra n matime poryadok desyatih druga sotih tosho i kozhnu kilkist zapisuvatimemo u formi n m Format yakij vin zaproponuvav pokazuye potrebu v znachenni fiksovanogo rozmiru yakij zaraz vikoristovuyetsya dlya danih z ruhomoyu komoyu fiksaciyi roztashuvannya desyatkovoyi krapki v znachenni shob kozhne predstavlennya bulo unikalnim i yak formatuvati taki chisla vkazavshi sintaksis yaki mozhna bulo vvesti cherez drukarsku mashinku yak ce bulo u vipadku z jogo elektromehanichnim arifmometrom u 1920 roci Konrad Cuze rozrobnik komp yutera Z3 yakij vikoristovuvav 22 rozryadne dvijkove predstavlennya chisel z ruhomoyu komoyu U 1938 roci Konrad Cuze z Berlina stvoriv Z1 pershij dvijkovij programovanij mehanichnij komp yuter vin vikoristovuvav 24 bitne dvijkove predstavlennya chisel z ruhomoyu komoyu z 7 bitnim poryadkom zi znakom 17 bitnoyu mantisoyu vklyuchayuchi odin neyavnij bit i bitom znaka Bilsh nadijnij Z3 na osnovi rele buv zavershenij u 1941 roci mav predstavlennya yak dlya dodatnoyi tak i dlya vid yemnoyi neskinchennosti zokrema vin realizuye viznacheni operaciyi z neskinchennistyu taki yak 1 0 displaystyle 1 infty 0 i vin zupinyayetsya na neviznachenih operaciyah takih yak 0 displaystyle 0 times infty Cuze takozh zaproponuvav ale ne zavershiv retelno okruglenu arifmetiku z ruhomoyu komoyu yaka vklyuchaye displaystyle pm infty i predstavlennya NaN viperedzhayuchi osoblivosti standartu IEEE na chotiri desyatilittya Navpaki fon Nejman rekomenduvav ne vikoristovuvati chisla z ruhomoyu komoyu dlya mashini IAS 1951 roku stverdzhuyuchi sho arifmetika z fiksovanoyu komoyu ye krashoyu Pershim komercijnim komp yuterom z aparatnim zabezpechennyam dlya operacij z ruhomoyu komoyu buv komp yuter Z4 Zuse rozroblenij u 1942 1945 rokah U 1946 roci Bell Laboratories predstavila model V yaka realizuvala desyatkovi chisla z ruhomoyu komoyu Komp yuter Pilot ACE mav dvijkovu arifmetiku z ruhomoyu komoyu i vin pochav pracyuvati v 1950 roci v Nacionalnij fizichnij laboratoriyi Velikobritaniyi Piznishe tridcyat tri mashini buli komercijno prodani yak English Electric DEUCE Arifmetika faktichno realizovana v programnomu zabezpechenni ale z taktovoyu chastotoyu v odin megagerc shvidkist operacij z ruhomoyu ta fiksovanoyu komoyu v cij mashini spochatku bula vishoyu nizh u bagatoh konkuruyuchih komp yuteriv Masove virobnictvo IBM 704 rozpochalosya v 1954 roci vin zaprovadiv vikoristannya zmishenogo pokaznika stepenya Protyagom bagatoh desyatilit pislya cogo aparatne zabezpechennya z ruhomoyu komoyu bulo yak pravilo dodatkovoyu funkciyeyu a komp yuteri yaki jogo mali nazivali naukovimi komp yuterami abo takimi sho mali mozhlivist naukovih obchislen SC Lishe pislya vipusku Intel i486 u 1989 roci personalni komp yuteri zagalnogo priznachennya mali aparatne zabezpechennya z ruhomoyu komoyu yak standartnu funkciyu Seriya UNIVAC 1100 2200 predstavlena v 1962 roci pidtrimuvala dva predstavlennya z ruhomoyu komoyu Odinarna tochnist 36 bit organizovanih yak 1 bitovij znak 8 bitnij poryadok i 27 bitna mantisa Podvijna tochnist 72 biti organizovani yak 1 bitnij znak 11 bitnij poryadok i 60 bitova mantisa IBM 7094 takozh predstavlenij u 1962 roci pidtrimuvav predstavlennya odinarnoyi ta podvijnoyi tochnosti ale ne mav vidnoshennya do predstavlen UNIVAC Dijsno u 1964 roci IBM predstavila shistnadcyatkove predstavlennya z ruhomoyu komoyu u svoyih mejnfrejmah System 360 ci zh predstavlennya vse she dostupni dlya vikoristannya v suchasnih sistemah z Architecture U 1998 roci IBM realizuvala IEEE sumisnu dvijkovu arifmetiku z ruhomoyu komoyu u svoyih mejnfrejmah u 2005 roci IBM takozh dodala sumisnu z IEEE desyatkovu arifmetiku z ruhomoyu komoyu Spochatku komp yuteri vikoristovuvali bagato riznih predstavlen dlya chisel z ruhomoyu komoyu Vidsutnist standartizaciyi na rivni mejnfrejmiv bula postijnoyu problemoyu na pochatku 1970 h rokiv dlya tih hto pisav i pidtrimuvav vihidnij kod vishogo rivnya ci standarti virobnikiv iz ruhomoyu komoyu vidriznyalisya rozmirami sliv predstavlennyami povedinkoyu okruglennya ta zagalnoyu tochnistyu operacij Sumisnist iz ruhomoyu komoyu v bagatoh obchislyuvalnih sistemah vidchajdushno potrebuvala standartizaciyi na pochatku 1980 h rokiv sho prizvelo do stvorennya standartu IEEE 754 koli slovo 32 bit abo 64 bit stalo zvichnim Cej standart znachnoyu miroyu gruntuvavsya na propoziciyi Intel yaka rozroblyala matemtichnij spivprocesor i8087 Motorola yaka priblizno v toj zhe chas rozroblyala 68000 takozh vnesla znachnij vnesok U 1989 roci matematik i informatik Vilyam Kahan buv udostoyenij premiyi Tyuringa za te sho vin buv golovnim arhitektorom ciyeyi propoziciyi jomu dopomagali jogo uchen Dzherom Kunen i zaproshenij profesor Garold Stoun Sered novovveden x86 taki Tochno zadane predstavlennya z ruhomoyu komoyu na rivni bitovogo ryadka shob usi sumisni komp yuteri interpretuvali bitovi shabloni odnakovo Ce daye zmogu tochno j efektivno peredavati chisla z ruhomoyu komoyu z odnogo komp yutera na inshij pislya vrahuvannya poryadku bajtiv Tochno zadana povedinka dlya arifmetichnih operacij potribno otrimati rezultat tak nibi neskinchenno tochna arifmetika vikoristovuyetsya dlya otrimannya znachennya yake potim okruglyuyetsya vidpovidno do pevnih pravil Ce oznachaye sho sumisna komp yuterna programa zavzhdi dast toj samij rezultat yaksho yij nadadut pevnij vhidnij signal takim chinom pom yakshuyuchi majzhe mistichnu reputaciyu obchislen iz ruhomoyu komoyu zavdyaki svoyij zdavalosya b nedeterminovanij povedinci Zdatnist nadzvichajnih umov perepovnennya dilennya na nul tosho poshiryuvatisya cherez obchislennya m yakim chinom a potim kontrolyuvatis programnim zabezpechennyam Diapazon chisel z ruhomoyu komoyuChislo z ruhomoyu komoyu skladayetsya z dvoh komponentiv iz fiksovanoyu komoyu diapazon yakih zalezhit viklyuchno vid kilkosti bitiv abo cifr u yih predstavlenni U toj chas yak komponenti linijno zalezhat vid svogo diapazonu diapazon iz ruhomoyu komoyu linijno zalezhit vid znachushogo diapazonu ta eksponencialno vid diapazonu eksponentnogo komponenta yakij dodaye nadzvichajno shirokij diapazon do chisla U tipovij komp yuternij sistemi dvijkove chislo z ruhomoyu komoyu podvijnoyi tochnosti 64 rozryadne maye koeficiyent 53 biti vklyuchayuchi 1 neyavnij bit eksponentu 11 bitiv i 1 znakovij bit Oskilki 2 10 1024 povnij diapazon dodatnih normalnih chisel z ruhomoyu komoyu v comu formati stanovit vid 2 1022 2 10 308 do priblizno 2 1024 2 10 308 Kilkist normalnih chisel z ruhomoyu komoyu v sistemi B P L U de B osnova sistemi P tochnist mantisi za osnovoyu B L najmenshij pokaznik sistemi U najbilshij pokaznik sistemi ye 2 B 1 B P 1 U L 1 displaystyle 2 left B 1 right left B P 1 right left U L 1 right Isnuye najmenshe dodatne normalne chislo z ruhomoyu komoyu Nizhnij riven UFL B L displaystyle B L yaka maye 1 yak pochatkovu cifru ta 0 dlya reshti cifr mantisi i najmenshe mozhlive znachennya dlya eksponenti Ye najbilshe chislo z ruhomoyu komoyu Riven perepovnennya OFL 1 B P B U 1 displaystyle left 1 B P right left B U 1 right yakij maye B 1 yak znachennya dlya kozhnoyi cifri mantisi i najbilshe mozhlive znachennya dlya eksponenti Krim togo isnuyut reprezentovani znachennya strogo mizh UFL i UFL A same pozitivni ta negativni nuli a takozh subnormalni chisla IEEE 754 chisla z ruhomoyu komoyu v suchasnih komp yuterahOsnovna stattya IEEE 754 IEEE standartizuvav komp yuterne predstavlennya dvijkovih chisel z ruhomoyu komoyu v IEEE 754 vin zhe IEC 60559 u 1985 roci Cogo pershogo standartu dotrimuyutsya majzhe vsi suchasni mashini Jogo bulo pereglyanuto v 2008 roci Mejnfrejmi IBM pidtrimuyut vlasnij shistnadcyatkovij format z ruhomoyu komoyu IBM i desyatkovij format z ruhomoyu komoyu IEEE 754 2008 na dodatok do dvijkovogo formatu IEEE 754 Seriya Cray T90 mala versiyu IEEE ale SV1 vse she vikoristovuye format Cray z ruhomoyu komoyu Standart peredbachaye bagato tisno pov yazanih formativ sho vidriznyayutsya lishe dekilkoma detalyami P yat iz cih formativ nazivayutsya bazovimi formatami a inshi formatami rozshirenoyi tochnosti ta formatom rozshirenoyi tochnosti Tri formati osoblivo shiroko vikoristovuyutsya v komp yuternomu obladnanni ta movah potribna citata Odinarna tochnist binary32 zazvichaj vikoristovuyetsya dlya predstavlennya tipu float u rodini mov C Ce dvijkovij format yakij zajmaye 32 biti 4 bajti a jogo simvol maye tochnist 24 biti priblizno 7 desyatkovih cifr Podvijna tochnist binary64 zazvichaj vikoristovuyetsya dlya predstavlennya tipu double u rodini mov C Ce dvijkovij format yakij zajmaye 64 biti 8 bajtiv i maye tochnist 53 biti priblizno 16 desyatkovih cifr Podvijnij rozshirenij format yakij takozh neodnoznachno nazivayut formatom rozshirenoyi tochnosti Ce dvijkovij format yakij zajmaye shonajmenshe 79 bitiv 80 yaksho ne vikoristovuyetsya pravilo prihovanih neyavnih bitiv a jogo mantisa maye tochnist shonajmenshe 64 biti priblizno 19 desyatkovih cifr Standarti C99 i C11 simejstva mov C u svoyemu dodatku F IEC 60559 arifmetika z ruhomoyu komoyu rekomenduyut nadavati takij rozshirenij format yak long double Arhitektura x86 zabezpechuye format sho zadovolnyaye minimalni vimogi 64 bitna mantisa 15 bitnij eksponentnij pokaznik sho vidpovidaye 80 bitam Chasto na takih procesorah cej format mozhna vikoristovuvati z long double hocha rozshirena tochnist nedostupna z MSVC Dlya cilej virivnyuvannya bagato instrumentiv zberigayut ce 80 bitove znachennya v 96 abo 128 bitnomu prostori Na inshih procesorah dovga podvijna mozhe oznachati bilshij format takij yak pochetverna tochnist abo prosto podvijna tochnist yaksho bud yaka forma rozshirenoyi tochnosti nedostupna Pidvishennya tochnosti predstavlennya z ruhomoyu komoyu zazvichaj zmenshuye kilkist nakopichenoyi pomilki okruglennya viklikanoyi promizhnimi obchislennyami Inshi formati IEEE vklyuchayut Formati z ruhomoyu komoyu Decimal64 i decimal128 Ci formati osoblivo decimal128 shiroko poshireni u finansovih operaciyah oskilki razom iz formatom decimal32 voni dozvolyayut pravilno okruglyati desyatkove chislo Chetverna tochnist dvijkovij 128 Ce dvijkovij format yakij zajmaye 128 bit 16 bajt i maye tochnist 113 bit priblizno 34 desyatkovi cifri Polovina tochnosti takozh nazivayetsya binary16 16 bitne znachennya z ruhomoyu komoyu Vin vikoristovuyetsya v grafichnij movi NVIDIA Cg i v standarti openEXR Bud yake cile chislo z absolyutnim znachennyam menshe 2 24 mozhe buti tochno predstavleno u formati odinarnoyi tochnosti a bud yake cile chislo z absolyutnim znachennyam menshe 2 53 mozhe buti tochno predstavleno u formati podvijnoyi tochnosti Krim togo mozhna predstaviti shirokij diapazon stepeniv sho vdvichi bilshe takogo chisla Ci vlastivosti inodi vikoristovuyutsya dlya chisto cilih danih shob otrimati 53 rozryadni cili na platformah yaki mayut podvijnu tochnist z ruhomoyu komoyu ale lishe 32 rozryadni cili Standart viznachaye deyaki specialni znachennya ta yih predstavlennya pozitivna neskinchennist negativna neskinchennist negativnij nul 0 vidminnij vid zvichajnogo pozitivnogo nulya i znachennya ne chisla NaN Porivnyannya chisel z ruhomoyu komoyu yak viznacheno standartom IEEE desho vidriznyayetsya vid zvichajnogo cilochiselnogo porivnyannya Vid yemnij i dodatnij nuli porivnyuyutsya a kozhen NaN ne dorivnyuye kozhnomu znachennyu vklyuchayuchi sebe Usi skinchenni chisla z ruhomoyu komoyu strogo menshi za i strogo bilshi za i voni vporyadkovani tak samo yak i yihni znachennya u nabori dijsnih chisel Vnutrishnye podannya Chisla z ruhomoyu komoyu zazvichaj upakovuyutsya v dani komp yutera yak bit znaka pole eksponenti ta mantisa zliva napravo Dlya dvijkovih formativ IEEE 754 bazovogo ta rozshirenogo yaki mayut isnuyuchi aparatni realizaciyi voni rozpodilyayutsya takim chinom Tip Kilkist bitiv Zsuv eksponenti Tochnist bitiv Kilkist desyatkovih cifr Znak Poryadok Mantisa Razom polovinna IEEE 754 2008 1 5 10 16 15 11 3 3 odinarna 1 8 23 32 127 24 7 2 podvijna 1 11 52 64 1023 53 15 9 rozshirena tochnist x86 1 15 64 80 16383 64 19 2 chetverna 1 15 112 128 16383 113 34 0 Hocha eksponenta mozhe buti dodatnoyu abo vid yemnoyu u dvijkovih formatah vona zberigayetsya yak chislo bez znaku do yakogo dodayetsya fiksovane zmishennya Znachennya vsih nuliv u comu poli zarezervovani dlya nuliv i subnormalnih chisel znachennya vsih odinic zarezervovani dlya neskinchennostej i NaN Diapazon eksponent dlya zvichajnih chisel stanovit 126 127 dlya odinarnoyi tochnosti 1022 1023 dlya podvijnoyi abo 16382 16383 dlya kvadratichnoyi Normalni chisla viklyuchayut subnormalni znachennya nuli neskinchennosti ta NaN U dvijkovih formatah obminu IEEE pochatkovij 1 bit normalizovanoyi mantisi faktichno ne zberigayetsya v danih komp yutera Jogo nazivayut prihovanim abo neyavnim bitom Cherez ce format odinarnoyi tochnosti faktichno maye znachushu tochnist iz 24 bitami format podvijnoyi tochnosti maye 53 a format quad maye 113 Napriklad bulo pokazano vishe sho p okruglene do 24 bit z tochnistyu maye znak 0 e 1 s 110010010000111111011011 vklyuchayuchi prihovanij bit Suma zmishennya eksponenti 127 i eksponenti 1 dorivnyuye 128 tomu ce predstavleno u formati odinarnoyi tochnosti yak 0 10000000 10010010000111111011011 za vinyatkom prihovanogo bita 40490FDB yak shistnadcyatkove chislo Priklad maketa dlya 32 rozryadnogo chisla z ruhomoyu komoyu i 64 rozryadna podvijna rozkladka shozha Inshi vidomi formati z ruhomoyu komoyuNa dodatok do shiroko vikoristovuvanih standartnih formativ IEEE 754 inshi formati z ruhomoyu komoyu vikoristovuyutsya abo vikoristovuvalisya v pevnih domennih oblastyah Microsoft Binary Format MBF buv rozroblenij dlya movnih produktiv Microsoft BASIC vklyuchayuchi pershij produkt Microsoft Altair BASIC 1975 TRS 80 LEVEL II MBASIC CP M BASICA IBM PC 5150 MS DOS GW BASIC i QuickBASIC do versiyi 4 00 QuickBASIC versiyi 4 00 i 4 50 perejshli na format IEEE 754 1985 ale mozhut povernutisya do formatu MBF za dopomogoyu parametra komandi MBF MBF buv rozroblenij i rozroblenij na simulovanomu Intel 8080 Monte Davidoffom kolegoyu Billa Gejtsa navesni 1975 roku dlya MITS Altair 8800 Pochatkovij vipusk u lipni 1975 roku pidtrimuvav format odinarnoyi tochnosti 32 biti cherez vartist 4 kilobajtnoyi pam yati MITS Altair 8800 U grudni 1975 roku 8 kilobajtna versiya dodala format podvijnoyi tochnosti 64 biti Variant formatu z odinarnoyu tochnistyu 40 bit buv prijnyatij dlya inshih procesoriv zokrema dlya MOS 6502 Apple Commodore PET Atari Motorola 6800 MITS Altair 680 i Motorola 6809 kolorovij komp yuter TRS 80 Usi movni produkti Microsoft z 1975 po 1987 roki vikoristovuvali dvijkovij format Microsoft doki Microsoft ne prijnyala standartnij format IEEE 754 u vsih svoyih produktah pochinayuchi z 1988 roku do yihnih potochnih vipuskiv MBF skladayetsya z formatu MBF odinarnoyi tochnosti 32 biti 6 rozryadnij BASIC format MBF rozshirenoyi tochnosti 40 bit 9 rozryadnij BASIC i format MBF podvijnoyi tochnosti 64 biti kozhen z nih predstavlenij 8 bitnim eksponentoyu za yakim jde znakovij bit za yakim sliduye mantisa vidpovidno 23 31 i 55 bit Format Bfloat16 potrebuye takogo zh ob yemu pam yati 16 bit sho j format napivtochnosti IEEE 754 ale eksponenti vidilyaye 8 bit zamist 5 takim chinom zabezpechuyuchi toj samij diapazon sho j chislo odinarnoyi tochnosti IEEE 754 Kompromisom ye znizhena tochnist oskilki zavershalne znachushe pole zmensheno z 10 do 7 bit Cej format v osnovnomu vikoristovuyetsya pri navchanni modelej mashinnogo navchannya de diapazon ye bilsh cinnim nizh tochnist Bagato priskoryuvachiv mashinnogo navchannya zabezpechuyut aparatnu pidtrimku cogo formatu Format TensorFloat 32 poyednuye 8 bit eksponenti Bfloat16 z 10 bitami kincevogo znachushogo polya formativ napivtochnosti sho prizvodit do rozmiru 19 bit Cej format buv predstavlenij kompaniyeyu Nvidia yaka zabezpechuye jogo aparatnu pidtrimku v tenzornih yadrah svoyih grafichnih procesoriv na osnovi arhitekturi Nvidia Ampere Nedolikom cogo formatu ye jogo rozmir yakij ne ye stepenem 2 Odnak zgidno z Nvidia cej format maye vikoristovuvatisya aparatnim zabezpechennyam lishe vnutrishno dlya priskorennya obchislen todi yak vhidni ta vihidni dani mayut zberigatisya v 32 rozryadnomu yedinomu fajli tochnij format IEEE 754 Grafichni procesori z arhitekturoyu Hopper zabezpechuyut dva formati FP8 odin iz takim zhe chislovim diapazonom yak napivtochnist E5M2 i inshij iz vishoyu tochnistyu ale menshim diapazonom E4M3 Bfloat16 TensorFloat 32 i dva formati FP8 porivnyano z formatami napivtochnosti ta odinarnoyi tochnosti IEEE 754 Tip Znak Eksponenta Kinceve znachushe pole Vsogo bit FP8 E4M3 1 4 3 8 FP8 E5M2 1 5 2 8 Napivtochnist 1 5 10 16 Bfloat16 1 8 7 16 TensorFloat 32 1 8 10 19 Odinarna tochnist 1 8 23 32Predstavleni chisla peretvorennya ta okruglennyaZa svoyeyu prirodoyu vsi chisla virazheni u formati z ruhomoyu komoyu ye racionalnimi chislami z kincevim rozkladannyam za vidpovidnoyu osnovoyu napriklad kincevim desyatkovim rozkladannyam za osnovoyu 10 abo kincevim dvijkovim rozkladannyam za osnovoyu 2 Irracionalni chisla taki yak p abo 2 abo nekincevi racionalni chisla povinni buti aproksimovani Kilkist cifr abo bitiv tochnosti takozh obmezhuye nabir racionalnih chisel yaki mozhut buti predstavleni tochno Napriklad desyatkove chislo 123456789 ne mozhe buti tochno predstavleno yaksho dostupni lishe visim desyatkovih cifr tochnosti vono bude okrugleno do odnogo z dvoh znachen yaki mozhna predstaviti 12345678 101 abo 12345679 101 te zh same stosuyetsya ne kincevih cifr 5 okruglyayutsya do 55555555 abo 55555556 Koli chislo predstavleno v pevnomu formati napriklad ryadok simvoliv yakij ne ye vlasnim predstavlennyam iz ruhomoyu komoyu sho pidtrimuyetsya komp yuternoyu realizaciyeyu todi vono potrebuvatime peretvorennya persh nizh jogo mozhna bude vikoristovuvati v cij realizaciyi Yaksho chislo mozhna tochno predstaviti u formati z ruhomoyu komoyu to peretvorennya ye tochnim Yaksho nemaye tochnogo predstavlennya todi dlya peretvorennya potribno vibrati yake chislo z ruhomoyu komoyu vikoristovuvati dlya predstavlennya pochatkovogo znachennya Vibrane predstavlennya matime znachennya vidminne vid originalu a vidkorigovane takim chinom znachennya nazivayetsya okruglenim znachennyam Chi maye racionalne chislo kinceve rozshirennya zalezhit vid osnovi Napriklad za osnovoyu 10 chislo 1 2 maye zakinchennya 0 5 todi yak chislo 1 3 ne maye 0 333 Za osnovoyu 2 zavershuyutsya lishe racionalni chisla zi znamennikami yaki ye stepenyami 2 napriklad 1 2 abo 3 16 Bud yake racionalne chislo zi znamennikom yakij maye prostij mnozhnik vidminnij vid 2 matime neskinchenne dvijkove rozkladannya Ce oznachaye sho chisla yaki zdayutsya korotkimi ta tochnimi koli zapisuyutsya v desyatkovomu formati mozhut potrebuvati nablizhennya pid chas peretvorennya u dvijkovi chisla z ruhomoyu komoyu Napriklad desyatkove chislo 0 1 ne mozhna predstaviti u dvijkovij formi z ruhomoyu komoyu bud yakoyi kincevoyi tochnosti tochne dvijkove predstavlennya matime poslidovnist 1100 yaka prodovzhuyetsya neskinchenno e 4 s 1100110011001100110011001100110011 de yak i ranishe s mantisa a e pokaznik stepenya Pri okruglenni do 24 bitiv ce staye e 4 s 110011001100110011001101 sho naspravdi dorivnyuye 0 100000001490116119384765625 u desyatkovij sistemi Yak nastupnij priklad dijsne chislo p predstavlene u dvijkovij sistemi u viglyadi neskinchennoyi poslidovnosti bitiv ye 11 0010010000111111011010101000100010000101101000110000100011010011 ale ye 11 0010010000111111011011 pri nablizhenni okruglennyam do 24 bitiv U dvijkovij formi z ruhomoyu komoyu odinarnoyi tochnosti ce predstavleno yak s 1 10010010000111111011011 z e 1 Ce maye desyatkove znachennya 3 141592 7410125732421875 todi yak tochnishe nablizhennya spravzhnogo znachennya p ye 3 14159265358979323846264338327950 Rezultat okruglennya vidriznyayetsya vid spravzhnogo znachennya priblizno na 0 03 chastini na miljon i zbigayetsya z desyatkovim predstavlennyam chisla p u pershih 7 cifrah Riznicya polyagaye v pohibci diskretizaciyi i obmezhena epsilonom mashini Arifmetichna riznicya mizh dvoma poslidovnimi chislami z ruhomoyu komoyu yaki mozhna predstaviti j mayut odnakovij pokaznik nazivayetsya odiniceyu na ostannomu misci ULP Napriklad yaksho mizh predstavlenimi chislami 1 45a70c22 hex i 1 45a70c24 hex nemaye chisla yake mozhna predstaviti ULP dorivnyuye 2 16 8 abo 2 31 Dlya chisel iz chastinoyu eksponenti za osnovoyu 2 yaka dorivnyuye 0 tobto chisel iz absolyutnim znachennyam vishim abo rivnim 1 ale menshim za 2 ULP dorivnyuye rivno 2 23 abo priblizno 10 7 z odinichnoyu tochnistyu i tochno 2 53 abo priblizno 10 16 u podvijnij tochnosti Obov yazkova povedinka obladnannya sumisnogo z IEEE polyagaye v tomu shob rezultat buv u mezhah polovini ULP Rezhimi okruglennya Okruglennya vikoristovuyetsya koli tochnij rezultat operaciyi z ruhomoyu komoyu abo peretvorennya u format iz ruhomoyu komoyu potrebuye bilshe cifr nizh cifr u mantisi IEEE 754 vimagaye pravilnogo okruglennya tobto okruglenij rezultat viglyadaye tak nibi dlya obchislennya znachennya bulo vikoristano neskinchenno tochnu arifmetiku a potim okrugleno hocha v realizaciyi dlya zabezpechennya cogo potribni lishe tri dodatkovi biti Isnuye kilka riznih shem okruglennya abo rezhimiv okruglennya Istorichno tipovim pidhodom bulo skorochennya Z momentu vvedennya IEEE 754 metod za zamovchuvannyam okruglennya do najblizhchogo priv yazka do parnogo inodi zvanij bankivskim okruglennyam vikoristovuyetsya chastishe Cej metod okruglyuye idealnij neskinchenno tochnij rezultat arifmetichnoyi operaciyi do najblizhchogo znachennya yake mozhna predstaviti i daye ce predstavlennya yak rezultat U razi rivnosti vibirayetsya znachennya za yakogo mantisa zakinchuyetsya parnoyu cifroyu Standart IEEE 754 vimagaye zastosuvannya odnakovogo okruglennya do vsih osnovnih algebrayichnih operacij vklyuchayuchi kvadratnij korin i peretvorennya koli ye chislovij rezultat ne NaN Ce oznachaye sho rezultati operacij IEEE 754 povnistyu viznacheni u vsih bitah rezultatu za vinyatkom predstavlennya NaN Funkciyi Biblioteki taki yak kosinus i logarifm ne ye obov yazkovimi Takozh dostupni alternativni varianti okruglennya IEEE 754 viznachaye taki rezhimi okruglennya okruglennya do najblizhchogo de priv yazuye okruglennya do najblizhchoyi parnoyi cifri v neobhidnij poziciyi za zamovchuvannyam i na sogodnishnij den najposhirenishij rezhim okruglennya do najblizhchogo de okruglennya vid nulya neobov yazkovij dlya dvijkovogo chisla z ruhomoyu komoyu ta zazvichaj vikoristovuyetsya v desyatkovomu okruglennya v bilshu storonu do negativni rezultati takim chinom okruglennya do nulya okrugliti vniz u bik negativni rezultati takim chinom okrugliti vid nulya okruglennya do nulya usichennya ce podibno do zvichajnoyi povedinki peretvoren z ruhomoyu komoyu v cile chislo yaki peretvoryuyut 3 9 u 3 i 3 9 u 3 Alternativni rezhimi korisni koli kilkist vvedenoyi pomilki maye buti obmezhenoyu Programi yaki vimagayut obmezhenoyi pomilki ce chislennya z ruhomoyu komoyu ta intervalna arifmetika Alternativni rezhimi okruglennya takozh korisni dlya diagnostiki chiselnoyi nestabilnosti yaksho rezultati pidprogrami suttyevo vidriznyayutsya mizh okruglennyam do i neskinchennosti to vona jmovirno chiselno nestabilna ta na neyi vplivaye pomilka okruglennya Peretvorennya dvijkovoyi sistemi v desyatkovu z minimalnoyu kilkistyu cifr Peretvorennya dvijkovogo chisla z ruhomoyu komoyu podvijnoyi tochnosti v desyatkovij ryadok ye zvichajnoyu operaciyeyu ale algoritm yakij daye vodnochas tochni ta minimalni rezultati ne z yavivsya u druku do 1990 roku koli Stil i Vajt vipustili Dragon4 Deyaki z pokrashen z tih pir vklyuchayut dtoa c Devida M Geya praktichna realizaciya bagatoh idej u Dragon4 z vidkritim kodom Grisu3 iz 4 kratnim priskorennyam oskilki vin usuvaye vikoristannya bignums Neobhidno vikoristovuvati z rezervnim variantom oskilki vin ne pracyuye priblizno v 0 5 vipadkiv Errol3 zavzhdi uspishnij algoritm podibnij do Grisu3 ale povilnishij za nogo Mabut ne tak dobre yak Grizu z dostrokovim pripinennyam iz zapasnim udarom Ryu zavzhdi uspishnij algoritm shvidshij i prostishij za Grisu3 Schubfach zavzhdi uspishnij algoritm yakij bazuyetsya na podibnij ideyi do Ryu rozroblenij majzhe odnochasno ta nezalezhno U pevnih testah pracyuye krashe nizh Ryu ta Grisu3 Bagato suchasnih movnih seredovish vikonannya vikoristovuyut Grisu3 iz rezervnim Dragon4 Peretvorennya desyatkovoyi sistemi v dvijkovu Problema rozboru desyatkovogo ryadka v dvijkove predstavlennya FP ye skladnoyu tochnij sintaksichnij analizator ne z yavivsya do roboti Klingera 1990 roku realizovano v dtoa c Podalsha robota takozh prosuvalas u napryamku shvidshogo analizu Operaciyi z ruhomoyu komoyuDlya zruchnosti predstavlennya ta rozuminnya v prikladah bude vikoristano desyatkove chislo z tochnistyu do 7 cifr yak u formati IEEE 754 decimal32 Fundamentalni principi odnakovi v bud yakomu rozrahunku chi tochnosti za vinyatkom togo sho normalizaciya neobov yazkova vona ne vplivaye na chislove znachennya rezultatu Tut s poznachaye mantisu a e poznachaye pokaznik stepenya Dodavannya i vidnimannya Prostij sposib dodavannya chisel z ruhomoyu komoyu polyagaye v tomu shob spochatku predstaviti yih za dopomogoyu togo samogo pokaznika U navedenomu nizhche prikladi druge chislo zsuvayetsya pravoruch na tri cifri a potim vikonuyetsya zvichajnij metod dodavannya 123456 7 1 234567 10 5 101 7654 1 017654 10 2 0 001017654 10 5 Otzhe 123456 7 101 7654 1 234567 10 5 1 017654 10 2 1 234567 10 5 0 001017654 10 5 1 234567 0 001017654 10 5 1 235584654 10 5 Detalno e 5 s 1 234567 123456 7 e 2 s 1 017654 101 7654 e 5 s 1 234567 e 5 s 0 001017654 pislya zsuvu e 5 s 1 235584654 dijsna suma 123558 4654 Ce spravzhnij rezultat tochna suma operandiv Jogo bude okrugleno do semi cifr a potim normalizovano yaksho neobhidno Kincevij rezultat ye e 5 s 1 235585 kinceva suma 123558 5 Najmolodshi tri cifri drugogo operanda 654 po suti vtrachayutsya Ce pomilka okruglennya U krajnomu vipadku suma dvoh nenulovih chisel mozhe dorivnyuvati odnomu z nih e 5 s 1 234567 e 3 s 9 876543 e 5 s 1 234567 e 5 s 0 00000009876543 pislya zsuvu e 5 s 1 23456709876543 spravzhnya suma e 5 s 1 234567 pislya okruglennya ta normalizaciyi U navedenih vishe konceptualnih prikladah zdayetsya sho sumator povinen nadati veliku kilkist dodatkovih cifr shob zabezpechiti pravilne okruglennya odnak dlya dvijkovogo dodavannya abo vidnimannya z vikoristannyam retelnih metodiv realizaciyi lishe zahisnij bit bit okruglennya ta odin dodatkovij lipkij bit potribno vinositi za mezhi tochnosti operandiv Insha problema vtrati znachushosti vinikaye koli vidnimayutsya nablizhennya do dvoh majzhe rivnih chisel U nastupnomu prikladi e 5 s 1 234571 i e 5 s 1 234567 ye nablizhenimi znachennyami racionalnih chisel 123457 1467 i 123456 659 e 5 s 1 234571 e 5 s 1 234567 e 5 s 0 000004 e 1 s 4 000000 pislya okruglennya ta normalizaciyi Riznicya z ruhomoyu komoyu obchislyuyetsya tochno tomu sho chisla blizki lema Shterbenza garantuye ce navit u vipadku nedopovnennya koli pidtrimuyetsya postupove nedopovnennya Nezvazhayuchi na ce riznicya vihidnih chisel e 1 s 4 877000 sho bilsh nizh na 20 vidriznyayetsya vid riznici e 1 s 4 000000 nablizhen U krajnih vipadkah usi znachushi cifri tochnosti mozhut buti vtracheni Ce skasuvannya ilyustruye nebezpeku pripushennya sho vsi cifri obchislenogo rezultatu ye znachushimi Robota z naslidkami cih pomilok ye temoyu chislovogo analizu div takozh problemi z tochnistyu Mnozhennya i dilennya Dlya mnozhennya znachushi mnozhatsya a pokazniki dodayutsya a rezultat okruglyuyetsya ta normalizuyetsya e 3 s 4 734612 e 5 s 5 417242 e 8 s 25 648538980104 spravzhnij produkt e 8 s 25 64854 pislya okruglennya e 9 s 2 564854 pislya normalizaciyi Podibnim chinom dilennya vikonuyetsya shlyahom vidnimannya pokaznika stepenya dilnika vid pokaznika stepenya dilenogo ta dilennya znachushogo dilennogo na znachushe dilnika Nemaye problem zi skasuvannyam abo poglinannyam pri mnozhenni abo dilenni hocha neveliki pomilki mozhut nakopichuvatisya pid chas poslidovnogo vikonannya operacij Na praktici sposib vikonannya cih operacij u cifrovij logici mozhe buti dosit skladnim div Algoritm mnozhennya Buta ta Algoritm dilennya Shob otrimati shvidkij i prostij metod pereglyante metod Gornera Literalnij sintaksis Literali dlya chisel z ruhomoyu komoyu zalezhat vid mov Voni zazvichaj vikoristovuyut eabo Edlya poznachennya naukovoyi notaciyi Mova programuvannya C i standart IEEE 754 takozh viznachayut sintaksis shistnadcyatkovogo literalu z eksponentoyu za osnovoyu 2 zamist 10 U takih movah yak C koli desyatkovij eksponent propuskayetsya desyatkova koma neobhidna shob vidrizniti yih vid cilih chisel Inshi movi ne mayut cilochiselnogo tipu napriklad JavaScript abo dopuskayut perevantazhennya chislovih tipiv napriklad Haskell U cih vipadkah cifrovi ryadki taki yak 123takozh mozhut buti literalami z ruhomoyu komoyu Prikladi literaliv iz ruhomoyu komoyu 99 9 5000 12 6 02e23 3e 45 0x1 fffffep 127u C ta IEEE 754Robota z vinyatkovimi vipadkamiDodatkova informaciya IEEE 754 Obrobka vinyatkiv Obchislennya z ruhomoyu komoyu v komp yuteri mozhut stikatisya z problemami troh tipiv Operaciya mozhe buti matematichno neviznachenoyu yak ot abo dilennya na nul Operaciya mozhe buti dopustimoyu v principi ale ne pidtrimuvatisya pevnim formatom napriklad obchislennya kvadratnogo korenya z 1 abo averssinusa z 2 obidva z yakih prizvodyat do kompleksnih chisel Operaciya mozhe buti dopustimoyu v principi ale rezultat mozhe buti nemozhlivim dlya predstavlennya u vkazanomu formati oskilki eksponenta zanadto velika abo zanadto mala dlya koduvannya v poli eksponenti Taka podiya nazivayetsya perepovnennyam eksponenta nadto velika underflow eksponenta nadto mala abo denoralizaciyeyu vtrata tochnosti Do standartu IEEE taki umovi zazvichaj sprichinyali zavershennya programi abo zapuskali yakus pastku yaku programist mig zloviti Te yak ce pracyuvalo zalezhalo vid sistemi tobto programi z ruhomoyu komoyu ne buli perenosnimi Termin vinyatok yakij vikoristovuyetsya v IEEE 754 ye zagalnim terminom sho oznachaye vinyatkovu umovu yaka ne obov yazkovo ye pomilkoyu i ye inshim vikoristannyam nizh zazvichaj viznachene v movah programuvannya takih yak C abo Java u yakih vinyatkom ye alternativnij potik keruvannya blizhche do togo sho nazivayetsya pastka v terminologiyi IEEE 754 Tut obgovoryuyetsya neobhidnij standartnij metod obrobki vinyatkiv vidpovidno do IEEE 754 dodatkove perehoplennya IEEE 754 ta inshi rezhimi alternativnoyi obrobki vinyatkiv ne obgovoryuyutsya Arifmetichni vinyatki za zamovchuvannyam povinni buti zapisani v lipkih bitah prapora stanu Te sho voni lipki oznachaye sho voni ne skidayutsya nastupnoyu arifmetichnoyu operaciyeyu a zalishayutsya vstanovlenimi do yavnogo skidannya Takim chinom vikoristannya lipkih praporiv dozvolyaye vidklasti testuvannya vinyatkovih umov do zavershennya povnogo virazu z ruhomoyu komoyu abo pidprogrami bez nih vinyatkovi umovi yaki inakshe ne mozhna bulo b proignoruvati vimagali b yavnogo testuvannya vidrazu pislya kozhnoyi operaciyi z ruhomoyu komoyu Za zamovchuvannyam operaciya zavzhdi povertaye rezultat vidpovidno do specifikaciyi bez pererivannya obchislennya Napriklad 1 0 povertaye a takozh vstanovlyuye bit prapora dilennya na nul ce znachennya za zamovchuvannyam priznachene dlya togo shob chasto povertati kincevij rezultat pid chas vikoristannya v nastupnih operaciyah tomu jogo bezpechno ignoruvati Originalnij standart IEEE 754 odnak ne rekomenduvav operaciyi dlya obrobki takih naboriv bitiv arifmetichnih vinyatkiv Otzhe hocha voni buli realizovani v aparatnomu zabezpechenni pochatkovi realizaciyi movi programuvannya zazvichaj ne nadavali zasobiv dostupu do nih krim asemblera Z chasom deyaki standarti mov programuvannya napriklad C99 C11 i Fortran buli onovleni shob viznachiti metodi dostupu ta zmini bitiv prapora stanu Versiya standartu IEEE 754 2008 roku teper viznachaye kilka operacij dlya dostupu ta obrobki bitiv arifmetichnih praporiv Model programuvannya bazuyetsya na odnomu potoci vikonannya i vikoristannya yih dekilkoma potokami maye obroblyatisya zasobami sho ne vhodyat do standartu napriklad C11 vkazuye sho prapori mayut lokalne zberigannya potokiv IEEE 754 viznachaye p yat arifmetichnih vinyatkiv yaki mayut buti zapisani v prapori stanu lipki biti inexact vstanovlyuyetsya yaksho okruglene i povernute znachennya vidriznyayetsya vid matematichno tochnogo rezultatu operaciyi underflow vstanovlyuyetsya yaksho okruglene znachennya krihitne yak viznacheno v IEEE 754 i netochne abo mozhlivo obmezhene yaksho vono maye vtrati denormalizaciyi zgidno z versiyeyu IEEE 754 1985 roku povertayuchi subnormalne znachennya vklyuchayuchi nuli overflow vstanovlyuyetsya yaksho absolyutne znachennya okruglenogo znachennya zanadto velike dlya predstavlennya Povertayetsya neskinchenne abo maksimalne kinceve znachennya zalezhno vid togo yake okruglennya vikoristovuyetsya divide by zero vstanovlyuyetsya yaksho rezultat neskinchennij iz zadanimi kincevimi operandami povertayuchi neskinchennist abo abo invalid vstanovlyuyetsya yaksho dijsnij rezultat ne mozhe buti povernutij napriklad sqrt 1 abo 0 0 povertayuchi tihij NaN Znachennya sho povertayetsya za zamovchuvannyam dlya kozhnogo z vinyatkiv priznachene dlya nadannya pravilnogo rezultatu v bilshosti vipadkiv tak sho vinyatki mozhna ignoruvati v bilshosti kodiv inexact povertaye pravilno okruglenij rezultat a underflow povertaye znachennya yake menshe abo dorivnyuye najmenshomu pozitivnomu normalnomu chislu za velichinoyu i jogo majzhe zavzhdi mozhna ignoruvati divide by zero tochno povertaye neskinchennist yaka yak pravilo potim dilit skinchenne chislo ta daye nul abo zgodom vidaye nedijsnij vinyatok yaksho ni i tomu jogo takozh zazvichaj mozhna ignoruvati Napriklad efektivnij opir n rezistoriv z yednanih paralelno div ris 1 viznachayetsya yak Yaksho vinikaye korotke zamikannya z vstanoviti 0 poverne neskinchennist sho dast final 0 yak i ochikuvalosya div priklad obgruntuvannya dizajnu IEEE 754 dlya inshogo prikladu Perepovnennya ta nedijsni vinyatki zazvichaj ne mozhna ignoruvati ale voni ne obov yazkovo predstavlyayut pomilki napriklad pidprograma poshuku korenya yak chastina yiyi normalnoyi roboti mozhe ociniti peredanu funkciyu zi znachennyami za mezhami yiyi domenu povertayuchi NaN i nedijsnij prapor vinyatku yakij slid ignoruvati doki ne bude znajdeno korisnu pochatkovu komu Problemi z tochnistyuToj fakt sho chisla z ruhomoyu komoyu ne mozhut tochno predstavlyati vsi dijsni chisla a operaciyi z ruhomoyu komoyu ne mozhut tochno predstavlyati spravzhni arifmetichni operaciyi prizvodit do bagatoh nespodivanih situacij Ce pov yazano zi skinchennoyu tochnistyu z yakoyu komp yuteri zazvichaj predstavlyayut chisla Napriklad desyatkovi chisla 0 1 i 0 01 ne mozhut buti predstavleni tochno yak dvijkovi chisla z ruhomoyu komoyu U dvijkovomu32 formati IEEE 754 z jogo 24 bitnoyu mantisoyu sprobi zvesti nablizhennya do 0 1 ne ye ani 0 01 ani najblizhche do nogo chislo yake mozhna predstaviti Desyatkove chislo 0 1 predstavleno u dvijkovij sistemi yak e 4 s 110011001100110011001101 tobto 0 100000001490116119384765625 tochno Zvedennya cogo chisla v kvadrat daye 0 010000000298023226097399174250313080847263336181640625 tochno Zvedennya jogo v kvadrat iz okruglennyam do 24 bitnoyi tochnosti daye 0 010000000707805156707763671875 tochno Ale chislo yake mozhna predstaviti najblizhche do 0 01 ye 0 009999999776482582092285156250 tochno Krim togo nereprezentativnist p ta p 2 oznachaye sho sproba obchislennya tan p 2 ne dast rezultatu neskinchennosti i navit ne bude perepovnennya u zvichajnih formatah z ruhomoyu komoyu za umovi tochnogo vikonannya ten Standartne aparatne zabezpechennya z ruhomoyu komoyu prosto ne mozhe sprobuvati obchisliti tan p 2 oskilki p 2 ne mozhe buti predstavleno tochno Ce obchislennya v C Dostatno cifr shob perekonatisya sho mi otrimuyemo pravilne nablizhennya podvijne pi 3 1415926535897932384626433832795 podvijnij z tan pi 2 0 dast rezultat 16331239353195370 0 Z odinichnoyu tochnistyu z vikoristannyam tanffunkciyi rezultat bude 22877332 0 Takim zhe chinom sproba obchislennya sin p ne dast nulya Rezultat bude priblizno 0 1225 10 15 z podvijnoyu tochnistyu abo 0 8742 10 7 z odinarnoyu tochnistyu Hocha dodavannya ta mnozhennya z ruhomoyu komoyu komutativni a b b a ta a b b a voni ne obov yazkovo asociativni Tobto a b c ne obov yazkovo dorivnyuye a b c Vikoristovuyuchi 7 znachnu ta desyatkovu arifmetiku a 1234 567 b 45 67834 c 0 0004 a b c 1234 567 a 45 67834 b 1280 24534 okruglyayetsya do 1280 245 1280 245 a b 0 0004 c 1280 2454 okruglyayetsya do 1280 245 a b c a b c 45 67834 b 0 0004 c 45 67874 1234 567 a 45 67874 b v 1280 24574 okruglyuye do 1280 246 a b c Voni takozh ne obov yazkovo ye rozpodilnimi Tobto a b c mozhe ne zbigatisya z a c b c 1234 567 3 333333 4115 223 1 234567 3 333333 4 115223 4115 223 4 115223 4119 338 ale 1234 567 1 234567 1235 802 1235 802 3 333333 4119 340 Okrim vtrati znachushosti nemozhlivosti tochnogo predstavlennya takih chisel yak p i 0 1 ta inshih neznachnih netochnostej mozhut viniknuti taki yavisha Skasuvannya vidnimannya majzhe rivnih operandiv mozhe prizvesti do nadzvichajnoyi vtrati tochnosti Koli mi vidnimayemo dva majzhe rivni chisla mi vstanovlyuyemo starshi cifri rivnimi nulyu zalishayuchi sobi lishe neznachushi ta najbilsh pomilkovi cifri Napriklad pri viznachenni pohidnoyi funkciyi vikoristovuyetsya nastupna formula Intuyitivno zrozumilo sho h bude duzhe blizkim do nulya odnak koli vikoristovuyutsya operaciyi z ruhomoyu komoyu najmenshe chislo ne dast najkrashogo nablizhennya pohidnoyi Koli h staye menshim riznicya mizh f a h i f a zmenshuyetsya skasovuyuchi najbilsh znachushi ta najmensh pomilkovi cifri a najbilsh hibni cifri stayut bilsh vazhlivimi U rezultati najmenshe mozhlive chislo h dast bilsh hibne nablizhennya pohidnoyi nizh desho bilshe chislo Ce mabut najposhirenisha i serjozna problema tochnosti Peretvorennya v cile chislo ne ye intuyitivno zrozumilim peretvorennya 63 0 9 0 u cile chislo daye 7 ale peretvorennya 0 63 0 09 mozhe dati 6 Ce tomu sho peretvorennya zazvichaj skorochuyutsya a ne okruglyuyutsya Funkciyi pidlogi ta steli mozhut davati vidpovidi yaki na odinicyu vidriznyayutsya vid intuyitivno ochikuvanogo znachennya Obmezhenij diapazon eksponent rezultati mozhut buti perepovnenimi sho dast neskinchennist abo zanizhenim sho dast subnormalne chislo abo nul U cih vipadkah tochnist bude vtrachena Perevirka bezpechnogo dilennya problematichna perevirka togo sho dilnik ne dorivnyuye nulyu ne garantuye sho dilennya ne perepovnitsya Perevirka na rivnist ye problematichnoyu Dvi matematichno rivni obchislyuvalni poslidovnosti cilkom mozhut davati rizni znachennya z ruhomoyu komoyu Incidenti 25 lyutogo 1991 roku raketna batareya MIM 104 Patriot vtratila znachennya i ne zmogla perehopiti raketu Skad sho nablizhalasya v Dahrani Saudivska Araviya sho prizvelo do zagibeli 28 soldativ 14 go intendantskogo zagonu armiyi SShA Tochnist mashini ta analiz zvorotnih pomilok Mashinna tochnist ce velichina yaka harakterizuye tochnist sistemi z ruhomoyu komoyu ta vikoristovuyetsya v zvorotnomu analizi pomilok algoritmiv z ruhomoyu komoyu Vin takozh vidomij yak odinicya okruglennya abo mashinnij epsilon Zazvichaj poznachayetsya E mach jogo znachennya zalezhit vid konkretnogo okruglennya yake vikoristovuyetsya Z okruglennyam do nulya E mach B 1 P displaystyle mathrm E text mach B 1 P todi yak okruglennya do najblizhchogo E mach 1 2 B 1 P displaystyle mathrm E text mach tfrac 1 2 B 1 P de B osnova sistemi a P tochnist mantisi v osnovi B Ce vazhlivo oskilki vono obmezhuye vidnosnu pohibku v predstavlenni bud yakogo nenulovogo dijsnogo chisla x u mezhah normalizovanogo diapazonu sistemi z ruhomoyu komoyu fl x x x E mach displaystyle left frac operatorname fl x x x right leq mathrm E text mach Zvorotnij analiz pomilok teoriya yakogo bula rozroblena ta populyarizovana Dzhejmsom H Vilkinsonom mozhe buti vikoristana dlya vstanovlennya togo sho algoritm yakij realizuye chislovu funkciyu chiselno stabilnij Osnovnij pidhid polyagaye v tomu shob pokazati sho hocha obchislenij rezultat cherez pomilki okruglennya ne bude tochno pravilnim vin ye tochnim rishennyam susidnoyi problemi z desho zburenimi vhidnimi danimi Yaksho neobhidne zburennya nevelike na rivni neviznachenosti u vhidnih danih to rezultati v pevnomu sensi nastilki tochni naskilki dani zaslugovuyut Todi algoritm viznachayetsya yak zvorotno stabilnij Stabilnist ce mira chutlivosti do pomilok okruglennya danoyi chiselnoyi proceduri navpaki nomer umovi funkciyi dlya danoyi problemi vkazuye na pritamannu chutlivist funkciyi do nevelikih zburen na yiyi vhodi ta ne zalezhit vid realizaciyi yaka vikoristovuyetsya dlya virishennya problemi Minimizaciya vplivu problem iz tochnistyu Hocha okremi arifmetichni operaciyi IEEE 754 garantovano tochni z tochnistyu do polovini ULP skladnishi formuli mozhut mati bilshi pomilki z riznih prichin Vtrata tochnosti mozhe buti suttyevoyu yaksho problema abo yiyi dani pogano obumovleni tobto pravilnij rezultat nadchutlivij do dribnih zburen u svoyih danih Odnak navit dobre obumovleni funkciyi mozhut postrazhdati vid znachnoyi vtrati tochnosti yaksho dlya cih danih vikoristovuyetsya chiselno nestabilnij algoritm ochevidno ekvivalentni formulyuvannya viraziv na movi programuvannya mozhut pomitno vidriznyatisya svoyeyu chiselnoyu stabilnistyu Odnim iz pidhodiv do usunennya riziku takoyi vtrati tochnosti ye rozrobka ta analiz chiselno stabilnih algoritmiv sho ye metoyu rozdilu matematiki vidomogo yak chiselnij analiz Inshim pidhodom yakij mozhe zahistiti vid riziku chiselnoyi nestabilnosti ye obchislennya promizhnih skretch znachen v algoritmi z vishoyu tochnistyu nizh vimagaye kincevij rezultat sho mozhe vidaliti abo zmenshiti na poryadki takij rizik IEEE 754 chotirikratna tochnist i rozshirena tochnist rozrobleni dlya ciyeyi meti pri obchislenni z podvijnoyu tochnistyu Napriklad nastupnij algoritm ye pryamoyu realizaciyeyu dlya obchislennya funkciyi A x x 1 exp x 1 1 yaka dobre obumovlena na 1 0 odnak vona mozhe viyavlyayetsya chiselno nestabilnim i vtrachaye do polovini znachushih cifr sho mistyatsya v arifmetici koli obchislyuyetsya blizko 1 0 double A double X double Y Z 1 Y X 1 0 Z exp Y if Z 1 0 Z Y Z 1 0 2 return Z Prote yaksho vsi promizhni obchislennya vikonuyutsya z pidvishenoyu tochnistyu napriklad vstanovlyuyuchi ryadok 1 na C99 long double todi mozhna pidtrimuvati povnu tochnist kincevogo podvijnogo rezultatu Alternativno chiselnij analiz algoritmu pokazuye sho yaksho vnesti nastupnu neochevidnu zminu do ryadka 2 Z log Z Z 1 0 todi algoritm staye chiselno stabilnim i mozhe vikonuvati obchislennya z povnoyu podvijnoyu tochnistyu Dlya pidtrimki vlastivostej takih retelno pobudovanih chiselno stabilnih program potribne oberezhne povodzhennya z kompilyatorom Pevni optimizaciyi yaki mozhut zrobiti kompilyatori napriklad operaciyi zmini poryadku mozhut pracyuvati proti cilej pravilnogo programnogo zabezpechennya Isnuyut deyaki superechki shodo nedolikiv kompilyatoriv i dizajnu movi v cij oblasti C99 ye prikladom movi de taki optimizaciyi retelno viznacheni dlya pidtrimki chiselnoyi tochnosti Pereglyante zovnishni posilannya vnizu ciyeyi statti Detalnij opis metodiv napisannya visokoyakisnogo programnogo zabezpechennya z ruhomoyu komoyu vihodit za ramki ciyeyi statti i chitach maye posilannya na ta inshi posilannya vnizu ciyeyi statti Kahan proponuye kilka empirichnih pravil yaki mozhut suttyevo zmenshiti na poryadki rizik chiselnih anomalij na dodatok do bilsh retelnogo chiselnogo analizu abo zamist nogo Do nih nalezhat yak zaznacheno vishe obchislennya vsih viraziv i promizhnih rezultativ iz najvishoyu tochnistyu yaka pidtrimuyetsya aparatnim zabezpechennyam zagalnim empirichnim pravilom ye podvijna tochnist bazhanogo rezultatu tobto obchislennya z podvijnoyu tochnistyu dlya kincevogo rezultatu z odinarnoyu tochnistyu abo z podvijnoyu rozshirenoyu abo kvadratnoyu tochnistyu dlya rezultativ do podvijnoyi tochnosti i okruglennya vhidnih danih i rezultativ do tochnosti neobhidnoyi ta pidtrimuvanoyi vhidnimi danimi perenesennya nadlishkovoyi tochnosti v kincevomu rezultati sho perevishuye neobhidnu ta pidtrimuyetsya vhidnimi danimi mozhe vvesti v omanu zbilshiti vartist zberigannya ta zmenshiti shvidkist a nadlishok bitiv mozhe vplivayut na zbizhnist chiselnih procedur zokrema persha forma iteracijnogo prikladu navedenogo nizhche zbigayetsya pravilno pri vikoristanni cogo praktichnogo pravila Nizhche navedeno korotki opisi kilkoh dodatkovih problem i metodiv Oskilki desyatkovi drobi chasto ne mozhut buti tochno predstavleni u dvijkovij formi z ruhomoyu komoyu taka arifmetika ye najkrashoyu koli yiyi prosto vikoristovuyut dlya vimiryuvannya realnih velichin u shirokomu diapazoni masshtabiv takih yak orbitalnij period misyacya navkolo Saturna abo masa protona i v girshomu vipadku koli ochikuyetsya modelyuvannya vzayemodiyi velichin virazhenih u viglyadi desyatkovih ryadkiv yaki yak ochikuyetsya budut tochnimi Prikladom ostannogo vipadku ye finansovi rozrahunki Z ciyeyi prichini finansove programne zabezpechennya yak pravilo ne vikoristovuye dvijkove predstavlennya chisel z ruhomoyu komoyu Desyatkovij tip danih mov programuvannya C i Python a takozh desyatkovi formati standartu IEEE 754 2008 rozrobleni dlya uniknennya problem dvijkovih predstavlen iz ruhomoyu komoyu pri zastosuvanni do vvedenih lyudinoyu tochnih desyatkovih znachen i zrobiti tak shob arifmetika zavzhdi povodilasya nalezhnim chinom koli chisla drukuyutsya v desyatkovomu viglyadi Ochikuvannya vid matematiki mozhut ne realizuvatisya v oblasti obchislen z ruhomoyu komoyu Napriklad vidomo sho x y x y x 2 y 2 displaystyle x y x y x 2 y 2 i ce sin 2 8 cos 2 8 1 displaystyle sin 2 theta cos 2 theta 1 odnak na ci fakti ne mozhna pokladatisya yaksho zadiyani velichini ye rezultatom obchislennya z ruhomoyu komoyu Vikoristannya perevirki rivnosti if x y vimagaye oberezhnosti pri roboti z chislami z ruhomoyu komoyu Navit taki prosti virazi yak 0 6 0 2 3 0 na bilshosti komp yuteriv ne vidpovidayut dijsnosti u IEEE 754 podvijna tochnist napriklad 0 6 0 2 3priblizno dorivnyuye 4 44089209850063e 16 Otzhe taki testi inodi zaminyuyut nechitkimi porivnyannyami if abs x y lt epsilon de epsilon dostatno malij i adaptovanij do programi napriklad 1 0E 13 Docilnist robiti ce duzhe rizna i mozhe znadobitisya chislovij analiz dlya obmezhennya epsilona Znachennya otrimani z predstavlennya pervinnih danih i yih porivnyannya povinni vikonuvatisya z shirshoyu rozshirenoyu tochnistyu shob minimizuvati rizik takih nevidpovidnostej cherez pomilki okruglennya Chasto krashe organizuvati kod takim chinom shob taki testi buli nepotribnimi Napriklad v obchislyuvalnij geometriyi tochni perevirki togo chi lezhit koma na pryamij abo ploshini viznachenij inshimi komami mozhna vikonati za dopomogoyu metodiv adaptivnoyi tochnosti abo tochnoyi arifmetiki Neveliki pomilki v arifmetici z ruhomoyu komoyu mozhut zrostati koli matematichni algoritmi vikonuyut operaciyi velicheznu kilkist raziv Kilka prikladiv inversiya matrici obchislennya vlasnogo vektora ta rozv yazuvannya diferencialnih rivnyan Ci algoritmi mayut buti duzhe retelno rozrobleni z vikoristannyam chiselnih pidhodiv takih yak iteracijne utochnennya yaksho voni hochut dobre pracyuvati Pidsumovuvannya vektora znachen z ruhomoyu komoyu ye osnovnim algoritmom u naukovih obchislennyah tomu vazhlivo znati koli mozhe statisya vtrata znachushosti Napriklad yaksho dodavati duzhe veliku kilkist chisel okremi dodanki duzhe mali porivnyano z sumoyu Ce mozhe prizvesti do vtrati znachushosti Tipovim dodavannyam bude shos na kshtalt 3253 671 3 141276 3256 812 Molodshi 3 cifri dodankiv faktichno vtrachayutsya Pripustimo napriklad sho potribno dodati bagato chisel usi priblizno dorivnyuyut 3 Pislya dodavannya 1000 z nih potochna suma stanovit blizko 3000 vtracheni cifri ne vidnovlyuyutsya Algoritm pidsumovuvannya Kahana mozhe buti vikoristanij dlya zmenshennya pomilok Pomilka okruglennya mozhe vplinuti na zbizhnist i tochnist iteracijnih chiselnih procedur Napriklad Arhimed aproksimuvav p shlyahom obchislennya perimetriv bagatokutnikiv sho vpisuyut i opisuyut kolo pochinayuchi z shestikutnikiv i poslidovno podvoyuyuchi kilkist storin Yak zaznachalosya vishe obchislennya mozhut buti pereorganizovani takim chinom shob buti matematichno ekvivalentnim ale mensh shilnim do pomilok chislovij analiz Dvi formi rekurentnoyi formuli dlya opisanogo mnogokutnika potribna citata t 0 1 3 textstyle t 0 frac 1 sqrt 3 persha forma t i 1 t i 2 1 1 t i textstyle t i 1 frac sqrt t i 2 1 1 t i druga forma t i 1 t i t i 2 1 1 textstyle t i 1 frac t i sqrt t i 2 1 1 p 6 2 i t i displaystyle pi sim 6 times 2 i times t i sho shodyatsya yak i displaystyle i rightarrow infty Os obchislennya z vikoristannyam arifmetiki IEEE double mantisa z tochnistyu 53 biti i 6 2 i t i persha forma 6 2 i t i druga forma 0 3 4641016151377543863 3 4641016151377543863 1 3 2153903091734710173 3 2153903091734723496 2 3 1 596599420974940120 3 1 596599420975006733 3 3 14 60862151314012979 3 14 60862151314352708 4 3 14 27145996453136334 3 14 27145996453689225 5 3 141 8730499801259536 3 141 8730499798241950 6 3 141 6627470548084133 3 141 6627470568494473 7 3 141 6101765997805905 3 141 6101766046906629 8 3 14159 70343230776862 3 14159 70343215275928 9 3 14159 37488171150615 3 14159 37487713536668 10 3 141592 9278733740748 3 141592 9273850979885 11 3 141592 7256228504127 3 141592 7220386148377 12 3 1415926 717412858693 3 1415926 707019992125 13 3 1415926 189011456060 3 14159265 78678454728 14 3 1415926 717412858693 3 14159265 46593073709 15 3 14159 19358822321783 3 141592653 8571730119 16 3 1415926 717412858693 3 141592653 6566394222 17 3 1415 810075796233302 3 141592653 6065061913 18 3 1415926 717412858693 3 1415926535 939728836 19 3 141 4061547378810956 3 1415926535 908393901 20 3 14 05434924008406305 3 1415926535 900560168 21 3 14 00068646912273617 3 141592653589 8608396 22 3 1 349453756585929919 3 141592653589 8122118 23 3 14 00068646912273617 3 14159265358979 95552 24 3 2245152435345525443 3 14159265358979 68907 25 3 14159265358979 62246 26 3 14159265358979 62246 27 3 14159265358979 62246 28 3 14159265358979 62246 Spravzhnye znachennya 3 14159265358979323846264338327 Hocha dvi formi rekurentnoyi formuli yavno matematichno ekvivalentni persha vidnimaye 1 vid chisla duzhe blizkogo do 1 sho prizvodit do vse bilsh problematichnoyi vtrati znachushih cifr Koli recidiv zastosovuyetsya bagatorazovo tochnist spochatku pokrashuyetsya ale potim pogirshuyetsya Vin nikoli ne staye krashim nizh priblizno 8 cifr navit yaksho 53 bitna arifmetika povinna mati tochnist priblizno 16 cifr Koli vikoristovuyetsya druga forma povtorennya znachennya zbigayetsya z tochnistyu do 15 cifr Optimizaciya Shvidka matematika Vishezaznachena vidsutnist asociativnosti operacij z ruhomoyu komoyu zagalom oznachaye sho kompilyatori ne mozhut tak samo efektivno perevporyadkovuvati arifmetichni virazi yak voni mogli b z cilochiselnoyu arifmetikoyu ta arifmetikoyu z fiksovanoyu komoyu stvoryuyuchi pereshkodu dlya optimizaciyi takoyi yak usunennya zagalnih pidviraziv i avtovektorizaciya Opciya shvidkoyi matematiki v bagatoh kompilyatorah ICC GCC Clang MSVC vmikaye reasociaciyu razom iz nebezpechnimi pripushennyami takimi yak vidsutnist NaN i neskinchenni chisla v IEEE 754 Deyaki kompilyatori takozh proponuyut bilsh detalizaciyu parametri shob uvimknuti lishe reasociaciyu U bud yakomu vipadku programist narazhayetsya na bagato pastok tochnosti zgadanih vishe dlya chastini programi yaka vikoristovuye shvidku matematiku U deyakih kompilyatorah GCC i Clang uvimknennya shvidkoyi matematiki mozhe prizvesti do togo sho programa vimkne subnormalni chisla z ruhomoyu komoyu pid chas zapusku vplivayuchi na povedinku z ruhomoyu komoyu ne lishe zgenerovanogo kodu ale j bud yakoyi programi yaka vikoristovuye takij kod yak biblioteku U bilshosti kompilyatoriv Fortran yak ce dozvoleno standartom ISO IEC 1539 1 2004 Fortran povtorna asociaciya ye tipovoyu a poshkodzhennya znachnoyu miroyu zapobigaye nalashtuvannya zahistiti duzhki takozh uvimkneno za zamovchuvannyam Cej parametr zapobigaye povtornomu asociyuvannyu kompilyatora za mezhami duzhok Kompilyator Intel Fortran ye pomitnim vikidom Poshirenoyu problemoyu u shvidkij matematici ye te sho pidvirazi mozhut buti neodnakovo optimizovani vid miscya do miscya sho prizvodit do neochikuvanih vidminnostej Odne z tlumachen problemi polyagaye v tomu sho shvidka matematika realizovana na danij moment maye pogano viznachenu semantiku Odna sproba formalizaciyi shvidkoyi matematichnoyi optimizaciyi sposterigayetsya v Icing perevirenomu kompilyatori Ruhoma koma ta ruhoma krapka V anglomovnih krayinah div dokladnij spisok desyatkovij rozdilyuvach pri zapisu chisel cila chastina viddilyayetsya vid drobovoyi krapkoyu to v terminologiyi cih krayin figuruye nazva ruhoma krapka angl floating point Oskilki v Ukrayini cila chastina chisla vid drobovoyi tradicijno viddilyayetsya komoyu to dlya poznachennya togo zh ponyattya istorichno vikoristovuyetsya termin ruhoma koma prote v literaturi ta tehnichnij dokumentaciyi mozhna zustriti obidva varianti Pohodzhennya nazviNazva ruhoma koma pohodit vid togo sho koma v pozicijnomu podanni chisla desyatkova koma abo dlya komp yuteriv dvijkova koma dali po tekstu prosto koma mozhe buti pomishena de zavgodno vidnosno cifr u ryadku Ce polozhennya komi vkazuyetsya okremo u vnutrishnomu podanni Takim chinom podannya chisla u formi z ruhomoyu komoyu mozhe rozglyadatisya yak komp yuterna realizaciya eksponencijnogo zapisu chisel Perevaga vikoristannya podannya chisel u formati z ruhomoyu komoyu porivnyano z vikoristannyam u formati z fiksovanoyu komoyu i cilimi chislami polyagaye v tomu sho mozhna vikoristovuvati istotno shirshij diapazon znachen za nezminnoyi vidnosnoyi tochnosti Napriklad u formi z fiksovanoyu komoyu chislo sho maye 8 rozryadiv u cilij chastini i 2 rozryadi pislya komi mozhna podati u viglyadi 123456 78 8765 43 123 00 i tak dali U svoyu chergu u formati z ruhomoyu komoyu v tih zhe 8 rozryadah mozhna zapisati chisla 1 2345678 1234567 8 0 000012345678 12345678000000000 i tak dali ale dlya cogo potribne dvorozryadne proyasniti dodatkove pole dlya zapisu pokaznika stepenya 10 vid 0 do 1610 pri comu zagalne chislo rozryadiv sklade 8 2 10 Shvidkist vikonannya komp yuterom operacij z chislami podanimi u formi z ruhomoyu komoyu vimiryuyetsya v megaflopsah vid angl FLOPS chislo operacij z ruhomoyu komoyu za sekundu gigaflopsah i tak dali i ye odniyeyu z osnovnih odinic vimiryuvannya shvidkodiyi obchislyuvalnih sistem Normalna forma ta normalizovana forma Normalnoyu formoyu chisla z ruhomoyu komoyu nazivayetsya taka forma v yakij mantisa bez urahuvannya znaku mistitsya na napivintervali 0 1 0 a lt 1 displaystyle 0 leqslant a lt 1 Taka forma zapisu maye nedolik deyaki chisla zapisuyutsya neodnoznachno napriklad 0 0001 mozhna zapisati v 4 formah 0 0001 100 0 001 10 1 0 01 10 2 0 1 10 3 tomu poshirenoyu osoblivo v informatici ye j insha forma zapisu normalizovana v yakij mantisa desyatkovogo chisla nabuvaye znachen vid 1 vklyuchno do 10 NE vklyuchno a mantisa dvijkovogo chisla nabuvaye znachen vid 1 vklyuchno do 2 NE vklyuchno 1 a lt q displaystyle 1 leqslant a lt q U takij formi bud yake chislo krim 0 zapisuyetsya yedinim chinom Nedolik polyagaye v tomu sho v takomu viglyadi nemozhlivo otrimati 0 tomu predstavlennya chisel v informatici peredbachaye specialnu oznaku bit dlya chisla 0 Oskilki starshij rozryad cila chastina chisla mantisi dvijkovogo chisla krim 0 v normalizovanomu viglyadi dorivnyuye 1 to pri zapisi mantisi chisla v EOM starshij rozryad mozhna ne zapisuvati sho j vikoristovuyetsya v standarti IEEE 754 V pozicijnih sistemah chislennya z osnovoyu bilshoyu nizh 2 u trijkovij chetvirkovij ta inshih ciyeyi vlastivosti nemaye Vikoristannya v obchislyuvalnih mashinahV obchislyuvalnih mashinah pokaznik stepenya prijnyato vidokremlyuvati vid mantisi literoyu E angl exponent Napriklad chislo 1 528535047 10 25 u bilshosti mov programuvannya visokogo rivnya zapisuyetsya yak 1 528535047E 25 Div takozhEksponencijnij zapis Formati z ruhomoyu komoyu Chslova stijkist Neruhoma koma Chislo polovinnoyi tochnosti Chislo odinarnoyi tochnosti Chislo podvijnoyi tochnosti Desyatkovij rozdilyuvachPrimitkinumber Anglijsko ukrayinskij slovnik z matematiki ta informatiki 2010 r Ye Mejnarovich M Kratko number Anglijsko ukrayinsko anglijskij slovnik naukovoyi movi fizika ta sporidneni nauki Chastina I anglijsko ukrayinska 2010 r O Kocherga Ye Mejnarovich chislo Ukrayinsko anglijskij slovnik z radioelektroniki 2015 Bogdan Ricar Leonid Snicaruk Roman Misak PosilannyaArifmetika ruhomoyi komiLiteraturaKrinickij N A Mironov G A Frolov G D Programmirovanie M Gosudarstvennoe izdatelstvo fiziko matematicheskoj literatury 1963 384 s Genri S Uorren ml Glava 15 Chisla s plavayushej tochkoj Algoritmicheskie tryuki dlya programmistov Hacker s Delight M Vilyams 2007 S 288 ISBN 0 201 91465 4 Cya stattya mistit perelik posilan ale pohodzhennya tverdzhen u nij zalishayetsya nezrozumilim cherez praktichno povnu vidsutnist vnutrishnotekstovih dzherel vinosok Bud laska dopomozhit polipshiti cyu stattyu peretvorivshi dzherela z pereliku posilan na dzherela vinoski u samomu teksti statti