a (/ a calc-number-radix)))
s)))
-(defconst math-binary-digits ["000" "001" "010" "011"
- "100" "101" "110" "111"])
(defun math-format-binary (a) ; [X S]
- (if (< a 8)
- (if (< a 0)
- (concat "-" (math-format-binary (- a)))
- (aref math-binary-digits a))
- (let ((s ""))
- (while (> a 7)
- (setq s (concat (aref math-binary-digits (% a 8)) s)
- a (/ a 8)))
- (concat (math-format-binary a) s))))
+ (let ((calc-number-radix 2))
+ (math-format-radix a)))
;;; Decompose into integer and fractional parts, without depending
;;; on calc-internal-prec.
(declare-function math-compose-expr "calccomp" (a prec &optional div))
(declare-function math-abs "calc-arith" (a))
(declare-function math-format-binary "calc-bin" (a))
-(declare-function math-format-octal "calc-bin" (a))
-(declare-function math-format-hex "calc-bin" (a))
(declare-function math-format-radix "calc-bin" (a))
(declare-function math-compute-max-digits "calc-bin" (w r))
(declare-function math-map-vec "calc-vec" (f a))
a))
(defun math--format-integer-fancy (a) ; [I]
- (let ((str (cond ((= calc-number-radix 10)
- (number-to-string a))
- ((= calc-number-radix 2)
- (math-format-binary a))
- ((= calc-number-radix 8)
- (math-format-octal a))
- ((= calc-number-radix 16)
- (math-format-hex a))
- (t (math-format-radix a)))))
+ (let ((str (if (= calc-number-radix 10)
+ (number-to-string a)
+ (math-format-radix a))))
(if calc-leading-zeros
(let* ((calc-internal-prec 6)
(digs (math-compute-max-digits (math-abs calc-word-size)
(should (equal (math-simplify '(calcFunc-cot (/ (var pi var-pi) 3)))
'(calcFunc-cot (/ (var pi var-pi) 3)))))))
+(ert-deftest calc-test-format-radix ()
+ "Test integer formatting (bug#36689)."
+ (let ((calc-group-digits nil))
+ (let ((calc-number-radix 10))
+ (should (equal (math-format-number 12345678901) "12345678901")))
+ (let ((calc-number-radix 2))
+ (should (equal (math-format-number 12345) "2#11000000111001")))
+ (let ((calc-number-radix 8))
+ (should (equal (math-format-number 12345678901) "8#133767016065")))
+ (let ((calc-number-radix 16))
+ (should (equal (math-format-number 12345678901) "16#2DFDC1C35")))
+ (let ((calc-number-radix 36))
+ (should (equal (math-format-number 12345678901) "36#5O6AQT1"))))
+ (let ((calc-group-digits t))
+ (let ((calc-number-radix 10))
+ (should (equal (math-format-number 12345678901) "12,345,678,901")))
+ (let ((calc-number-radix 2))
+ (should (equal (math-format-number 12345) "2#11,0000,0011,1001")))
+ (let ((calc-number-radix 8))
+ (should (equal (math-format-number 12345678901) "8#133,767,016,065")))
+ (let ((calc-number-radix 16))
+ (should (equal (math-format-number 12345678901) "16#2,DFDC,1C35")))
+ (let ((calc-number-radix 36))
+ (should (equal (math-format-number 12345678901) "36#5,O6A,QT1")))))
+
+
(provide 'calc-tests)
;;; calc-tests.el ends here