| OLD | NEW |
| 1 long long __year_to_secs(long long year, int *is_leap) | 1 long long __year_to_secs(long long year, int* is_leap) { |
| 2 { | 2 if (year - 2ULL <= 136) { |
| 3 » if (year-2ULL <= 136) { | 3 int y = year; |
| 4 » » int y = year; | 4 int leaps = (y - 68) >> 2; |
| 5 » » int leaps = (y-68)>>2; | 5 if (!((y - 68) & 3)) { |
| 6 » » if (!((y-68)&3)) { | 6 leaps--; |
| 7 » » » leaps--; | 7 if (is_leap) |
| 8 » » » if (is_leap) *is_leap = 1; | 8 *is_leap = 1; |
| 9 » » } else if (is_leap) *is_leap = 0; | 9 } else if (is_leap) |
| 10 » » return 31536000*(y-70) + 86400*leaps; | 10 *is_leap = 0; |
| 11 » } | 11 return 31536000 * (y - 70) + 86400 * leaps; |
| 12 } |
| 12 | 13 |
| 13 » int cycles, centuries, leaps, rem; | 14 int cycles, centuries, leaps, rem; |
| 14 | 15 |
| 15 » if (!is_leap) is_leap = &(int){0}; | 16 if (!is_leap) |
| 16 » cycles = (year-100) / 400; | 17 is_leap = &(int){0}; |
| 17 » rem = (year-100) % 400; | 18 cycles = (year - 100) / 400; |
| 18 » if (rem < 0) { | 19 rem = (year - 100) % 400; |
| 19 » » cycles--; | 20 if (rem < 0) { |
| 20 » » rem += 400; | 21 cycles--; |
| 21 » } | 22 rem += 400; |
| 22 » if (!rem) { | 23 } |
| 23 » » *is_leap = 1; | 24 if (!rem) { |
| 24 » » centuries = 0; | 25 *is_leap = 1; |
| 25 » » leaps = 0; | 26 centuries = 0; |
| 26 » } else { | 27 leaps = 0; |
| 27 » » if (rem >= 200) { | 28 } else { |
| 28 » » » if (rem >= 300) centuries = 3, rem -= 300; | 29 if (rem >= 200) { |
| 29 » » » else centuries = 2, rem -= 200; | 30 if (rem >= 300) |
| 30 » » } else { | 31 centuries = 3, rem -= 300; |
| 31 » » » if (rem >= 100) centuries = 1, rem -= 100; | 32 else |
| 32 » » » else centuries = 0; | 33 centuries = 2, rem -= 200; |
| 33 » » } | 34 } else { |
| 34 » » if (!rem) { | 35 if (rem >= 100) |
| 35 » » » *is_leap = 0; | 36 centuries = 1, rem -= 100; |
| 36 » » » leaps = 0; | 37 else |
| 37 » » } else { | 38 centuries = 0; |
| 38 » » » leaps = rem / 4U; | 39 } |
| 39 » » » rem %= 4U; | 40 if (!rem) { |
| 40 » » » *is_leap = !rem; | 41 *is_leap = 0; |
| 41 » » } | 42 leaps = 0; |
| 42 » } | 43 } else { |
| 44 leaps = rem / 4U; |
| 45 rem %= 4U; |
| 46 *is_leap = !rem; |
| 47 } |
| 48 } |
| 43 | 49 |
| 44 » leaps += 97*cycles + 24*centuries - *is_leap; | 50 leaps += 97 * cycles + 24 * centuries - *is_leap; |
| 45 | 51 |
| 46 » return (year-100) * 31536000LL + leaps * 86400LL + 946684800 + 86400; | 52 return (year - 100) * 31536000LL + leaps * 86400LL + 946684800 + 86400; |
| 47 } | 53 } |
| OLD | NEW |