On 2017-02-06 12:11 PM, Warner Losh wrote:
On Mon, Feb 6, 2017 at 6:39 AM, Zefram <zef...@fysh.org> wrote:
Warner Losh wrote:
So either there's some weird math that lets one subtract two numbers
that are different and get 0 as the answer, or the delta has to change
at the start.
To the extent that they're different, the things being subtracted are
not numbers. The expression "TAI - UTC" is shorthand for something more
complicated than a numeric subtraction, which will nevertheless produce
a numeric result. The linear reduction of a timestamp that Clive and
I have separately described is sufficiently numerical to admit of a
straightforward subtraction, and the linear reductions of N:23:59:60 and
(N+1):00:00:00 are duly the same.
Saying that the two numbers are the same is improper. Or rather, it
depends on which time scale you are looking at them in if they are
improper. In UTC they are clearly not the same, but different second
labels. UTC can express this non-sameness. TAI can't do that, so you
have to reduce the improper time to a proper one before you can
compare them. There's two ways to look at it: convert them both to TAI
or convert them both to UTC.
So, if you look at the two times in TAI land, you have to do that
folding of seconds that's implicit in the linearization formula. If
you do that folding of seconds, then the 60 in the irregular radix
takes care of the difference in the first second since you've folded
its value to the value of the first second of the next day. That means
you have to say the difference starts after the leap second.
However, if you look at the two times in UTC land and compute a delta
in UTA land, then you find the interval between N:23:59:60 and
N+1:00:00:00 you wind up with 1 second. That leads to the conclusion
that the difference starts at the beginning of the leap second.
The whole discussion about when the difference starts can be boiled
down to that. What's the proper way to look at it? Depends on how you
do the math to do the conversion to when you use the new offset.
An analogy: suppose we do a bit of arithmetic in hexadecimal. We can
all agree that 0x5a0 - 0x5a0 = 0x0. Suppose that while keeping the
hexadecimal radix we additionally use the digit "g", with value sixteen.
Now we find that 0x5a0 - 0x59g = 0x0. The difference is zero, yet the
numbers appear different. What's going on? Well, the numbers per se
are the same: 0x5a0 = 0x59g is a single numerical value. The things
that are different are the digit sequences "5a0" and "59g", which under
the convention being used here are two different ways of expressing that
single number. The digit sequences are not themselves numbers.
I think now you're getting confused about irregular radix. If we were
to do that with hex, the number 0x59g would be a non-normalized number
that normalizes to 5a0 because hexadecimal is a regular radix. You
can't normalize N:23:59:60 to N+1:00:00:00 because in UTC they are two
different second labels.
Put another way: it's indisputable that if I have one event at
N:23:59:60.1 and a second event at N+1:00:00:00.6, they happened 1.5s
apart.
Also, I'll note that bulletin C says from 0h, which is a time
expressed to only one significant digit.
Oh yeah. Good point. For me, a case of "filling in facts from common
understanding". I immediately interpret "0h" to mean "00:00:00". Maybe not?
They chose to not use the
unambiguous 00:00:00 opting for the less precise 0h.
But its unclear if it was an intentional choice. Maybe they do mean
"00:00:00" by "0h"?
There are lots of places in many specs everywhere where things are not
fully spelled out. Sometimes its unclear if this is just due to slightly
careless nomenclature. There's a tendency to try to write prose
concisely, and sometimes this leads to something less clear than it
should be. If you've been in debates in standards bodies you know what I
mean. Writing standards prose is hard, and people don't always agree on
writing style, etc. especially when some participants are not from
native English speaking countries. The UTC specs have that challenge in
spades, so we could be seeing some effects of that in the English prose.
If you make the
second folding argument via time linearization, you map both the leap
second and the first second of the next day to the same value. Which
one of those is 0h?
I think the final answer is: It's ambiguous and I was wrong to insist
that there's one true way to recon it.
Who ya gonna call? It would be helpful if someone from BIPM, IERS, or
ITU would weigh in on the topic.
Another way to answer the question is to ask what's the common practice?
In my discussions regarding 1588/PTP the consensus was "the spec says
after the Leap Second" and most in the 1588/PTP community interpreted in
that way, that implementations would increment the
timePropertiesDS.currentUtcOffset after the Leap Second, the same
instant timePropertiesDS.leap61 would be set FALSE. The SMPTE specs
based on 1588/PTP make this same assertion. If its wrong we (SMPTE)
ought to figure that out soon. What does PTPd do?
I'm not a GPS expert. IS-GPS-200G is dense. The TAI-UTC value is
signaled, but how its encoded is complicated, and when its updated is
unclear to me. See 20.3.3.5.2.4 Coordinated Universal Time (UTC). Can
anyone speak to that and this topic? What does GPS do? Is it clear? Or
does it actually suffer from this same ambiguity we are discussing?
Also, NIST Special Publication 250-67 NIST Time and Frequency Radio
Stations:
WWV, WWVH, and WWVB
Says, on page 49:
A leap second warning is indicated on the WWV/VH time code at bit 3. If
a one is present on
bit three, a leap second will be added to UTC at the end of the current
month (leap seconds are
added only at the end of June or December). The warning bit is set high
near the beginning of
the month, and immediately after the leap second is added, it is set
low, or to zero again.
This is another source I've used to conclude TAI-UTC update after the
Leap Second. WWVB doesn't carry TA_UTC explicitly, but this suggest they
interpret the change instant as after the Leap Second.
-Brooks
_______________________________________________
LEAPSECS mailing list
LEAPSECS@leapsecond.com
https://pairlist6.pair.net/mailman/listinfo/leapsecs