[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