From owner-svn-src-user@FreeBSD.ORG Tue Feb 23 21:39:12 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2C9B3106566C; Tue, 23 Feb 2010 21:39:12 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1AC1A8FC0A; Tue, 23 Feb 2010 21:39:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o1NLdB44087051; Tue, 23 Feb 2010 21:39:11 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o1NLdBLt087044; Tue, 23 Feb 2010 21:39:11 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <201002232139.o1NLdBLt087044@svn.freebsd.org> From: Edwin Groothuis Date: Tue, 23 Feb 2010 21:39:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r204263 - user/edwin/calendar X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Feb 2010 21:39:12 -0000 Author: edwin Date: Tue Feb 23 21:39:11 2010 New Revision: 204263 URL: http://svn.freebsd.org/changeset/base/204263 Log: Give the solar calculations second precision capability Add the $FreeBSD$ keyword. Modified: user/edwin/calendar/calendar.h user/edwin/calendar/dates.c (contents, props changed) user/edwin/calendar/events.c (contents, props changed) user/edwin/calendar/parsedata.c (contents, props changed) user/edwin/calendar/pom.c (contents, props changed) user/edwin/calendar/sunpos.c (contents, props changed) Directory Properties: user/edwin/calendar/cny.c (props changed) user/edwin/calendar/locale.c (props changed) Modified: user/edwin/calendar/calendar.h ============================================================================== --- user/edwin/calendar/calendar.h Tue Feb 23 21:28:25 2010 (r204262) +++ user/edwin/calendar/calendar.h Tue Feb 23 21:39:11 2010 (r204263) @@ -39,10 +39,12 @@ #define SECSPERDAY (24 * 60 * 60) #define SECSPERHOUR (60 * 60) #define SECSPERMINUTE (60) +#define MINSPERHOUR (60) #define HOURSPERDAY (24) #define FSECSPERDAY (24.0 * 60.0 * 60.0) #define FSECSPERHOUR (60.0 * 60.0) #define FSECSPERMINUTE (60.0) +#define FMINSPERHOUR (60.0) #define FHOURSPERDAY (24.0) #define DAYSPERYEAR 365 Modified: user/edwin/calendar/dates.c ============================================================================== --- user/edwin/calendar/dates.c Tue Feb 23 21:28:25 2010 (r204262) +++ user/edwin/calendar/dates.c Tue Feb 23 21:39:11 2010 (r204263) @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: user/edwin/calendar/calendar.c 201195 2009-12-29 13:14:13Z edwin $"); +__FBSDID("$FreeBSD$"); #include #include Modified: user/edwin/calendar/events.c ============================================================================== --- user/edwin/calendar/events.c Tue Feb 23 21:28:25 2010 (r204262) +++ user/edwin/calendar/events.c Tue Feb 23 21:39:11 2010 (r204263) @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: user/edwin/calendar/io.c 200813 2009-12-21 21:17:59Z edwin $"); +__FBSDID("$FreeBSD$"); #include #include Modified: user/edwin/calendar/parsedata.c ============================================================================== --- user/edwin/calendar/parsedata.c Tue Feb 23 21:28:25 2010 (r204262) +++ user/edwin/calendar/parsedata.c Tue Feb 23 21:39:11 2010 (r204263) @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: user/edwin/calendar/day.c 200813 2009-12-21 21:17:59Z edwin $"); +__FBSDID("$FreeBSD$"); #include #include Modified: user/edwin/calendar/pom.c ============================================================================== --- user/edwin/calendar/pom.c Tue Feb 23 21:28:25 2010 (r204262) +++ user/edwin/calendar/pom.c Tue Feb 23 21:39:11 2010 (r204263) @@ -45,7 +45,7 @@ static const char sccsid[] = "@(#)pom.c #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: head/games/pom/pom.c 201613 2010-01-05 21:14:48Z edwin $"); +__FBSDID("$FreeBSD$"); /* * Phase of the Moon. Calculates the current phase of the moon. Modified: user/edwin/calendar/sunpos.c ============================================================================== --- user/edwin/calendar/sunpos.c Tue Feb 23 21:28:25 2010 (r204262) +++ user/edwin/calendar/sunpos.c Tue Feb 23 21:39:11 2010 (r204263) @@ -93,7 +93,7 @@ static double ZJtable[] = { static void sunpos(int inYY, int inMM, int inDD, double UTCOFFSET, int inHOUR, int inMIN, - double eastlongitude, double latitude, double *L, double *DEC) + int inSEC, double eastlongitude, double latitude, double *L, double *DEC) { int Y; double ZJ, D, T, M, epsilon, lambda, alpha, HA, UTHM; @@ -102,7 +102,7 @@ sunpos(int inYY, int inMM, int inDD, dou if (inMM <= 2 && isleap(inYY)) ZJ -= 1.0; - UTHM = inHOUR + inMIN / FSECSPERMINUTE + UTCOFFSET; + UTHM = inHOUR + inMIN / FMINSPERHOUR + inSEC / FSECSPERHOUR + UTCOFFSET; Y = inYY - 1900; /* 1 */ D = floor(365.25 * Y) + ZJ + inDD + UTHM / FHOURSPERDAY; /* 3 */ T = D / 36525.0; /* 4 */ @@ -134,8 +134,8 @@ sunpos(int inYY, int inMM, int inDD, dou fixup(&HA); fixup(&latitude); #ifdef NOTDEF - printf("%02d/%02d %02d: l:%g d:%g h:%g\n", - inMM, inDD, inHOUR, latitude, *DEC, HA); + printf("%02d/%02d %02d:%02d:%02d l:%g d:%g h:%g\n", + inMM, inDD, inHOUR, inMIN, inSEC, latitude, *DEC, HA); #endif return; @@ -182,8 +182,10 @@ sunpos(int inYY, int inMM, int inDD, dou #define ANGLE(a, b) (((a) < (b)) ? 1 : -1) #define SHOUR(s) ((s) / 3600) #define SMIN(s) (((s) % 3600) / 60) +#define SSEC(s) ((s) % 60) #define HOUR(h) ((h) / 4) #define MIN(h) (15 * ((h) % 4)) +#define SEC(h) 0 #define DEBUG1(y, m, d, hh, mm, pdec, dec) \ printf("%4d-%02d-%02d %02d:%02d:00 - %7.7g -> %7.7g\n", \ y, m, d, hh, mm, pdec, dec) @@ -224,8 +226,8 @@ fequinoxsolstice(int year, double UTCoff prevdec = 350; for (d = 18; d < 31; d++) { // printf("Comparing day %d to %d.\n", d, d+1); - sunpos(year, 3, d, UTCoffset, 0, 0, 0.0, 0.0, &L, &decleft); - sunpos(year, 3, d + 1, UTCoffset, 0, 0, 0.0, 0.0, + sunpos(year, 3, d, UTCoffset, 0, 0, 0, 0.0, 0.0, &L, &decleft); + sunpos(year, 3, d + 1, UTCoffset, 0, 0, 0, 0.0, 0.0, &L, &decright); // printf("Found %g and %g.\n", decleft, decright); if (SIGN(decleft) == SIGN(decright)) @@ -236,7 +238,8 @@ fequinoxsolstice(int year, double UTCoff while (s > 0) { // printf("Obtaining %d (%02d:%02d)\n", // dial, SHOUR(dial), SMIN(dial)); - sunpos(year, 3, d, UTCoffset, SHOUR(dial), SMIN(dial), + sunpos(year, 3, d, UTCoffset, + SHOUR(dial), SMIN(dial), SSEC(dial), 0.0, 0.0, &L, &decmiddle); // printf("Found %g\n", decmiddle); if (SIGN(decleft) == SIGN(decmiddle)) { @@ -261,11 +264,11 @@ fequinoxsolstice(int year, double UTCoff found = 0; prevdec = 10; for (d = 18; d < 31; d++) { - printf("Comparing day %d to %d.\n", d, d+1); - sunpos(year, 9, d, UTCoffset, 0, 0, 0.0, 0.0, &L, &decleft); - sunpos(year, 9, d + 1, UTCoffset, 0, 0, 0.0, 0.0, +// printf("Comparing day %d to %d.\n", d, d+1); + sunpos(year, 9, d, UTCoffset, 0, 0, 0, 0.0, 0.0, &L, &decleft); + sunpos(year, 9, d + 1, UTCoffset, 0, 0, 0, 0.0, 0.0, &L, &decright); - printf("Found %g and %g.\n", decleft, decright); +// printf("Found %g and %g.\n", decleft, decright); if (SIGN(decleft) == SIGN(decright)) continue; @@ -274,7 +277,8 @@ fequinoxsolstice(int year, double UTCoff while (s > 0) { // printf("Obtaining %d (%02d:%02d)\n", // dial, SHOUR(dial), SMIN(dial)); - sunpos(year, 9, d, UTCoffset, SHOUR(dial), SMIN(dial), + sunpos(year, 9, d, UTCoffset, + SHOUR(dial), SMIN(dial), SSEC(dial), 0.0, 0.0, &L, &decmiddle); // printf("Found %g\n", decmiddle); if (SIGN(decleft) == SIGN(decmiddle)) { @@ -302,7 +306,7 @@ fequinoxsolstice(int year, double UTCoff prevangle = 1; for (d = 18; d < 31; d++) { for (h = 0; h < 4 * HOURSPERDAY; h++) { - sunpos(year, 6, d, UTCoffset, HOUR(h), MIN(h), + sunpos(year, 6, d, UTCoffset, HOUR(h), MIN(h), SEC(h), 0.0, 0.0, &L, &dec); angle = ANGLE(prevdec, dec); if (prevangle != angle) { @@ -332,7 +336,7 @@ fequinoxsolstice(int year, double UTCoff prevangle = -1; for (d = 18; d < 31; d++) { for (h = 0; h < 4 * HOURSPERDAY; h++) { - sunpos(year, 12, d, UTCoffset, HOUR(h), MIN(h), + sunpos(year, 12, d, UTCoffset, HOUR(h), MIN(h), SEC(h), 0.0, 0.0, &L, &dec); angle = ANGLE(prevdec, dec); if (prevangle != angle) { @@ -370,14 +374,15 @@ calculatesunlongitude30(int year, int de sunpos(year - 1, 12, 31, -24 * (degreeGMToffset / 360.0), - HOUR(h), MIN(h), 0.0, 0.0, &prevL, &dec); + HOUR(h), MIN(h), SEC(h), 0.0, 0.0, &prevL, &dec); for (m = 1; m <= 12; m++) { for (d = 1; d <= monthdays[m]; d++) { for (h = 0; h < 4 * HOURSPERDAY; h++) { sunpos(year, m, d, -24 * (degreeGMToffset / 360.0), - HOUR(h), MIN(h), 0.0, 0.0, &curL, &dec); + HOUR(h), MIN(h), SEC(h), + 0.0, 0.0, &curL, &dec); if (curL < 180 && prevL > 180) { *pichinesemonths = cumdays[m] + d; #ifdef DEBUG