#if defined(AIX)
      REAL*8 FUNCTION WTIME_DUMMY()
      IMPLICIT NONE
!
!     USE A C-ROUTINE, SEE machi_c.c.
!
      WTIME_DUMMY = 0.0
      RETURN
!     END OF WTIME_DUMMY.
      END
#elif defined(MPI)
      REAL*8 FUNCTION WTIME()
      IMPLICIT NONE
!
!     USE THE MPI FUNCTION  MPI_WTIME  TO RETURN WALL TIME.
!
      DOUBLE PRECISION MPI_WTIME
!
      WTIME = MPI_WTIME()
      RETURN
!     END OF WTIME.
      END
#else
      REAL*8 FUNCTION WTIME()
      IMPLICIT NONE
!
!     USE THE F90 INTRINSIC  SYSTEM_CLOCK  TO RETURN WALL TIME.
!
!     WILL FAIL IF THE COUNT IS EVER NEGATIVE, BUT THE STANDARD
!     SAYS THAT IT IS AWAYS NON-NEGATIVE IF A CLOCK EXISTS.
!     NOT THREAD-SAFE, UNLESS LCOUNT AND IOVER ARE THREADPRIVATE.
!
      REAL*8     ZERO,ONE
      PARAMETER (ZERO=0.0, ONE=1.0)
!
      INTEGER COUNT, MCOUNT, RATE
!
      REAL*8  OFFSEC, OFFSET, PERSEC
      INTEGER ICOUNT, IOVER,  LCOUNT, NCOUNT
      SAVE    OFFSEC, OFFSET, PERSEC
      SAVE    ICOUNT, IOVER,  LCOUNT, NCOUNT
!
      DATA IOVER, LCOUNT / -1, -1 /
!
      CALL SYSTEM_CLOCK(COUNT)
!
      IF     (COUNT.LT.LCOUNT) THEN
!
!        COUNT IS SUPPOSED TO BE NON-DECREASING EXCEPT WHEN IT WRAPS,
!        BUT SOME IMPLEMENTATIONS DON''T DO THIS.  SO IGNORE ANY
!        DECREASE OF LESS THAN ONE PERCENT OF THE RANGE.
!
         IF     (LCOUNT-COUNT.LT.NCOUNT) THEN
           COUNT  = LCOUNT
         ELSE
           IOVER  = IOVER + 1
           OFFSET = OFFSET + OFFSEC
         ENDIF
      ENDIF
      LCOUNT = COUNT
!
      IF     (IOVER.EQ.0) THEN
!
!       FIRST CYCLE, FOR ACCURACY WITH 64-BIT COUNTS.
!
         WTIME = (COUNT - ICOUNT) * PERSEC
      ELSEIF (IOVER.GT.0) THEN
!
!        ALL OTHER CYCLES.
!
         WTIME = COUNT * PERSEC + OFFSET
      ELSE
!
!        INITIALIZATION.
!
         CALL SYSTEM_CLOCK(ICOUNT, RATE, MCOUNT)
         NCOUNT =  MCOUNT/100
         PERSEC =  ONE/RATE
         OFFSEC =  MCOUNT * PERSEC
         OFFSET = -ICOUNT * PERSEC
         IOVER  =  0
         WTIME  =  ZERO
      ENDIF
      RETURN
!     END OF WTIME.
      END
#endif  /* MPI:else */
