1! { dg-do compile }
2! { dg-options "-O3" }
3MODULE qs_efield_berry
4  TYPE cp_error_type
5  END TYPE
6  INTEGER, PARAMETER :: dp=8
7  TYPE qs_energy_type
8    REAL(KIND=dp), POINTER :: efield
9  END TYPE
10  TYPE qs_environment_type
11  END TYPE
12  INTERFACE
13    SUBROUTINE foo(qs_env,energy,error)
14       IMPORT
15       TYPE(qs_environment_type), POINTER :: qs_env
16       TYPE(cp_error_type)      :: error
17       TYPE(qs_energy_type), POINTER   :: energy
18    END SUBROUTINE
19  END INTERFACE
20CONTAINS
21  SUBROUTINE qs_efield_mo_derivatives()
22    TYPE(qs_environment_type), POINTER :: qs_env
23    TYPE(cp_error_type)  :: error
24    COMPLEX(dp)          ::   zi(3), zphase(3)
25    REAL(dp)             :: ci(3)
26    TYPE(qs_energy_type), POINTER      :: energy
27    CALL foo(qs_env, energy, error)
28    zi = zi * zphase
29    ci = AIMAG(LOG(zi))
30    DO idir=1,3
31       ener_field=ener_field+ci(idir)*fieldfac(idir)
32    END DO
33    energy%efield=ener_field
34  END SUBROUTINE qs_efield_mo_derivatives
35END MODULE qs_efield_berry
36