http://bugs.winehq.org/show_bug.cgi?id=17200
--- Comment #7 from Jeff Zaroyko jeffz@jeffz.name 2010-06-16 06:07:46 --- (In reply to comment #6)
Created an attachment (id=28881)
--> (http://bugs.winehq.org/attachment.cgi?id=28881) [details]
ssemath library under zlib license
If cosf and sinf functions are to be blamed, then GCC option -ffast-math should have helped but here in my case I see zero difference between msvcrt library compiled with usual CFlags and -ffast-math option.
Not cosf or sinf, cos and sin, different precision... Yes, -ffast-math is similar to my earlier mentioned test of using inline asm which I observed no noticable difference from the output of top (not an exact tool for measuring, but good enough to see the difference between 8-12 and 20-25). We don't know the implementation that MS uses in _CIcos so you can't really say that such and such compiler flag should have helped. I can only point to the oprofile data and by comparison a no-op of the _CIcos function it appears CPU usage drops below that of on Windows.
I'm no expert on transcendental functions and the approximation of them, but maybe some tests are needed to decide the nature of the real implementation, I don't know.