- Код: Выделить всё
- (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%





 Получается, с какой-то точностью принимаем значение за ноль (или, что то же самое, за отрицательное). Таким образом, код опять превращается в бессмысленное
 Получается, с какой-то точностью принимаем значение за ноль (или, что то же самое, за отрицательное). Таким образом, код опять превращается в бессмысленное Но в таком случае E1, E2 - это погрешности не процессоров, а самих выражений A и B.
 Но в таком случае E1, E2 - это погрешности не процессоров, а самих выражений A и B.



