This transformation preserves the order of the operands (x, y, z), but it changes the order of evaluation of the operators. This should be fine for + and -.
For the multiplication: we preserve the evaluation order of the multiplications (because of float precision), but we swap the operands only when it's pure.
Followup to #151
This transformation preserves the order of the operands (x, y, z), but it changes the order of evaluation of the operators. This should be fine for + and -.
For the multiplication: we preserve the evaluation order of the multiplications (because of float precision), but we swap the operands only when it's pure.