3.7. ВЫЧИСЛЕНИЯ С ДВОЙНОЙ ТОЧНОСТЬЮ
Если арифметика однократной точности, о которой шла речь до сих пор, дает слишком большую погрешность, то точность вычислений можно увеличить при помощи средств программистского характера, используя для представления каждого числа два или более слов памяти.
Для выполнения арифметических действий над числами с плавающей запятой двойная точность необходима почти всегда в отличие от случая фиксированной запятой. Вместе с тем, ввиду того что вычисления с двойной точностью проще для чисел с фиксированной запятой, будем рассматривать только операции над мантиссами.
Двойная точность часто желательна не только для снижения погрешности задания мантисс, но также для увеличения диапазона изменения порядка. Тогда двусловное представление чисел с плавающей запятой будет иметь вид
В последнем случае используются два байта для порядка и шесть байтов для мантиссы. Можно использовать также три машинных слова: одно для представления порядка и два для мантиссы. В этом случае говорят о тройной точности, хотя мантисса представлена только с двойной точностью.
Вычислениям с двойной точностью характерен ряд особенностей по сравнению с вычислениями однократной точности. Главная из них состоит в том, что округление не выполняется, если это оказывается неудобным, т. е. в этом случае допускается большая погрешность в младшем разряде мантиссы, имеющем существенно меньший вес. Главной заботой при этом является повышение скорости вычислений.
Сложение с двойной точностью отличается от случая однократной точности тем, что для выполнения операции используется раздельное сложение менее значимых и более значимых половин мантисс с учетом возможного переноса из менее значимой части числа.
Произведение на имеет четыре компоненты:
Так как нам нужна только старшая половина мантиссы результата, то можно даже не вычислять произведение младших половин
Операция деления двойной точности чисел с плавающей запятой несколько сложнее. Запишем пару чисел, участвующих в делении, в виде
где — величина, обратная размеру машинного слова, — нормализовано. Эту дробь можно разложить в ряд
так как , то можно пренебречь ошибкой, связанной с отбрасыванием членов порядка Таким образом, необходимо вначале вычислить а затем вычесть из результата
Среднее время выполнения операций с удвоенной точностью увеличивается немногим более чем в два раза.