summaryrefslogtreecommitdiff
path: root/ckt0.awk
diff options
context:
space:
mode:
authorwukong <wukong@tjikko>2025-12-20 18:14:42 -0800
committerwukong <wukong@tjikko>2025-12-21 12:31:01 -0800
commit3bcb519ca17fad1d2a4c9ec94e02b797d2cda859 (patch)
tree10aa2849b5e7c4cd7906b0a3e14500a000c0087e /ckt0.awk
parentc6aafa61408fdec5d38a246709acc538aba79c27 (diff)
added commented out alternate uptime prediction;
changed to merge_meas() of t_meas[] estimate when t[before] == t[after], this provides a sub-second uncertainty when used with systime() and helps derived estimates converge; set shell script to use uncertainty based sleep time in main loop;
Diffstat (limited to 'ckt0.awk')
-rw-r--r--ckt0.awk45
1 files changed, 28 insertions, 17 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)