3.1. Основні недоліки стандарту іеее754-1985.
З моменту затвердження стандарту ІЕЕЕ754-1985 пройшло вже понад 25 років. За цей час комп'ютерна техніка розвивалась як у напрямку збільшення її швидкодії та обсягів опрацьовуваної інформації, так і в напрямку підвищення надійності та точності обчислень. Одночасно з широким впровадженням стандарту починаючи з апаратної реалізації математики з плаваючою комою в мікропроцесорах (Intel 8087) та закінчуючи створенням ефективного програмного забезпечення суперкомп'ютерів та кластерних систем, було виявлено ряд недоліків, які притаманні числам з плаваючою комою. Ці недоліки зв'язані з тим, що такі числа є наближенням дійсних, реальних чисел, а математику, яка базується на основі стандарту ІЕЕЕ754-1985 не можна вважати математикою дійсних чисел. Фактично це є математика наближених чисел і саме тому всі обчислення повинні здійснюватись за правилами математичних дій з наближеними числами. ЇЇ ще інколи називають ІЕЕЕ754-математикою. Такі математичні дії повинні передбачати врахування похибки представлення чисел та її накопичення в процесі обчислення.
Одним з недоліків ІЕЕЕ754-математики є обмежений динамічний діапазон чисел з плаваючою комою. Це означає, що числа, які менше (3.16) та більше, ніж (3.10) не можуть бути представлені за допомогою вибраного формату чисел, який передбачає m розрядів експоненти та n розрядів залишку мантиси. Такі числа вважають машинним нулем, або нескінченністю відповідно. Якщо в результаті ділення числа a на число b було отримано машинний нуль, то результатом такої операції (a/b)×2b також буде машинний нуль, хоча повинно бути число 2a.
Другою недоліком є те, що абсолютна похибка представлення числа, залежить від величини цього числа та визначається згідно (3.13), як , де е - значення експоненти. Для максимальних значень похибка набагато більше Якщо до такого числа a додати число b, яке за величиною менше абсолютної похибки представлення числа a, то в результаті отримаємо те саме число a, тобто a + b = a. Таким чином
(a + b) + (- a) = 0 ≠ (a + (- a)) + b = b,
а отже маємо невиконання властивості асоціативності додавання. Наприклад:
(1020+1)-1020=0 ≠ (1020-1020)+1=1
Третім недоліком є те, що скінченні десяткові дроби в двійковій системі числення, як правило, записуються в вигляді нескінченного дробу, наприклад 0,3d = 0,0100110011...b. (Виняток складають тільки ті дроби, які можна записати в вигляді , де - степінь числа два). Оскільки залишок мантиси має n розрядів, то такі скінченні в десятковому записі дроби будуть представлені наближено, з певною похибкою. Таким чином, виконання простого множення 0,3 × 0,7 = 0,21 насправді здійснюється над наближеними числами і результатом такої операції є наближене число.
Наступний недолік безпосередньо випливає з правил округлення чисел в стандарті ІЕЕЕ754. Згідно цих правил результат будь-якої арифметичної операції над ІЕЕЕ754-числами повинен бути таким, якби ця операція була виконана над точними значеннями цих чисел, а результат було округлено до найближчого числа, яке може бути представлене в даному форматі.
Округлення в стандарті здійснюється не таким способом, як ми привикли в повсякденній практиці. Математично показано, що якщо 0,5 округлювати до 1 (в більшу сторону), то існує набір операцій, за яких похибка округлення буде зростати до нескінченності. Тому в стандарті ІЕЕЕ754 застосовується правило округлення до парного. Наприклад, 12,5 буде округлено до 12, а 13,5 - до 14. В більшості випадків, особливо для чисел подвійної (та вище) точності, похибки округлення є несуттєвими. Однак, всі арифметичні дії над числами, які представляють собою грошові суми, повинні здійснюватись з точністю до копійки (цента, пенні тощо). Застосування описаного вище округлення може приводити до суттєвих похибок, особливо в випадку нарахування відсотків на банківський депозит, або платежів за певну частку послуг згідно тарифу.
Причиною ще одного недоліку ІЕЕЕ754-математики є неоднозначне представлення нуля, який має два значення: -0 та +0. Таке представлення призводить до того, що -0 < +0, а отже 1/(-∞) < 1/(+∞), хоча з точки зору звичайної математики ці величини однакові. Якщо в програмі є цикл, умовою закінчення якого є рівність певної змінної нулю ("звичайний" нуль - це +0), то за певних умов такий цикл буде здійснюватись нескінченну кількість разів, що призведе до "зависання" програми.
Можна навести ще ряд недоліків ІЕЕЕ754-математики, однак основний висновок, який можна зробити з їх існування, полягає в наступному:
Врахувати всі похибки за допомогою апаратних засобів ЕОМ неможливо, це можна здійснити тільки шляхом написання досконалого програмного коду.
Таким чином, програміст, який використовує числа з плаваючою комою, повинен мати глибокі знання в області теорії чисел, наближених обчислень, теорії похибок та чітко усвідомлювати до яких результатів може призвести неврахування особливостей здійснення математичних операцій над числами з плаваючою комою.
Однак не всі програмісти є математиками, а результатами їх помилок є фатальні катастрофи. Ряд маштабних аварій, як було доведено, повністю зобов'язані сучасній технології комп'ютерних обчислень згідно стандарту ІЕЕЕ754 [1]:
- вибух ракети "Patriot" в Саудівській Аравії 25 лютого 1991 р., який став причиною загибелі 28 чоловік, зв'язаний з помилками округлення;
- Вибух ракети "Аріан-5" одразу ж після старту під час її першого випробування у Французькій Гвінеї 4 червня 1996 р. був наслідком переповнення розрядної сітки комп'ютера. Збитки оцінюються в півмільярда доларів;
- 23 серпня 1991 р. в Гандсфіорді в Норвегії потонула нафтова платформа, що призвело до збитків на один мільярд доларів. Причиною катастрофи вважають inaccurate finite element analysis.
Ці катастрофи належать до тих, причини яких були чітко ідентифіковані як наслідок некоректного арифметичних дій над числами з плаваючою комою. Така ідентифікація досить складна, тому можна тільки здогадуватися в скількох випадках авіакатастроф, пожеж, вибухів тощо, не було виявлено істинних причин аварій.
Чого можна очікувати? Нового Чорнобилю через помилки керування атомним реактором? Чи самозапуску ракети з атомною боєголовкою?
Оскільки в основі більшості комп'ютерних розрахунків використовуються числа з плаваючою комою стандарту ІЕЕЕ754, на нього покладена надзвичайна відповідальність за достовірність обчислень. Саме тому стандарт 1985 року вимагав удосконалення, нових підходів до підвищення надійності та якості представлень реальних чисел.
- 2. Обладнання
- 3. Короткі відомості з теорії
- 3.1. Основні недоліки стандарту іеее754-1985.
- 3.2. Четверний (128-бітний) формат.
- 3.3. Приклад Румпа.
- 3.4. Особливості стандарту іеее Std 754-2008.
- 3.5. Бінарні формати стандарту іеее Std 754-2008.
- 3.5. Принципи представлення десяткових чисел з плаваючою комою.
- 3.6. Двійково-десяткове кодування.
- 3.7. Щільно упаковані десяткові числа.
- 3.8. Десяткові числа з плаваючою комою стандарту іеее754-2008.
- 3.9. Властивості десяткових чисел з плаваючою комою.
- 3.10. Формати десяткових чисел з плаваючою комою стандарту іеее754-2008.
- 4. Порядок виконання роботи.
- 5. Контрольні запитання.