From MathWorks User Community thread. http://www.mathworks.com/matlabcentral/newsreader/view_thread/261541 As was discussed here not too long ago, the order in which one adds numbers represented by inexact floating point formats might have an impact on the magnitude of the error in the end result: >> v = rand(1000,1); >> V = sort(v); >> s = sum(v); >> S = sum(V); >> s-S % Should equal 0 ans = -1.7053e-013 In a matrix-vector multiplication, all the threads need access to the vector. It might be that the two threads access the variables in non-obvious ways to minimize the chance of race conditions or deadlocks.