;ELC ;;; Compiled ;;; in Emacs version 27.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\207" [require calc-ext calc-macs] 2) (defalias 'calc-and #[(n) "\300\301`\"\207" [calc-do #[nil "\301\302\303\304\305\306\302!\205\307!C##\207" [n calc-enter-result 2 "and" append (calcFunc-and) calc-top-list-n prefix-numeric-value] 8]] 3 nil "P"]) (defalias 'calc-or #[(n) "\300\301`\"\207" [calc-do #[nil "\301\302\303\304\305\306\302!\205\307!C##\207" [n calc-enter-result 2 "or" append (calcFunc-or) calc-top-list-n prefix-numeric-value] 8]] 3 nil "P"]) (defalias 'calc-xor #[(n) "\300\301`\"\207" [calc-do #[nil "\301\302\303\304\305\306\302!\205\307!C##\207" [n calc-enter-result 2 "xor" append (calcFunc-xor) calc-top-list-n prefix-numeric-value] 8]] 3 nil "P"]) (defalias 'calc-diff #[(n) "\300\301`\"\207" [calc-do #[nil "\301\302\303\304\305\306\302!\205\307!C##\207" [n calc-enter-result 2 "diff" append (calcFunc-diff) calc-top-list-n prefix-numeric-value] 8]] 3 nil "P"]) (defalias 'calc-not #[(n) "\300\301`\"\207" [calc-do #[nil "\301\302\303\304\305\306\302!\205\307!C##\207" [n calc-enter-result 1 "not" append (calcFunc-not) calc-top-list-n prefix-numeric-value] 8]] 3 nil "P"]) (defalias 'calc-lshift-binary #[(n) "\300\301`\"\207" [calc-do #[nil "\302 \203 \303\202\n\304\305\306\307\310\311! \205\312 !C##)\207" [hyp n calc-is-hyperbolic 2 1 calc-enter-result "lsh" append (calcFunc-lsh) calc-top-list-n prefix-numeric-value] 8]] 3 nil "P"]) (defalias 'calc-rshift-binary #[(n) "\300\301`\"\207" [calc-do #[nil "\302 \203 \303\202\n\304\305\306\307\310\311! \205\312 !C##)\207" [hyp n calc-is-hyperbolic 2 1 calc-enter-result "rsh" append (calcFunc-rsh) calc-top-list-n prefix-numeric-value] 8]] 3 nil "P"]) (defalias 'calc-lshift-arith #[(n) "\300\301`\"\207" [calc-do #[nil "\302 \203 \303\202\n\304\305\306\307\310\311! \205\312 !C##)\207" [hyp n calc-is-hyperbolic 2 1 calc-enter-result "ash" append (calcFunc-ash) calc-top-list-n prefix-numeric-value] 8]] 3 nil "P"]) (defalias 'calc-rshift-arith #[(n) "\300\301`\"\207" [calc-do #[nil "\302 \203 \303\202\n\304\305\306\307\310\311! \205\312 !C##)\207" [hyp n calc-is-hyperbolic 2 1 calc-enter-result "rash" append (calcFunc-rash) calc-top-list-n prefix-numeric-value] 8]] 3 nil "P"]) (defalias 'calc-rotate-binary #[(n) "\300\301`\"\207" [calc-do #[nil "\302 \203 \303\202\n\304\305\306\307\310\311! \205\312 !C##)\207" [hyp n calc-is-hyperbolic 2 1 calc-enter-result "rot" append (calcFunc-rot) calc-top-list-n prefix-numeric-value] 8]] 3 nil "P"]) (defalias 'calc-clip #[(n) "\300\301`\"\207" [calc-do #[nil "\301\302\303\304\305\306\302!\205\307!C##\207" [n calc-enter-result 1 "clip" append (calcFunc-clip) calc-top-list-n prefix-numeric-value] 8]] 3 nil "P"]) (defalias 'calc-word-size #[(n) "\300\301!\207" [calc-do #[nil "\204 \305\306\307 \"!;\203-\310\232\203 \2020\311\312\"\203'\313!\2020\314\315!\2020\316!\211 U\204T\317!\320V\203H\321\301\n#\210\202T\321\322\323\317!!D\n#\210\323\317!!\323\317!S!\324 \210\325 \210\326W\203s\327\330[\"\207\327\331\"\207" [n calc-word-size calc-leading-zeros math-2-word-size math-half-2-word-size read-string format "Binary word size: (default %d) " "" string-match "\\`[-+]?[0-9]+\\'" string-to-number error "Expected an integer" prefix-numeric-value math-abs 100 calc-change-mode (calc-word-size calc-previous-modulo) math-power-of-2 calc-do-refresh calc-refresh-evaltos 0 message "Binary word size is %d bits (two's complement)" "Binary word size is %d bits"] 7]] 2 nil "P"]) (defalias 'calc-radix #[(n &optional arg) "\300\301!\207" [calc-do #[nil "\304Y\203#\305X\203#\306\302\303D \206\307 D\310#\210\311\302\n\"\210\202%\n \203.\312\313\"\207\312\314\"\207" [n arg calc-number-radix calc-twos-complement-mode 2 36 calc-change-mode calc-is-option t set-default message "Number radix is %d, two's complement mode is on." "Number radix is %d"] 4]] 2 nil "NDisplay radix (2-36): "]) (defalias 'calc-decimal-radix #[nil "\300\301!\207" [calc-radix 10] 2 nil nil]) (defalias 'calc-binary-radix #[(&optional arg) "\301\302\"\207" [arg calc-radix 2] 3 nil "P"]) (defalias 'calc-octal-radix #[(&optional arg) "\301\302\"\207" [arg calc-radix 8] 3 nil "P"]) (defalias 'calc-hex-radix #[(&optional arg) "\301\302\"\207" [arg calc-radix 16] 3 nil "P"]) (defalias 'calc-leading-zeros #[(n) "\300\301!\207" [calc-do #[nil "\304\305\306\211$\203\307\310\311\312\313\n! \") #\207\307\314!\207" [n calc-internal-prec calc-word-size calc-number-radix calc-change-mode calc-leading-zeros t message "Zero-padding integers to %d digits (assuming radix %d)" 6 math-compute-max-digits math-abs "Omitting leading zeros on integers"] 5]] 2 nil "P"]) (defvar math-power-of-2-cache (list 1 2 4 8 16 32 64 128 256 512 1024)) (defvar math-big-power-of-2-cache nil) (defalias 'math-power-of-2 #[(n) "\306!\2034\307X\2034 8\206R G\211S 8\nX\2031\310 \311\" C\244\nT\211\202 *\207\f\236\211\203A A\202Q\312\311\"  B\fB ))\207" [n math-power-of-2-cache i val math-big-power-of-2-cache found natnump 100 math-mul 2 math-ipow po2] 4]) (defalias 'math-integer-log2 #[(n) "\305\306\n\203<\n@\211\f:\203&\211:\205.\307AA\"\310U\266\202\2020\211:\206.W\266\202\203<\nA T\202\n\203J \f\232\205\207 \202\207\311 \312\"\211 C\244\f:\203m\211:\205u\307AA\"\310U\266\202\202w\211:\206uW\266\202\203\200 T\202J \f\232\205\207 +\207" [math-power-of-2-cache val p i n 0 nil math-compare-bignum -1 math-mul 2] 5]) (defalias 'calcFunc-and #[(a b &optional w) "\211:\205\211@\303=\205\3048\305Y\262\203\306 \n\307!#\207\203-\250\204-\310\311\"\207 \250\203?\n\250\203?\312\313 \n\"\"\207 \242\314=\204M\n\242\314=\203T\315\306 \n$\207 \211\250\206k\211:\205k\211@\303=\205k\3048\305Y\262\204u\310 \316\"\207\n\211\250\206\214\211:\205\214\211@\303=\205\214\3048\305Y\262\204\226\310\n\316\"\207\312\313\317 \"\317\n\"\"\"\207" [w a b float 2 0 calcFunc-and math-trunc math-reject-arg fixnump math-clip logand mod math-binary-modulo-args integerp math-binary-arg] 6]) (defalias 'math-binary-arg #[(a w) "\303!\204\n\304!\305W\203#\306\307\310 \203\304 !\202\n\"S\"\207\207" [a w calc-word-size Math-integerp math-trunc 0 logand ash 1] 6]) (defalias 'math-binary-modulo-args #[(f a b w) "\306 \242\300=\203/\307 8 A@\n\242\300=\2037\307\n8\232\203'\nA@\2027\310\n\311\"\210\2027\307\n8\nA@\211:\205I\211@\312=\205I\3078\313Y\262\203U\314!\202`\315!\204`\310\316\"\210\317!\211\203~\f\203y\f U\204\202\320\321!\210\202\202 \202\202\320\322!\210\323\n\203\217 \n\f#\202\223 \f\"\"*\207" [mod a b bits w f nil 2 math-reject-arg "*Inconsistent modulus" float 0 math-trunc Math-integerp integerp math-integer-log2 calc-record-why "*Warning: Modulus inconsistent with word size" "*Warning: Modulus is not a power of 2" math-make-mod] 6]) (defalias 'calcFunc-or #[(a b &optional w) "\211:\205\211@\303=\205\3048\305Y\262\203\306 \n\307!#\207\203-\250\204-\310\311\"\207 \250\203?\n\250\203?\312\313 \n\"\"\207 \242\314=\204M\n\242\314=\203T\315\306 \n$\207 \211\250\206k\211:\205k\211@\303=\205k\3048\305Y\262\204u\310 \316\"\207\n\211\250\206\214\211:\205\214\211@\303=\205\214\3048\305Y\262\204\226\310\n\316\"\207\312\313\317 \"\317\n\"\"\"\207" [w a b float 2 0 calcFunc-or math-trunc math-reject-arg fixnump math-clip logior mod math-binary-modulo-args integerp math-binary-arg] 6]) (defalias 'calcFunc-xor #[(a b &optional w) "\211:\205\211@\303=\205\3048\305Y\262\203\306 \n\307!#\207\203-\250\204-\310\311\"\207 \250\203?\n\250\203?\312\313 \n\"\"\207 \242\314=\204M\n\242\314=\203T\315\306 \n$\207 \211\250\206k\211:\205k\211@\303=\205k\3048\305Y\262\204u\310 \316\"\207\n\211\250\206\214\211:\205\214\211@\303=\205\214\3048\305Y\262\204\226\310\n\316\"\207\312\313\317 \"\317\n\"\"\"\207" [w a b float 2 0 calcFunc-xor math-trunc math-reject-arg fixnump math-clip logxor mod math-binary-modulo-args integerp math-binary-arg] 6]) (defalias 'calcFunc-diff #[(a b &optional w) "\211:\205\211@\303=\205\3048\305Y\262\203\306 \n\307!#\207\203-\250\204-\310\311\"\207 \250\203A\n\250\203A\312\313 \314\n!\"\"\207 \242\315=\204O\n\242\315=\203V\316\306 \n$\207 \211\250\206m\211:\205m\211@\303=\205m\3048\305Y\262\204w\310 \317\"\207\n\211\250\206\216\211:\205\216\211@\303=\205\216\3048\305Y\262\204\230\310\n\317\"\207\312\313\320 \"\314\320\n\"!\"\"\207" [w a b float 2 0 calcFunc-diff math-trunc math-reject-arg fixnump math-clip logand lognot mod math-binary-modulo-args integerp math-binary-arg] 7]) (defalias 'calcFunc-not #[(a &optional w) "\211:\205\211@\303=\205\3048\305Y\262\203\306 \307!\"\207 \242\310=\203,\311\306 \312$\207\203:\250\204:\313\314\"\207 \211\250\206Q\211:\205Q\211@\303=\205Q\3048\305Y\262\204[\313 \315\"\207\206b\n\211\305W\203p\316\306 [\"\"\207\316\317\320 \"!\"\207" [w a calc-word-size float 2 0 calcFunc-not math-trunc mod math-binary-modulo-args nil math-reject-arg fixnump integerp math-clip lognot math-binary-arg] 5]) (defalias 'calcFunc-lsh #[(a &optional n w) "\304! \203\304 !\202\305\242\306=\203\307\310 \n$\207\n\203(\304\n!\202) \211\250\2044\311\n\312\"\210\313!\204?\311\314\"\210\313 !\204J\311 \314\"\210\n\315W\203Z\316\310 \n[#\n\"\207\211\250\205c\211\315W\262\203m\316\n\" \n[\317\"\320U\266\202\204\210\n \317\"\320U\266\202\203\212\315\207 \315W\203\233\321\316\n\"\322 [!\"\207\316\323\322 !\"\n\"\207" [a n w calc-word-size math-trunc 1 mod math-binary-modulo-args calcFunc-lsh math-reject-arg fixnump Math-integerp integerp 0 math-clip math-compare -1 math-quotient math-power-of-2 math-mul] 6]) (defalias 'calcFunc-rsh #[(a &optional n w) "\303\304 \206\305!\n#\207" [a n w calcFunc-lsh math-neg 1] 4]) (defalias 'calcFunc-ash #[(a &optional n w) "\2031\211:\203)\211@\306>\203!\211A@\211\250\205\211\307W\266\202\202.\310!\262\202.\211\307W\262\2047\311 \n#\207\312 !\203E\312!\202F\313 \242\314=\203U\315\316 \n$\207\n\203_\312\n!\202` \211\250\204k\317\n\320\"\210\321 !\204v\317 \322\"\210\321!\204\201\317\322\"\210\n\307W\203\221\323\316 \n[#\n\"\207 \211\250\205\232\211\307W\262\203\244\323 \n\"\324\nS!\311 \n# :\203\310\211:\205\320\325AA\"\326U\266\202\202\322\211:\206\320W\266\202\203\331\f\202\313\nZ\327\"\326U\266\202\203\362\330\331 \332\"\326\"\202\324[!\330\311\330\326\"\n\\\n#\f\")*\207" [n a w calc-word-size sh two-to-sizem1 (frac float) 0 math-negp calcFunc-lsh math-trunc 1 mod math-binary-modulo-args calcFunc-ash math-reject-arg fixnump Math-integerp integerp math-clip math-power-of-2 math-compare-bignum -1 math-compare math-add math-mul 2 two-to-n] 6]) (defalias 'calcFunc-rash #[(a &optional n w) "\303\304 \206\305!\n#\207" [a n w calcFunc-ash math-neg 1] 4]) (defalias 'calcFunc-rot #[(a &optional n w) "\304! \203\304 !\202\305\242\306=\203\307\310 \n$\207\n\203(\304\n!\202) \211\250\2044\311\n\312\"\210\313!\204?\311\314\"\210\313 !\204J\311 \314\"\210\n\315W\203Z\316\310 \n[#\n\"\207\211\250\205c\211\315W\262\203m\316\n\" \211\250\205v\211\315W\262\204\241 \n:\203\224\211:\205\234\317AA\"\320U\266\202\202\236\211:\206\234W\266\202\204\252\310\321 \n\"\n#\207\322\323 \nZ\n#\323 \n#\"\207" [a n w calc-word-size math-trunc 1 mod math-binary-modulo-args calcFunc-rot math-reject-arg fixnump Math-integerp integerp 0 math-clip math-compare-bignum -1 math-mod math-add calcFunc-lsh] 7]) (defalias 'math-clip #[(a &optional w) "\211:\205\211@\303=\205\3048\305Y\262\203\306 \307!\"\207 \242\310=\203,\311\306 \312$\207\203:\250\204:\313\314\"\207 \211\250\206Q\211:\205Q\211@\303=\205Q\3048\305Y\262\204[\313 \315\"\207\206b\n\211\305W\203\241\306 [\"\211\316\317Z!:\203\212\211:\205\222\320AA\"\317U\266\202\202\224\211:\206\222W\266\202\203\231 \207\321 \316[!\"\207 \211:\203\306\211@\322>\203\276\211A@\211\250\205\271\211\305W\266\202\202\313\323!\262\202\313\211\305W\262\203\323\324 \"\207 \250\205\340\325 \326\327\"S\"\207" [w a calc-word-size float 2 0 math-clip math-trunc mod math-binary-modulo-args nil math-reject-arg fixnump integerp math-power-of-2 -1 math-compare-bignum math-sub (frac float) math-negp math-binary-arg logand ash 1] 6]) (defalias 'calcFunc-clip 'math-clip) (defvar math-max-digits-cache nil) (defalias 'math-compute-max-digits #[(w r) "\306_ \\\211 \236\211\203\fA\202)\307\310\311 \312!\"! \n B B **\207" [r w pair math-max-digits-cache res calc-command-flags 100000 nil math-ceiling math-div math-real-log2 digs] 6]) (defvar math-log2-cache (list '(2 . 1) '(4 . 2) '(8 . 3) '(10 float 332193 -5) '(16 . 4) '(32 . 5))) (defalias 'math-real-log2 #[(x) " \236\211\203 \nA\202\306\211\307\310\" B B +)\207" [x math-log2-cache res calc-symbolic-mode calc-display-working-message log nil calcFunc-log 2] 4]) (defconst math-radix-digits ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"]) (defalias 'math-format-radix-digit #[(a) " H\207" [math-radix-digits a] 2]) (put 'math-format-radix-digit 'byte-optimizer 'byte-compile-inline-expand) (defalias 'math-format-radix #[(a) " W\203\304W\203\305\306[!P\207\nH)\207\307\304V\2035 \246\nH) P \245\211\202 )\207" [a calc-number-radix math-radix-digits s 0 "-" math-format-radix ""] 4]) (defalias 'math-format-binary #[(a) "\302\303 !)\207" [calc-number-radix a 2 math-format-radix] 2]) (defalias 'math-float-parts #[(a need-frac) "\3058\306Y\203\307A@\3058\"\310\306E\207\311A@!\3058[ \203H\n Y\2030\306\nE\202S\312A@\313\314\n\"\"\211@\315\fA\n[\"\nE)\202S\307A@\3058\"\316\306E*\207" [a d n need-frac qr 2 0 math-scale-rounding (float 0 0) math-numdigs math-idivmod math-scale-int 1 math-make-float (float 0 0)] 6]) (defalias 'math-format-radix-float #[(a _prec) "@A@ \306\211\2110\307=\203\263\310 !1\31121\312V\"3\313\31438\3151\316\"]\\43@5\317\320\3213A@!\3221!\"!6\3236!\203Z\3235!\203Z \312W\204\260\306\211781\312V\203n\3246!\202o\325\211G1W\203\206\3261 GZ\327\" P\202\232 G1V\203\232\330 \331\"\3325\331\"5\3245!\f Q)8\203\254\333 !)\202\262\312- \204\34749 \312V\203\305 \202\325\331 \3159\3342A@!]!S\\]1\313\3151\316\"\\4\335:\322:!;\331<\322?\306@\3212!\2112\211:\203 \211@\336=\203\211A@\312=\262\202%\323!\262\202%\211\312=\262\203.\312:\202\272\337\3402\"\203W\3372=\"\204x<:=;\320<\314\"<\322\322>!?\3372?\"\203\247><?=\202x>:?;\202x\3432;\"2\317\3202\3221S!\"!A\306\21178\324A!+ G1V\203\346\330 \312\335#:T:0\336=\203W\344:\345 \312U\203\377\3159!S\2021B\331#\"\203W\344C:\"\203W:T\211D\312X\203+\346\f\326D[\327\" R\202PD GV\203B \326D GZ\327\"\fQ\202P\330 \312D#\f\330 D\"Q\306:)\202|0\347=\203i\350:\313\" G^\202j\312@\330 \312@T#\f\330 @T\"Q G \nSH\327=\203\216\nS\202:\203\237 \nSH\351=\203\237\nS\330 \312\n#8\203\256\333 !:\203\345\352\3068E\324\341:@\"!*FG\353>\204\322E\354V\203\335\355\356 EF$\202\343\355\357 F#).\n -\207" [calc-float-format calc-point-char pos str point figs nil fix math-abs math-float-parts 0 3 2 math-convert-radix-digits t math-round math-mul math-normalize math-radix-float-power math-zerop math-format-number "" make-string 48 substring 1 math-add math-group-float math-numdigs -1 float math-lessp-float (float 1 0) math-sub math-div2 math-div-float math-lessp + "0" eng math-mod 46 10 (math maple) 14 format "%s*%d.^%s" "%se%s" fmt afigs a fp calc-internal-prec int frac math-radix-explicit-format calc-group-digits prec explo vlo exphi vhi expmid vmid eadj sc calc-display-sci-high calc-display-sci-low dpos calc-number-radix estr calc-language] 7]) (defvar math-radix-digits-cache nil) (defalias 'math-convert-radix-digits #[(n &optional to-dec) " \nBB\306 \f\"A\2064\307\310\311\n!\312\" \313 \203&\314 \"\202+\310 \"!B\fB\211@A*)\207" [n to-dec calc-number-radix key math-radix-digits-cache calc-internal-prec assoc 6 math-div math-real-log2 (float 332193 -5) math-ceiling math-mul log] 5]) (defvar math-radix-float-cache-tag nil) (defalias 'math-radix-float-power #[(n) "\305=\203\306\207 \n@=\203 \nAX\204 B\307\310\311\f\"A\206X\nA\312!\203:\313\314\315\316!!\"\202P\317\320\315\321!!!\322!\203L\323\202O\324 !\")B\fB\211@A!\207" [n calc-number-radix math-radix-float-cache-tag calc-internal-prec math-radix-float-cache 0 (float 1 0) nil math-normalize assoc math-negp math-div-float (float 1 0) math-radix-float-power math-neg math-mul-float math-sqr-float math-div2 math-evenp (float 1 0) math-float] 7]) #@45 Format an integer in two's complement mode. (defalias 'math-format-twos-complement #[(a) "\306=\204\211\250\205\211\306V\262\203\307!\2021\211\250\205#\211\306W\262\2051\310 \"\307\n!)\311\312\313 !\" G\211W\203S\314Z\315\" P+\203]\316 !\317!\320 Q)\207" [a math-2-word-size newa num calc-internal-prec calc-word-size 0 math-format-radix math-add 6 math-compute-max-digits math-abs make-string 48 math-group-float number-to-string "##" calc-number-radix digs len calc-group-digits] 4 (#$ . 17466)]) (provide 'calc-bin)