19 &
operator(==),
operator(<),
operator(>),
operator(<=),
operator(>=), &
20 &
operator(+),
operator(-),
operator(*),
operator(/), &
28 result % day_seconds = diff1 % day_seconds
29 if (diff1 % day == zero_sec .and. diff2 % day == zero_sec .and. &
30 & diff1 % sec == zero_sec .and. diff2 % sec == zero_sec)
then 31 result % mon = modscl(diff1 % mon, diff2 % mon)
32 result % day = zero_sec
33 result % sec = zero_sec
34 else if (diff1 % sec == zero_sec .and. diff2 % sec == zero_sec)
then 35 result % mon = zero_sec
36 result % day = modscl((
cyclic_mdays * diff1 % mon + diff1 % day), &
38 result % sec = zero_sec
40 sec1 = diff1 % day_seconds * (
cyclic_mdays * diff1 % mon + diff1 % day) &
42 sec2 = diff2 % day_seconds * (
cyclic_mdays * diff2 % mon + diff2 % day) &
44 result % sec = modscl(sec1, sec2)
45 result % day = zero_sec
46 result % mon = zero_sec
47 call dcdate_normalize(result % day, result % sec, result % day_seconds, result % nondim_flag)
real(dp), parameter, public cyclic_mdays
subroutine, public dcdate_nondimcheck(opr, diff1, diff2, rslt)
subroutine, public dcdate_normalize(day, sec, day_seconds, nondim_flag)