Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки 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, последняя правка: 2023.07.22    17:06

ОценитеОценки посетителей
   █████████████ 3 (30%)
   █████████ 2 (20%)
   █████████ 2 (20%)
   █████████████ 3 (30%)

Отзывы

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

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

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

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

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

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

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

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

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

Авторизация

Регистрация

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

Карта сайта


Содержание

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

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

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

Компилятор

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

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

●  О превращении кибернетики в шаманство

●  Про лебедей, раков и щук

●  О замысле и воплощении

●  О русском ассемблере

●  Арифметика синтаксиса-3

●  Концепция владения в Rust на примерах

●●  Концепция владения в Rust на примерах, часть 2

●●  Концепция владения в Rust на примерах, часть 3

●  Суть побочных эффектов в чисто функциональных языках

●  О неулучшаемой архитектуре процессоров

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

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

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

●  О создании языков

●●  Джоэл Спольски о функциональном программировании

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

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

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

●  Десятка худших фич C#

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

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

●  ЕС ЭВМ — это измена, трусость и обман?

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

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

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

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

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

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

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

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

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

●●  Опыт самостоятельного развития средства программирования в РКК «Энергия»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

●●  О PL/1 и почему в нём не зарезервированы ключевые слова

●●  Не поминайте всуе PL/1

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

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

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

●●  Поддержка профилирования кода программы на низком уровне

●●  К вопросу о парадигмах

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

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

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

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

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

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

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

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




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

2024/12/07 20:54 ••• Клихальт
Переключатель

2024/12/06 18:44 ••• Анкнав
Русский язык и программирование

2024/12/01 00:00 ••• alextretyak
Продолжение цикла и выход из него

2024/11/29 23:08 ••• Вежливый Лис
О русском ассемблере

2024/11/26 23:53 ••• Бурановский дедушка
ЕС ЭВМ — это измена, трусость и обман?

2024/11/25 18:31 ••• Деньги на WWWетер
Ресурсы, посвящённые созданию языков программирования и компиляторов

2024/11/12 20:24 ••• Вежливый Лис
Правила языка: строки, комментарии

2024/11/12 13:10 ••• Вежливый Лис
Новости и прочее

2024/11/12 00:32 ••• Автор сайта
Оценка надёжности функции с несколькими реализациями

2024/11/06 02:50 ••• Иван
Энтузиасты-разработчики компиляторов и их проекты

2024/11/05 23:51 ••• Борис К.
Изменение приоритетов операций

2024/11/05 23:38 ••• Борис К.
Шестнадцатиричные и двоичные константы

2024/11/01 12:11 ••• ИванАс
Русской операционной системой должна стать ReactOS