Эмпирические правила для минимизации ошибок с плавающей точкой в ​​C?

Что касается минимизации ошибки в операциях с плавающей запятой, если у меня есть такая операция, как в C:

float a = 123.456;
float b = 456.789;
float r = 0.12345;
a = a - (r * b);

Изменится ли результат расчета, если я разделю шаги умножения и вычитания, т.е.

float c = r * b;
a = a - c;

Мне интересно, будет ли процессор обрабатывать эти вычисления по-разному, и, следовательно, ошибка может быть меньше в одном случае?

Если нет, то, как я полагаю, так или иначе, есть ли хорошие эмпирические правила для смягчения ошибок с плавающей точкой? Могу ли я массировать данные таким образом, чтобы это помогло?

Пожалуйста, не говорите «используйте более высокую точность» - это не то, что мне нужно.

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

Что касается информации о данных, то в общем смысле ошибки кажутся хуже, когда в результате операции получается очень большое число, например 123456789. Небольшие числа, такие как 1.23456789, дают более точные результаты после операций. Я воображаю это, или масштабирование больших чисел поможет точности?

Ответы на вопрос(1)

Ваш ответ на вопрос