как double считать со скоростью float
От: ZegSoft Россия  
Дата: 08.07.11 10:36
Оценка:
Собственно вопрос в следующем. Есть массив объектов, членами которого являются переменные типа double.
Есть алгоритмы, производящие сложные матемитические расчеты над этим объектами. Выичсления довольно ресурсоемкие, поэтому время расчета доходит до нескольких минут.
Эксперименты показали, что если в некоторых иp эти[ алгоритмов заменить double на float, то точность расчета остается на приемлемом уровне, а вот скорость расчета увеличивается примерно на 30%, что в абсолютном измерении составляет от одной до двух минут. То есть разница весьма существенная.
Проблема в том, что такой подход возможен только для части алгоритмов. Для других же алгоритмов менять double на float нельзя, так как точности float не хватает для успешного завершения расчетов (методы расчета не сходятся).
Есть ли какой-то способ или программные конструкции, позволяюшие производить вычисления над double как над float?.
Пока проблему решил через шаблоны. То есть создаются две копии объектов: float-версия и double-версия. float-версия передается в алгоритмы, которые допускают расчеты с точностью float, а double версия в остальные алгоритмы. Но при таком подходе возникает проблема синхронизации версий. В принципе, алгоритмы взаимонезависимы. Но заранее предугадать, какой алгоритм вызовет пользователь невозможно. Поэтому приходится поддерживать сразу 2 версии объектов, что очень неудобно.
Что можете посоветовать? Может быть в boost есть что-нить полезное?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.