Войти

Показать полную графическую версию : точность плавающей арифметики


Страниц : 1 [2]

shurikan
30-06-2004, 17:10
bilytur
Все правильно. Для арифметики повышенной точности необходима спец.библиотека. Т.к. "80-байтные плавающие" являются внутренним форматом FPU. А сам FPU имеет только команды загрузки из- и сохранения в память таких данных. Этот внутренний формат используется как раз для того, чтобы потеря точности при вычислениях double и float была минимальной, когда в FPU появляются какие-нибудь промежуточные результаты, за счет увеличенной длины мантиссы и порядка. Младшие биты мантиссы результата получаются точнее.  :)

bgg0408
01-07-2004, 00:59
пробуйте эмулировать сопроцессор.
Или использовать его, но немного по-другому :)
Т.е. писать (или юзать) библиотеку расчетов...
Расширения процессора SSE и SSE2
А почему 3DNow! не рассматривается? Он тоже предлагает расширения плавающей арифметики. А недавно еще SSE3 вышел в массы.

bilytur
01-07-2004, 03:51
pva
У меня никогда проблем не возникало. Если я компилирую под x86, и ставлю флажок "не эмулировать FPU", то всегда используется сопроцессор с полной точностью (80 бит). Если под P-4 SSE2, то иногда, когда компилятор посчитает нужным, используются регистры XMM с точностью 64 бит.
Я использовал Borland C++ Builder 3, 4, 6, Borland C++ 5.02, Intell C++ Compiler 6.0, Metrowerks CodeWarrior 8.0.
У меня msvc, у него этого нет. у mingw тоже.
Хотя вопрос в принципе решен, остался академический интерес.
Из вышеперечисленных компилеров где-то лежит инсталятор Borland C++ 5.02. Будет время (на днях) попробую.
Хотя ... Только что распаковал справку там 64 бит. Про 80 почему-то ни слова. ?
bgg0408
А почему 3DNow! не рассматривается? Он тоже предлагает расширения плавающей арифметики. А недавно еще SSE3 вышел в массы.
Это все очень интересно. Но прога должна работать на максимально-возможном кол-ве компов.
Вы посмотрите минимальные требования у коммерческих прог.
(супер игры не в счет).
Winamp (к примеру) работает на 486 DX100 (Сам видел!)
А уж для простого калькулятора требовать 3DNow! и SSE3 это уже снобизм. :)

bgg0408
01-07-2004, 06:58
bilytur
Но прога должна работать на максимально-возможном кол-ве компов.
Согласен и поддерживаю. Но
1) ММХ есть на всех современных и не очень машинах (до пня133ММХ). Остальные уже слишом сильно устарели. Или Вы не согласны?
2) а уж коли вводите поддержку SSE/SSE2, то не забудьте 3DNow!: обижаете АМДшников.
3) реализуем поддержку DLLек с оптимизациями под конкретный проц. Юзер - не ламер, знает, что внутри ящика и выберет нужный. Или всегда должен быть "софтваре", т.е. эмуляция
Вы посмотрите минимальные требования у коммерческих прог.
А вот это Вы не правы!!! W2kSP3 и IE6 для них минимум.
и простите за настойчивость меня, нескромного человека, сидящего на АМДшном проце и Интеловском чипсете :)

Исправлено: bgg0408, 7:00 1-07-2004




© OSzone.net 2001-2012