You can subscribe to this list here.
2014 
_{Jan}

_{Feb}
(232) 
_{Mar}
(323) 
_{Apr}
(383) 
_{May}
(359) 
_{Jun}
(435) 
_{Jul}
(252) 
_{Aug}
(172) 
_{Sep}
(265) 
_{Oct}
(263) 
_{Nov}
(350) 
_{Dec}
(359) 

2015 
_{Jan}
(267) 
_{Feb}
(220) 
_{Mar}
(311) 
_{Apr}
(221) 
_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

From: Volker van Nek <volkervannek@gm...>  20150415 17:19:09

Am 14.04.2015 um 22:21 schrieb Andrei Zorine: > Dear Volker, > > at the moment I have no ready solution. A temporary solution to the > single/doublefloat format is to add the (setq > *readdefaultfloatformat* 'doublefloat) to > $HOME/.maxima/maximainit.lisp . Hi Andrei, I am not sure that I want to add this line to my init.lisp. As a developer I need common defaults for testing. Hopefully the SBCL defaults will change. Anyway, thanks for your instructions and ideas. By the way, I use SBCL 1.2.4 from Debian sid. So the bug you reported to sbclbugs seems to be quite old. All the best Volker > > The test error is due to the change in the behavior of expt function > in sbgmp: the original sbcl's expt function makes no check for the > highest power limit when a special control variable is nil. In this > case the original SBCL does compute the power of 1 by successive > multiplications which is probably stupid. The SBGMP package does the > power limit check first which doesn't make sence if the base is 1. So, > it looks like an inconsistiency in SBGMP which can be reported to > SBCL team. I wonder if somone from that team is reading this mailing > list. As a temporary solution I would add one extra test to the intexp > function in gmp.lisp in SBCL sources and build everything anew. > > I hope this helps. > Andrei Zorine > > 20150414 20:02 GMT+03:00 Volker van Nek <volkervannek@...>: >> Hi Andrei, >> >> unfortunately setting *readdefaultfloatformat* to 'doublefloat >> before dumping doesn't affect the build. So I had to set it after >> building. I see no happy ending at the moment. >> >> >> With GMP and *readdefaultfloatformat* set to 'doublefloat the >> testsuite gives one single error: >> >> Running tests in rtest4: >> ********************** Problem 86 *************** >> Input: >> is(errcatch(rat(x^2^128)) = []) >> Result: >> true >> This differed from the expected result: >> false >> >> Tracing $rat and friends shows that the error directly comes from SBCLGMP: >> >> (%i12) rat(x^2^128); >> 0: (EXPT 2 128) >> 0: EXPT returned 340282366920938463463374607431768211456 >> 0: (PEXPT (#:X944 1 1) 340282366920938463463374607431768211456) >> 1: (PEXPT 1 340282366920938463463374607431768211456) >> 2: (CEXPT 1 340282366920938463463374607431768211456) >> 3: (EXPT 1 340282366920938463463374607431768211456) >> Maxima encountered a Lisp error: >> The value of SBGMP::POWER is 340282366920938463463374607431768211456, >> which is not of type (INTEGER 536870911 536870911). >> >> Mmmmh??? >> >> Volker >> > >  > BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live exercises > http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > _______________________________________________ > Maximadiscuss mailing list > Maximadiscuss@... > https://lists.sourceforge.net/lists/listinfo/maximadiscuss > 
From: Stavros Macrakis (Σταῦρος Μακράκης) <macrakis@al...>  20150415 16:13:58

Interesting experiment. Even more interesting might be doing arithmetic *between* expressions. That's where I'd expect some speedup from preserving the varlist, at least if the same variables are involved. On Tue, Apr 14, 2015 at 4:44 PM, David Scherfgen <d.scherfgen@... > wrote: > Hi everyone, > > I have written a small test program and got some interesting results. > > What the program does is generate a number of random expressions > (compositions of integers, a variable x, +, *, ^, log and trigonometric > functions) and measure the time it takes to apply fullratsimp, ratexpand > and radcan to all these expressions. Two variants are compared: Variant 2 > clears ?genvar and ?varlist after each call, while variant 1 doesn't. The > results are also saved for comparison afterwards. > > Now the interesting result, which is exactly what I noticed in my larger > program, too: Variant 2 is about 5 to 10 times FASTER than variant 1. But > only if ratexpand is involved. If it's left out, variant 2 is slightly > slower than variant 1. For some expressions, the results differ, but so far > I found them to be equivalent, differing only in the ordering of terms. > > So, is there something wrong with ratexpand? Is it possible that it > creates a lot of "mess" that slows down everything? > > I attached the program to this mail so that you can try it yourself. > Please note that sometimes an expression might make either ratsimp, > ratexpand or radcan crash or loop forever, so in that case just try again, > and you will get different random expressions. This might also be a good > way to identify more bugs in Maxima. :) > > Please excuse my nonfunctional programming style, which is probably > painful for you Lisp programmers. I grew up with C++. > > Best regards, > David > > 20150414 18:52 GMT+02:00 Richard Fateman <fateman@...>: > >> On 4/14/2015 9:41 AM, Stavros Macrakis (Σταῦρος Μακράκης) wrote: >> >> On the other thread, I suggested using ratsimp, but I'd forgotten that >> ratsimp in fact was having problems after a ratexpand. >> >> Robert, you said: >> >> The problem, as you guessed, is that ratexpand leaves some garbage behind, >> namely one or the other of the special (global) variables VAR and/or >> VARLIST. It's possible that these are handled or mishandled in a similar >> way in the other examples you gave. However, in a sense we are getting >> the intended effect of these specials  one function is causing an >> effect on another. I'd like to get some guidance from the old timers (the >> really OLD old timers; I'm a n00b, I've been around for hardly more than >> a decade) on the intended use of VAR and VARLIST before I commit this as >> a bug fix. >> >> I took a look at varlist after ratexpand in a block, and it looks >> correct, not "garbage": >> >> >> (((MEXPT) ((MPLUS SIMP) 1 ((MEXPT SIMP) $X 1)) ((RAT) 1 2)) >> >> $X) >> >> >> >> >> But it's interesting that clearing varlist and genvar fixes the >> problem. >> >> The intent of having varlist/genvar as globals is that when the CRE >> package (rat and company) computes with expressions, it first has to >> convert them to have the same variables in the same order. Within a >> calculation, you probably want to use the same variable list to avoid >> constant conversions. So I guess that binding varlist/genvar to nil will at >> worst make computations slower  see example below. >> >> In more detail: In CRE form, rat(x^2+y,x,y) is a polynomial in x >> whose coefficients are polynomials in y; but rat(x^2+y,y,x) is a >> polynomial in y whose coefficients are polynomials in x. To operate on the >> two of them (add, multiply, etc.), they need to be converted to polynomials >> in the same variables. >> >> RJF, please correct me if I've gotten something wrong here. >> >> s >> >> >> This is exactly right. There is a cost in emptying the genvar list  >> new gensyms are constructed for the >> internal names. If you keep on doing this without ever >> garbagecollecting these symbols, you might >> have problems. The initial implementation tried to reuse the gensyms, >> and also tried to make the >> comparison of ordering  which gensym was more of a "main variable" >> than others by a clever scheme >> invented by William A. Martin. Generate a bunch of symbols. They can >> be sorted by their addresses >> in memory [this is NOT an operation supported by Lisp, but is easily >> done in certain implementations]. >> This becomes genvar. >> Then you can easily test in polynomial arithmetic which variable/gensym >> is "more main" by one machine instruction or so. >> >> This is the explanation for the function name pointergp, (for those >> reading the source code). This idea was >> abandoned quite some time ago for various reasons including portability >> and bugginess when other >> pieces were layered on top of the rational function package. (Like >> algebraic:true, I suspect). >> So pointergp doesn't compare pointers any more. >> >> RJF >> >> >> >> >> >>  >> BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT >> Develop your own process in accordance with the BPMN 2 standard >> Learn Process modeling best practices with Bonita BPM through live >> exercises >> http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual >> event?utm_ >> source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF >> _______________________________________________ >> Maximadiscuss mailing list >> Maximadiscuss@... >> https://lists.sourceforge.net/lists/listinfo/maximadiscuss >> >> > > >  > BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live > exercises > http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual > event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > _______________________________________________ > Maximadiscuss mailing list > Maximadiscuss@... > https://lists.sourceforge.net/lists/listinfo/maximadiscuss > > 
From: Stavros Macrakis (Σταῦρος Μακράκης) <macrakis@al...>  20150415 16:05:00

(list moderator said my post was too long  so I'm resending without previous posts) Anyone interested in working on solve should certainly study Barton Willis's to_poly_solve package. It is especially strong in solving equations with trig functions, absolute values, roots, etc. It is careful to return only valid roots (using conditions on parameters), and can return families of solutions. For example: load(to_poly_solve)$ ratsimp(solve(sqrt(sin(x)+1/2)=abs(cos(x)),x)) => %union( [x = 2*%pi*%z27 + atan((sqrt(2)*sqrt(3)sqrt(2))/(2*3^(1/4)))], [x = 2*%pi*%z29  atan((sqrt(2)*sqrt(3)sqrt(2))/(2*3^(1/4))) + %pi ] ) %solve(sqrt(x)=xa,x) => %union( %if( %and(%pi/2 < parg((sqrt(4*a+1)1)/2), parg((sqrt(4*a+1)1)/2) <= %pi/2 ), [x = (sqrt(4*a+1)2*a1)/2], %union()), [x = (sqrt(4*a+1)+2*a+1)/2] ) 
From: Stavros Macrakis (Σταῦρος Μακράκης) <macrakis@al...>  20150415 16:02:32

From: Richard Fateman <fateman@be...>  20150415 15:16:21

There are several approaches to writing a "solve" program. But first recognized that the word "solve" is so general that such a program could be the key to anything. e.g. solve differential equations, algebra word problems, optimization of financial investments, chemical equations, legal conundrums, whatever. The original singleequation solve in maxima is directed toward polynomial equations, with a dusting of inverse transformations that allow some other equations to be solved by inversion of sin to asin etc. What should it do? What approaches are there? 1. In the processing of an equation (or equations), say solve(E1(x),x) undertake only those transformations which are always legal, and return a solution or set of solutions x=E2, where E2 is free of x, but may have additional parameters (e.g. n*%pi*%i, for integer n). This solution should be (a) complete (b) correct and (c) as compact as possible, and not including extraneous parameters. If it is not possible to do so return some reduced expression. Macsyma/Maxima's original solve program does not provide additional parameters. Note that it could be (has been) improved by poly_solve or some such. 2. Use heuristics that might find solutions but also find extraneous results. The simplest of these is probably "square both sides". Return the answer, perhaps with a caution to check results. 3. Same as 2, but automatically seek to check results. Unfortunately this doesn't work so well because the system may not be able to do this effectively. Too hard. So the simple answer to the question below is that it is not hard to change the solve program to use heuristics, but the parts of the Maxima system that rely on solve producing actual solutions might then exhibit bugs. If you want to write another program, say heuristic_solve() that does what you want to do, that could use the existing solve. RJF On 4/14/2015 5:11 PM, Mark&Dorothy Marinan wrote: > An example is below. One can solve for n by taking the log of both > sides of %o19, getting n = log(RHS) / log((r+1)/(i+1)). Took a while > to appreciate that %o16 was not the best that one could do. > > Would this be doable by Maxima, but consciously not done because...? > Or is this very difficult to do by computer even though reasonably > straightforward by hand? > > Thanks! > > /* [wxMaxima: input start ] */ > E*(1+i)^(n1)/WR = S* ((1 + r)^n(1 + i)^n) / (ri) + A * (1+r)^n; > /* [wxMaxima: input end ] */ > /* [wxMaxima: input start ] */ > solve(%,n); > /* [wxMaxima: input end ] */ > /* [wxMaxima: input start ] */ > ratsimp(%); > /* [wxMaxima: input end ] */ > /* [wxMaxima: input start ] */ > %/(1+i)^n; > /* [wxMaxima: input end ] */ > /* [wxMaxima: input start ] */ > ratsimp(%); > /* [wxMaxima: input end ] */ > > Inline image 1 > > On Mon, Apr 13, 2015 at 1:52 PM, Robert Dodier > <robert.dodier@... <mailto:robert.dodier@...>> wrote: > > On 20150412, Mark&Dorothy Marinan <mdmarinan@... > <mailto:mdmarinan@...>> wrote: > > > I'm cognizant of "everything is easy if someone else is being > asked to do > > it," and admittedly don't know how large a task this would be: > what would > > it take for Maxima to return n = log(c) / log(a/b) when asked to > solve > > a^n/b^n = c for n (even if it also gives a warning about some > solutions > > being lost)? > > Unfortunately, solving equations is one of Maxima's weaker areas. My > advice is to post the equation which you are actually trying to solve > and we can try to suggest some combination of insight & builtin > functions. Sorry I can't be more helpful. > > best, > > Robert Dodier > > >  > BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live > exercises > http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual > event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > _______________________________________________ > Maximadiscuss mailing list > Maximadiscuss@... > <mailto:Maximadiscuss@...> > https://lists.sourceforge.net/lists/listinfo/maximadiscuss > > > > >  > BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live exercises > http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > > > _______________________________________________ > Maximadiscuss mailing list > Maximadiscuss@... > https://lists.sourceforge.net/lists/listinfo/maximadiscuss 
From: Mark&Dorothy Marinan <mdmarinan@gm...>  20150415 00:11:37

From: David Scherfgen <d.scherfgen@go...>  20150414 20:44:16

From: Andrei Zorine <zoav1602@gm...>  20150414 20:35:08

Dear SBCL Maintainers, In SBCL 1.2.8, a change in behavior of expt function was detected when sbgmp is loaded and installgmpfuns did its job: (expt 1 (expt 2 128)) now reports an error because the exponent is too large. In the original version (sbkernel::intexp) with *intexpmaximumexponent* set to nil returned correct value of 1 after performing lots of multiplications. Possible fix: either add a trivial check that base = 1 first in both functions, or make sbgmp:intexp do its check on power only when *intexpmaximumexponent* is nonnil. Of course, other solutions are welcomed. Thanks, Andrei Zorine 
From: Andrei Zorine <zoav1602@gm...>  20150414 20:21:22

Dear Volker, at the moment I have no ready solution. A temporary solution to the single/doublefloat format is to add the (setq *readdefaultfloatformat* 'doublefloat) to $HOME/.maxima/maximainit.lisp . The test error is due to the change in the behavior of expt function in sbgmp: the original sbcl's expt function makes no check for the highest power limit when a special control variable is nil. In this case the original SBCL does compute the power of 1 by successive multiplications which is probably stupid. The SBGMP package does the power limit check first which doesn't make sence if the base is 1. So, it looks like an inconsistiency in SBGMP which can be reported to SBCL team. I wonder if somone from that team is reading this mailing list. As a temporary solution I would add one extra test to the intexp function in gmp.lisp in SBCL sources and build everything anew. I hope this helps. Andrei Zorine 20150414 20:02 GMT+03:00 Volker van Nek <volkervannek@...>: > Hi Andrei, > > unfortunately setting *readdefaultfloatformat* to 'doublefloat > before dumping doesn't affect the build. So I had to set it after > building. I see no happy ending at the moment. > > > With GMP and *readdefaultfloatformat* set to 'doublefloat the > testsuite gives one single error: > > Running tests in rtest4: > ********************** Problem 86 *************** > Input: > is(errcatch(rat(x^2^128)) = []) > Result: > true > This differed from the expected result: > false > > Tracing $rat and friends shows that the error directly comes from SBCLGMP: > > (%i12) rat(x^2^128); > 0: (EXPT 2 128) > 0: EXPT returned 340282366920938463463374607431768211456 > 0: (PEXPT (#:X944 1 1) 340282366920938463463374607431768211456) > 1: (PEXPT 1 340282366920938463463374607431768211456) > 2: (CEXPT 1 340282366920938463463374607431768211456) > 3: (EXPT 1 340282366920938463463374607431768211456) > Maxima encountered a Lisp error: > The value of SBGMP::POWER is 340282366920938463463374607431768211456, > which is not of type (INTEGER 536870911 536870911). > > Mmmmh??? > > Volker > 
From: Volker van Nek <volkervannek@gm...>  20150414 17:02:18

Hi Andrei, unfortunately setting *readdefaultfloatformat* to 'doublefloat before dumping doesn't affect the build. So I had to set it after building. I see no happy ending at the moment. With GMP and *readdefaultfloatformat* set to 'doublefloat the testsuite gives one single error: Running tests in rtest4: ********************** Problem 86 *************** Input: is(errcatch(rat(x^2^128)) = []) Result: true This differed from the expected result: false Tracing $rat and friends shows that the error directly comes from SBCLGMP: (%i12) rat(x^2^128); 0: (EXPT 2 128) 0: EXPT returned 340282366920938463463374607431768211456 0: (PEXPT (#:X944 1 1) 340282366920938463463374607431768211456) 1: (PEXPT 1 340282366920938463463374607431768211456) 2: (CEXPT 1 340282366920938463463374607431768211456) 3: (EXPT 1 340282366920938463463374607431768211456) Maxima encountered a Lisp error: The value of SBGMP::POWER is 340282366920938463463374607431768211456, which is not of type (INTEGER 536870911 536870911). Mmmmh??? Volker Am 12.04.2015 um 18:10 schrieb Andrei Zorine: > Hi, Volker! > > To run testsuite, do the following: > 1) run maxima with 'sh maxima' from src/dir > 2) run ' :lisp (setq *readdefaultfloatformat* 'doublefloat) ' as %i1 > 3) run testsuite with run_testsuite(); > These steps worked for me. Probably you can setq before dumping a > fresh maxima image, I have no time to test that right now. > >  > Andrei Zorine > > 20150412 15:58 GMT+03:00 Volker van Nek <volkervannek@...>: >> Andrei, >> >> I build SBCL+GMP+Maxima with the help of your instructions. I run the >> testsuite and got tons of errors. A typical example is the following. >> >> >> file rtest1, lines 33/34: >> ev(g(2*y+z,0.5),y:7); >> 3*(z+14)+1.22984884706593$ >> >> when running the testsuite: >> Input: >> ev(g(2 y + z,  0.5), y : 7) >> >> Result: >> 3 (z + 14) + 1.22984884706593 < computed >> >> This differed from the expected result: >> 3 (z + 14) + 1.2298489 < read from file >> >> >> That tells me that SBCL+GMP is reading 1.22984884706593 as a >> singlefloat by default. SBCL without GMP seem to read doublefloats and >> runs the testsuite without any unexpected errors. >> >> Can you help? >> >> Thanks in advance >> Volker >> >> >> Am 11.04.2015 um 19:29 schrieb Andrei Zorine: >>> Dear Volker, >>> There is a file src/INSTALL.lisp in the maxim source tree which describes the process >>> of loading maxima's sources into a running lisp process (I used it to load maxima >>> after hooking in the sbgmp extension) and dumping the resulting core. So, repeating >>> the steps from my previous post I should execute the (maximadump) command. >>> Make sure to do that in an sbcl process running from shell and not in a slime session. >>> Then you get the desired maxima image in buinarysbcl/maxima.core . At least, you >>> can use if you run 'sh maxima' in src/ directory. Maybe you can copy and paste the >>> core file to the place where wxmaxima looks for it. >>> >>> Maybe somebody from the maxima development team will consider adding another >>> building option in configure script to include sbgmp into the buildont process? >>> >>> Best wishes, >>> Andrei Zorine >>> >>> >>> В письме от 11 апреля 2015 18:19:53 пользователь Volker van Nek написал: >>>> Hi Andrei, >>>> >>>> thanks for showing this. In an example it saved me 40 from 185 seconds. >>>> Great! >>>> >>>> But normally I run Maxima within wxMaxima (like most users will do) and >>>> I would like to have GMP support by default. Is there a way to compile >>>> Maxima with SBCL + GMP? Or to compile SBCL with GMP? >>>> >>>> Thanks and greetings >>>> Volker van Nek >>>> >>>> Am 11.04.2015 um 16:42 schrieb Andrei Zorine: >>>>> Hello, gentelmen! >>>>> As you already know, SBCL has GMP support since recently. Volker could >>>>> test his package with gmp like this: run sbcl, turn of the gmp >>>>> support, then load maxima from sources, then have fun. I hope sbcl + >>>>> sbgmp + maxima can be comparable with gcl + maxima. >>>>> Here's an example session (in slime): >>>>> >>>>> ; SLIME 20150219 >>>>> CLUSER> (require :sbgmp) >>>>> ("SBGMP") >>>>> CLUSER> (sbgmp:installgmpfuns) >>>>> ; No value >>>>> CLUSER> (load "maximabuild.lisp") >>>>> [lots of messages] >>>>> T >>>>> CLUSER> (maximaload) >>>>> [ more messages ] >>>>> CLUSER> (cluser::run) >>>>> Maxima 5.35.1 http://maxima.sourceforge.net >>>>> using Lisp SBCL 1.2.8 >>>>> Distributed under the GNU Public License. See the file COPYING. >>>>> Dedicated to the memory of William Schelter. >>>>> The function bug_report() provides bug reporting information. >>>>> (%i1) showtime:all$ >>>>> Evaluation took 0.0000 seconds (0.0000 elapsed) using 0 bytes. >>>>> (%i2) factlim:1$ >>>>> Evaluation took 0.0000 seconds (0.0000 elapsed) using 0 bytes. >>>>> (%i3) x: 30000!$ >>>>> Evaluation took 0.0050 seconds (0.0080 elapsed) using 774.078 KB. >>>>> (%i4) :lisp (sbgmp:uninstallgmpfuns) >>>>> >>>>> (%i4) x: 30000!$ >>>>> Evaluation took 0.0470 seconds (0.0480 elapsed) using 782.969 KB. >>>>> (%i5) x: 40000!$ >>>>> Evaluation took 0.0770 seconds (0.0780 elapsed) using 1.234 MB. >>>>> (%i6) :lisp (sbgmp:installgmpfuns) >>>>> >>>>> (%i6) x: 40000!$ >>>>> Evaluation took 0.0100 seconds (0.0100 elapsed) using 1.228 MB. >>>>> >>>>> Happy Cosmonautics Day! >>>>> >>>>> Andrei Zorine >>>>> >>>>> 20150411 2:12 GMT+03:00 Kris Katterjohn <katterjohn@...>: >>>>>> On 04/10/2015 04:20 PM, Robert Dodier wrote: >>>>>>> Hi Volker, >>>>>>> >>>>>>> I've taken the liberty of forwarding your message to the >>>>>>> mailing list. I'm inclined to say go ahead. Does anyone >>>>>>> else have an opinion? >>>>>> >>>>>> Here are some quick numbers (based on du h). A fresh clone of >>>>>> branch5_36 is about 130M (the .git directory is about 61M, so I assume >>>>>> the source from the release tarball is smaller). The doc directory >>>>>> alone is about 29M. Everything gets bigger when Maxima is built. >>>>>> >>>>>> As it stands, I don't think another 0.5M would hurt (especially since >>>>>> it's for something useful). >>>>>> >>>>>> That being said, I think having a smaller repository would be better if >>>>>> possible. I'm not particularly inconvenienced by its current size, but >>>>>> if we can remove unused things then why not? >>>>>> >>>>>> For example, the archive directory is about 3M. Is that used for >>>>>> anything? (I'm guessing not, given its name.) If we don't actually use >>>>>> it but we want to keep its contents around, maybe we could just create a >>>>>> new repo for it (i.e., have /archive like we have /code and /website >>>>>> now). >>>>>> >>>>>> That's just a halfbaked idea for possible consideration. I haven't >>>>>> looked into any details on what we could (re)move (if anything). Even >>>>>> if we removed some things, I suppose /code would still be big so it may >>>>>> not be worth the trouble. >>>>>> >>>>>> Cheers, >>>>>> Kris Katterjohn >>>>>> >>>>>>> Aside from that, I wonder if there's a way that we could >>>>>>> arrange for packages to be downloaded and installed >>>>>>> on a user's system separately from Maxima itself. >>>>>>> I think R and Python have a way to install packages, >>>>>>> maybe we could adapt their approach? >>>>>>> >>>>>>> best, >>>>>>> >>>>>>> Robert Dodier >>>>>>> >>>>>>> >>>>>>>  >>>>>>> BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT >>>>>>> Develop your own process in accordance with the BPMN 2 standard >>>>>>> Learn Process modeling best practices with Bonita BPM through live exercises >>>>>>> http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual event?utm_ >>>>>>> source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Maximadiscuss mailing list >>>>>>> Maximadiscuss@... >>>>>>> https://lists.sourceforge.net/lists/listinfo/maximadiscuss >> >> >>  >> BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT >> Develop your own process in accordance with the BPMN 2 standard >> Learn Process modeling best practices with Bonita BPM through live exercises >> http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual event?utm_ >> source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF >> _______________________________________________ >> Maximadiscuss mailing list >> Maximadiscuss@... >> https://lists.sourceforge.net/lists/listinfo/maximadiscuss > >  > BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live exercises > http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > _______________________________________________ > Maximadiscuss mailing list > Maximadiscuss@... > https://lists.sourceforge.net/lists/listinfo/maximadiscuss > 
From: Richard Fateman <fateman@be...>  20150414 16:52:23

On 4/14/2015 9:41 AM, Stavros Macrakis (Σταῦρος Μακράκης) wrote: > On the other thread, I suggested using ratsimp, but I'd forgotten that > ratsimp in fact was having problems after a ratexpand. > > Robert, you said: > > The problem, as you guessed, is that ratexpand leaves some garbage > behind, namely one or the other of the special (global) variables > VAR and/or VARLIST. It's possible that these are handled or > mishandled in a similar way in the other examples you gave. > However, in a sense we are getting the intended effect of these > specials  one function is causing an effect on another. I'd like > to get some guidance from the old timers (the really OLD old > timers; I'm a n00b, I've been around for hardly more than a > decade) on the intended use of VAR and VARLIST before I commit > this as a bug fix. > > I took a look at varlist after ratexpand in a block, and it looks > correct, not "garbage": > > > (((MEXPT) ((MPLUS SIMP) 1 ((MEXPT SIMP) $X 1)) ((RAT) 1 2)) > > $X) > > > > > But it's interesting that clearing varlist and genvar fixes the problem. > > The intent of having varlist/genvar as globals is that when the CRE > package (rat and company) computes with expressions, it first has to > convert them to have the same variables in the same order. Within a > calculation, you probably want to use the same variable list to avoid > constant conversions. So I guess that binding varlist/genvar to nil > will at worst make computations slower  see example below. > > In more detail: In CRE form, rat(x^2+y,x,y) is a polynomial in x > whose coefficients are polynomials in y; but rat(x^2+y,y,x) is a > polynomial in y whose coefficients are polynomials in x. To operate on > the two of them (add, multiply, etc.), they need to be converted to > polynomials in the same variables. > > RJF, please correct me if I've gotten something wrong here. > > s > > This is exactly right. There is a cost in emptying the genvar list  new gensyms are constructed for the internal names. If you keep on doing this without ever garbagecollecting these symbols, you might have problems. The initial implementation tried to reuse the gensyms, and also tried to make the comparison of ordering  which gensym was more of a "main variable" than others by a clever scheme invented by William A. Martin. Generate a bunch of symbols. They can be sorted by their addresses in memory [this is NOT an operation supported by Lisp, but is easily done in certain implementations]. This becomes genvar. Then you can easily test in polynomial arithmetic which variable/gensym is "more main" by one machine instruction or so. This is the explanation for the function name pointergp, (for those reading the source code). This idea was abandoned quite some time ago for various reasons including portability and bugginess when other pieces were layered on top of the rational function package. (Like algebraic:true, I suspect). So pointergp doesn't compare pointers any more. RJF 
From: Stavros Macrakis (Σταῦρος Μακράκης) <macrakis@al...>  20150414 16:42:02

On the other thread, I suggested using ratsimp, but I'd forgotten that ratsimp in fact was having problems after a ratexpand. Robert, you said: The problem, as you guessed, is that ratexpand leaves some garbage behind, namely one or the other of the special (global) variables VAR and/or VARLIST. It's possible that these are handled or mishandled in a similar way in the other examples you gave. However, in a sense we are getting the intended effect of these specials  one function is causing an effect on another. I'd like to get some guidance from the old timers (the really OLD old timers; I'm a n00b, I've been around for hardly more than a decade) on the intended use of VAR and VARLIST before I commit this as a bug fix. I took a look at varlist after ratexpand in a block, and it looks correct, not "garbage": (((MEXPT) ((MPLUS SIMP) 1 ((MEXPT SIMP) $X 1)) ((RAT) 1 2)) $X) But it's interesting that clearing varlist and genvar fixes the problem. The intent of having varlist/genvar as globals is that when the CRE package (rat and company) computes with expressions, it first has to convert them to have the same variables in the same order. Within a calculation, you probably want to use the same variable list to avoid constant conversions. So I guess that binding varlist/genvar to nil will at worst make computations slower  see example below. In more detail: In CRE form, rat(x^2+y,x,y) is a polynomial in x whose coefficients are polynomials in y; but rat(x^2+y,y,x) is a polynomial in y whose coefficients are polynomials in x. To operate on the two of them (add, multiply, etc.), they need to be converted to polynomials in the same variables. RJF, please correct me if I've gotten something wrong here. s On Sat, Apr 11, 2015 at 8:06 AM, Richard Fateman <fateman@...> wrote: > 1. generally ratvars and genvars are supposed to persist between > commands. > > They set the ordering of the variables (e.g. do you want x+y or y+x. > That's varlist. > genvars is the list of generated symbols used in the CRE package for the > variable on varlist. > > This is pretty much non controversial. > > The problems come up when the items on the varlist are algebraically > dependent and > some programs notice. But others don't. > > e.g. if varlist has sqrt(x^2+1) and sqrt(4*^2+4). and genvar is > {z2,z1} > > Then 2*z2z1 is maybe zero. Or 4*z2 choosing another branch of sqrt. > > Anyway, ratexpand, which I wrote in about 1970 has been mashed up somewhat. > All it really is supposed to do is set a flag $ratexpand and call > ratdisrep. > ratexpand does no computation, really. It just alters the method to > print a CRE. This mbagp stuff is, I think, introducing a bug. > If you look back far enough I think you will see > > (defun $ratexpand(x)(let (($ratexpand t)) (ratdisrep(ratf x)))) > > where (ratf x) simply returns x if x is already in CRE form, so it is > doing no computation in the CRE case. > > ratexpand(), in my view, has no business altering ratvars and genvar. > > But if you are going to bind varlist and protect it, you should also > do genvar, because if you leave genvar alone, and change varlist from > {x,y} to {y,x} then there is a chance that raw internal polynomial > forms will have x and y interchanged. > > The full CRE form for x+y carries both a varlist and genvar, so it > is going to be ok. But some programs omit the header and it > is understood that it won't change from moment to moment, and > programs like pdis don't have to consider variable names or ordering. > > Calling $ratdisrep can destroy this correspondence. > It could be that carefully binding genvar whenever varlist is bound > will fix bugs brought out by setting $algebraic. > > I'm traveling / small laptop/ intermittent wifi. Sorry I can't do better at > the moment. > RJF > > > > RJF > > > On 4/10/15, 4:20 PM, Robert Dodier wrote: > > On 20150410, David Scherfgen <d.scherfgen@...> wrote: > > > >> block > >> ( > >> [ algebraic : true ], > >> print("Checkpoint 1"), > >> ratexpand(1/(sqrt(1/x1)*x)), > >> print("Checkpoint 2"), > >> ratsimp(1/((x^(2/3)+1)*x^(2/3))), > >> print("Checkpoint 3") > >> )$ > >> > >> It never reaches "Checkpoint 3", because "ratsimp" loops forever. > > I find the following redefinition of ratexpand is enough to make this > > example run to completion. (I didn't check if the result is correct.) > > > > The problem, as you guessed, is that ratexpand leaves some garbage > > behind, namely one or the other of the special (global) variables VAR > > and/or VARLIST. It's possible that these are handled or mishandled in a > > similar way in the other examples you gave. However, in a sense we are > > getting the intended effect of these specials  one function is causing > > an effect on another. I'd like to get some guidance from the old timers > > (the really OLD old timers; I'm a n00b, I've been around for hardly more > > than a decade) on the intended use of VAR and VARLIST before I commit > > this as a bug fix. > > > > Incidentally changing ratexpand as shown below causes this example to > > fail in the test suite: > > > > integrate (x^2*exp(x)/(1+exp(x))^2, x, minf, inf); > > > > which is supposed to be (%pi^2)/3 but comes out 0 instead. So somebody, > > somewhere is expecting ratexpand to change VAR and/or VARLIST. > > > > best > > > > Robert Dodier > > > > PS. > > $ git diff > > diff git a/src/rat3e.lisp b/src/rat3e.lisp > > index d7bf53c..ee9e434 100644 > >  a/src/rat3e.lisp > > +++ b/src/rat3e.lisp > > @@ 948,10 +948,12 @@ > > (defmvar $ratexpand nil) > > > > (defmfun $ratexpand (x) > >  (if (mbagp x) > >  (cons (car x) (mapcar '$ratexpand (cdr x))) > >  (let (($ratexpand t) ($ratfac nil)) > >  (ratdisrep (ratf x))))) > > + (let (var varlist) > > + (declare (special var varlist)) > > + (if (mbagp x) > > + (cons (car x) (mapcar '$ratexpand (cdr x))) > > + (let (($ratexpand t) ($ratfac nil)) > > + (ratdisrep (ratf x)))))) > > > > (defun pdisrep*expand (a b) > > (cond ((equal a 1) (list b)) > > > > > > >  > > BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT > > Develop your own process in accordance with the BPMN 2 standard > > Learn Process modeling best practices with Bonita BPM through live > exercises > > http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual > event?utm_ > > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > > _______________________________________________ > > Maximadiscuss mailing list > > Maximadiscuss@... > > https://lists.sourceforge.net/lists/listinfo/maximadiscuss > > > >  > BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live > exercises > http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual > event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > _______________________________________________ > Maximadiscuss mailing list > Maximadiscuss@... > https://lists.sourceforge.net/lists/listinfo/maximadiscuss > 
From: Richard Fateman <fateman@be...>  20150414 16:00:35

On 4/14/2015 8:25 AM, Stavros Macrakis (Σταῦρος Μακράκης) wrote: > Interestingly, ratsimp works where rat does not: > > block([algebraic:true], rat(1/(x^(2/3)+1))) => > infinite loop > > > but > > block([algebraic:true], ratsimp(1/(x^(2/3)+1))) => > (x^(4/3)+x^(2/3)1) / (x^2+1) > > > which is correct. > > David, you might try ratsimp with algebraic=true instead of > functs/rational (which is a very limited function in a generally poor > package). You mentioned in your original mail that you ran into the > infinite loop with ratsimp, too? Can you document those cases? > > > s > > I think that ratsimp differs from rat in this case in that the elements on the varlist (see previous recent mail) are themselves simplified by rat(). In this case the only object of interest is x^(2/3), so my guess is that in one case there is a "kernel" of x^(1/3) which is squared, and in the other case a "kernel" of x^(2/3). RJF > On Fri, Apr 10, 2015 at 10:19 AM, Stavros Macrakis (Σταῦρος Μακράκης) > <macrakis@... <mailto:macrakis@...>> wrote: > > Very nasty. Here is the kernel of the 'rational' problem: > > block([algebraic:true], rat(1/(x^(2/3)+1))) => infinite loop > > Seems pretty basic. I hope this is a recentlyintroduced bug.... > > Tested on Maxima 5.34.1 on SBCL 1.1.8.0, Mac OSX. > > s > > On Fri, Apr 10, 2015 at 10:11 AM, David Scherfgen > <d.scherfgen@... <mailto:d.scherfgen@...>> > wrote: > > ev(rational(1/((x^(2/3)+1)*x^(2/3))), algebraic : true); > > > > > > >  > BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live exercises > http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > > > _______________________________________________ > Maximadiscuss mailing list > Maximadiscuss@... > https://lists.sourceforge.net/lists/listinfo/maximadiscuss 
From: Stavros Macrakis (Σταῦρος Μακράκης) <macrakis@al...>  20150414 15:25:52

Interestingly, ratsimp works where rat does not: block([algebraic:true], rat(1/(x^(2/3)+1))) => infinite loop but block([algebraic:true], ratsimp(1/(x^(2/3)+1))) => (x^(4/3)+x^(2/3)1) / (x^2+1) which is correct. David, you might try ratsimp with algebraic=true instead of functs/rational (which is a very limited function in a generally poor package). You mentioned in your original mail that you ran into the infinite loop with ratsimp, too? Can you document those cases? s On Fri, Apr 10, 2015 at 10:19 AM, Stavros Macrakis (Σταῦρος Μακράκης) < macrakis@...> wrote: > Very nasty. Here is the kernel of the 'rational' problem: > > block([algebraic:true], rat(1/(x^(2/3)+1))) => infinite loop > > Seems pretty basic. I hope this is a recentlyintroduced bug.... > > Tested on Maxima 5.34.1 on SBCL 1.1.8.0, Mac OSX. > > s > > On Fri, Apr 10, 2015 at 10:11 AM, David Scherfgen < > d.scherfgen@...> wrote: > >> ev(rational(1/((x^(2/3)+1)*x^(2/3))), algebraic : true); >> > > > 
From: Stavros Macrakis (Σταῦρος Μακράκης) <macrakis@al...>  20150413 23:33:49

a) "rational" is part of the lowquality package "functs", which we should move to contrib, and not support as part of Maxima; I can document the reasons separately, if necessary. b) but anyway, the same problem comes up using core CRE functionality, as I documented earlier in this thread: block([algebraic:true], rat(1/(x^(2/3)+1))) => infinite loop T rue , x^(2/3) is multivalued, but an infinite loop is not the ideal way of signaling that. The tellrat/algebraic/rat approach Fateman suggest s works ... so why isn't Maxima using it? And I think it preserves the multivaluedness of cube roo t. More controversial perhaps is whether x^(2/3)+x^(1/3) = z^2 + z, where z=x^(1/3), that is, do the two terms refer to the *same* root? s On Mon, Apr 13, 2015 at 3:14 PM, Richard Fateman <fateman@...> wrote: > On 4/10/15, 7:11 AM, David Scherfgen wrote: > > ev(rational(1/((x^(2/3)+1)*x^(2/3))), algebraic : true); > > There are 3 cube roots of x. We don't know which one you mean, but call > it z. > > tellrat(z^3x); > algebraic:true; > > rat(1/(z^2+1)/z^2); > > now works, I think. > > We still don't know (or care) which cube root you meant. > > I looked at the definition in functs. It seems to be concerned with > removing %i from the denominator, and not removing radicals. > While there may be some meaningful interpretation of what you have > written, it looks to me that there are two mechanisms at work. > The mathematical one implemented via rational function package and > setting algebraic:true, and the mechanism in functs, which seems > to be based "everything Maxima needs to know about mathematics > is what I learned in high school". Of course sometimes this works. > Apparently not here. > > It may be a bug in Maxima that can be corrected to do the right thing, > though. > > > >  > BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live > exercises > http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual > event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > _______________________________________________ > Maximadiscuss mailing list > Maximadiscuss@... > https://lists.sourceforge.net/lists/listinfo/maximadiscuss > 
From: Richard Fateman <fateman@be...>  20150413 19:14:36

On 4/10/15, 7:11 AM, David Scherfgen wrote: > ev(rational(1/((x^(2/3)+1)*x^(2/3))), algebraic : true); There are 3 cube roots of x. We don't know which one you mean, but call it z. tellrat(z^3x); algebraic:true; rat(1/(z^2+1)/z^2); now works, I think. We still don't know (or care) which cube root you meant. I looked at the definition in functs. It seems to be concerned with removing %i from the denominator, and not removing radicals. While there may be some meaningful interpretation of what you have written, it looks to me that there are two mechanisms at work. The mathematical one implemented via rational function package and setting algebraic:true, and the mechanism in functs, which seems to be based "everything Maxima needs to know about mathematics is what I learned in high school". Of course sometimes this works. Apparently not here. It may be a bug in Maxima that can be corrected to do the right thing, though. 
From: Edwin Woollett <woollett@ch...>  20150413 19:13:32

thanks for the correction. that was my error. Ted  Original Message From: Kris Katterjohn Sent: Saturday, April 11, 2015 2:10 PM To: Edwin Woollett ; maximadiscuss Subject: Re: [Maximadiscuss] quad_qagi call inside function fails On 04/11/2015 01:57 PM, Edwin Woollett wrote: >  > 1.) quad_qagi inside function atest1 with interval (minf,0) > (%i1) fpprintprec:8$ > (%i2) integrate(exp(6*x),x,inf,0); > (%o2) 1/6 > (%i3) quad_qagi(exp(6*x),x,minf,0); > (%o3) [0.166667,2.48306918E11,75,0] > (%i4) atest1(kv) := > block([ i1L, i1], > i1L : quad_qagi(kv*x, x, minf, 0), > print(" i1L = ",i1L), > if i1L[4] = 0 then i1 : i1L[1] > else ( print(" error i1 "), > return() ), > i1)$ > (%i5) atest1(6); It looks like in %i3 you're doing the integral of exp(6*x) from minf to 0, but in %i5 you're doing the integral of 6*x from minf to 0. I think you're missing an exp() in the quad_qagi in atest1 (and also in your atest2). Kris Katterjohn 
From: Richard Fateman <fateman@be...>  20150413 18:42:32

On 4/13/15, 8:14 AM, Dimiter Prodanov wrote: > > Hi Stavros, > > If I come back to your example > > matchdeclare(xxx,all, f, symbolp); > > Inline image 1 > > Why do I have to get an error? > I think it is entirely clear. The main operator of the pattern is f. f is a match variable because you declared it, via matchdeclare to satisfy the predicate symbolp. The message says this must not be the case, and your command is therefore erroneous. If you want an explanation of why tellsimpafter cannot do this, it has to do with the structure of the simplification program. It is "data directed" in that the simplification for cos is stored in a place associated with the atom cos. Etc for every other operator. Where would you store the information in your tellsimpafter ? Certainly storing it on f is not going to work. It would have to be store on every current and future symbol. > Does not seem logical to me. > I hope this explanation helps. RJF > best regards, > > Dimiter > > > On Fri, Apr 10, 2015 at 7:47 PM, Stavros Macrakis (??????? > ????????) <macrakis@... <mailto:macrakis@...>> > wrote: > > (restoring maximadiscuss to the thread) > > As I said, you want to do "something like that", but tellsimp > substitutions do not reevaluate the expression after > substitution. > > Try, for example: > > matchdeclare(xxx,all)$ > tellsimpafter(f(xxx),'(print(i:i+1)))$ > > The expression f(xxx) simplifies to print(i:i+1), but doesn't > print anything. > That is by design  the simplifier is not supposed to call > routines. > > B > ut you could probably write a minor variant of tellsimpafter > which would. > > s > > > On Fri, Apr 10, 2015 at 1:36 PM, Dimiter Prodanov > <dimiterpp@... <mailto:dimiterpp@...>> wrote: > > It looks ok but the question is how to make the simplifier > recognize it > > Stated like this it would not work unless you apply some > Lisp magic > > matchdeclare( ff, mapatom, [aa,bb,cc], all); > tellsimpafter(ff(aa+%eps*bb) , > ratdisrep(taylor(ff(aa+%eps),%eps,0,1))); > > Dimiter > > On Fri, Apr 10, 2015 at 7:06 PM, Stavros Macrakis (??????? > ????????) <macrakis@... > <mailto:macrakis@...>> wrote: > > Unless you want all your expressions expanded out by > being converted to CRE form, you will probably want > f(a+%eps*b) > ratdisrep(taylor(f(a+%eps),%eps,0,1)). > > Otherwise, (x+1)^3*taylor(%eps,%eps,0,1) => > (x^3+...+1)*%eps. > > On Fri, Apr 10, 2015 at 11:07 AM, Stavros Macrakis > (??????? ????????) <macrakis@... > <mailto:macrakis@...>> wrote: > > You could probably do something like that, yes. > > On Fri, Apr 10, 2015 at 11:01 AM, Dimiter Prodanov > <dimiterpp@... <mailto:dimiterpp@...>> > wrote: > > So then we would have 2 rules: > > %eps^n > 0 ( // n>=2) > > f(a+%eps*b) > taylor(f(a+%eps),%eps,0,1) > > correct? > > On Fri, Apr 10, 2015 at 4:57 PM, Stavros > Macrakis (??????? ????????) > <macrakis@... > <mailto:macrakis@...>> wrote: > > If you try this, you will find that 1/%eps > => 1/%eps. > > In the second case, f(<taylor expression>) > does not expand as you would like. > However, taylor(f(a+%eps),%eps,0,1) does. > (In this case, %eps should /not/ be set to > a value.) > > s > > > On Fri, Apr 10, 2015 at 10:46 AM, Dimiter > Prodanov <dimiterpp@... > <mailto:dimiterpp@...>> wrote: > > Mind you that > 1/%eps should not be simplified > because it is an ideal expression (i.e > > %eps/0 which is not a number) > > also f(a+%eps*b)  > > f(a)+%eps*b*at(diff(f(x),x,1), x=a)) > > Are you sure that taylor will work as > expected in all cases? > > Dimiter > > > > On Fri, Apr 10, 2015 at 4:36 PM, > Stavros Macrakis (??????? ????????) > <macrakis@... > <mailto:macrakis@...>> wrote: > > tellsimp(%eps^2,0) is fine for > polynomials, but doesn't help much > for other cases, e.g., > 1/(a+b*%eps) or sin(a+b*%eps). > > If you simply set %eps : > taylor('%eps,'%eps,0,1), you will > get for those cases > > 1/a  b*%eps/a^2 > > sin(a) + cos(a)*b*%eps] > > On Fri, Apr 10, 2015 at 5:37 AM, > Dimiter Prodanov > <dimiterpp@... > <mailto:dimiterpp@...>> wrote: > > The simplest way is just > > tellsimp(%eps^2, 0), > > > (1+%eps)*(1+%eps),expand; > 2*%eps+1 > > > best regards, > > Dimiter > >  > BPM Camp  Free Virtual > Workshop May 6th at 10am > PDT/1PM EDT > Develop your own process in > accordance with the BPMN 2 > standard > Learn Process modeling best > practices with Bonita BPM > through live exercises > http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual > event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > _______________________________________________ > Maximadiscuss mailing list > Maximadiscuss@... > <mailto:Maximadiscuss@...> > https://lists.sourceforge.net/lists/listinfo/maximadiscuss > > > > > > > > > > > > > > >  > BPM Camp  Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live exercises > http://www.bonitasoft.com/bepartofit/events/bpmcampvirtual event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > > > _______________________________________________ > Maximadiscuss mailing list > Maximadiscuss@... > https://lists.sourceforge.net/lists/listinfo/maximadiscuss 
From: Robert Dodier <robert.dodier@gm...>  20150413 17:52:29

On 20150412, Mark&Dorothy Marinan <mdmarinan@...> wrote: > I'm cognizant of "everything is easy if someone else is being asked to do > it," and admittedly don't know how large a task this would be: what would > it take for Maxima to return n = log(c) / log(a/b) when asked to solve > a^n/b^n = c for n (even if it also gives a warning about some solutions > being lost)? Unfortunately, solving equations is one of Maxima's weaker areas. My advice is to post the equation which you are actually trying to solve and we can try to suggest some combination of insight & builtin functions. Sorry I can't be more helpful. best, Robert Dodier 
From: Robert Dodier <robert.dodier@gm...>  20150413 17:37:26

On 20150413, Dimiter Prodanov <dimiterpp@...> wrote: >> matchdeclare(xxx,all, f, symbolp); >> >> [image: Inline image 1] >> >> Why do I have to get an error? tellsimp/tellsimpafter associate the rule with the main operator of the pattern (via the properties list of the operator symbol)  given that, the main operator cannot be a variable. defrule/defmatch associate the rule with the specified rule name, so the main operator can be a variable. best Robert Dodier 
From: Dimiter Prodanov <dimiterpp@gm...>  20150413 15:15:30

From: Mario Rodriguez <biomates@te...>  20150413 14:58:38

El 12/04/15 a las 21:22, Wilhelm Haager escribió: > wxdraw2d(explicit(sin(x),x,0,19),user_preamble="set grid"); This also works: wxdraw2d(explicit(sin(x),x,0,19),grid=true);  Mario 
From: Richard Fateman <fateman@be...>  20150413 11:55:38

On 4/12/15, 3:06 PM, Robert Dodier wrote: > On 20150412, Gunter Königsmann <gunter@...> wrote: > >> Introducing a package system has the potential of saving a few >> Megabytes in the default install. But it risks coming with the risk of >> making the default install incompatible with all the interesting files >> and making the users choose between talking everybody into installing >> obscure packages or going lengths for living without them. > Aside from reducing the size of the installer, a downloadable package > system would increase the number of packages available. I think that's > probably the key advantage. I'm thinking of something like pip for > Python or install.packages in R. Can someone who is familiar with one or > the other of those comment on the feasibility of such a scheme for > Maxima? The standard way of doing this with modules written in Lisp or intended to be read into Lisp is using ASDF for defining systems and Quicklisp for loading them. I don't know how these would work for loading special front ends or for dispatching random nonLisp programs to format databases on different architectures, but I'm hardly an expert on this. I'm a dinosaur in some respects.. I have typically avoided even using "make" in building my own versions of Maxima, using tools entirely in Lisp. (I do use make for other purposes.) RJF > > 
From: Robert Dodier <robert.dodier@gm...>  20150412 22:12:32

On 20150411, Andrei Zorine <zoav1602@...> wrote: > Maybe somebody from the maxima development team will consider adding another > building option in configure script to include sbgmp into the buildont process? If you have a patch, I will be glad to give it a try. best, Robert Dodier 
From: Robert Dodier <robert.dodier@gm...>  20150412 22:06:45

On 20150412, Gunter Königsmann <gunter@...> wrote: > Introducing a package system has the potential of saving a few > Megabytes in the default install. But it risks coming with the risk of > making the default install incompatible with all the interesting files > and making the users choose between talking everybody into installing > obscure packages or going lengths for living without them. Aside from reducing the size of the installer, a downloadable package system would increase the number of packages available. I think that's probably the key advantage. I'm thinking of something like pip for Python or install.packages in R. Can someone who is familiar with one or the other of those comment on the feasibility of such a scheme for Maxima? I agree that handling incompatible packages is probably the most difficult part of this scheme. Maybe each installable package would need to have a test script to verify that it runs as expected with the installed version of Maxima. best, Robert Dodier 