summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ckt0.awk45
-rw-r--r--ckt0.sh5
2 files changed, 30 insertions, 20 deletions
diff --git a/ckt0.awk b/ckt0.awk
index dd83717..1c7ca6e 100644
--- a/ckt0.awk
+++ b/ckt0.awk
@@ -28,18 +28,17 @@ function merge_meas(est_val, est_unc, meas_val, meas_unc) {
function sigfig(val, unc) {
- ordmag_val = log10(val)
- ordmag_unc = log10(unc)
+ omag_val = log10(val)
+ omag_unc = log10(unc)
- ordmag_high = sqrt((ordmag_val)^2.0 + (ordmag_unc)^2.0)
- ordmag_low = ((ordmag_val)^-1.0 + (ordmag_unc)^-1.0)^-1.0
- ordmag_range = ordmag_high - ordmag_low
+ omag_high = sqrt((omag_val)^2.0 + (omag_unc)^2.0)
+ omag_low = ((omag_val)^-1.0 + (omag_unc)^-1.0)^-1.0
- sigfig_unc = sprintf("%.f", ordmag_range)
- sigfig_val = sprintf("%.f", sigfig_unc + 6.0)
+ sfig_unc = sprintf("%.f", sqrt((omag_high - omag_low)^2.0 + 6.0^2.0))
+ sfig_val = sprintf("%.f", sqrt(sfig_unc^2.0 + 6.0^2.0))
- ofmt_val = "%." sigfig_val "g"
- ofmt_unc = "%." sigfig_unc "g"
+ ofmt_val = "%." sfig_val "g"
+ ofmt_unc = "%." sfig_unc "g"
return sprintf(ofmt_val OFS ofmt_unc, val, unc)
@@ -154,11 +153,7 @@ BEGIN {
"uname" | getline uname
close("uname")
- #print("_systime_", systime())
- #print("_boottime_", ck_boottime())
-
# check ARGV for previous estimates
- #print("ARGC:", ARGC)
if (ARGC) {
ARGV[1] ? t_prev[1] = ARGV[1] : t_prev[1] = 0.0
ARGV[2] ? t_prev[2] = ARGV[2] : t_prev[2] = systime()
@@ -167,7 +162,6 @@ BEGIN {
ARGV[5] ? t0_prev[1] = ARGV[5] : split(ck_boottime(uname), t0_prev)
ARGV[6] ? t0_prev[2] = ARGV[6] : split(ck_boottime(uname), t0_prev)
}
- #print( t_prev[1], t_prev[2], t_up_prev[1], t_up_prev[2], t0_prev[1], t0_prev[2] )
# check systime, check uptime, check systime again
t_meas[1] = ck_time(uname)
@@ -179,7 +173,7 @@ BEGIN {
t_meas[2] -= t_meas[1]
t_meas[1] += 0.5*t_meas[2]
} else {
- t_meas[2] = 1.0
+ split(merge_meas(t_meas[1], 1.0, t_meas[2], 1.0), t_meas)
}
t_meas_str = sigfig(t_meas[1], t_meas[2])
@@ -190,19 +184,36 @@ BEGIN {
# predict uptime based on dt, t_up(new) = t_up(old) + dt
t_up_est[1] = t_up_prev[1] + dt[1]
t_up_est[2] = t_up_prev[2] + dt[2]
+ t_up_est[2] += sqrt((t_up_est[1] - t_up_prev[1] - dt[1])^2.0)
+
+ # alt. prediction based on t0
+ t_up_alt[1] = t_meas[1] - t0_prev[1]
+ t_up_alt[2] = t_meas[2] + t0_prev[2]
+
+ # dt_up_alt
+ # dt_up_alt[1] = t_up_alt[1] - (t_prev[1] - t0_prev[1])
+ # dt_up_alt[2] = t_up_alt[2] + (t_prev[2] + t0_prev[2])
+
+ # merge alt. prediction
+ # t_up_alt[2] += sqrt((dt_up_alt[1] - dt[1])^2.0)
+ # t_up_alt[2] += sqrt((t_up_alt[1] - t_up_est[1])^2.0)
+ # t_up_est[2] += sqrt((t_up_est[1] - t_up_alt[1])^2.0)
+
+ # split(merge_meas(t_up_est[1], t_up_est[2], t_up_alt[1], t_up_alt[2]), t_up_est)
+ # t_up_est[2] += (1.0E-3*rand())^2.0
# merge predicted and measured uptimes
split(merge_meas(t_up_est[1], t_up_est[2], t_up_meas[1], t_up_meas[2]), t_up_est)
- t_up_est[2] = sqrt( t_up_est[2]^2.0 + (t_up_est[1] - t_up_prev[1] - dt[1])^2.0 )
t_up_est_str = sigfig(t_up_est[1], t_up_est[2])
# evaluate measured boot time, t0
t0_est[1] = t_meas[1] - t_up_est[1]
t0_est[2] = t_meas[2] + t_up_est[2]
+ t0_est[2] += sqrt((t0_est[1] - t0_prev[1])^2.0)
# merge previous and updated boot time, t0
split(merge_meas(t0_est[1], t0_est[2], t0_prev[1], t0_prev[2]), t0_est)
- t0_est[2] = sqrt( t0_est[2]^2.0 + (t0_est[1] - t0_prev[1])^2.0 )
+
t0_est_str = sigfig(t0_est[1], t0_est[2])
print(t_meas_str, t_up_est_str, t0_est_str)
diff --git a/ckt0.sh b/ckt0.sh
index 88fbb78..cf54ad0 100644
--- a/ckt0.sh
+++ b/ckt0.sh
@@ -25,10 +25,9 @@ for N in $(seq 0 10080) ; do
printf "${N} ${t0_est}\n" | column -t
t0_est=$( mawk -f ckt0.awk ${t0_est} | tail -n2 )
#mawk -f ckt0.awk
- sleep $( mawk 'BEGIN {print(sqrt( rand()^2.0 + 1.0 ))}' )
+ #sleep $( mawk 'BEGIN {print(sqrt( rand()^2.0 + 1.0 ))}' )
#sleep $( echo $t0_est | mawk '{print(sqrt( ((60.0*$4)/(60.0 + $4))^2.0 + rand()^2.0 ))}' )
- #sleep $( echo $t0_est | mawk '{print(sqrt( ($2)^2.0 + ($4)^2.0 + ($6)^2.0 + rand()^2.0 ))}' )
- #sleep $( echo $t0_est | mawk '{print( 10.0 - (systime() - $5)%10.0 + 0.5*rand()^2.0 )}' )
+ sleep $( echo $t0_est | mawk '{print( sqrt($2^2.0 + $4^2.0 + $6^2.0 + rand()^2.0)%30.0 )}' )
done