- •Глава 3. Машинная арифметика
- •3.1. Машинное представление целых чисел
- •3.2. Арифметика чисел с фиксированной точкой
- •3.3. Арифметика чисел с плавающей точкой
- •3.3.2. Сложение чисел в форме с плавающей точкой
- •3.3.3. Умножение и деление чисел в форме с плавающей точкой
- •3.3.4. Точность арифметических операций с числами в форме с плавающей точкой
- •3.4. Вычисления с многократной точностью
- •3.4.1. Вычисления с большими целыми числами
- •3.4.2. Модулярная арифметика
- •3.4.3. Ускорение процесса умножения
- •3.5. Эффективные алгоритмы вычисления степеней
- •3.5.1. Бинарный метод
- •3.5.2. Метод факторизации показателя
- •3.6. Эффективные действия с дробями
- •3.7. Алгоритм Евклида для больших чисел
- •3.8. Алгоритмы разложения на простые множители
- •3.8.1.Метод пробных делений
- •3.8.2. Метод Ферма
- •3.8.3. Метод Крайчика
3.3.3. Умножение и деление чисел в форме с плавающей точкой
Умножение. Для машинного умножения чисел, представленных в форме с плавающей точкой, достаточно перемножить мантиссы (как перемножаются целые числа и числа с фиксированной точкой) и сложить порядки:
.
После этого проводится корректировка результата, обеспечивающая нормализованность мантиссы и допустимый диапазон для порядка. Если суммарный порядокменьше минимально допустимого, то произведение представляется машинным нулём. Если суммарный порядокбольше максимально допустимого, то выдаётся сигнал об ошибке, если только приведение мантиссы к нормализованному виду путем соответствующего изменения порядка не вернёт последний в допустимый диапазон.
Деление. Деление выполняется в четыре этапа.
1. Определение предварительного порядка частного: . Если порядок частного окажется выше допустимого предела, то деление завершается аварийно. Если порядок частного меньше минимально допустимого, то он запоминается, поскольку последующая нормализация мантиссы может вернуть его в требуемый диапазон.
2. Вычисление частного мантисс: по правилу деления целых чисел (и чисел с фиксированной точкой).
3. Нормализация результата путём сдвига мантиссы и соответствующего изменения порядка (она аналогична нормализации при умножении).
4. Завершающее округление мантиссы.
3.3.4. Точность арифметических операций с числами в форме с плавающей точкой
Дискретность множества рациональных чисел, представленных в форме с плавающей запятой, означает, что арифметические операции с ними выполняется приближённо. Поэтому отклонение полученного машинного результата от истинного может оказаться значительным. Точный анализ возникающих ошибок при большом объёме вычислений затруднителен. Можно сформулировать эмпирическое (то есть основанное на практике) правило:
Сложение и умножение в формате с плавающей точкой, как правило, не ведут к существенной потери точности результата. В то же время вычитание близких чисел (как и сложение близких по модулю чисел с разными знаками) может привести к значительному искажению результата.
Последнее имеет место, когда выравнивание порядков в (29) приводит к большому сдвигу разрядов мантиссы за пределы разрядной сетки. Возможным выходом в такой ситуации может служить принятие соглашения о том, что дробная часть может быть ненормализованной, если порядокимеет минимально возможное значение.
Характеристики точности представления. Пусть вещественное число представлено в компьютере приближённо (всегда рациональным) числом.
Абсолютной ошибкой (абсолютной погрешностью) представления называется число .
Относительной ошибкой (относительной погрешностью) представления называется число . При этом.
Значащими цифрами мантиссы нормализованного представления называются все цифры за исключением нулей в конце. Это связано с тем, что практика доставляет числа (например, физические константы в системе единиц СИ) в форме с фиксированной точкой и с нескольками цифрами после точки. Требование нормализованности мантиссы при машинном представлении вынуждает сдвигать точку влево, дописывать несколько нулей в конце и, соответственно, изменять порядок. В таком случае нули в конце мантиссы не несут никакой информации. Например, значение числа Авогадро (официально рекомендованное в 2010 г.) есть . Если для мантиссы отведено одиннадцать разрядов, то нормализованное представление имеет вид, при том, что фактически две последние цифры мантиссы неизвестны.