Пожалуй, попробую ответить.
На всякий случай: при использовании стандартных типов, таких как float, double и long double, для точности существует оценка сверху, обусловленная объёмом разрядной сетки мантиссы. В процессе вычислений эта оценка только падает. И делать это она может как по вине алгоритма, так и по вине данных (что, впрочем, тоже в некоторой степени зависит от алгоритма).
Что до конкретных методов, то «по данным» навскидку могу назвать оценку обусловленности матриц. По алгоритмам — увы, не в курсе.
К слову, если Вам нужно как-то избавляться от ограничений точности, а не просто их оценить — то есть множество библиотек «длинной арифметики», позволяющих проводить вычисления на разрядной сетке произвольного размера, но ценой некоторой потери производительности.
-- 04.09.2014, 23:47 --Ах да, забыл.
2. Наверняка есть литература по информационным дисциплинам, в которой подробно рассматриваются ошибки округления, возникающие в ходе элементарных (арифметических и присваивания между различными типами) действий, инструкций. Что почитать?
В целочисленных типах не может возникать никакой потери точности, кроме переполнения (попытки записи в двоичный разряд, который «вылезает» за разрядность операнда и следовательно не может быть перезаписан). Такие ситуации на аппаратном уровне ловятся анализом флагового регистра ЦП на наличие так называемого флага переполнения.
Про числа же с плавающей точкой — тех типов, что поддерживаются на машине аппаратно — можно упрощённо судить по виду результата. Если сильно вкратце, то чем больше целая часть ответа, тем меньше верных знаков он имеет после запятой. Была у
Pavia, по-моему, хорошая статья на эту тему, но пока не смог откопать…
И вопрос из разряда фантастики.
Есть ли аппарат, позволяющий для решения хотя бы небольшого круга некоторых задач перейти к решению задачи лишь на множестве целых чисел?
Ну, положим, не такой уж и фантастики. Ищите «вычисления с фиксированной точкой». Это такая модель вычислений, когда дробное число представляется в виде двух целых, одно из которых знаковое и считается целой частью, а второе — беззнаковое, и считается дробной.
При этом мантисса полагается равной
, где
— это непосредственно значение второго целого, а
— максимальное значение, которое оно может принимать.