[Comm] value overflow on C

Serge Skorokhodov =?iso-8859-1?q?suralis-s_=CE=C1_mtu-net=2Eru?=
Чт Фев 23 12:39:55 MSK 2006


>> По определению языка C возможность отслеживать переполнение
>> целочисленных типов

> А типов float & double? Я говорил не только про целочисленные,
> но и встроенные арифметические(int, double). Целочисленнные -
> это только для примера.

Не являюсь знатоком численных дел в С, но в плавающей точке вроде
при всяких неожиданностях/ошибках генерируются аппаратные
исключения, результаты могут принимать значение несигнальных NaN,
+-Inf etc. Еще раз, я тут не спец.

> gcc version 3.3.4 20040817 (ALT Linux, build 3.3.4-alt1)

Увы, я не знаю детальных возможностей и расширений этого
компилятора:(

Если речь идет о C++, то в boost есть библиотека безопасного
преобразования числовых типов, которая вроде позволяет
генерировать единообразные исключения при выходе за диапазоны и
т.д. Деталей не помню, но помню, что скорость работы программы
такие проверки не улучшают:(

Кроме того, можно попробовать библиотеки для вычислений с
произвольной точностью типа MAPM. Это может сильно все упростить,
причем настолько, что потеря эффективности на "длинную"
арифметику будут в значительной степени скомпенсированы
упрощением алгоритмов и отсутствием проверок.

Думать надо и искать... ;)

-- 
Best regards,
 Serge Skorokhodov                            mailto:suralis-s на mtu-net.ru




Подробная информация о списке рассылки community