組み込み関数 CMPLX() は REAL(4) がデフォールト値なので、引数が倍精度でも第二引数で KIND を倍精度に指定しないと、単精度で変換されます。
ソース・プログラム
program Complex implicit none complex (kind = 8) :: c real (kind = 4) :: a real (kind = 8) :: d d = 1.0d0 / 3.0d0 a = d c = cmplx(a, a) print *, c c = cmplx(d, d) print *, c c = cmplx(d, d, kind = 8) print *, c stop end program Complex