#ifndef LI2DOUBLE
#define LI2DOUBLE
#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
#endif

#include <windows.h>
#include <stdio.h>
static double dInitTime;
static int nFirstTime=1;
	

double __stdcall SECOND()
{
	LARGE_INTEGER liCount,liFreq;
	double secs;
	BOOL status1,status2;
	HANDLE hProcess; 
	
	status1=QueryPerformanceCounter(&liCount);
	status2=QueryPerformanceFrequency(&liFreq);
	secs=Li2Double(liCount)/Li2Double(liFreq);
    if (nFirstTime==1)
    {
		hProcess=GetCurrentProcess();
		//SetProcessAffinityMask(hProcess,(DWORD)0);
		//SetPriorityClass(hProcess,REALTIME_PRIORITY_CLASS);
		dInitTime=secs;
		nFirstTime=0;
    }
//	printf("The clock frequency is %lf\n",Li2Double(liFreq));
    secs-=dInitTime;
    //printf("secs: %lf\n",secs);
	return secs;
}

double second()
{
    LARGE_INTEGER liCount,liFreq;
	double secs;
	BOOL status1,status2;
	HANDLE hProcess;
    status1=QueryPerformanceCounter(&liCount);
    status2=QueryPerformanceFrequency(&liFreq);
	
    secs=Li2Double(liCount)/Li2Double(liFreq);
     if (nFirstTime==1)
     {
		hProcess=GetCurrentProcess();
		//SetProcessAffinityMask(hProcess,0);
		//SetPriorityClass(hProcess,REALTIME_PRIORITY_CLASS);
		dInitTime=secs;
		nFirstTime=0;
     }
	 secs-=dInitTime;
//    printf("status 1:%d status2:%d secs: %lf\n",status1,status2,secs);
    return secs;
}

