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.