- Код: Выделить всё
(tx - Gear1^.X) * (ty - Gear2^.Y) - (tx - Gear2^.X) * (ty - Gear1^.Y)
Процессор A вычисляет это выражение с точностью +/- 0.00001 (к примеру)
Процессор B вычисляет это выражение с точностью +/- 0.00005
В результате разница между результатом A и результатом B будет +/- 0.00006
Теперь когда мы проверяем
- Код: Выделить всё
(tx - Gear1^.X) * (ty - Gear2^.Y) - (tx - Gear2^.X) * (ty - Gear1^.Y) > 0
- Код: Выделить всё
(tx - Gear1^.X) * (ty - Gear2^.Y) > (tx - Gear2^.X) * (ty - Gear1^.Y)
Допустим что при абсолютной точности (значение (которое мы не полученное аналитическим путем) равно нулю. И оба процессора ошибутся в знаке с вероятностью 50%
А если мы сравниваем следующим образом:
- Код: Выделить всё
(tx - Gear1^.X) * (ty - Gear2^.Y) - (tx - Gear2^.X) * (ty - Gear1^.Y) > e
где е = 0.00007 (больше чем 0.00001 + 0.00005), вероятность ошибки в знаке равна 0%
