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.

Reply via email to