| 32 | } |
| 33 | |
| 34 | static inline void date_to_ymd(std::int32_t jd, |
| 35 | std::int32_t & year, |
| 36 | std::int32_t & month, |
| 37 | std::int32_t & day) { |
| 38 | std::uint32_t julian, quad, extra; |
| 39 | std::int32_t y; |
| 40 | julian = static_cast<std::uint32_t>(jd); |
| 41 | julian += 32044; |
| 42 | quad = julian / 146097; |
| 43 | extra = (julian - quad * 146097) * 4 + 3; |
| 44 | julian += 60 + quad * 3 + extra / 146097; |
| 45 | quad = julian / 1461; |
| 46 | julian -= quad * 1461; |
| 47 | y = julian * 4 / 1461; |
| 48 | julian = ((y != 0) ? (julian + 305) % 365 : (julian + 306) % 366) + 123; |
| 49 | y += quad * 4; |
| 50 | year = y - 4800; |
| 51 | quad = julian * 2141 / 65536; |
| 52 | day = julian - 7834 * quad / 256; |
| 53 | month = (quad + 10) % 12 + 1; |
| 54 | } |
| 55 | |
| 56 | static inline void time_to_hms(std::int64_t jd, |
| 57 | std::int32_t & hour, |
no outgoing calls
no test coverage detected