<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p>ã</p>
<p><br>
</p>
<p>Ҹ׵ģ룬13629655684<br>
</p>
<br>
<br>
<div style="color: rgb(0, 0, 0);">
<div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> teqc <teqc-bounces@postal.unavco.org> on behalf of teqc-request@postal.unavco.org <teqc-request@postal.unavco.org><br>
<b>Sent:</b> Saturday, October 8, 2016 2:00 AM<br>
<b>To:</b> teqc@postal.unavco.org<br>
<b>Subject:</b> teqc Digest, Vol 149, Issue 5</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Send teqc mailing list submissions to<br>
        teqc@postal.unavco.org<br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="http://postal.unavco.org/mailman/listinfo/teqc">http://postal.unavco.org/mailman/listinfo/teqc</a><br>
or, via email, send a message with subject or body 'help' to<br>
        teqc-request@postal.unavco.org<br>
<br>
You can reach the person managing the list at<br>
        teqc-owner@postal.unavco.org<br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of teqc digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1. Re: some sort of sub-second bug for '-st' option (Lou Estey)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Thu, 6 Oct 2016 14:30:10 -0600<br>
From: Lou Estey <lou@unavco.org><br>
To: "teqc@unavco.org" <teqc@unavco.org><br>
Subject: Re: [teqc] some sort of sub-second bug for '-st' option<br>
Message-ID: <1fb6b079-51ba-6747-0473-d013c05da1a4@unavco.org><br>
Content-Type: text/plain; charset=utf-8; format=flowed<br>
<br>
Ok, I think I have a generalized fix for this bug, which should work for windowing using<br>
'-st', '-e', and/or '-dX' or '+dX'.  The fix was tested on 10-, 25-, 50-, and 100-Hz data<br>
using '-st' and '-e', all starting and ending on non-integer second epochs.  (And using a<br>
few different formats, depending on the rate.)<br>
<br>
The fix, of course, will be in the next official version of teqc.<br>
<br>
cheers,<br>
--lou<br>
<br>
On 06-Oct-16 07:42 AM, Lou Estey wrote:<br>
> This bug has been tracked down to floating point noise, not a logic error.  There are<br>
> two values to be compared, the second's value for the window start and that for the<br>
> epoch: the window value is created from reading the input string from '-st' using a C<br>
> sscanf() and using a '%lf' for the second's value; whereas the epoch values here depend<br>
> on numerical manipulation, often (as in the case of SBF below and other formats)<br>
> using integer week values and seconds/milliseconds/microseconds (into the week)<br>
> integer values, all of which are then converted to floating point.  In the case below,<br>
> here's a closer look at the actual floating point values of the second's value, printed<br>
> out to higher precision:<br>
><br>
> window start = 59.159999999999997 seconds<br>
> first epoch =  59.159999999974389 seconds<br>
><br>
> ... both annoyingly close to exactly 59.16, but not quite, and they are not equal:<br>
> the first epoch is less than the window start, so, from a floating-point perspective,<br>
> the first epoch is before the window start and needs to be skipped -- which of course<br>
> is wrong.  As a test, rounding both to the nearest 0.1 nanosecond (1e-10 second) does<br>
> the trick in this particular case:<br>
><br>
> rounded window start = 59.160000000000004 seconds<br>
> rounded first epoch  = 59.160000000000004 seconds<br>
><br>
> ... so now they are both equal and all is well.<br>
><br>
> Obviously a numerical tolerance has to be introduced, but this will take some thought.<br>
><br>
> Not that most of you need to know all this, but maybe this gives you some idea of the<br>
> nit-picking details that have to be considered in numerical code. :)<br>
><br>
> cheers,<br>
> --lou<br>
><br>
> On 05-Oct-16 01:28 PM, Lou Estey wrote:<br>
>> All,<br>
>><br>
>> Discovered: There is some sort of sub-second bug for the '-st' option<br>
>> which skips one or more initial epochs if the starting epoch of the input<br>
>> is not on an integer second and the '-st' option specifies the exact starting<br>
>> epoch.  Example using a 25-Hz SBF data file:<br>
>><br>
>> [12357] teqc +quiet +meta *.sbf | grep ^start<br>
>> start date & time:       2012-06-29 10:04:59.160<br>
>><br>
>> Now:<br>
>><br>
>> [12358] teqc +quiet -st 2012-06-29T10:04:59.160 *.sbf > tmp.obs; teqc +meta tmp.obs | grep ^start<br>
>> start date & time:       2012-06-29 10:04:59.200<br>
>><br>
>> ... which misses the first epoch.  But using slightly earlier '-st' times works aok:<br>
>><br>
>> [12359] teqc +quiet -st 2012-06-29T10:04:59.120 *.sbf > tmp.obs; teqc +meta tmp.obs | grep ^start<br>
>> start date & time:       2012-06-29 10:04:59.160<br>
>> [12360] teqc +quiet -st 2012-06-29T10:04:59.080 *.sbf > tmp.obs; teqc +meta tmp.obs | grep ^start<br>
>> start date & time:       2012-06-29 10:04:59.160<br>
>> [12361] teqc +quiet -st 2012-06-29T10:04:59.040 *.sbf > tmp.obs; teqc +meta tmp.obs | grep ^start<br>
>> start date & time:       2012-06-29 10:04:59.160<br>
>> [12362] teqc +quiet -st 2012-06-29T10:04:59.000 *.sbf > tmp.obs; teqc +meta tmp.obs | grep ^start<br>
>> start date & time:       2012-06-29 10:04:59.160<br>
>><br>
>> For now the workaround seems to be to not include the start time with '-st' at all:<br>
>><br>
>> [12363] teqc +quiet *.sbf > tmp.obs; teqc +meta tmp.obs | grep ^start<br>
>> start date & time:       2012-06-29 10:04:59.160<br>
>><br>
>> ... or use a start time with '-st' which truncates the sub-second portion.<br>
>><br>
>> This bug not only occurs when translating, but when doing other operations<br>
>> such as using '-O.sum .'.<br>
>><br>
>> cheers,<br>
>> --lou<br>
>><br>
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
>> Louis H. Estey, Ph.D.              office:  [+001] 303-381-7456<br>
>> UNAVCO, 6350 Nautilus Drive           FAX:  [+001] 303-381-7451<br>
>> Boulder, CO  80301-5554            e-mail:  lou  unavco.org<br>
>>      WWW:  <a href="http://www.unavco.org">http://www.unavco.org</a>   <a href="http://jules.unavco.org">
http://jules.unavco.org</a><br>
>><br>
>> "If the universe is the answer, what is the question?"<br>
>>                                                -- Leon Lederman<br>
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
_______________________________________________<br>
teqc mailing list<br>
teqc@postal.unavco.org<br>
<a href="http://postal.unavco.org/mailman/listinfo/teqc">http://postal.unavco.org/mailman/listinfo/teqc</a><br>
<br>
------------------------------<br>
<br>
End of teqc Digest, Vol 149, Issue 5<br>
************************************<br>
</div>
</span></font></div>
</div>
</body>
</html>