<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/91224>91224</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
When combined with Arm, floating point calculation results may be incorrect.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
SakiTakamachi
</td>
</tr>
</table>
<pre>
Hi, I'm from php-src.
The following code:
```
// double.c
int main(void)
{
int i = 3;
double v = 0.03;
double v2 = 0.01;
double ret = v - (i * v2);
return 0;
}
```
compile:
```
clang -o double -g double.c
```
debug:
```
# gdb ./double
....
(gdb) b main
Breakpoint 1 at 0x724: file double.c, line 4.
(gdb) run
....
Breakpoint 1, main () at double.c:4
4 int i = 3;
(gdb) n
5 double v = 0.03;
(gdb)
6 double v2 = 0.01;
(gdb)
8 double ret = v - (i * v2);
(gdb)
10 return 0;
(gdb) p ret
$1 = -1.7347234759768071e-18
(gdb) p v
$2 = 0.029999999999999999
(gdb) p v2
$3 = 0.01
(gdb) p i
$4 = 3
(gdb) p i * v2
$5 = 0.029999999999999999
(gdb) p v - (i * v2)
$6 = 0
```
It is known that this phenomenon only occurs when using clang as the compiler and in an Arm environment.
(Sorry if the repository for the issue report is not appropriate)
version:
```
# clang -v
Ubuntu clang version 14.0.0-1ubuntu1.1
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/aarch64-linux-gnu/11
Selected GCC installation: /usr/bin/../lib/gcc/aarch64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
```
Regards
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVktv4zYQ_jX0ZSCBomjLPvjgTaB2r90teqZIWmJDkQIfTvLvC-phZW0nwAIVDFqamW_eMyDzXrVGyiPafkPb5w2LobPu-IO9qJ_shfWMd2rTWPF-_FMh8gTfEal6ODvbw9ANmXc8R_gZ4dN0_uwknK3W9lWZFrgVEpUzC-3w_Js-SY1IDcLGRsucT0RlAvRMGUT2F6sEIodZuPo2vQAAJCEFqHyGEpULfdIDl5GOc_yBBXDlkoVdXNl3Qk6GUeoCGSCyV4DICS4k-XKPcTJEZwCvrOr5cbjjyW0_KP1pTrhmpoXMLq5k7U1-HioVsont52kuoRUN5IjUk66P0DzPfykfIvtWNIgcoJnqMFK_OcleBpvyXgALgN8qQlF5grPScvWQPIFWRgLNb5W5aL6y-lF_0pIsp9QnKAurgfJEJwCF9XnUDavl2e72A-DzTllh0_fuAepRB93A9r_TSTfYAq8m73vrKjwk5kKkxWglK_KqpBUpabU9VLs9rgqZFft76OUKvAZDDjfPAxS5wso1B3di6ipF56Lciyx5WCS3v-PGfS4XNbtJzReT8j2A8vBi7KuB0LEAoVMehk4a20tjDVij38FyHp2H104aiH7cY-NcMg-hkzDPsANmBCgDzMDJ9SDNRTlremnC2v8_rHPvoM4j0MnBehWse4ezdSNJeR8nhhtdMzYAGwZnB6dYkGt043mRzitrvhr1eYPMJf67iSbEmTijoaA5znFWxJFZ5HMRfzLXypCmmjHHux3NohkzlWll4lvWmriseCeZgN4KqZN4Cuptzq_xgWktxbNyiYVIHb1DpG6WVVLbaARwZoQSLEj44-kJ1IRiYYrtVxSp87S6tGoQqVvOEakX_1a_SF3MUfyQWvIgxf-u-Onqch91UAlWniBPs0lxv6M35r8Setiaf8mWOeE34liKQ3lgG3ksqmKLcVVgvOmOnFYHSkVBz7ygghec72S5Ox_EthR7wcRGHQkmFG_xrqDbguKcC8zF_kB3zR4XDSkRxbJnSudaX_rcunYzdt_xUBBCN5o1UvvxFkCIka9TayJC0qXAHRMma2LrEcVa-eBXLUEFLY__pGnhtm-UkQJeVejSVKRtftaWhTRF04bnTPM41QSc9FEHDz17h0aCMtw6J3nIN9HpYxfC4FOzjzeFVoUuNjm3faqavix_2eDsv5IHROrRZY9IPYb0XwAAAP__BNN0rg">