Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки Cтатьи на компьютерные темы Компьютерный юмор Новости и прочее

Формула расчета точности для умножения

Когда я писал заметку о точном представлении чисел, я вдруг обнаружил, что не понимаю формулу расчета точности для умножения. Например, число из 2 знакомест (N1 = 2, max 99) умножается на число из 3 знакомест (N2 = 3 max 999). Результат умножения max 98901 и точность N1 + N2. А в справочнике расчет точности у компилятора PL/1 приведен как N1 + N2 + 1.

            Откуда ещё один разряд? Я даже спрашивал у калифорнийских профессоров через Гугл-групп для PL/1: дескать, какого черта, ребята? Откуда там возьмется ещё один перенос? Для других арифметических действий такого в справочнике нет.

            Сначала приходили ответы типа: как теперь узнать, что было в головах разработчиков 50 лет назад? Их уже не спросишь. Но затем пришел и правильный ответ: Вы забыли случай умножения целых комплексных чисел по формуле (a1 * a2 - b1 * b2) + (a1 * b2 + b1 * a2). Здесь потенциально возможен ещё один перенос, а в остальных арифметических действиях — нет.

            Честно говоря, я был поражен. Так разработчики PL/1 — это просто гении! Мне бы и в голову не пришло, что при таких условиях возможен ещё перенос. Правда, непонятно, зачем могли пригодиться целые комплексные?

            Попробовал копать на эту тему и вскоре выяснил следующее:

  • число гениев среди разработчиков PL/1 сильно преувеличено — это все взято их Фортрана;
  • целые комплексные числа применялись в электротехнических и радиотехнических расчетах, например, сопротивления цепей, где часты формулы типа 1 / R = 1 / R1 + 1 / R2;
  • потеря значащего значения произошла в реальной программе, после чего и было введено уточнение N1 + N2 + 1.


            Вывод: слова песни «мои года — мое богатство» — не пустое балагурство. За спиной давно используемых языков стоит огромное преимущество в виде многолетней обкатки на реальных задачах. Многие вещи очень трудно предугадать и предусмотреть на этапе разработки. Я горжусь 50-летним стажем PL/1 и его «обкатаностью» для задач инженерного типа. И именно поэтому сравниваю его с пистолетом Макарова, который победил конкурентов из-за бОльшего объема отстрелов. Кстати, через несколько лет и у Макарова выявился недостаток (ослабление пружины), который был оперативно устранен добавлением ещё одного винта.

Автор: Д.Ю.Караваев.

Опубликовано: 2018.08.26, последняя правка: 2019.01.28    20:37

ОценитеОценки посетителей
   ██████████████████████████████████████████ 1 (100%)
   ▌ 0
   ▌ 0
   ▌ 0

Отзывы

     2018/10/11 22:29, Автор сайта          # 

число гениев среди разработчиков PL/1 сильно преувеличено — это все взято их Фортрана

Первым делом я про Фортран и подумал. Кто настолько досконально знает математику? Профессор по математике! А на чём программировал профессор? На Фортране!

Я ещё застал этих профессоров. Думаю, Вы тоже.

слова песни «мои года — мое богатство» — не пустое балагурство

А есть такое балагурство :)

С возрастом приходит мудрость. Но иногда возраст приходит один.

Добавить свой отзыв

Написать автору можно на электронную почту mail(аt)compiler.su

Авторизация

Регистрация

Выслать пароль

Карта сайта


Содержание

Каким должен быть язык программирования?

Анализ и критика

Описание языка

Компилятор

Отечественные разработки

Cтатьи на компьютерные темы

●  Двадцать тысяч строк кода, которые потрясут мир?

●  Почему владение/заимствование в Rust такое сложное?

●  Масштабируемые архитектуры программ

●  Почему Хаскелл так мало используется в отрасли?

●  Программирование исчезнет. Будет дрессировка нейронных сетей

●  Бесплатный софт в мышеловке

●  Исповедь правового нигилиста

●  Русской операционной системой должна стать ReactOS

●  Почему обречён язык Форт

●  Программирование без программистов — это медицина без врачей

●  Электроника без электронщиков

●  Программисты-профессионалы и программирующие инженеры

●  Статьи Дмитрия Караваева

●●  Идеальный транслятор

●●  В защиту PL/1

●●  К вопросу о совершенствовании языка программирования

●●  О реализации метода оптимизации при компиляции

●●  О реализации метода распределения регистров при компиляции

●●  О распределении памяти при выполнении теста Кнута

●●  Опыты со стеком или «чемпионат по выполнению теста Кнута»

●●  О размещении переменных в стеке

●●  Сколько проходов должно быть у транслятора?

●●  Чтение лексем

●●  Экстракоды при синтезе программ

●●  Об исключенных командах или за что «списали» инструкцию INTO?

●●  Типы в инженерных задачах

●●  Непрерывное компилирование

●●  Об одной реализации специализированных операторов ввода-вывода

●●  Особенности реализации структурной обработки исключений в Win64

●●  О русском языке в программировании

●●  Формула расчета точности для умножения

●●  Права доступа к переменным

●●  Заметки о выходе из функции без значения и зеркальности get и put

●●  Модификация исполняемого кода как способ реализации массивов с изменяемыми границами

●●  Ошибка при отсутствии выполняемых действий

●●  Скорость в попугаях

●●  Крах операции «Инкогнито»

●●  Предопределённый результат

●  Следующие 7000 языков программирования

●●  Что нового с 1966 года?

●●  Наблюдаемая эволюция языка программирования

●●  Ряд важных языков в 2017 году

●●  Слоны в комнате

●●  Следующие 7000 языков программирования: заключение

Компьютерный юмор

Новости и прочее




Последние отзывы

2019/12/12 14:11 ••• Геннадий Тышов
Почему обречён язык Форт

2019/12/05 23:29 ••• Автор сайта
Слоны в комнате

2019/12/03 22:45 ••• Автор сайта
Следующие 7000 языков программирования: заключение

2019/12/03 22:36 ••• Автор сайта
Наблюдаемая эволюция языка программирования

2019/11/30 20:55 ••• Сергей
Каким должен быть язык программирования?

2019/11/09 21:27 ••• kt
Программирование без программистов — это медицина без врачей

2019/11/07 10:58 ••• kt
Признаки устаревшего языка

2019/10/28 23:55 ••• Автор сайта
Типы в инженерных задачах

2019/10/15 16:32 ••• kt
Модификация исполняемого кода как способ реализации массивов с изменяемыми границами

2019/10/07 14:15 ••• Автор сайта
О наименовании проекта и языка программирования

2019/09/19 15:23 ••• kt
Некошерный «goto»

2019/09/13 16:38 ••• Автор сайта
Программирование исчезнет. Будет дрессировка нейронных сетей