Как стать автором
Обновить
0
0
Спиридонов Юрий Маркович @Innotor

Изобретатель

Отправить сообщение
автор привык вести обсуждения без всяких статей, поэтому ошибочно свои статьи именует топиками.
Проблемы начинаются, когда требования точности сводят к формулировкам в виде точных десятичных цифр.


В нашей дискусси столько раз говорится о точности. Но вы это понятие никак не сформулировали, ссылаясь на то, что столпы еще не достаточно сами разобрались. Я определение точности прводил выше. Хотелось бы понять, что вы понимаете под этим словом?
Не только и не складываются. С этой теорией вы тоже не очень знакомы.

Смотря как округлять.
Когда я привожу свои доводы, я либо даю ссылки на источники, либо привожу примеры. Вы же меня постоянно обвиняете, что я чего-то не знаю и рассказываете о столпах. Так покажите, где я ошибаюсь, дайте ссылки, приведите примеры. И не пример, типа, в decimal это будет так. decimal такое же двоичное число, только длинное.
Я люблю точные вычисления больше, чем вы, судя по этой дискуссии.
Калькулятором — да, не пользуюсь. Компьютер удобнее и результаты не хуже.

А с чем вы сравниваете результаты? Судя по тому, что «результаты не хуже», все таки с ненавистным калькулятором.
Они знают и подтверждают. См. те же базовые источники.

Вы ссылветесь на компьютерную арифметику, а я на арифметику «обычную».
Что же по поводу маниакальности — я просто промолчу, чтобы не переходить на ответные личности…

Вынужден был так написать, чтобы призвать вас к корректности ведения дискуссии. Вы считаете «канделябром по...» менее оскорбительно, чем слово «маниакально»?
Это грубо неверно. В арифметике с base=10 точно так же не выполняется уже и ассоциативный закон

Скажите такое математикам (не матфизикам) и они вам «канделябром по выступающим местам», так по-моему вы изволили выразится в коменте выше.
В маниакальной попытке доказать, что вы самый, вы совершенно не вникаете в те доводы, которые я вам привожу и спорите сами с собой.
Как только вы вступили на эту тропу, вы имеете дело не с проблемами десятичной или двоичной арифметики самой по себе, а с эффектами, которые происходят от переквантования на другую сетку значений.

Это не я вступил, а те, кто двоичной арифметикой решают десятичные примеры, пусть и с огромным количеством членов. Очередной раз повторюсь. Законы арифметики действуют на двоичные числа в рамках двоичной арифметики. Законы десятичной арифметики действуют в рамках десятичной арифметики. Проблемы начинаются тогда, когда десятичную арифметику решают инструментарием двоичной.
Что значит фраза «с эффектами, которые происходят от переквантования на другую сетку значений» я не понял.
В ваших работах я объяснения не нашел. Поясните.
Но на практике это никого не интересует, кроме тех, кому зачем-то нужна формальная корректность именно одиночных операций в десятичном виде.

Длинные вычисления складываются из одиночных операций. И если одиночные операции ошибочны, ошибочен и результат.
Вы в своих рассуждениях все время упоминаете длинные расчеты. Видимо, имея ввиду, что в результате статистической независимости ошибок они взаимно компенсируются. Но, это не верное утверждение. В своей статье «Рекуррентные формулы для расчета ошибок итерационного суммирования двоичных чисел ограниченной длины» я показал, что для таких чисел основная ошибка формируется не от ошибок преобразования, а от ошибок округления. Причем ошибки округления только складываются.
И в заключении. А вы пользуетесь в матфизике калькулятором, или это для вас атавизм? Почему вы так не любите точных вычислений?
В матфизике» обычно смотрят на доказательства, и не используют методы, которые заведомо портят точность.

В десятичной арифметике есть три основных обязательных свойства для сложения и умножения: коммутативный, ассоциативный, дистрибутивный. В арифметике с плавющей двоичной точкой выполняется только коммутативный.
И вы утверждаете, что такой ущербной арифметикой можно производить вычисления более точно?
Аппаратной реализации десятичной степени с двоичной мантиссой я не видел, но в GCC уже давно есть поддержка поддержка именно такого формата, делается своей библиотекой.

Кино я не смотрел, но оно мне не нравится.
Нет, в вычислениях в двоичной арифметике количество верных знаков сокращается значительно медленнее, чем в десятичной.

Нам дали некое 24-х разрядное двоичное число: 1.00011111011111001110111 и попросили его отнять от двоичного числа 1.00011111001110110110010. Результат должен быть представлен тоже 24-х разрядным нормализованным числом. В результате получим число 1.0000011000101*2^-10. В приведенных вычислениях все числа состоят только из верных двоичных цифр, т.к. округлений мы не производили.
А теперь надо найти разность двух десятичных чисел 1.123-1.122 Очевидно, она будет равна 0.001 Здесь все десятичные числа содержат только верные цифры.
А теперь вычислим разность этих десятичных чисел, используя двоичную арифметику.
1.123= 1.00011111011111001110111
1.122=1.00011111001110110110010
1.00011111011111001110111-1.00011111001110110110010= 0.00000000010000011000101=1.0000011000101*2^-10= 0.00100004673004150390625
Мы видим, что в результате ulp=0.4673004150390625. Это и есть неверные цифры, которые появились в конечном результате.
Если вы обратите внимание, двоичные эквиваленты наших десятичных чисел 1.123 и 1.122 в последнем примере совпадают с двоичными числами из первого примера.
Таким образом, в первом примере все двоичные числа были верными, а во втором примере двоичные эквиваленты наших десятичных чисел оказались приблизительными числами, содержащими неверные цифры. В рамках двоичной арифметики от них не избавишься и при дальнейших вычислениях они будут влиять на результаты.

и поскольку известно, что вычислитель — двоичный, округление числа пи должно быть тоже двоичным.

Вычислитель может быть каким угодно. Но, если он переводит число в двоичную систему, он работает с двоичными числами со всеми вытекающими. Пользователю плевать как устроен ваш вычислитель. Он хочет получить то, что ожидает.
Мое утверждение: «Но, выбирая двоичную арифметику, мы вносим в его значение ошибку представления»
Ваше утверждение:
А значит, никакой ошибки представления нет.

Это как понимать?
Понятие точности имеет вполне определенное научное определение.
Необходимость СДДФ вытекает из достижения максимальной производительноти и точности минимальными средствами.
Настоящее пи — число иррациональное и в десятичном коде точно представлено быть не может. Для разных нужд его округляют до разного количества значащих цифр. Для вычислителя (назовем его калькулятором) округленное число пи является точным. Он ничего не знает о природе его происхождения. Нам хотелось бы, чтобы это число далее точно сохроняло свое значение. Как работать с десятичными числами мы знаем. Но, выбирая двоичную арифметику, мы вносим в его значение ошибку представления. В двоичном числе появляются неверные цифры, которые влияют на точность дальнейших вычислений. Чтобы влияние было меньше, двоичное число должно быть представлено наиболее близко к своему десятичному эквиваленту. Для обеспечения этого требования мы вынуждены повышать разрядность операционного региста до 64,128, 256 разрядов и т.д. При этом неверные цифры, полученные за счет преобразования, все равно оказывают влияние на точность вычислений. В итоге, из N-разрядного числа после ряда вычислительных операций, верными оказываются приблизительно N/2 десятичных цифр. Поскольку СДДФ
реализовывает десятичную арифметику, то округления производятся для десятичных чисел, в которых убираются неверные цифры в соответствии с теорией вычислений.
Вам не надоело? Изучите те источники, на которые ва меня посылали.
Область применеия арифметики — арифметические вычисления.
Все, я устал.
Подсчитано на калькуляторе в СДДФ.

Это был сарказм. Считал в уме.
Как это можно было понять до этого вашего комментария?

Внимательно почитать статью.
(про вторую цитату несогласен, она с определёнными оговорками универсальна)

Оговорки такие. В формате IEEE754 11-ю двоичными разрядами можно приближенно представить 3-х разрядное десятичное число, в котором 3 верные десятичные цифры. В СДДФ 11-ю разрядами можно точно представить 3-х разрядное десятичное число.
Первая цитата под одной вертикальной линией относится к СДДФ с 16-разрядным машинным словом.
Вторая цитата, вместе с сылкой на источник, относится к формату половинной точности IEEE754.
Третья цитата относится к СДДФ с 32-х разрядным машинным словом.
Откуда точность СДДФ в 7 десятичных знаков?
По моим представлениям, она всего 3 десятичных знака (при благоприятных условиях «почти 4»)

Это ваши слава?
А вот был мой ответ
Я не могу здесь дублировать свою предыдущую статью. Если вычисления (именно вычисления) проводятся в формате сингл, то так оно и получается, 3,4 знака. А в СДДФ получаются 7 верных десятичных знаков в результате любых вычислений.

Где здесь про 10 бит и три знака?
Цитата верна, но про формат, в котором можно хранить только 3 знака, я ничего не знаю.

Информация

В рейтинге
Не участвует
Откуда
Минск, Минская обл., Беларусь
Зарегистрирован
Активность