Pass test and benchmark values in the correct order.

This doesn't change whether a test passes or fails but does make sure
the reported error has the correct sign!
Avoid zero-division errors for calculating the relative error.

If the benchmark value is 0, then we must handle this special case
ourselves...