Skip to content
Snippets Groups Projects
Commit 6b62d44e authored by Christian Hovy's avatar Christian Hovy
Browse files

Bug #4966: Alternative optimization for timeDeltaToJulianDelta

parent a4949eb8
No related branches found
No related tags found
No related merge requests found
......@@ -555,13 +555,11 @@ localTimeDeltaToJulianDelta_StandardTimeDelta_CalTypeGREGORIAN(struct _timedelta
ndiny = NO_OF_DAYS_IN_A_YEAR_FOR_CAL_TYPE365;
}
int64_t i = 0L;
/* Fast-Fwd >= 400 */
for (i = base_dt->date.year; ((base_dt->date.year + td->year - i) >= 400); i = i + 400)
{
jd_return->day = jd_return->day + NO_OF_DAYS_IN_400_YEARS;
}
int numberOf400YearPeriods = td->year / 400;
int64_t i = base_dt->date.year + numberOf400YearPeriods * 400;
jd_return->day = jd_return->day + numberOf400YearPeriods * NO_OF_DAYS_IN_400_YEARS;
/* The year from (target date - 399) to base_date + delta years - 1 */
for (; i < base_dt->date.year + td->year; i++)
......@@ -621,13 +619,10 @@ localTimeDeltaToJulianDelta_StandardTimeDelta_CalTypeGREGORIAN(struct _timedelta
ndiny = NO_OF_DAYS_IN_A_YEAR_FOR_CAL_TYPE365;
}
int64_t i = 0L;
/* Fast-Fwd: >= 400 */
for (i = base_dt->date.year; (base_dt->date.year - td->year - i <= -400 ); i = i - 400)
{
jd_return->day = jd_return->day - NO_OF_DAYS_IN_400_YEARS;
}
/* Fast-Fwd: >= 400 */
int numberOf400YearPeriods = td->year / -400;
int64_t i = base_dt->date.year + numberOf400YearPeriods * -400;
jd_return->day = jd_return->day - numberOf400YearPeriods * NO_OF_DAYS_IN_400_YEARS;
/* The year from (target date + 399) to base_date - delta years + 1 */
......@@ -805,6 +800,16 @@ julianDeltaToTimeDelta(struct _juliandelta* jd, struct _datetime* base_dt, struc
int64_t j = base_dt->date.year;
/* Initialize to 0. */
td_return->year = 0;
/* Fast-Fwd: >= 400 */
while (days >= NO_OF_DAYS_IN_400_YEARS)
{
td_return->year = td_return->year + 400;
j = j + 400;
days = days - NO_OF_DAYS_IN_400_YEARS;
};
do
{
......@@ -895,6 +900,16 @@ julianDeltaToTimeDelta(struct _juliandelta* jd, struct _datetime* base_dt, struc
int64_t j = base_dt->date.year;
/* Initialize. */
td_return->year = 0;
/* Fast-Fwd: >= 400 */
while (days >= NO_OF_DAYS_IN_400_YEARS)
{
td_return->year = td_return->year + 400;
j = j - 400;
days = days - NO_OF_DAYS_IN_400_YEARS;
};
do
{
/* Loop over and get the year by substracting 366/365 days depending
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment