3 different ways to write an equation and only one works, why?
In a glsl shader code for explicit time integration for the euler equations the equation
Fx=(cxl*ulf-cxr*urf)/dx;
occurs. There cxl and crx are both vec4 and ulf, urf and dx are floats. The test example is a rising heat bubble. Now there are at least four ways to write the equation above:
1. Fx=(cxl*ulf-cxr*urf)/dx;
2. Fx=cxl*(ulf/dx)-cxr*(urf/dx);
3. Fx=(cxl/dx)*ulf-(cxr/dx)*urf;
4. Fx=cxl*ulf/dx-cxr*urf/dx;
only the last one (4.) gives the correct result and the bubble stays symmetric, all the others make unsymetric errors.
anyone has an idea why that?
thanks
Stefan