https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82350
Bug ID: 82350
Summary: float INFINITY issue with division by zero in
regression with compiler option '-ffast-math'
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: marc.pres at gmx dot net
Target Milestone: ---
Given this code snippet:
#include <stdio.h>
#include <math.h>
int main(void) {
int denom=0;
printf("%d %d %d\n", (int)(1.0/denom), (int)(1.0/0), (int)INFINITY);
return 0;
}
bash> gcc infinity.c
bash> -2147483648 -2147483648 2147483647
bash> gcc infinity.c -ffast-math
bash> -2147483648 2147483647 2147483647
What is unclear regarding the IEEE standard and the supplement documentation of
option "-ffast-math", is why is 1. first and 2. term are different in sign AND
why are the 2 outputs generally different.
In my opionion all the terms above should be positive like 2147483647.
Dr. Marcello Presulli