https://bugs.winehq.org/show_bug.cgi?id=56372 Bug ID: 56372 Summary: musl based exp2() gives very inaccurate results on i686 Product: Wine Version: 8.6 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: msvcrt Assignee: wine-bugs(a)winehq.org Reporter: martin(a)martin.st CC: piotr(a)codeweavers.com Regression SHA1: ca0643875961ef62c76e0b9cbd0433002a948d9b Distribution: --- Since switching the msvcrt implementation of exp2() from internal to musl based, in ca0643875961ef62c76e0b9cbd0433002a948d9b, the accuracy on i686 has become quite bad, to the point of breaking a handful of tests in ffmpeg. The issue can be reproduced with the following test snippet: --- #include <stdio.h> #include <math.h> double input = 5.979471; int main(int argc, char* argv[]) { printf("exp2(%f) = %f\n", input, exp2(input)); return 0; } --- Prior to this commit, and with later versions on e.g. x86_64, the output is: exp2(5.979471) = 63.095753 However, on i686, the output now is: exp2(5.979471) = 62.968753 This is an error of around 0.2%, which is a couple orders of magnitudes larger than expected/tolerated. It's curious how this issue only appears on i686 though, i.e. it doesn't look like an issue with the musl exp2() implementation algorithm, but some component of it misbehaving on i686. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.