|   | Prev | Next | elapsed_seconds_c | 
s = elapsed_seconds()
double equal to the
number of seconds since the first call to elapsed_seconds.
# if _MSC_VER
// ---------------------------------------------------------------------------
// Microsoft version of timer
# include <windows.h>
# include <cassert>
double elapsed_seconds(void)
{     static bool       first_  = true;
     static SYSTEMTIME st_;
     double hour, minute, second, milli, diff;
     SYSTEMTIME st;
     if( first_ )
     {     GetSystemTime(&st_);
          first_ = false;
          return 0.;
     }
     GetSystemTime(&st);
     hour   = (double) st.wHour         - (double) st_.wHour;
     minute = (double) st.wMinute       - (double) st_.wMinute;
     second = (double) st.wSecond       - (double) st_.wSecond;
     milli  = (double) st.wMilliseconds - (double) st_.wMilliseconds;
     diff   = 1e-3*milli + second + 60.*minute + 3600.*hour;
     if( diff < 0. )
          diff += 3600.*24.;
     assert( 0 <= diff && diff < 3600.*24. );
     return diff;
}
# else
// ---------------------------------------------------------------------------
// Unix version of timer
# include <sys/time.h>
double elapsed_seconds(void)
{     double sec, usec, diff;
     static bool first_ = true;
     static struct timeval tv_first;
     struct timeval        tv;
     if( first_ )
     {     gettimeofday(&tv_first, NULL);
          first_ = false;
          return 0.;
     }
     gettimeofday(&tv, NULL);
     assert( tv.tv_sec >= tv_first.tv_sec );
     sec  = (double)(tv.tv_sec -  tv_first.tv_sec);
     usec = (double)tv.tv_usec - (double)tv_first.tv_usec;
     diff = sec + 1e-6*usec;
     return diff;
}
# endif