Влияет ли арифметика произвольной точности на программное обеспечение для численного анализа? - PullRequest
6 голосов
/ 31 июля 2009

Имеет арифметику произвольной точности влияет программное обеспечение для численного анализа ?

Мне кажется, что большинство программ для численного анализа продолжают использовать одни и те же числа с плавающей запятой и удваиваются.

Если я прав, я хотел бы знать причину, так как, по моему мнению, есть некоторые вычисления, которые могут выиграть от использования арифметики произвольной точности, особенно когда она сочетается с использованием рационального представления чисел , как это было сделано в GNU Multi-Precision Library .

Если я ошибаюсь, примеры были бы хорошими.

Ответы [ 8 ]

7 голосов
/ 08 декабря 2009

Имеет арифметику произвольной точности программное обеспечение для численного анализа? Я чувствую, что наиболее численный анализ Программное обеспечение продолжает использовать то же самое плавает и удваивается.

Есть несколько неудачных причин, по которым произвольная точность (ap) не используется более экстенсивно.

  • Отсутствие поддержки важных функций: пропущенные значения для NaN / Infinities, отсутствие комплексных чисел или специальных функций, отсутствие или неправильная реализация режимов округления (округление наполовину даже не реализовано в GMP), отсутствие обработчиков для важных события (потеря значащих цифр, переполнение, потеря значения ... хорошо, это даже не реализовано в большинстве стандартных библиотек). Почему это важно ? Потому что без этого вы должны потратить много энергии на постановку задачи с произвольной точностью (когда-либо писать библиотеку комплексных чисел или специальные функции в ap?), Вы не сможете воспроизвести двойной результат, потому что в ap отсутствуют нужные вам функции отслеживать изменения.

  • 99,9% всех программистов вообще не интересуются цифрами. Один из наиболее часто задаваемых вопросов здесь: «Почему 0,1 + 0,1 НЕ 0,2? ПОМОГИТЕ !!!» Так почему программисты должны инвестировать время узнать конкретную ап реализацию и сформулировать в ней свою проблему? Если ваши результаты AP отличаются от двойных результатов, и вы не знаете числовые значения, как вы найдете ошибку? Двойная точность слишком неточна? В библиотеке ap есть ошибка? ЧТО ЗДЕСЬ ПРОИСХОДИТ ?! Кто знает ....

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

  • Контрольная зависимость. Вау, мой компьютер быстрее, чем другие. Как справедливо отметили другие комментаторы, ap намного медленнее, чем поддерживаемые аппаратными средствами типы данных с плавающей запятой, потому что вы должны программировать его с целочисленными типами данных на руку. Один из неизбежных Опасность такого отношения заключается в том, что программисты, совершенно не подозревая о проблемах, выбирают решения, которые выдают совершенно впечатляющие бессмысленные цифры. Я очень осторожен с ГПГПУ. Конечно, графические карты намного, намного быстрее, чем процессор, но причина этого в меньше точности и точности. Если вы используете поплавки (32 бита) вместо двойных (64 бита), у вас будет гораздо меньше битов для вычисления и передачи. Человеческий глаз очень отказоустойчив, поэтому не имеет значения, если один или два результата запрещены. Черт возьми, как аппаратный конструктор, вы можете использовать неточные, плохо округленные вычисления, чтобы ускорить ваши вычисления (что действительно хорошо для графики). Скинь те надоедливые субнормальные реализации или режимы округления. Есть очень веская причина, почему процессоры не так быстры, как графические процессоры.

Я могу порекомендовать страницу Уильяма Каханса текст ссылки для получения некоторой информации о проблемах в цифрах.

7 голосов
/ 31 июля 2009

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

Так что, если вам не нужна или вы не можете использовать эту точность, зачем тратить на это все процессорное время?

2 голосов
/ 02 июля 2010

Исследовательский институт Вольфрама приложил огромные усилия к тому, чтобы прагматично внедрить арифметику интервалов произвольной точности в ядро ​​Mathematica, и они отлично поработали. Mathematica будет прозрачно выполнять практически любые вычисления с произвольной точностью.

1 голос
/ 06 сентября 2010

Эта бумага Дирка Лори представляет предостерегающую историю об использовании переменной точности.

1 голос
/ 30 октября 2009

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

Таким образом, экономическое давление создало эффективное (то есть аппаратное) решение для общих случаев.

1 голос
/ 31 июля 2009

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

Таким образом, он может использовать тип конечной точности, достаточно большой для расчета.

1 голос
/ 31 июля 2009

Если вы посмотрите на такие программы, как Mathematica, я сильно подозреваю, что вы обнаружите, что они не используют числа с плавающей запятой и двойные числа для своей работы. Если вы посмотрите на криптографию, вы определенно обнаружите, что они не используют числа с плавающей запятой и двойные числа (но в любом случае они в основном работают с целыми числами).

Это в основном призыв к суду. Люди, которые считают, что их продукт выиграет от повышения точности и точности, используют программное обеспечение с расширенной или произвольной арифметической точностью. Те, кто не считает, что точность нужна, не будут ее использовать.

0 голосов
/ 25 июля 2012

Хотя это не имеет прямого отношения к вашему вопросу, вы также можете посмотреть на эту бумагу от l Trefethen

...