[an error occurred while processing this directive]
Так я и знал :-( А то у меня такая задача (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Беня 16 января 2006 г. 13:16
В ответ на: Все правильно. отправлено _Bill 16 января 2006 г. 12:53

В устройстве производятся различные вычисления (вычисляю некоторые мгновенные значения) и 4-х байтового float мне достаточно и даже с избытком :-) Но вот попросили сделать такую примочку - пускай устройство вычисляет кроме мгновенных значений и почасовых значений тотальное суммарное значение с начала работы - т. е. пускай суммирует все значения. Ну и возникает проблемка - если я каждую секунду вычисляю некоторое мгновенное значение и суммирую их (за 3600 секунд будет часовое значение), то если устройство проработает годик и, допустим, уже насчитало сумарное значение порядка нескольких миллионов, то если я к десяти миллионам прибавлю одну тысячную, то показания float не изменятся (мантисса всего 24 бита) и будут возникать сильные погрешности в накоплении (что-то вроде 90000000 + 0.001 = 90000000 и приращение просто не учтется, если общая сумма дойдет до какого-то достаточно большого значения). Выход - я использую для накопления 8-байтовый тип double, в котором мантисса очень большая и этого ну с гарантией хватает для любого приложения (это просто чудовищная точность). Но какая проблема - double мне нужен только для вычисления накопления, а при обычных вычислениях мгновенных значений мне float-а достаточно, а теперь у меня все вычисления, где есть float, будут использовать арифметику double, что сильно увеличит время вычислений.
Вопрос - нет ли опции, чтобы сказать компилятору :
float a, b, c ;
a = b + c ; - используй здесь float для float-операндов!!!
Ну может pragma какая-нибудь ?

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru