Эмпирические правила для минимизации ошибок с плавающей точкой в 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, дают более точные результаты после операций. Я воображаю это, или масштабирование больших чисел поможет точности?