! { dg-do run }
! { dg-additional-sources c_f_pointer_complex_driver.c }
! { dg-options "-std=gnu -w" }
! Test c_f_pointer for the different types of interoperable complex values.
module c_f_pointer_complex
  use, intrinsic :: iso_c_binding, only: c_float_complex, c_double_complex, &
       c_long_double_complex, c_f_pointer, c_ptr, c_long_double, c_int
  implicit none

contains
  subroutine test_complex_scalars(my_c_float_complex, my_c_double_complex, &
       my_c_long_double_complex) bind(c)
    type(c_ptr), value :: my_c_float_complex
    type(c_ptr), value :: my_c_double_complex
    type(c_ptr), value :: my_c_long_double_complex
    complex(c_float_complex), pointer :: my_f03_float_complex
    complex(c_double_complex), pointer :: my_f03_double_complex
    complex(c_long_double_complex), pointer :: my_f03_long_double_complex
    
    call c_f_pointer(my_c_float_complex, my_f03_float_complex)
    call c_f_pointer(my_c_double_complex, my_f03_double_complex)
    call c_f_pointer(my_c_long_double_complex, my_f03_long_double_complex)

    if(my_f03_float_complex /= (1.0, 0.0)) STOP 1
    if(my_f03_double_complex /= (2.0d0, 0.0d0)) STOP 2
    if(my_f03_long_double_complex /= (3.0_c_long_double, &
         0.0_c_long_double)) STOP 3
  end subroutine test_complex_scalars

  subroutine test_complex_arrays(float_complex_array, double_complex_array, &
       long_double_complex_array, num_elems) bind(c)
    type(c_ptr), value :: float_complex_array
    type(c_ptr), value :: double_complex_array
    type(c_ptr), value :: long_double_complex_array    
    complex(c_float_complex), pointer, dimension(:) :: f03_float_complex_array
    complex(c_double_complex), pointer, dimension(:) :: &
         f03_double_complex_array
    complex(c_long_double_complex), pointer, dimension(:) :: &
         f03_long_double_complex_array
    integer(c_int), value :: num_elems
    integer :: i

    call c_f_pointer(float_complex_array, f03_float_complex_array, &
         (/ num_elems /))
    call c_f_pointer(double_complex_array, f03_double_complex_array, &
         (/ num_elems /))
    call c_f_pointer(long_double_complex_array, &
         f03_long_double_complex_array, (/ num_elems /))

    do i = 1, num_elems
       if(f03_float_complex_array(i) &
            /= (i*(1.0, 0.0))) STOP 4
       if(f03_double_complex_array(i) &
            /= (i*(1.0d0, 0.0d0))) STOP 5
       if(f03_long_double_complex_array(i) &
            /= (i*(1.0_c_long_double, 0.0_c_long_double))) STOP 6
    end do
  end subroutine test_complex_arrays
end module c_f_pointer_complex
