Как сохранить детерминированность плавающей/двойной арифметики?Python

Программы на Python
Anonymous
Как сохранить детерминированность плавающей/двойной арифметики?

Сообщение Anonymous »

Если мы используем алгоритмы с арифметикой типа double и float, как мы можем гарантировать, что результаты будут одинаковыми при его выполнении в Python и C, на компьютерах x86 и x64 Linux и Windows, а также в микроконтроллерах ARM?

Мы используем алгоритм, который использует:
  • double + double
  • double + float
  • double exp(double)
  • float * float
На одном компьютере компиляция MinGW для x86 и x64 дает разные результаты. Алгоритм выполняет много математических вычислений, поэтому любая небольшая ошибка в конечном итоге будет иметь значение.

Сейчас реализация ARM mcu дает те же результаты, что и x86, но, увидев это, я не уверен, правильно это или нет.

РЕДАКТИРОВАТЬ

Потеря точности в этом случае не является проблемой, если она во всех случаях одинакова. реализации

РЕДАКТИРОВАТЬ 2

Я нахожу эти ссылки очень полезными, некоторые подсказки уже есть в комментариях:
  • Является ли математика с плавающей запятой детерминированной?
  • Детерминизм с плавающей запятой

Вернуться в «Python»