summaryrefslogtreecommitdiff
path: root/ckcptime.awk
diff options
context:
space:
mode:
Diffstat (limited to 'ckcptime.awk')
-rw-r--r--ckcptime.awk49
1 files changed, 16 insertions, 33 deletions
diff --git a/ckcptime.awk b/ckcptime.awk
index 4bc9539..df5e188 100644
--- a/ckcptime.awk
+++ b/ckcptime.awk
@@ -1,14 +1,10 @@
#!/usr/bin/env awk -f
-function log10(n) {
+function log10(n) { return log(n)/log(10.0) }
- return log(n)/log(10.0)
-}
-
-
-function merge_meas(val_est, unc_est, val_meas, unc_meas) {
+function merge_meas(est_val, est_unc, meas_val, meas_unc) {
# add (meas - est) delta to the measurement uncertainty
# note: this works when tracking a constant value,
@@ -16,17 +12,18 @@ function merge_meas(val_est, unc_est, val_meas, unc_meas) {
# unc_meas = sqrt(unc_meas^2.0 + (val_meas - val_est)^2.0)
# Kalman filtering compares variances
- unc_est = (0.5*unc_est)^2.0
- unc_meas = (0.5*unc_meas)^2.0
+ # convert uncertainties to square units
+ est_unc = (0.5*est_unc)^2.0
+ meas_unc = (0.5*meas_unc)^2.0
- G_K = (unc_est)/((unc_est) + (unc_meas))
- val_est = val_est + G_K*(val_meas - val_est)
- unc_est = (unc_est*unc_meas)/(unc_est + unc_meas)
+ K = (est_unc)/((est_unc) + (meas_unc))
+ est_val = est_val + K*(meas_val - est_val)
+ est_unc = (est_unc*meas_unc)/(est_unc + meas_unc)
- # convert unc_est back to same units as val_est
- unc_est = 2.0*sqrt(unc_est)
+ # convert est_unc back to original units
+ est_unc = 2.0*sqrt(est_unc)
- return sprintf(OFMT OFS OFMT ORS, val_est, unc_est)
+ return sprintf(OFMT OFS OFMT ORS, est_val, est_unc)
}
@@ -36,7 +33,8 @@ function sigfig(val, unc) {
ordmag_val = log10(val)
ordmag_unc = log10(unc)
- sigfig_unc = sprintf("%.f", 6)
+ #sigfig_unc = sprintf("%.f", 6)
+ sigfig_unc = sprintf("%.f", sqrt((ordmag_val - ordmag_unc)^2.0) + 1.0)
sigfig_val = sprintf("%.f", (ordmag_val - ordmag_unc + sigfig_unc))
ofmt_val = "%." sigfig_val "g"
@@ -47,24 +45,6 @@ function sigfig(val, unc) {
}
-function ck_boottime() {
-
- "sysctl kern.boottime" | getline t_kboot
- close("sysctl kern.boottime")
- sub("^.*\{", "", t_kboot)
- sub("\}.*$", "", t_kboot)
- split(t_kboot, t_kboot_arr, ",")
-
- for (i in t_kboot_arr) {
- sub("^.*= ", "", t_kboot_arr[i])
- }
-
- t_kboot = sprintf(t_kboot_arr[1] "." t_kboot_arr[2])
- return t_kboot
-
-}
-
-
function ck_cptime() {
t_sys_meas[1] = systime()
@@ -155,6 +135,9 @@ function ck_uptime(t0_est, t0_unc) {
BEGIN {
OFMT="%.21g"
+ pi = 4.0*atan2(1.0, 1.0)
+ c0 = 299792458 # m/sec
+
#print("_systime_", systime())
#print("_boottime_", ck_boottime())
printf("%s" ORS, ck_cptime())