Расчет с плавающей точкой не является ни ассоциативным, ни распределительным для процессоров. Таким образом,
(a + b) + c
не равно a + (b + c)
и a * (b + c)
не равно a * b + a * c
Есть ли способ выполнить детерминированный расчет с плавающей запятой, который не дает разных результатов. Это было бы детерминированным в однопроцессорном режиме, но оно не было бы детерминированным в многопоточных программах, если потоки добавят к сумме, например, поскольку могут быть разные перемежения потоков.
Итак, мой вопрос: как добиться детерминированных результатов для вычислений с плавающей запятой в многопоточных программах?