! { dg-do compile } ! { dg-options "-O3" } MODULE qs_efield_berry TYPE cp_error_type END TYPE INTEGER, PARAMETER :: dp=8 TYPE qs_energy_type REAL(KIND=dp), POINTER :: efield END TYPE TYPE qs_environment_type END TYPE INTERFACE SUBROUTINE foo(qs_env,energy,error) IMPORT TYPE(qs_environment_type), POINTER :: qs_env TYPE(cp_error_type) :: error TYPE(qs_energy_type), POINTER :: energy END SUBROUTINE END INTERFACE CONTAINS SUBROUTINE qs_efield_mo_derivatives() TYPE(qs_environment_type), POINTER :: qs_env TYPE(cp_error_type) :: error COMPLEX(dp) :: zi(3), zphase(3) REAL(dp) :: ci(3) TYPE(qs_energy_type), POINTER :: energy CALL foo(qs_env, energy, error) zi = zi * zphase ci = AIMAG(LOG(zi)) DO idir=1,3 ener_field=ener_field+ci(idir)*fieldfac(idir) END DO energy%efield=ener_field END SUBROUTINE qs_efield_mo_derivatives END MODULE qs_efield_berry