avr-libc-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avr-libc-commit] [2324] Edited gm_sidereal for readability


From: Mike Rice
Subject: [avr-libc-commit] [2324] Edited gm_sidereal for readability
Date: Tue, 02 Apr 2013 21:10:54 +0000

Revision: 2324
          http://svn.sv.gnu.org/viewvc/?view=rev&root=avr-libc&revision=2324
Author:   swfltek
Date:     2013-04-02 21:10:53 +0000 (Tue, 02 Apr 2013)
Log Message:
-----------
Edited gm_sidereal for readability

Modified Paths:
--------------
    trunk/avr-libc/libc/time/gm_sidereal.c

Modified: trunk/avr-libc/libc/time/gm_sidereal.c
===================================================================
--- trunk/avr-libc/libc/time/gm_sidereal.c      2013-04-02 21:08:04 UTC (rev 
2323)
+++ trunk/avr-libc/libc/time/gm_sidereal.c      2013-04-02 21:10:53 UTC (rev 
2324)
@@ -29,7 +29,9 @@
 /* $Id$ */
 
 /*
-       Greenwich Mean Sidereal Time.
+    Greenwich Mean Sidereal Time. The ratio of sidereal to civil seconds is
+    1.00273790935ss / 1.0cs , which when shifted left to fill 32 bits becomes
+    0x8059B740.
 */
 
 #include <time.h>
@@ -37,16 +39,20 @@
 unsigned long
 gm_sidereal(const time_t * timer)
 {
-       unsigned long long tmp;
+    unsigned long long tmp;
 
-       tmp = *timer * 3133555966ULL;
-       tmp /= 3125000000ULL;
+    tmp = *timer;
 
+    /* multiply by 1.00273790935 sidereal seconds */
+    tmp *= 0x8059B740;
 
-       /* add GMST at epoch */
-       tmp += 23991ULL;
+    /* divide by 1.0 civil second */
+    tmp >>= 31;
 
-       /* mod by 1 day */
-       tmp %= 86400ULL;
-       return tmp;
+    /* add sidereal time at epoch */
+    tmp += 23991ULL;
+
+    tmp %= ONE_DAY;
+    return tmp;
 }
+




reply via email to

[Prev in Thread] Current Thread [Next in Thread]