summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwukong <wukong@longaeva>2026-01-13 21:30:27 -0800
committerwukong <wukong@longaeva>2026-01-13 21:30:27 -0800
commit95ece1f65d38a807ace68c18441693ac4137f126 (patch)
tree24e895ab447dfd53b6bde4e157566fb75c6f918b
parentc32bbf335d4af02ed1b8a4c46b748bcf757595f4 (diff)
enabled alternate t0 based prediction of t_up;
added prediction of t0 baed on new t_meas value; merge t0 prediction with updated (measured) t0 rather than t0_prev;
Diffstat (limited to '')
-rw-r--r--ckt0.awk58
1 files changed, 33 insertions, 25 deletions
diff --git a/ckt0.awk b/ckt0.awk
index 68dd358..35ff5ca 100644
--- a/ckt0.awk
+++ b/ckt0.awk
@@ -167,7 +167,7 @@ BEGIN {
"uname" | getline uname
close("uname")
- # check ARGV for previous estimates
+ ## check ARGV for previous estimates
if (ARGC) {
ARGV[1] ? t_prev[1] = ARGV[1] : t_prev[1] = 0.0
ARGV[2] ? t_prev[2] = ARGV[2] : t_prev[2] = ck_time(uname)
@@ -177,12 +177,12 @@ BEGIN {
ARGV[6] ? t0_prev[2] = ARGV[6] : split(ck_boottime(uname), t0_prev)
}
- # check systime, check uptime, check systime again
+ ## check systime, check uptime, check systime again
t_meas[1] = ck_time(uname)
split(ck_uptime(), t_up_meas)
t_meas[2] = ck_time(uname)
- # convert to [val, unc] vector
+ ## convert to [val, unc] vector
t_meas[2] -= t_meas[1]
t_meas[1] += 0.5*t_meas[2]
if ( t_meas[2] == 0.0 ) {
@@ -191,44 +191,52 @@ BEGIN {
}
t_meas_str = sigfig(t_meas[1], t_meas[2])
- # estimate dt
+ ## estimate dt
dt[1] = t_meas[1] - t_prev[1]
dt[2] = t_meas[2] + t_prev[2]
- # predict uptime based on dt, t_up(new) = t_up(old) + dt
+ ## 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]
+
+ ## check for difference between dt and dt_up
t_up_est[2] += sqrt((t_up_est[1] - t_up_prev[1] - dt[1])^2.0)
t_up_prev[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]
+ ## alt. t_up prediction based on t0_prev
+ 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_up_prev[1]
+ dt_up_alt[2] = t_up_alt[2] + t_up_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])
+ ## additional error terms
+ 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)
- # 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)
+ ## merge alt. prediction
+ split(merge_meas(t_up_est[1], t_up_est[2], t_up_alt[1], t_up_alt[2]), t_up_est)
- # 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
+ ## predict boot time, t0
+ t0_est[1] = t_meas[1] - t_up_est[1]
+ t0_est[2] = t_meas[2] + t_up_est[2]
- # merge predicted and measured uptimes
+ ## 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_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)
- t0_prev[2] += sqrt((t0_est[1] - t0_prev[1])^2.0)
+ ## evaluate measured boot time, t0
+ t0_meas[1] = t_meas[1] - t_up_est[1]
+ t0_meas[2] = t_meas[2] + t_up_est[2]
+
+ ## additional error terms
+ t0_meas[2] += sqrt((t0_meas[1] - t0_est[1])^2.0)
+ t0_est[2] += sqrt((t0_meas[1] - t0_est[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)
+ ## merge previous and updated boot time, t0
+ split(merge_meas(t0_meas[1], t0_meas[2], t0_est[1], t0_est[2]), t0_est)
t0_est_str = sigfig(t0_est[1], t0_est[2])