SUBROUTINE fft6_g2r_green (f_g, f_r)
! 6-D fourier transform used for G(G,G'). 
! which agrees with convention in FG's paper.

  USE io_files,         ONLY : prefix, iunigk
  USE gwsigma,          ONLY : ngmsig, nrsig, nr1sig, nr2sig, nr3sig, nlsig
  USE kinds,            ONLY : DP 
  USE cell_base,        ONLY : omega, alat
  USE control_gw,       ONLY : lgamma
  USE wvfct,            ONLY : npw, npwx, igk
  USE qpoint,           ONLY : xq, npwq, igkq, nksq, ikks, ikqs
  USE gsmooth,          ONLY : nrxxs, nrx1s, nrx2s, nrx3s, nr1s, nr2s, nr3s, nls

  IMPLICIT NONE

  INTEGER                          :: ios
  INTEGER                          :: ig, igp, ir, irp
 !COMPLEX(DP)                      :: f_r (nrxxs,nrxxs)
 !COMPLEX(DP)                      :: aux(nrxxs)
  COMPLEX(DP)                      :: f_g(ngmsig,ngmsig)
  COMPLEX(DP)                      :: f_r (nrsig,nrsig)
  COMPLEX(DP)                      :: aux(nrsig)
  COMPLEX(DP)                      :: czero

 czero = (0.0d0, 0.0d0)
 f_r(:,:) = czero

!do ig = 1, ngmsig
 do ig = 1, 51
    aux(:) = czero
!    do igp = 1, ngmsig
     do igp = 1, 51
!    aux(nlsig(igp)) = f_g(ig,igp)
!    if( ((igkq(igp).lt.ngmsig) .and. (igkq(ig)).lt.ngmsig) &
!    .and. ((igkq(igp).gt.0) .and. (igkq(ig)).gt.0)) then

       aux(nlsig(igkq(igp))) = f_g(ig,igp)

  !    endif
    enddo

    call cft3s (aux, nr1sig, nr2sig, nr3sig, nr1sig, nr2sig, nr3sig, +2)

    f_r(ig, 1:nrsig) = aux / omega
 enddo

! the conjg/conjg is to calculate sum_G f(G) exp(-iGr)
! following teh convention set in the paper
! [because the standard transform is sum_G f(G) exp(iGr) ]

 do irp = 1, nrsig
    aux = czero

   !do ig = 1, ngmsig
    do ig = 1, 51

  !         aux(nlsig(ig)) = conjg( f_r(ig,irp) )
  !    if( ((igkq(igp).lt.ngmsig) .and. (igkq(ig)).lt.ngmsig) &
  !         .and. ((igkq(igp).gt.0) .and. (igkq(ig)).gt.0)) then

           aux(nlsig(igkq(ig))) = conjg( f_r(ig,irp) )

  !    endif  
    enddo

!NRSIG
! call cft3s (aux, nr1sig, nr2sig, nr3sig, nr1sig, nr2sig, nr3sig, +2)
! f_r(1:nrsig,irp) = conjg ( aux )
!NRXXS

    call cft3s (aux, nr1sig, nr2sig, nr3sig, nr1sig, nr2sig, nr3sig, +2)
    f_r(1:nrsig,irp) = conjg ( aux )
 enddo

END SUBROUTINE fft6_g2r_green