is_leap
unsigned dayinyear = (is_leap(tm->tm_year) ? 366 : 365);
unsigned daysinmonth = ndays[is_leap(tm->tm_year)][tm->tm_mon];
if (tm->tm_mday < 1 || tm->tm_mday > (int)ndays[is_leap(tm->tm_year)][tm->tm_mon])
res += is_leap(i) ? 366 : 365;
res += ndays[is_leap(tm->tm_year)][i];
if (tm->tm_mday < 1 || tm->tm_mday > ndays[is_leap(tm->tm_year)][tm->tm_mon])
res += is_leap(i) ? 366 : 365;
res += ndays[is_leap(tm->tm_year)][i];
res += is_leap(i) ? 366 : 365;
res += ndays[is_leap(tm->tm_year)][i];