This system is meant to be a tool for numerical computations. One of
the most important properties in such a system is, in my humble
opinion, that the system maintains the *numerical* properties
of a problem.

Most algorithms in scientific computing rely on numerical properties. They are aware of the finite precision of computers, and they do what they can to minimize the noise introduced by the finite precision.

If a computing system executed code in a way that altered the ordering of the computations, or otherwise altered the way computations where done, the errors (that are always present, and which the users know about and takes into account in the numerical methods they use) would become unpredictable. If the parallelizer change a method, that method may no longer work as expected.

Therefore I define one key property the parallelizers must obey: The method must not change. That is, we will not allow any re-ordering of instructions, and we will not change the instructions.

If the user wrote
,
we *will* calculate
,
not
or anything else. The
user's aren't stupid. If they want to test numerical inaccuracies of
,
then they know better than any parallelizer does.

This is also discussed in Section 2.3.2.