Strange, it seems that it uses (-1)*h except for the second term, where it uses -(1*h): ?print(-1*h)$ ((MTIMES) ((MMINUS) 1) $H) ; -(1*h) ?print(-1*h-1*h)$ ((MPLUS) ((MTIMES) ((MMINUS) 1) $H) ((MMINUS) ((MTIMES) 1 $H))) ; -(1*h) ?print(-1*h-1*h-1*h)$ ((MPLUS) ((MTIMES) ((MMINUS) 1) $H) ((MMINUS) ((MTIMES) 1 $H)) ; -(1*h) ((MTIMES) ((MMINUS) 1) $H)) ?print(-1*h-1*h-1*h-1*h)$ ((MPLUS) ((MTIMES) ((MMINUS) 1) $H) ((MMINUS) ((MTIMES) 1 $H)) ; -(1*h) ((MTIMES) ((MMINUS) 1) $H) ((MTIMES) ((MMINUS) 1) $H))...
Thanks for explicitly showing us the settings and versions you're using. There are a couple of things here which look wrong: One of the disadvantages of the (...) approach to setting multiple options is that you don't see any errors. (assume_pos:true, ... rootsconmode=super, << this returns the equation rootsconmode=super, << where you presumably intended the assignment rootsconmode:super ...); (assume(n>2, m, constant), << the returned value of this is << [n > 2, meaningless, meaningless] << showing...
assume(n,integer) => [meaningless,meaningless] On Wed, Apr 29, 2026, 22:39 dan hayes via Maxima-bugs maxima-bugs@lists.sourceforge.net wrote: i also added assume(n,integer), declare(n,integer) at the beginning and it made no difference. Also there is the multivalue issue of n+1 different roots but it goes without saying the desired one is the principle value or for n even the only real root [bugs:#4726] https://sourceforge.net/p/maxima/bugs/4726/ solve doesn't really solve Status: open Group: None...
The form (-1)*h is a faithful rendition of the unsimplified internal form. It's not pretty, but it's not wrong. I'm curious, why did you write -1*hrather than -h? What version of Maxima/Lisp/WxMaxima are you running?
The body of a named or anonymous (lambda) function definition is never simplified.
Exactly. Is there any particular reason that . and sconcat aren't declared nary? In the case of ., it seems particularly important both because of dotident and dotassoc.
Kris, thanks for bringing this up. Here are some more edge cases with xreduce: There seem to be some nary functions which aren't declared nary, and therefore aren't called with zero arguments: sconcat() => "" xreduce('sconcat,[]) => error ... "."() => 1 xreduce(".",[]) => error The base case of "." depends on dotident: dotident: 'mydotident$ "."() => mydotident Fortunately, "." does the right thing if called as nary even with dotassoc:false: "."(a,b,c) => a.b.c dotassoc:false$ "."(a,b,c) => a.(b.c)...
I don't think it would be confusing to use ∧/∨ for both boolean values (true/false) and for numbers interpreted as bitstrings. Let's look at three cases: Operations on true/false Operations on numbers Operations on variables Mixed operations Operations on true/false I trust we agree that true ∧ false => false etc. are completely conventional uses of the ∧/∨ operators. Operations on numbers What are the possible meanings of 235 ∧ 719? In Lisp, everything that isn't nil counts as true, and and has...