branch: master
commit d56dd0378c5f8a582066c636599be1f297691142
Author: Mario Lang <ml...@blind.guru>
Commit: Mario Lang <ml...@blind.guru>

    Improve single precision floating point serialisation
    
    * packages/osc/osc.el: Update copyright years and author email.
    * (osc-insert-float32): Use `copysign' and `isnan'.
---
 packages/osc/osc.el | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/packages/osc/osc.el b/packages/osc/osc.el
index 9f92b17..316b532 100644
--- a/packages/osc/osc.el
+++ b/packages/osc/osc.el
@@ -1,8 +1,8 @@
 ;;; osc.el --- Open Sound Control protocol library
 
-;; Copyright (C) 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2014-2019  Free Software Foundation, Inc.
 
-;; Author: Mario Lang <ml...@delysid.org>
+;; Author: Mario Lang <ml...@blind.guru>
 ;; Version: 0.1
 ;; Keywords: comm, processes, multimedia
 
@@ -57,15 +57,13 @@
 (defun osc-insert-float32 (value)
   (let (s (e 0) f)
     (cond
-     ((string= (format "%f" value) (format "%f" -0.0))
-      (setq s 1 f 0))
-     ((string= (format "%f" value) (format "%f" 0.0))
-      (setq s 0 f 0))
+     ((= value 0.0)
+      (setq s (if (< (copysign 1.0 value) 0) 1 0) f 0))
      ((= value 1.0e+INF)
       (setq s 0 e 255 f (1- (expt 2 23))))
      ((= value -1.0e+INF)
       (setq s 1 e 255 f (1- (expt 2 23))))
-     ((string= (format "%f" value) (format "%f" 0.0e+NaN))
+     ((isnan value)
       (setq s 0 e 255 f 1))
      (t
       (setq s (if (>= value 0.0)

Reply via email to