Last change
on this file was 731, checked in by tbretz, 24 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.