Function: calcFunc-vunpack

calcFunc-vunpack is an autoloaded and byte-compiled function defined in calc-vec.el.gz.

Signature

(calcFunc-vunpack A &optional W)

Source Code

;; Defined in /usr/src/emacs/lisp/calc/calc-vec.el.gz
(defun calcFunc-vunpack (a &optional w)
  (or (math-num-integerp a) (math-reject-arg a 'integerp))
  (if w (setq a (math-clip a w)))
  (if (math-messy-integerp a) (setq a (math-trunc a)))
  (let* ((calc-number-radix 2)
         (calc-twos-complement-mode nil)
	 (neg (math-negp a))
	 (aa (if neg (math-sub -1 a) a))
	 (str (if (eq aa 0)
		  ""
		(math-format-binary aa)))
	 (zero (if neg ?1 ?0))
	 (one (if neg ?0 ?1))
	 (len (length str))
	 (vec (list 'vec))
	 (pos (1- len)) pos2)
    (while (>= pos 0)
      (if (eq (aref str pos) zero)
	  (setq pos (1- pos))
	(setq pos2 pos)
	(while (and (>= pos 0) (eq (aref str pos) one))
	  (setq pos (1- pos)))
	(setq vec (cons (if (= pos (1- pos2))
			    (- len pos2 1)
			  (list 'intv 3 (- len pos2 1) (- len pos 2)))
			vec))))
    (if neg
	(setq vec (cons (list 'intv 2 len '(var inf var-inf)) vec)))
    (math-clean-set (nreverse vec))))