# r1933

Thu Sep 27 21:02:33 CEST 2007

```Author: amadeus
Date: 2007-09-27 21:02:28 +0200 (Thu, 27 Sep 2007)
New Revision: 1933

Log:
Astro calculations need doubles.

Modified: trunk/user/pixil/apps/nanox/wclock/astro.c
===================================================================
--- trunk/user/pixil/apps/nanox/wclock/astro.c	2007-09-27 18:59:04 UTC (rev 1932)
+++ trunk/user/pixil/apps/nanox/wclock/astro.c	2007-09-27 19:02:28 UTC (rev 1933)
@@ -139,15 +139,15 @@

/* JTIME --    Convert internal GMT  date  and	time  to  astronomical
Julian  time  (i.e.   Julian  date  plus  day fraction,
-	       expressed as a float).	*/
+	       expressed as a double).	*/

-float
+double
jtime(t)
struct tm *t;
{
#ifdef NOTUSED
long val = t->tm_sec + (60L * (t->tm_min + 60L * t->tm_hour));
-    float ret = (((float) (jdate(t) + val)) - 0.5) / 86400.0;
+    double ret = (((double) (jdate(t) + val)) - 0.5) / 86400.0;
return (ret);
#endif

@@ -158,11 +158,11 @@

/*  KEPLER  --	Solve the equation of Kepler.  */

-float
+double
kepler(m, ecc)
-     float m, ecc;
+     double m, ecc;
{
-    float e, delta;
+    double e, delta;
#define EPSILON 1E-6

e = m = dtr(m);
@@ -186,11 +186,11 @@

void
sunpos(jd, apparent, ra, dec, rv, slong)
-     float jd;
+     double jd;
int apparent;
-     float *ra, *dec, *rv, *slong;
+     double *ra, *dec, *rv, *slong;
{
-    float t, t2, t3, l, m, e, ea, v, theta, omega, eps;
+    double t, t2, t3, l, m, e, ea, v, theta, omega, eps;

/* Time, in Julian centuries of 36525 ephemeris days,
measured from the epoch 1900 January 0.5 ET. */
@@ -266,11 +266,11 @@
/*  GMST  --  Calculate Greenwich Mean Siderial Time for a given
instant expressed as a Julian date and fraction.	*/

-float
+double
gmst(jd)
-     float jd;
+     double jd;
{
-    float t, theta0;
+    double t, theta0;

/* Time, in Julian centuries of 36525 ephemeris days,

Modified: trunk/user/pixil/apps/nanox/wclock/main.c
===================================================================
--- trunk/user/pixil/apps/nanox/wclock/main.c	2007-09-27 18:59:04 UTC (rev 1932)
+++ trunk/user/pixil/apps/nanox/wclock/main.c	2007-09-27 19:02:28 UTC (rev 1933)
@@ -84,22 +84,22 @@
/* External functions - mainly to do math */
/* See astro.c for all the fun and games */

-extern void sunpos(float jd, int apparent, float *ra,
-		   float *dec, float *rv, float *slong);
+extern void sunpos(double jd, int apparent, double *ra,
+		   double *dec, double *rv, double *slong);

-extern float jtime(struct tm *t);
-extern float gmst(float jd);
+extern double jtime(struct tm *t);
+extern double gmst(double jd);

void write_settings(void);

/* Translate latitude and longitude to X and Y positions */

static void
-translate(float lat, float lon, int *xpos, int *ypos)
+translate(double lat, double lon, int *xpos, int *ypos)
{
-    *xpos = (int) ((180.0 + lon) * ((float) WIDTH / 360.0));
+    *xpos = (int) ((180.0 + lon) * ((double) WIDTH / 360.0));
*ypos =
-	(int) ((float) HEIGHT - (lat + 90.0) * ((float) HEIGHT / 180.0));
+	(int) ((double) HEIGHT - (lat + 90.0) * ((double) HEIGHT / 180.0));
}

/* Copy the map to to the screen */
@@ -122,18 +122,18 @@
city_t *city = 0;

city_t *best_city = 0;
-    float best_len = 999.0;
+    double best_len = 999.0;

for (city = city_head; city; city = city->next) {
int xpos, ypos;
-	float dist;
+	double dist;

/* Translate the lat/lon */
translate(city->lat, city->lon, &xpos, &ypos);

/* Figure out the distance from the click */

-	dist = hypot((float) abs(ex - xpos), (float) (ey - ypos));
+	dist = hypot((double) abs(ex - xpos), (double) (ey - ypos));

if (dist < best_len) {
best_city = city;
@@ -352,17 +352,17 @@
GR_REGION_ID region = GrNewRegion();
GR_GC_ID gc;

-    float daywave[WIDTH];
+    double daywave[WIDTH];

/* Math variables */
-    float sunra, sundec, sunrv, sunlon;
-    float quot, cd, sd, shiftp;
-    float f2, f3, spos, jgmt;
+    double sunra, sundec, sunrv, sunlon;
+    double quot, cd, sd, shiftp;
+    double f2, f3, spos, jgmt;
int hemi, i;

time_t now;
struct tm *gmt;
-    float julian;
+    double julian;

/* Get the current UTC time */

@@ -375,7 +375,7 @@
/* Get the position of the sun */
sunpos(julian, 0, &sunra, &sundec, &sunrv, &sunlon);

-    jgmt = (float) gmst(julian);
+    jgmt = (double) gmst(julian);
sunlon = fixangle(180.0 + (sunra - (jgmt * 15)));

/* Convert the sun x position on the map */
@@ -393,15 +393,15 @@
sd = sin(quot);

/* This is the radius of the sun */
-    quot = (2.0 * M_PI) / (float) width;
+    quot = (2.0 * M_PI) / (double) width;

shiftp = 0.5 * (height + 1);

-    f2 = ((float) height) / M_PI;
+    f2 = ((double) height) / M_PI;
f3 = 1E-8 * f2;

for (i = 0; i < width; i++) {
-	float val = (float) i;
+	double val = (double) i;
daywave[i] = cos(quot * (val - spos));
}

```