| 1 | #include "erfa.h" | 
|---|
| 2 |  | 
|---|
| 3 | void eraA2tf(int ndp, double angle, char *sign, int ihmsf[4]) | 
|---|
| 4 | /* | 
|---|
| 5 | **  - - - - - - - - | 
|---|
| 6 | **   e r a A 2 t f | 
|---|
| 7 | **  - - - - - - - - | 
|---|
| 8 | ** | 
|---|
| 9 | **  Decompose radians into hours, minutes, seconds, fraction. | 
|---|
| 10 | ** | 
|---|
| 11 | **  Given: | 
|---|
| 12 | **     ndp     int     resolution (Note 1) | 
|---|
| 13 | **     angle   double  angle in radians | 
|---|
| 14 | ** | 
|---|
| 15 | **  Returned: | 
|---|
| 16 | **     sign    char    '+' or '-' | 
|---|
| 17 | **     ihmsf   int[4]  hours, minutes, seconds, fraction | 
|---|
| 18 | ** | 
|---|
| 19 | **  Called: | 
|---|
| 20 | **     eraD2tf      decompose days to hms | 
|---|
| 21 | ** | 
|---|
| 22 | **  Notes: | 
|---|
| 23 | ** | 
|---|
| 24 | **  1) The argument ndp is interpreted as follows: | 
|---|
| 25 | ** | 
|---|
| 26 | **     ndp         resolution | 
|---|
| 27 | **      :      ...0000 00 00 | 
|---|
| 28 | **     -7         1000 00 00 | 
|---|
| 29 | **     -6          100 00 00 | 
|---|
| 30 | **     -5           10 00 00 | 
|---|
| 31 | **     -4            1 00 00 | 
|---|
| 32 | **     -3            0 10 00 | 
|---|
| 33 | **     -2            0 01 00 | 
|---|
| 34 | **     -1            0 00 10 | 
|---|
| 35 | **      0            0 00 01 | 
|---|
| 36 | **      1            0 00 00.1 | 
|---|
| 37 | **      2            0 00 00.01 | 
|---|
| 38 | **      3            0 00 00.001 | 
|---|
| 39 | **      :            0 00 00.000... | 
|---|
| 40 | ** | 
|---|
| 41 | **  2) The largest positive useful value for ndp is determined by the | 
|---|
| 42 | **     size of angle, the format of doubles on the target platform, and | 
|---|
| 43 | **     the risk of overflowing ihmsf[3].  On a typical platform, for | 
|---|
| 44 | **     angle up to 2pi, the available floating-point precision might | 
|---|
| 45 | **     correspond to ndp=12.  However, the practical limit is typically | 
|---|
| 46 | **     ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is | 
|---|
| 47 | **     only 16 bits. | 
|---|
| 48 | ** | 
|---|
| 49 | **  3) The absolute value of angle may exceed 2pi.  In cases where it | 
|---|
| 50 | **     does not, it is up to the caller to test for and handle the | 
|---|
| 51 | **     case where angle is very nearly 2pi and rounds up to 24 hours, | 
|---|
| 52 | **     by testing for ihmsf[0]=24 and setting ihmsf[0-3] to zero. | 
|---|
| 53 | ** | 
|---|
| 54 | **  Copyright (C) 2013-2017, NumFOCUS Foundation. | 
|---|
| 55 | **  Derived, with permission, from the SOFA library.  See notes at end of file. | 
|---|
| 56 | */ | 
|---|
| 57 | { | 
|---|
| 58 | /* Scale then use days to h,m,s function. */ | 
|---|
| 59 | eraD2tf(ndp, angle/ERFA_D2PI, sign, ihmsf); | 
|---|
| 60 |  | 
|---|
| 61 | return; | 
|---|
| 62 |  | 
|---|
| 63 | } | 
|---|
| 64 | /*---------------------------------------------------------------------- | 
|---|
| 65 | ** | 
|---|
| 66 | ** | 
|---|
| 67 | **  Copyright (C) 2013-2017, NumFOCUS Foundation. | 
|---|
| 68 | **  All rights reserved. | 
|---|
| 69 | ** | 
|---|
| 70 | **  This library is derived, with permission, from the International | 
|---|
| 71 | **  Astronomical Union's "Standards of Fundamental Astronomy" library, | 
|---|
| 72 | **  available from http://www.iausofa.org. | 
|---|
| 73 | ** | 
|---|
| 74 | **  The ERFA version is intended to retain identical functionality to | 
|---|
| 75 | **  the SOFA library, but made distinct through different function and | 
|---|
| 76 | **  file names, as set out in the SOFA license conditions.  The SOFA | 
|---|
| 77 | **  original has a role as a reference standard for the IAU and IERS, | 
|---|
| 78 | **  and consequently redistribution is permitted only in its unaltered | 
|---|
| 79 | **  state.  The ERFA version is not subject to this restriction and | 
|---|
| 80 | **  therefore can be included in distributions which do not support the | 
|---|
| 81 | **  concept of "read only" software. | 
|---|
| 82 | ** | 
|---|
| 83 | **  Although the intent is to replicate the SOFA API (other than | 
|---|
| 84 | **  replacement of prefix names) and results (with the exception of | 
|---|
| 85 | **  bugs;  any that are discovered will be fixed), SOFA is not | 
|---|
| 86 | **  responsible for any errors found in this version of the library. | 
|---|
| 87 | ** | 
|---|
| 88 | **  If you wish to acknowledge the SOFA heritage, please acknowledge | 
|---|
| 89 | **  that you are using a library derived from SOFA, rather than SOFA | 
|---|
| 90 | **  itself. | 
|---|
| 91 | ** | 
|---|
| 92 | ** | 
|---|
| 93 | **  TERMS AND CONDITIONS | 
|---|
| 94 | ** | 
|---|
| 95 | **  Redistribution and use in source and binary forms, with or without | 
|---|
| 96 | **  modification, are permitted provided that the following conditions | 
|---|
| 97 | **  are met: | 
|---|
| 98 | ** | 
|---|
| 99 | **  1 Redistributions of source code must retain the above copyright | 
|---|
| 100 | **    notice, this list of conditions and the following disclaimer. | 
|---|
| 101 | ** | 
|---|
| 102 | **  2 Redistributions in binary form must reproduce the above copyright | 
|---|
| 103 | **    notice, this list of conditions and the following disclaimer in | 
|---|
| 104 | **    the documentation and/or other materials provided with the | 
|---|
| 105 | **    distribution. | 
|---|
| 106 | ** | 
|---|
| 107 | **  3 Neither the name of the Standards Of Fundamental Astronomy Board, | 
|---|
| 108 | **    the International Astronomical Union nor the names of its | 
|---|
| 109 | **    contributors may be used to endorse or promote products derived | 
|---|
| 110 | **    from this software without specific prior written permission. | 
|---|
| 111 | ** | 
|---|
| 112 | **  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 
|---|
| 113 | **  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 
|---|
| 114 | **  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | 
|---|
| 115 | **  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE | 
|---|
| 116 | **  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | 
|---|
| 117 | **  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | 
|---|
| 118 | **  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 
|---|
| 119 | **  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | 
|---|
| 120 | **  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | 
|---|
| 121 | **  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN | 
|---|
| 122 | **  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 
|---|
| 123 | **  POSSIBILITY OF SUCH DAMAGE. | 
|---|
| 124 | ** | 
|---|
| 125 | */ | 
|---|