From: Litvinov S. <sli...@gm...> - 2014-04-27 21:19:42
|
For some functions in src/rat3e.lisp the state of global variable ?genvar is modified and is used on the next call: (%i1) ?print(rat(a))$ ((MRAT SIMP ($A) (#:A16349)) (#:A16349 1 1) . 1) (%i2) ?print(?genvar)$ (#:A16349) (%i3) ?print(rat(42))$ ((MRAT SIMP NIL (#:A16349)) 42 . 1) I think it is so by design and is probably OK. But `letsimp' assumes that ?genvar and ?varlist are in consistent state. Note that ?varlist is modified by `meval*` (src/suprv1.lisp). The following example is OK because meval* is not called between `ratexpand' and `letsimp' (%i1) let(U,T); (%o1) U --> T (%i2) (ratexpand(a*b*c), print(?genvar), print(?varlist), letsimp(U/n)); (a16349, b16350, c16351) (a, b, c) T (%o2) - n This gives a wrong result (%i1) let(U,T)$ (%i2) ratexpand(a*b*c)$ (%i3) ?print(?genvar)$ (#:A16349 #:B16350 #:C16351) (%i4) ?print(?varlist)$ NIL (%i5) letsimp(U/n); (%o5) 1 (%i5) build_info(); (%o5) Maxima version: "branch_5_33_base_1_g4fcaa85" Maxima build date: "2014-04-04 00:58:37" Host type: "x86_64-unknown-linux-gnu" Lisp implementation type: "CLISP" Lisp implementation version: "2.49 (2010-07-07) (built 3577466571) (memory 3605554722)" |