summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwukong <wukong@longaeva>2026-05-09 14:14:18 -0700
committerwukong <wukong@longaeva>2026-05-09 14:14:18 -0700
commit2140aa909280dfa8506466aa20b2c2b8cbb377fe (patch)
tree3ab447e0139f5b25fdd150dc0eaebb45961967ef
parent6ff1fc477e92897177cb4cebdaa21fa41a41c0a4 (diff)
added diff2.awk to estimate numerical second diff;
removed commented out population covariance from cov.awk; added decimal points to pi estimate in em.awk;
Diffstat (limited to '')
-rw-r--r--cov.awk1
-rw-r--r--diff.awk1
-rw-r--r--diff2.awk97
-rw-r--r--em.awk2
4 files changed, 99 insertions, 2 deletions
diff --git a/cov.awk b/cov.awk
index 92e92a8..e69ebf5 100644
--- a/cov.awk
+++ b/cov.awk
@@ -36,7 +36,6 @@ NF > 0 {
meanx[x,y] += dx[x,y]/count[x,y]
meany[x,y] += dy[x,y]/count[x,y]
C[x,y] += dx[x,y]*dy[x,y]
- # cov_pop[x,y] = C[x,y]/count[x,y]
(count[x,y] > 1) ? cov_samp[x,y] = C[x,y]/(count[x,y] - 1) : cov_samp[x,y] = ""
}
}
diff --git a/diff.awk b/diff.awk
index 2b42a2d..1e6a882 100644
--- a/diff.awk
+++ b/diff.awk
@@ -2,6 +2,7 @@
### diff.awk
# print numerical diff along columns
+# dy[n] = y[n] - y[n-1]
BEGIN {
diff --git a/diff2.awk b/diff2.awk
new file mode 100644
index 0000000..6086254
--- /dev/null
+++ b/diff2.awk
@@ -0,0 +1,97 @@
+#!/usr/bin/awk -f
+
+### diff2.awk
+# print numerical second diff along columns
+# dy[n] = y[n] - y[n-1]
+# d2y[n] = dy[n] - dy[n-1]
+
+
+BEGIN {
+ OFS = FS
+ sign = "[+-]?"
+ decimal = "[0-9]+[.]?[0-9]*"
+ fraction = "[.][0-9]*"
+ exponent = "([Ee]" sign "[0-9]+)?"
+ number = "^" sign "(" decimal "|" fraction ")" exponent "$"
+}
+
+
+# column headers
+NR == 1 {
+ # orig data columns
+ for (n=1; n<=NF; n++) {
+ if ($n !~ number) {
+ header[n] = $n
+ dheader[n] = "d_" $n
+ d2header[n] = "d2_" $n
+ }
+ else {
+ header[n] = "col" n
+ dheader[n] = "d_col" n
+ d2header[n] = "d2_col" n
+ }
+ printf(header[n])
+ printf(OFS)
+ }
+
+ # new diff columns
+ for (n=1; n<=NF; n++) {
+ printf(dheader[n])
+ printf(OFS)
+ }
+
+ # new diff2 columns
+ for (n=1; n<=NF; n++) {
+ printf(d2header[n])
+ printf(n < NF ? OFS : ORS)
+ }
+}
+
+
+NF > 0 {
+ (NF > nf_max) ? nf_max = NF : nf_max = nf_max
+
+ # orig data columns
+ for (n=1; n<=nf_max; n++) {
+ if ($n == header[n] || $n == dheader[n])
+ continue
+ if ($n ~ number)
+ printf(OFMT, $n)
+ else
+ printf("")
+ printf(OFS)
+ }
+
+ # new diff columns
+ for (n=1; n<=nf_max; n++) {
+ if ($n == header[n] || $n == dheader[n])
+ continue
+ if ($n ~ number) {
+ data[n] = $n
+ if (data_prev[n] ~ number)
+ diff[n] = data[n] - data_prev[n]
+ else
+ diff[n] = ""
+ data_prev[n] = data[n]
+ }
+ printf(diff[n])
+ printf(OFS)
+ }
+
+ # new diff2 columns
+ for (n=1; n<=nf_max; n++) {
+ if ($n == header[n] || $n == d2header[n])
+ continue
+ if (diff[n] ~ number) {
+ #data[n] = $n
+ if (diff_prev[n] ~ number)
+ diff2[n] = diff[n] - diff_prev[n]
+ else
+ diff2[n] = ""
+ diff_prev[n] = diff[n]
+ }
+ printf(diff2[n])
+ printf(n < nf_max ? OFS : ORS)
+ }
+}
+
diff --git a/em.awk b/em.awk
index 2cc6a74..be84054 100644
--- a/em.awk
+++ b/em.awk
@@ -8,7 +8,7 @@ BEGIN {
ARGV[1] ? OFMT = "%." ARGV[1] "g" : OFMT = "%.12g"
# constants
- pi = 4.0*atan2(1,1) # rad
+ pi = 4.0*atan2(1.0,1.0) # rad
c0 = 299792458E0 # m/s, exact
mu0 = (4.0E-7)*pi # H/m = (T*m)/A = N/(A^2) = (kg*m)/(A*s)
epsilon0 = (mu0*c0^2)^-1 # F/m = C/(V*m) = (A^2*s^4)/(kg*m^3)