      SUBROUTINE DDIRECT (N,DATA,AZERO,A,B)
C Direct use of definitions to compute real DFT
C No simplifications...SLOW
      DOUBLE PRECISION DATA(0:*),A(*),B(*),AZERO,TPN
      AZERO = 0.0D0
      DO 1 J = 0,N-1
         AZERO = AZERO+DATA(J)
    1 CONTINUE
      AZERO = AZERO/N
      TPN = 2.0D0*ASIN(1.0D0)*2.0D0/N
      DO 20 K = 1,N/2
         A(K) = 0D0
         B(K) = 0D0
         DO 10 J = 0,N-1
            A(K) = A(K) + DATA(J)*COS(J*K*TPN)
            B(K) = B(K) + DATA(J)*SIN(J*K*TPN)
   10    CONTINUE
         IF (K .NE. N/2)THEN
            A(K) = A(K)*(2.0D0/N)
            B(K) = B(K)*(2.0D0/N)
         ELSE
            A(K) = A(K)*(1.0D0/N)
            B(K) = B(K)*(1.0D0/N)
         END IF
   20 CONTINUE
      RETURN
      END 
