[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
20040815: building UDUNITS on Cygwin
- Subject: 20040815: building UDUNITS on Cygwin
- Date: Mon, 16 Aug 2004 12:59:45 -0600
Dipesh,
>Date: Fri, 13 Aug 2004 14:41:47 -0700
>From: Dipesh Patel <address@hidden>
>Organization: USDA
>To: "'Steve Emmerson'" <address@hidden>
>Subject: RE: 20040813: building UDUNITS on Cygwin
> Keywords: 200408131907.i7DJ7QaW021117 UDUNITS
The above message contained the following:
> Sorry to keep bugging you...but I got the 1.12.1 version to compile.
> In the CUSTOMIZE file, when I defined the CPPFLAGS macro, I had set it to
> the following:
>
> CPPFLAGS=-Df2cFortran -DNDEBUG
>
> Well, it didn't like the space, so I just took off the -DNDEBUG flag and
> then it worked fine.
>
> But, I still have the off by 1 second error. Here is the test
> program I'm using:
>
> #include <iostream>
>
> #if defined(__cplusplus)
> extern "C"
> {
> #include "udunits.h"
> }
> #endif
>
> using namespace std;
>
> int main(int argc, char *argv[])
> {
> int year = 2003;
> int month = 5;
> int day = 30;
> int hour = 10;
> int min = 35;
> float sec = 20;
> string timeUnitStr = "minutes since 1800-01-01 00:00:00";
> double timeStamp;
> utUnit timeUnit;
>
> // Initialize udunits package
> utInit("");
>
> utScan(timeUnitStr.c_str(), &timeUnit);
>
> cout << "BEFORE: " << endl;
> cout << "Year : " << year << endl;
> cout << "Month: " << month << endl;
> cout << "Day : " << day << endl;
> cout << "Hour : " << hour << endl;
> cout << "Min : " << min << endl;
> cout << "Sec : " << sec << endl;
>
> utInvCalendar(year, month, day, hour, min, sec,
> &timeUnit, &timeStamp);
>
> utCalendar(timeStamp, &timeUnit, &year, &month, &day, &hour, &min,
> &sec);
>
> cout << "AFTER: " << endl;
> cout << "Year : " << year << endl;
> cout << "Month: " << month << endl;
> cout << "Day : " << day << endl;
> cout << "Hour : " << hour << endl;
> cout << "Min : " << min << endl;
> cout << "Sec : " << sec << endl;
>
> return 0 ;
> }
>
> I get the following output when I run this program. Notice that "sec"
> before I run utInvCalendar and utCalendar is "20", but after I lose a second
> and it becomes "19". Any idea of why this might be happening on Cywin?
>
> BEFORE:
> Year : 2003
> Month: 5
> Day : 30
> Hour : 10
> Min : 35
> Sec : 20
> AFTER:
> Year : 2003
> Month: 5
> Day : 30
> Hour : 10
> Min : 35
> Sec : 19
If you increase the precision with wich the "sec" variable is printed,
does the difference decrease?
Regards,
Steve Emmerson