I don't know anything about the D language, but I will gladly answer the question in your title:
Is multiplication always commutative in inaccurate floating point arithmetic?
Up to the "payload" of NaN values, yes. The IEEE-754 floating point multiplication is commutative (and therefore is an addition). If you don't know what the NaN payload is, don't worry about it.