I read that Fortran has strict rules on the order in which expressions are evaluated. For some numerical algorithm, this is very important.
How do numerical C programs control the order of floating point operations and prevent the compiler from "optimizing" to an undesirable order of operations such as changing (a*b)*c
to a*(b*c)
.