https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51119
--- Comment #45 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
I have some tests coming from pr37131 which now fail due to too stringent
comparisons between REAL. This illustrated by the following test
program main
implicit none
integer, parameter :: factor=100
integer, parameter :: n = 2*factor, m = 3*factor, count = 4*factor
real :: a(m, count), b(count,n)
real, dimension(m,n) :: c1, c2, c3, c4, c5
real :: at(count,m), bt(n,count)
real :: c_t(n)
integer :: i,j,k
call random_number(a)
call random_number(b)
at = transpose(a)
bt = transpose(b)
c1 = matmul(a,b)
c3 = 0
do i=1,m
do j=1,n
do k=1, count
c3(i,j) = c3(i,j) + at(k,i)*b(k,j)
end do
end do
end do
print *, maxval(abs(c3/c1-1)/epsilon(c1))
if (any(abs(c3/c1-1) > sqrt(real(n))*epsilon(c1))) call abort
end program main
For which maxval(abs(c3/c1-1)/epsilon(c1)) fluctuates around 11 with
-ffrontend-optimize and around 3 with -fno-frontend-optimize. The original test
was abs(c3-c1) > 1e-5 with c1~100.
Although I don't think there is anything wrong with these results, it may be
worth some further investigations.