|
Last change
on this file since 1118 was 731, checked in by tbretz, 25 years ago |
|
*** empty log message ***
|
-
Property svn:executable
set to
*
|
|
File size:
1.3 KB
|
| Line | |
|---|
| 1 | #include "slalib.h"
|
|---|
| 2 | #include "slamac.h"
|
|---|
| 3 | void slaDd2tf ( int ndp, double days, char *sign, int ihmsf[4] )
|
|---|
| 4 | /*
|
|---|
| 5 | ** - - - - - - - - -
|
|---|
| 6 | ** s l a D d 2 t f
|
|---|
| 7 | ** - - - - - - - - -
|
|---|
| 8 | **
|
|---|
| 9 | ** Convert an interval in days into hours, minutes, seconds.
|
|---|
| 10 | **
|
|---|
| 11 | ** (double precision)
|
|---|
| 12 | **
|
|---|
| 13 | ** Given:
|
|---|
| 14 | ** ndp int number of decimal places of seconds
|
|---|
| 15 | ** days double interval in days
|
|---|
| 16 | **
|
|---|
| 17 | ** Returned:
|
|---|
| 18 | ** *sign char '+' or '-'
|
|---|
| 19 | ** ihmsf int[4] hours, minutes, seconds, fraction
|
|---|
| 20 | **
|
|---|
| 21 | ** Last revision: 31 August 1995
|
|---|
| 22 | **
|
|---|
| 23 | ** Copyright P.T.Wallace. All rights reserved.
|
|---|
| 24 | */
|
|---|
| 25 |
|
|---|
| 26 | #define D2S 86400.0 /* Days to seconds */
|
|---|
| 27 |
|
|---|
| 28 | {
|
|---|
| 29 | double rs, rm, rh, a, ah, am, as, af;
|
|---|
| 30 |
|
|---|
| 31 | /* Handle sign */
|
|---|
| 32 | *sign = (char) ( ( days < 0.0 ) ? '-' : '+' );
|
|---|
| 33 |
|
|---|
| 34 | /* Field units in terms of least significant figure */
|
|---|
| 35 | rs = pow ( 10.0, (double) gmax ( ndp, 0 ) );
|
|---|
| 36 | rs = dint ( rs );
|
|---|
| 37 | rm = rs * 60.0;
|
|---|
| 38 | rh = rm * 60.0;
|
|---|
| 39 |
|
|---|
| 40 | /* Round interval and express in smallest units required */
|
|---|
| 41 | a = rs * D2S * fabs ( days );
|
|---|
| 42 | a = dnint ( a );
|
|---|
| 43 |
|
|---|
| 44 | /* Separate into fields */
|
|---|
| 45 | ah = a / rh;
|
|---|
| 46 | ah = dint ( ah );
|
|---|
| 47 | a = a - ah * rh;
|
|---|
| 48 | am = a / rm;
|
|---|
| 49 | am = dint ( am );
|
|---|
| 50 | a = a - am * rm;
|
|---|
| 51 | as = a / rs;
|
|---|
| 52 | as = dint ( as );
|
|---|
| 53 | af = a - as * rs;
|
|---|
| 54 |
|
|---|
| 55 | /* Return results */
|
|---|
| 56 | ihmsf[0] = (int) ah;
|
|---|
| 57 | ihmsf[1] = (int) am;
|
|---|
| 58 | ihmsf[2] = (int) as;
|
|---|
| 59 | ihmsf[3] = (int) af;
|
|---|
| 60 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.