2008/7/12 Michael Karcher wine@mkarcher.dialup.fu-berlin.de:
Am Samstag, den 12.07.2008, 16:55 -0500 schrieb James Hawkins:
GDI+ uses floating point values for matrix elements so don't you think the result could be slightly different due different calculation algorithms?
As they say: Never compare floating point numbers for equality. So I understand your point. Especially if unrepresentable values are involved.
Agreed. There could also be issues depending on the compiler used (msvc vs gcc), different CPUs or instruction sets (e.g. using MMX/SSE/SSE2 to optimise the calculations).
Nikolay: Please write a test whether the matrix 1.0/131072, 2.0/131072, 4.0/131072, -1/131072, 0, 0 is invertible. According to your criterion, it is *not* invertible, as the determinant will be 9.0/17179869184, which is way below 1e-5, but this matrix still *is* invertible. What happens on Windows?
The identity matrix would also be a nice test case - for the other GDI and DirectX matrix operations as well.
- Reece