/contrib/ntp/scripts/stats/loop.awk

https://bitbucket.org/freebsd/freebsd-head/ · AWK · 45 lines · 29 code · 1 blank · 15 comment · 6 complexity · 2343faaf3e5a49e0a1bb91d24e69a325 MD5 · raw file

  1. # awk program to scan loopstats files and report errors/statistics
  2. #
  3. # usage: awk -f loop.awk loopstats
  4. #
  5. # format of loopstats record
  6. # MJD sec time (s) freq (ppm) poll
  7. # 49235 3.943 0.000016 22.4716 6
  8. #
  9. # format of output dataset (time values in milliseconds, freq in ppm)
  10. # loopstats.19960706
  11. # loop 1180, 0+/-11.0, rms 2.3, freq -24.45+/-0.045, var 0.019
  12. #
  13. BEGIN {
  14. loop_tmax = loop_fmax = -1e9
  15. loop_tmin = loop_fmin = 1e9
  16. }
  17. #
  18. # scan all records in file
  19. #
  20. {
  21. if (NF >= 5) {
  22. loop_count++
  23. if ($3 > loop_tmax)
  24. loop_tmax = $3
  25. if ($3 < loop_tmin)
  26. loop_tmin = $3
  27. if ($4 > loop_fmax)
  28. loop_fmax = $4
  29. if ($4 < loop_fmin)
  30. loop_fmin = $4
  31. loop_time += $3
  32. loop_time_rms += $3 * $3
  33. loop_freq += $4
  34. loop_freq_rms += $4 * $4
  35. }
  36. } END {
  37. if (loop_count > 0) {
  38. loop_time /= loop_count
  39. loop_time_rms = sqrt(loop_time_rms / loop_count - loop_time * loop_time)
  40. loop_freq /= loop_count
  41. loop_freq_rms = sqrt(loop_freq_rms / loop_count - loop_freq * loop_freq)
  42. printf "loop %d, %.0f+/-%.1f, rms %.1f, freq %.2f+/-%0.3f, var %.3f\n", loop_count, (loop_tmax + loop_tmin) / 2 * 1e6, (loop_tmax - loop_tmin) / 2 * 1e6, loop_time_rms * 1e6, (loop_fmax + loop_fmin) / 2, (loop_fmax - loop_fmin) / 2, loop_freq_rms
  43. }
  44. }