Fix precision error in `db/ntp-to-time'

A curcial step in the conversion, namly the computation of the actual time from
the seconds since the epoch, had been conducted with too little precision.  Now
the precision is fixed to a high value throughout the whole computation, and the
tests succeed again.
Daniel Borchmann 3 years ago
parent b5ed51d8e8
commit f1932e7032
No known key found for this signature in database
GPG Key ID: 1C7071A75BB72D64

@ -15,6 +15,10 @@
(should (equal (db/ntp-to-time #xbd5927ee #xbc616000)
(should (equal (db/ntp-to-time #x00000000 #x0000000)
(should (equal (db/ntp-to-time #xd36968b7 #xe74172bf)
(should (equal (db/ntp-to-time #xe2a16f23 #x80270e76)
;;; db-utils-test.el ends here

@ -16,16 +16,12 @@
(require 'term)
(require 'nsm)
(require 'compile)
(require 'calc)
(require 'calc-forms)
(autoload 'async-start "async")
(autoload 'lispy-mode "lispy")
(autoload 'ldap-search "ldap")
(autoload 'calcFunc-unixtime "calc-forms")
(autoload 'calcFunc-year "calc-forms")
(autoload 'calcFunc-month "calc-forms")
(autoload 'calcFunc-day "calc-forms")
(autoload 'calcFunc-hour "calc-forms")
(autoload 'calcFunc-minute "calc-forms")
;;; Application Shortcuts
@ -198,7 +194,8 @@ FORMAT-STRING defaults to some ISO 8601-like format."
(string-to-number input-proper 16)))))
(list (read-hex "High (hex): ")
(read-hex "Low (hex): "))))
(let* ((unix-time (calcFunc-unixtime (calc-eval (format "%s - 2208988800 + (%s/4294967296)" high low)
(let* ((calc-internal-prec 30)
(unix-time (calcFunc-unixtime (calc-eval (format "%s - 2208988800 + (%s/4294967296)" high low)
;; we explicitly call `calcFunc-unixtime'
;; here to set the time zone to UTC
@ -216,8 +213,7 @@ FORMAT-STRING defaults to some ISO 8601-like format."
;; is what has been done in the test example we use in the
;; corresponding regression test …
(calc-eval '("trunc(second($), 9)" calc-internal-prec 30)
'num unix-time)))))
(calc-eval "trunc(second($), 9)" 'num unix-time)))))
(defun conditionally-enable-lispy ()
"Enable lispy-mode when in `eval-expression or in