| ! { dg-do run } |
| ! { dg-options "-ff2c" } |
| ! PR 34868 |
| |
| function f(a) result(res) |
| implicit none |
| real(8), intent(in) :: a(:) |
| complex(8) :: res |
| |
| res = cmplx(sum(a),product(a),8) |
| end function f |
| |
| function g(a) |
| implicit none |
| real(8), intent(in) :: a(:) |
| complex(8) :: g |
| |
| g = cmplx(sum(a),product(a),8) |
| end function g |
| |
| program test |
| real(8) :: a(1,5) |
| complex(8) :: c |
| integer :: i |
| |
| interface |
| complex(8) function f(a) |
| real(8), intent(in) :: a(:) |
| end function f |
| function g(a) result(res) |
| real(8), intent(in) :: a(:) |
| complex(8) :: res |
| end function g |
| end interface |
| |
| do i = 1, 5 |
| a(1,i) = sqrt(real(i,kind(a))) |
| end do |
| |
| c = f(a(1,:)) |
| call check (real(c), sum(a)) |
| call check (imag(c), product(a)) |
| |
| c = g(a(1,:)) |
| call check (real(c), sum(a)) |
| call check (imag(c), product(a)) |
| contains |
| subroutine check (a, b) |
| real(8), intent(in) :: a, b |
| if (abs(a - b) > 1.e-10_8) STOP 1 |
| end subroutine check |
| end program test |