From fateman at cs.berkeley.edu Tue Jan 3 10:58:25 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Tue, 3 Jan 2006 08:58:25 -0800 Subject: [Maxima] Computations over network References: <200512301340.38953.maier_jo@gmx.de> Message-ID: <021d01c61086$edcc2940$210110ac@windsor> ----- Original Message ----- From: To: Sent: Friday, December 30, 2005 5:40 AM Subject: [Maxima] Computations over network > Hello at all, > > I am wondering how to compute calculations over network with maxima. If > that > is possible, maybe someone can tell me how. Yes it is possible. There are many ways to do it. One is to use telnet. There is even a server at www.franz.com. > I am looking forward to write a graphical frontend under gpl for a free > cas. Presumably you already know about the existing graphical front ends. If not, I suggest you learn about them, e.g. texmacs, emaxima, xmaxima, wmaxima, imaxima and a few others. If you don't have any new ideas (oh, running over a network is not new.) then maybe you should consider as an alternative, refining one of the existing projects, or picking up something that is on someone's "to do" list for Maxima. > In order to do this, I need a simple interface like yacas provides with > its > socket based interface. But yacas isn't as powerful as maxima. > > Jo > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From robert.dodier at gmail.com Tue Jan 3 18:14:47 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Tue, 3 Jan 2006 17:14:47 -0700 Subject: [Maxima] Computations over network In-Reply-To: <200512301340.38953.maier_jo@gmx.de> References: <200512301340.38953.maier_jo@gmx.de> Message-ID: Hello Jo, > I am wondering how to compute calculations over > network with maxima. There are various user interfaces for Maxima. Some are listed here: http://maxima.sourceforge.net/relatedprojects.shtml In particular http://www.et.byu.edu/~koj/maxima.html seems work pretty well. So far as I know, all existing graphical interfaces talk to a separately-running Maxima session via a socket. It is probably possible to put the Maxima session and the graphical interface on separate machines, although I don't know the details about that. If you would like to work on a graphical interface, I'll bet the WxMaxima project (link on the "related projects" page cited above) can use some help. Thanks for your interest in Maxima, Robert Dodier From ficmatin01 at solar.com.br Wed Jan 4 02:35:23 2006 From: ficmatin01 at solar.com.br (Jorge Barros de Abreu) Date: Wed, 4 Jan 2006 06:35:23 -0200 Subject: [Maxima] rational numbers only Message-ID: <200601040635.23358.ficmatin01@solar.com.br> Hi. ?????Which the variable name that force maxima to work with ratonal numbers only??? Thanks -- Data Estelar 2453737.861817 http://www.solar.com.br/~ficmatin Desejo-lhe Paz, Vida Longa e Prosperidade. S?o Bem Vindas Mensagens no Formato Texto Gen?rico com Acentos. From vvzhy at mail.ru Wed Jan 4 07:15:14 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Wed, 04 Jan 2006 16:15:14 +0300 Subject: [Maxima] Maxima i18n and Windows builds Message-ID: <43BBCA62.5030409@mail.ru> Hi! I'd like to report that Maxima i18 framework for describe and HTML documentation is mostly finished: (1) Building of Spanish and Portuguese documentation is activated by configure options --enable-lang-es and --enable-lang-pt. (2) On Windows and as rpm Spanish and Portuguese documentation (.info and .html) is packaged as additional language packs. These .info and .html documentation are installed into /es and /pt subdirectories of standard .info and .html installation directories (here English documentation resides). (3) Maxima automatically set *maxima-lang-subdir* to "es" or "pt" using current user's locale (environment variable MAXIMA_LANG_SUBDIR overrides it). And if *maxima-lang-subdir* is not nil then describe first tries to find documentation in this subdirectory and only if no docs found here tries standard English .info. Analogously xmaxima menu item "Maxima Help" shows Spanish or Portuguese .html depending on current locale setting. Known problems: (a) Command line Maxima is not locale-aware. Helper program to set environment variable is required but at present one can set MAXIMA_LANG_SUBDIR manually. (b) With CLISP and SBCL describe causes error with Spanish and Portuguese .info. This is precisely the same problem as was observed with building info in non-C locale. It looks like cl-info.lisp on these lisps doesn't like any non-ASCII characters. Probably cl-info urgently require some fix. More details on the problem later. (c) With GCL and CMUCL i don't see errors but it looks like describe unable to locate nodes whose names was installed to Spanish or Portuguese. I'm quite surprised since this problem was apparently fixed quite a while ago. Test Windows build including es and pt language packs are available at ftp://ftp.altlinux.ru/pub/people/vvz/Maxima. This build is compiled with patched version of gcl 2.6.7 (compiler temp dir issue). On Windows 2000/XP all known Maxima issues seems to be fixed (1328888, 1356617). Please try. On Windows 98/Me I still observe problem with compile -- investigating. Best wishes, Vadim -- Vadim V. Zhytnikov From smills at pcrs.net Wed Jan 4 10:31:19 2006 From: smills at pcrs.net (Steve Mills) Date: Wed, 04 Jan 2006 09:31:19 -0700 Subject: [Maxima] Installation on WinXP Message-ID: <6.1.0.6.0.20060104092316.02016230@mail.pcrs.net> Greetings! I'm trying to install Maxima on my Windows XP machine at home. I downloaded and installed the 5.9.2 and have since downloaded Clisp and extracted it. But things aren't marrying-up properly. Maxima is not starting when I open up the program. I'm either missing a dependency, too ignorant to attempt implementing maxima on my own, or both. Any simple installation help out there? From what I'm reading on this list, this project is mostly by folks a lot more savvy than I am, and who leave things unsaid that the likes of this writer need to see in triplicate. I used macsyma years ago on a SUN 3/60 machine, and I'm excited to hear about an open-source CAS, but I may not have the requisite background to implement it myself. I've looked for all kinds of "installation for dummies" documentation and have failed to find the needed detail. Any help would be appreciated. Thanks, Steve From willisb at unk.edu Wed Jan 4 10:55:23 2006 From: willisb at unk.edu (Barton Willis) Date: Wed, 4 Jan 2006 10:55:23 -0600 Subject: [Maxima] Installation on WinXP Message-ID: -----Steve Mills wrote: ----- >I'm trying to install Maxima on my Windows XP >machine at home. I downloaded and installed the 5.9.2 and have since >downloaded Clisp and extracted it. But things aren't marrying-up >properly. Maxima is not starting when I open up the program. Unless you want to build Maxima from source, you don't need to install Common Lisp. Did you use the self-contained maxima-5.9.2.exe from http://sourceforge.net/project/showfiles.php?group_id=4933 or did you download something else? We've had reports that some firewalls interfere with running Maxima under windows. Might that be the problem? Barton From fateman at cs.berkeley.edu Wed Jan 4 10:57:18 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 4 Jan 2006 08:57:18 -0800 Subject: [Maxima] Installation on WinXP References: <6.1.0.6.0.20060104092316.02016230@mail.pcrs.net> Message-ID: <03d201c6114f$f1923fa0$210110ac@windsor> ----- Original Message ----- From: "Steve Mills" To: "Maxima List" Sent: Wednesday, January 04, 2006 8:31 AM Subject: [Maxima] Installation on WinXP > > Greetings! > > I'm trying to install Maxima on my Windows XP machine at home. I > downloaded and installed the 5.9.2 and have since downloaded Clisp and > extracted it. If you downloaded the windows executable, you are done. The windows executable does not need Clisp and in fact, does not even use it, but another implementation of lisp, GCL. But things aren't marrying-up properly. Maxima is not > starting when I open up the program. which program? did you click on the maxima icon? I'm either missing a dependency, too > ignorant to attempt implementing maxima on my own, or both. > > Any simple installation help out there? From what I'm reading on this > list, this project is mostly by folks a lot more savvy than I am, and who > leave things unsaid that the likes of this writer need to see in > triplicate. > > I used macsyma years ago on a SUN 3/60 machine, and I'm excited to hear > about an open-source CAS, but I may not have the requisite background to > implement it myself. > > I've looked for all kinds of "installation for dummies" documentation and > have failed to find the needed detail. Any help would be appreciated. > > Thanks, > > Steve > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From fateman at cs.berkeley.edu Wed Jan 4 10:58:53 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 4 Jan 2006 08:58:53 -0800 Subject: [Maxima] rational numbers only References: <200601040635.23358.ficmatin01@solar.com.br> Message-ID: <03d701c61150$26af0ce0$210110ac@windsor> Don't put any floating point numbers into maxima. Use 1/2 not 0.5 Or you can use the program rat(......) to convert to rational approximations, in some contexts. ----- Original Message ----- From: "Jorge Barros de Abreu" To: Sent: Wednesday, January 04, 2006 12:35 AM Subject: [Maxima] rational numbers only > Hi. > ?????Which the variable name that force maxima to work with ratonal > numbers > only??? > > Thanks > -- > Data Estelar 2453737.861817 > http://www.solar.com.br/~ficmatin > Desejo-lhe Paz, Vida Longa e Prosperidade. > S?o Bem Vindas Mensagens no Formato Texto Gen?rico com Acentos. > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From smills at pcrs.net Wed Jan 4 11:11:05 2006 From: smills at pcrs.net (Steve Mills) Date: Wed, 04 Jan 2006 10:11:05 -0700 Subject: [Maxima] Maxima Install Message-ID: <6.1.0.6.0.20060104100832.02046fa0@mail.pcrs.net> Hi Barton, To fill in some more detail: When I first executed the program, I got a warning from Norton Anti-Virus, and (too-) hastily followed its "Block all ... from/to this ..." recommendation. Following your previous, I'm now in Norton, seeing if I can pinpoint the issue. Thx, Steve From ficmatin01 at solar.com.br Wed Jan 4 12:53:46 2006 From: ficmatin01 at solar.com.br (Jorge Barros de Abreu) Date: Wed, 4 Jan 2006 16:53:46 -0200 Subject: [Maxima] rational numbers only In-Reply-To: <03d701c61150$26af0ce0$210110ac@windsor> References: <200601040635.23358.ficmatin01@solar.com.br> <03d701c61150$26af0ce0$210110ac@windsor> Message-ID: <200601041653.47086.ficmatin01@solar.com.br> Hi Richard and Stravos. My original idea was avoid manual convertion like 0.5 to 1/2. But as this is not automatically make for maxima the original idea was changed: Need a function that view an generic numerical expression of any lenght like: 0.5 + 1/3 - 3/8 +0.3*1/4 detect the decimal number, convert it for rational number, show the convertion of this decimal to rational and show the result in a rational number. This is for teaching childrens to calculate the num?rical expressions and return its value in a simplificated form. Thanks. Em Wed 04 Jan 2006 14:58, Richard Fateman escreveu: > Don't put any floating point numbers into maxima. Use 1/2 not 0.5 > > Or you can use the program rat(......) > to convert to rational approximations, in some contexts. -- Data Estelar 2453738.308414 http://www.solar.com.br/~ficmatin Desejo-lhe Paz, Vida Longa e Prosperidade. S?o Bem Vindas Mensagens no Formato Texto Gen?rico com Acentos. From vvzhy at mail.ru Wed Jan 4 12:15:46 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Wed, 04 Jan 2006 21:15:46 +0300 Subject: [Maxima] Maxima i18n and Windows builds In-Reply-To: <43BBCA62.5030409@mail.ru> References: <43BBCA62.5030409@mail.ru> Message-ID: <43BC10D2.90509@mail.ru> Vadim V. Zhytnikov writes: > On Windows 98/Me I still observe problem with compile -- > investigating. > I'm sorry, but gcl compile temp dir patch is broken so Maxima compile will not work (error in rtest15) both on Windows 2000/XP and Windows 95/Me in this Maxima Windows build. Working on the fix. -- Vadim V. Zhytnikov From macrakis at alum.mit.edu Wed Jan 4 12:33:02 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Wed, 4 Jan 2006 13:33:02 -0500 Subject: [Maxima] rational numbers only In-Reply-To: <200601041653.47086.ficmatin01@solar.com.br> References: <200601040635.23358.ficmatin01@solar.com.br> <03d701c61150$26af0ce0$210110ac@windsor> <200601041653.47086.ficmatin01@solar.com.br> Message-ID: <8b356f880601041033n710994d4xfb15e3298bbf7977@mail.gmail.com> ------=_Part_257_30509762.1136399582032 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > Need a function that view an generic numerical expression of any lenght > like: > > 0.5 + 1/3 - 3/8 +0.3*1/4 > > detect the decimal number, convert it for rational number, show the > convertion > of this decimal to rational and show the result in a rational number. > > This is for teaching childrens to calculate the num=E9rical expressions a= nd > return its value in a simplificated form. > If you set simp:false, then all simplifications will be turned off. You ca= n write any code you want to operate on the resulting expression. If, on the other hand, you care about the difference between 0.5 =3D 5/10 a= nd 0.50 =3D 50/100, you will have to parse the input yourself. If you don't parse the input yourself, but convert the floats, you need to be careful about comparisons in your float-to-rational conversion. For example, 0.29*100-29 is not 0. -s ------=_Part_257_30509762.1136399582032 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
Need a funct= ion that view an generic numerical expression of any lenght like:

0.= 5 + 1/3 - 3/8 +0.3*1/4

detect the decimal number, convert it for rati= onal number, show the convertion
of this decimal to rational and show th= e result in a rational number.

This is for teaching childrens to cal= culate the num=E9rical expressions and
return its value in a simplificated form.

If = you set simp:false, then all simplifications will be turned off.  You = can write any code you want to operate on the resulting expression.

= If, on the other hand, you care about the difference between=20 0.5 =3D 5/10 and 0.50 =3D 50/100, you will have to parse the input yourself= .  If you don't parse the input yourself, but convert the floats, you = need to be careful about comparisons in your float-to-rational conversion.&= nbsp; For example,=20 0.29*100-29 is not 0.

       &nbs= p;    -s

------=_Part_257_30509762.1136399582032-- From fateman at cs.berkeley.edu Wed Jan 4 12:36:13 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 4 Jan 2006 10:36:13 -0800 Subject: [Maxima] rational numbers only References: <200601040635.23358.ficmatin01@solar.com.br> <03d701c61150$26af0ce0$210110ac@windsor> <200601041653.47086.ficmatin01@solar.com.br> Message-ID: <002201c6115d$bfbfb300$12d09888@windsor> you can try rat(0.5 + 1/3 - 3/8 +0.3*1/4) but this is not a good idea in general. Some decimal numbers will not come out exactly right because they are, internally, converted to binary floating point numbers. There is no exact binary floating point number for certain decimal numbers, like 0.1 If you want to do exact decimal arithmetic and conversion to rational numbers, you need to convert numbers like .12345 to 12345/10^5, exactly. RJF ----- Original Message ----- From: "Jorge Barros de Abreu" To: "Richard Fateman" ; "Stavros Macrakis" Cc: Sent: Wednesday, January 04, 2006 10:53 AM Subject: Re: [Maxima] rational numbers only > Hi Richard and Stravos. > > My original idea was avoid manual convertion like 0.5 to 1/2. But as this > is > not automatically make for maxima the original idea was changed: > > Need a function that view an generic numerical expression of any lenght > like: > > 0.5 + 1/3 - 3/8 +0.3*1/4 > > detect the decimal number, convert it for rational number, show the > convertion > of this decimal to rational and show the result in a rational number. > > This is for teaching childrens to calculate the num?rical expressions and > return its value in a simplificated form. > > Thanks. > > Em Wed 04 Jan 2006 14:58, Richard Fateman escreveu: >> Don't put any floating point numbers into maxima. Use 1/2 not 0.5 >> >> Or you can use the program rat(......) >> to convert to rational approximations, in some contexts. > > -- > Data Estelar 2453738.308414 > http://www.solar.com.br/~ficmatin > Desejo-lhe Paz, Vida Longa e Prosperidade. > S?o Bem Vindas Mensagens no Formato Texto Gen?rico com Acentos. > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From vvzhy at mail.ru Wed Jan 4 14:51:42 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Wed, 04 Jan 2006 23:51:42 +0300 Subject: [Maxima] Maxima i18n and Windows builds In-Reply-To: <43BC10D2.90509@mail.ru> References: <43BBCA62.5030409@mail.ru> <43BC10D2.90509@mail.ru> Message-ID: <43BC355E.1010806@mail.ru> Vadim V. Zhytnikov writes: > > I'm sorry, but gcl compile temp dir patch is > broken so Maxima compile will not work (error in rtest15) > both on Windows 2000/XP and Windows 95/Me in > this Maxima Windows build. Working on the fix. > Compile problem fixed for all Windows flavors and new builds re-uploded to ftp://ftp.altlinux.ru/pub/people/vvz/Maxima -- Vadim V. Zhytnikov From smills at pcrs.net Wed Jan 4 17:18:08 2006 From: smills at pcrs.net (Steve Mills) Date: Wed, 04 Jan 2006 16:18:08 -0700 Subject: [Maxima] Thanks, gentlemen Message-ID: <6.1.0.6.0.20060104161608.01fca5b8@mail.pcrs.net> Thanks Richard and Barton. I'll see what can be done by collaborating with wiser heads (than mine, not yours) here at work, and get back to you if we fix it up. Steve From biomates at telefonica.net Wed Jan 4 17:41:11 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Thu, 05 Jan 2006 00:41:11 +0100 Subject: [Maxima] Maxima i18n and Windows builds In-Reply-To: <43BBCA62.5030409@mail.ru> References: <43BBCA62.5030409@mail.ru> Message-ID: <1136418072.9777.22.camel@localhost.localdomain> Vadim, I installed your executables in a windows partition. *.info and *.html files are in Maxima-5.9.2.10cvs\info\es and Maxima-5.9.2.10cvs\share\maxima\5.9.2.10cvs\doc\html\es as expected. This is what I get: In xmaxima, variable *maxima-lang-subdir* was set to "es" as announced, but 'describe' doesn't return anything but 'false': (%i1) :lisp (print *maxima-lang-subdir*) "es" es (%i1) describe(solve); (%o1) false (%i2) :lisp (setf *maxima-lang-subdir* nil) nil (%i2) describe(solve); 0: desolve :(maxima.info)Definitions for Differential Equations. 1: fast_linsolve :Definitions for Affine. 2: funcsolve :Definitions for Equations. ............. etc, etc. in English In command-line maxima the behaviour is similar: (%i1) :lisp (setf *maxima-lang-subdir* "es") es (%i1) describe(solve); (%o1) false (%i2) :lisp (setf *maxima-lang-subdir* nil) nil (%i2) describe(solve); 0: desolve :(maxima.info)Definitions for Differential Equations. 1: fast_linsolve :Definitions for Affine. 2: funcsolve :Definitions for Equations. ............. etc, etc. in English Let me know if I should check something else. I couldn't test this in linux, since I build maxima with clisp. ... and thank you for the fine work. Mario -- Mario Rodriguez Riotorto www.biomates.net From robert.dodier at gmail.com Wed Jan 4 18:14:10 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 4 Jan 2006 17:14:10 -0700 Subject: [Maxima] Maxima i18n and Windows builds In-Reply-To: <1136418072.9777.22.camel@localhost.localdomain> References: <43BBCA62.5030409@mail.ru> <1136418072.9777.22.camel@localhost.localdomain> Message-ID: hello all, i have downloaded and installed maxima-5.9.2.10cvs.exe and the pt and es language installers. many thanks to vadim. after setting *maxima-lang-subdir* to "es" or "pt", i get some successful and non-successful results for ? . ? solve => false ? read => some functions in numericalio.info ? sum => some functions in simplification.info ? product => some functions from linearalgebra.info numericalio.info, simplification.info, and linearalgebra.info are not translated (english-language version only). ? simp => some topics from maxima.info, simplification.info, and stringproc.info the stuff from maxima.info is the following: 0: (maxima.info)Simplificaci?n. 1: Definiciones para Simplificaci?n. so the accented letter "o" seems to be messed up (it appears as a less than or equal special character). that is strange, since accents appear correct if i open maxima.info-* in wordpad. items 0 and 1 are @node's in the texinfo file. all per-function and per-variable items are not @node's; instead cl-info looks a regular expression. i believe the reason describe fails to find solve, read, sum, etc in maxima.info is that the regular expression does not include accented characters. i believe it is easy to modify it -- i will try that later. incidentally i find that ? a and ? e find lots of topics, but not, however, any per-function or per-variable items in maxima.info-*. for what it's worth, robert dodier From robert.dodier at gmail.com Wed Jan 4 21:46:41 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 4 Jan 2006 20:46:41 -0700 Subject: [Maxima] rational numbers only In-Reply-To: <200601041653.47086.ficmatin01@solar.com.br> References: <200601040635.23358.ficmatin01@solar.com.br> <03d701c61150$26af0ce0$210110ac@windsor> <200601041653.47086.ficmatin01@solar.com.br> Message-ID: hello jorge, > Need a function that view an generic numerical expression > of any lenght like: > > 0.5 + 1/3 - 3/8 +0.3*1/4 > > detect the decimal number, convert it for rational number, > show the convertion of this decimal to rational and > show the result in a rational number. the conversion of an input "0.5" to a floating point number is carried out by the function READLIST (in src/nparse.lisp). so if you replace READLIST, it changes the way Maxima handles floating point number input. you could write another READLIST function which examines the input to see if it looks like [0-9]*\.[0-9]* or [0-9]*\.[0-9]*[esd][0-9]* or something like that, and, if so, convert it into a Maxima rational number or maybe an expression like ((mtimes) ((mquotient) a b) ((mexpt) 10 c)). just guessing here. i think that the exact conversion of floating point input to a Maxima rational number might be interesting to others as well. i know there are way too many global flags in Maxima, but maybe yet another flag floating_input_to_exact_rational could be useful .... for what it's worth, robert dodier From sullivan at mathcs.wilkes.edu Thu Jan 5 07:18:58 2006 From: sullivan at mathcs.wilkes.edu (Fred Sullivan) Date: Thu, 05 Jan 2006 08:18:58 -0500 Subject: [Maxima] Cross Product Message-ID: <43BD1CC2.1070907@mathcs.wilkes.edu> How do I compute a vector cross product? Either the documentation is obscure or I'm obtuse. Thanks. -- Fred Sullivan Associate Professor of Computer Science Wilkes University sullivan at mathcs.wilkes.edu Wilkes-Barre, PA 18766 (570) 408-4727 First you make a roux! From biomates at telefonica.net Thu Jan 5 07:36:17 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Thu, 05 Jan 2006 14:36:17 +0100 Subject: [Maxima] Maxima i18n and Windows builds In-Reply-To: <1136418072.9777.22.camel@localhost.localdomain> References: <43BBCA62.5030409@mail.ru> <1136418072.9777.22.camel@localhost.localdomain> Message-ID: <1136468178.16403.13.camel@localhost.localdomain> Vadim, I installed cmucl and rebuilt latest cvs-maxima with ./configure --enable-cmucl --enable-lang-es This is my 1st Maxima session: ------------- begin Maxima session ----------------------- Maxima 5.9.2.10cvs http://maxima.sourceforge.net Using Lisp CMU Common Lisp CVS release-19a 19a-release-20040728 + minimal debian patches Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. This is a development version of Maxima. The function bug_report() provides bug reporting information. (%i1) :lisp (print *maxima-lang-subdir*) "es" es (%i1) ? sum 0: arithsum :(simplification.info)Definitions for simplification. 1: facsum :Definitions for simplification. 2: factorfacsum :Definitions for simplification. 3: geosum :Definitions for simplification. 4: facsum_combine :Definitions for simplification. Enter space-separated numbers, `all' or `none': n (%o1) false (%i2) ? product 0: dotproduct :(linearalgebra.info)Definitions for linearalgebra. 1: kronecker_product :Definitions for linearalgebra. Enter space-separated numbers, `all' or `none': n (%o2) false (%i3) ? simp 0: (maxima.info)Simplificaci 1: Definiciones para Simplificaci 2: simplode :(stringproc.info)Definitions for strings. 3: (simplification.info)Introduction to simplification. 4: Definitions for simplification. 5: absimp :Definitions for simplification. Enter space-separated numbers, `all' or `none': n ------------- end Maxima session ----------------------- In theory, these results should be in Spanish, shouldn't they? Or am I missing something here? Mario -- Mario Rodriguez Riotorto www.biomates.net From frank.palazzolo at mcm1.com Thu Jan 5 07:44:46 2006 From: frank.palazzolo at mcm1.com (Frank Palazzolo) Date: Thu, 5 Jan 2006 08:44:46 -0500 Subject: [Maxima] ilt() Message-ID: <001c01c611fe$312288b0$1600100a@xw500006> Hi... Please excuse the newbie question. I am trying to port a small Mathematica script as an exercize to learn Maxima. For whatever reason, I can't get ilt() to evaluate, even in a trivial case: ilt( s/(s+1), s, t); (This doesn't seem to do anything) Also, I noticed an inconsistancy in the documentation: Info from file C:/PROGRA~1/MAXIMA~1.2/info/maxima.info: -- Function: ilt (, , ) yet, from the example that works... ilt (rhs (first (%)), s, t); It appears that s comes before t in the argument list? Thanks for any help, -Frank From willisb at unk.edu Thu Jan 5 08:03:28 2006 From: willisb at unk.edu (Barton Willis) Date: Thu, 5 Jan 2006 08:03:28 -0600 Subject: [Maxima] Cross Product Message-ID: -----Fred Sullivan wrote: ----- >How do I compute a vector cross product? Either >the documentation is obscure or I'm obtuse. (%i1) load("vect")$ (%i2) [1,2,3]~[4,5,6]; (%o2) [1,2,3]~[4,5,6] (%i3) express(%); (%o3) [-3,6,-3] Barton From willisb at unk.edu Thu Jan 5 08:14:31 2006 From: willisb at unk.edu (Barton Willis) Date: Thu, 5 Jan 2006 08:14:31 -0600 Subject: [Maxima] ilt() Message-ID: ----Frank Palazzolo ----- > For whatever reason, I can't get >ilt() to evaluate, even in a trivial case: > >ilt( s/(s+1), s, t); > >(This doesn't seem to do anything) This inverse Laplace transform involves a Dirac delta function--Maxima just gives up on such transforms. The function ilt isn't completely broken: (%i4) ilt( s/(s+1), s, t); (%o4) ILT(s/(s+1),s,t) (%i5) ilt( 1/(s+1), s, t); (%o5) %e^(-t) Barton From sullivan at mathcs.wilkes.edu Thu Jan 5 09:12:27 2006 From: sullivan at mathcs.wilkes.edu (Fred Sullivan) Date: Thu, 05 Jan 2006 10:12:27 -0500 Subject: [Maxima] Cross Product In-Reply-To: References: Message-ID: <43BD375B.4040904@mathcs.wilkes.edu> Thanks for the help! I thought it was ~, but I didn't know about express. Had I actually searched the maxima manual for cross product, I would have found the entry for express. I did search several of the tutorials and look at the entry for ~, but they didn't help. Why is it not expanded automatically? Fred Sullivan Associate Professor of Computer Science Wilkes University sullivan at mathcs.wilkes.edu Wilkes-Barre, PA 18766 (570) 408-4727 First you make a roux! Barton Willis wrote: > -----Fred Sullivan wrote: ----- > > >>How do I compute a vector cross product? Either >>the documentation is obscure or I'm obtuse. > > > (%i1) load("vect")$ > (%i2) [1,2,3]~[4,5,6]; > (%o2) [1,2,3]~[4,5,6] > (%i3) express(%); > (%o3) [-3,6,-3] > > Barton From frank.palazzolo at mcm1.com Thu Jan 5 09:20:55 2006 From: frank.palazzolo at mcm1.com (Frank Palazzolo) Date: Thu, 5 Jan 2006 10:20:55 -0500 Subject: [Maxima] ilt() In-Reply-To: Message-ID: <000d01c6120b$9fd1e0f0$1600100a@xw500006> Thanks! I knew it was something simple. -Frank -----Original Message----- From: Barton Willis [mailto:willisb at unk.edu] Sent: Thursday, January 05, 2006 9:15 AM To: Frank Palazzolo Cc: maxima at math.utexas.edu Subject: Re: [Maxima] ilt() ----Frank Palazzolo ----- > For whatever reason, I can't get >ilt() to evaluate, even in a trivial case: > >ilt( s/(s+1), s, t); > >(This doesn't seem to do anything) This inverse Laplace transform involves a Dirac delta function--Maxima just gives up on such transforms. The function ilt isn't completely broken: (%i4) ilt( s/(s+1), s, t); (%o4) ILT(s/(s+1),s,t) (%i5) ilt( 1/(s+1), s, t); (%o5) %e^(-t) Barton From vvzhy at mail.ru Thu Jan 5 10:40:14 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Thu, 05 Jan 2006 19:40:14 +0300 Subject: [Maxima] Maxima i18n and Windows builds In-Reply-To: <1136468178.16403.13.camel@localhost.localdomain> References: <43BBCA62.5030409@mail.ru> <1136418072.9777.22.camel@localhost.localdomain> <1136468178.16403.13.camel@localhost.localdomain> Message-ID: <43BD4BEE.4030805@mail.ru> Mario Rodriguez writes: > 0: (maxima.info)Simplificaci > 1: Definiciones para Simplificaci > 2: simplode :(stringproc.info)Definitions for strings. > 3: (simplification.info)Introduction to simplification. > 4: Definitions for simplification. > 5: absimp :Definitions for simplification. > Enter space-separated numbers, `all' or `none': n > > In theory, these results should be in Spanish, shouldn't they? > Or am I missing something here? > These pieces comes not from translated info/es/maxima.info but from other untranslated files, e.g. info/simplification.info The real trouble is that describe(foo) finds -- Function foo (x) but fails on -- Funci??n foo (x) So ? foo shows only very short list of nodes -- only untranslated ones. -- Vadim V. Zhytnikov From der_wachtmeister at freenet.de Thu Jan 5 15:48:52 2006 From: der_wachtmeister at freenet.de (der_wachtmeister at freenet.de) Date: Thu, 05 Jan 2006 22:48:52 +0100 Subject: [Maxima] Why do some integrations not work? Message-ID: Why can Maxima solve this: (%i3) integrate ( %e ^ ( -%i * w * t ), t, -1, 1 ); and this not: (%i5) integrate ( %e ^ ( -%i * w * t ) / ( t ^ 2 + 2 ), t, -1, 1 ); ? Is this a problem of Maxima (i.e. could Mathematica or Maple solve it) or of CAS in general? Phil 1 Million Singles in Ihrer Nahe. Finden Sie Ihren Traumpartner bei Deutschlands beliebtester Partnerboerse: http://singles.freenet.de/index.html?pid=11512 From rcrummett at uidaho.edu Thu Jan 5 16:29:22 2006 From: rcrummett at uidaho.edu (Ron Crummett) Date: Thu, 05 Jan 2006 14:29:22 -0800 Subject: [Maxima] wxmaxima problems Message-ID: <43BD9DC2.8040405@uidaho.edu> Hi - I have recently run into a problem with wxMaxima 0.6.4 - when I try running it it starts up and then automatically closes. When I try running it from a terminal window I find this message: wxmaxima: symbol lookup error: /usr/lib/libgnomeprint/2.10.2/modules/libgnomeprintcups.so: undefined symbol: gnome_cups_printer_get_ppd_async What exactly am I being told here? More importantly, what do I need to do to fix it? Thanks. -Ron From fateman at cs.berkeley.edu Thu Jan 5 16:29:30 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Thu, 5 Jan 2006 14:29:30 -0800 Subject: [Maxima] Why do some integrations not work? References: Message-ID: <033e01c61247$7f74d920$12d09888@windsor> It can also be the case that no one knows how to express the answer in closed form in terms of known functions, and so it is not a problem of computers, or of particular programs, but of current knowledge. It may also be the case that someone knows an alternative to the question, but the answer is too clumsy to present. Under some restrictions on w, this integral is related to the Ei (exponential integral), but with other assumptions, it might not be expressible this way, according to Mathematica 5.1. A numerical solution for particular w might be more helpful. Here's what mathematica says. If[(Im[w] > 0 && Inequality[0, Less, Re[w], LessEqual, Sqrt[2]*Im[w]]) || (Im[w] > 0 && Inequality[-(Sqrt[2]*Im[w]), LessEqual, Re[w], Less, 0]) || (Im[w] < 0 && Inequality[0, Less, Re[w], LessEqual, -(Sqrt[2]*Im[w])]) || (Im[w] < 0 && Inequality[Sqrt[2]*Im[w], LessEqual, Re[w], Less, 0]) || (Im[w] != 0 && Re[w] == 0), ((-I/2)*(-(E^(2*Sqrt[2]*w)*ExpIntegralEi[ -((-I + Sqrt[2])*w)]) - ExpIntegralEi[ (-I + Sqrt[2])*w] + E^(2*Sqrt[2]*w)* ExpIntegralEi[-((I + Sqrt[2])*w)] + ExpIntegralEi[(I + Sqrt[2])*w]))/ (Sqrt[2]*E^(Sqrt[2]*w)), Integrate[1/(E^(I*t*w)*(2 + t^2)), {t, -1, 1}, Assumptions -> !((Im[w] > 0 && Inequality[0, Less, Re[w], LessEqual, Sqrt[2]*Im[w]]) || (Im[w] > 0 && Inequality[-(Sqrt[2]*Im[w]), LessEqual, Re[w], Less, 0]) || (Im[w] < 0 && Inequality[0, Less, Re[w], LessEqual, -(Sqrt[2]*Im[w])]) || (Im[w] < 0 && Inequality[Sqrt[2]*Im[w], LessEqual, Re[w], Less, 0]) || (Im[w] != 0 && Re[w] == 0))]] The commercial version of Macsyma gives this... %i * (((%e)^( - sqrt(2) * w) * (sqrt(2) * exp_int((sqrt(2) - %i) * w) - sqrt(2) * (%e)^(2 * sqrt(2) * w) * exp_int(( - %i - sqrt(2)) * w))/4) - ((%e)^( - sqrt(2) * w) * (sqrt(2) * exp_int((%i + sqrt(2)) * w) - sqrt(2) * (%e)^(2 * sqrt(2) * w) * exp_int((%i - sqrt(2)) * w))/4)) ----- Original Message ----- From: To: Sent: Thursday, January 05, 2006 1:48 PM Subject: [Maxima] Why do some integrations not work? > Why can Maxima solve this: > > (%i3) integrate ( %e ^ ( -%i * w * t ), t, -1, 1 ); > > and this not: > > (%i5) integrate ( %e ^ ( -%i * w * t ) / ( t ^ 2 + 2 ), t, -1, 1 ); > > ? Is this a problem of Maxima (i.e. could Mathematica or Maple solve it) > or of CAS in general? > > Phil > > > From ryanlists at gmail.com Thu Jan 5 16:41:05 2006 From: ryanlists at gmail.com (Ryan Krauss) Date: Thu, 5 Jan 2006 17:41:05 -0500 Subject: [Maxima] wxmaxima problems In-Reply-To: <43BD9DC2.8040405@uidaho.edu> References: <43BD9DC2.8040405@uidaho.edu> Message-ID: I had a similar problem using wxPython on something else. I was using a fairly new linux install that I had never hooked up a printer to, so cups wasn't running. Try plugging in a USB printer or something like that and make sure that cups is installed and running On 1/5/06, Ron Crummett wrote: > Hi - > > I have recently run into a problem with wxMaxima 0.6.4 - when I try > running it it starts up and then automatically closes. When I try > running it from a terminal window I find this message: > > wxmaxima: symbol lookup error: > /usr/lib/libgnomeprint/2.10.2/modules/libgnomeprintcups.so: undefined > symbol: gnome_cups_printer_get_ppd_async > > What exactly am I being told here? More importantly, what do I need to > do to fix it? Thanks. > > -Ron > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From ryanlists at gmail.com Thu Jan 5 16:42:28 2006 From: ryanlists at gmail.com (Ryan Krauss) Date: Thu, 5 Jan 2006 17:42:28 -0500 Subject: [Maxima] wxmaxima problems In-Reply-To: References: <43BD9DC2.8040405@uidaho.edu> Message-ID: How do you know if CUPS is running? Open up your web browser and type in the URL: http://localhost:631 If CUPS is installed and running on your system than the CUPS administration web server will run and ask you for a username and password. Use your ROOT user account (remember the first rule of Linux). On 1/5/06, Ryan Krauss wrote: > I had a similar problem using wxPython on something else. I was using > a fairly new linux install that I had never hooked up a printer to, so > cups wasn't running. Try plugging in a USB printer or something like > that and make sure that cups is installed and running > > On 1/5/06, Ron Crummett wrote: > > Hi - > > > > I have recently run into a problem with wxMaxima 0.6.4 - when I try > > running it it starts up and then automatically closes. When I try > > running it from a terminal window I find this message: > > > > wxmaxima: symbol lookup error: > > /usr/lib/libgnomeprint/2.10.2/modules/libgnomeprintcups.so: undefined > > symbol: gnome_cups_printer_get_ppd_async > > > > What exactly am I being told here? More importantly, what do I need to > > do to fix it? Thanks. > > > > -Ron > > > > _______________________________________________ > > Maxima mailing list > > Maxima at math.utexas.edu > > http://www.math.utexas.edu/mailman/listinfo/maxima > > > From andrej.vodopivec at gmail.com Thu Jan 5 17:08:04 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Thu, 5 Jan 2006 15:08:04 -0800 Subject: [Maxima] wxmaxima problems In-Reply-To: <43BD9DC2.8040405@uidaho.edu> References: <43BD9DC2.8040405@uidaho.edu> Message-ID: <7775b21a0601051508l661eb30do@mail.gmail.com> Looks like you have a problem with cups on your system. Try recompiling wxwidgets without support for libgnomeprint and then recompile wxmaxima. This will disable printing support in wxmaxima. Andrej 2006/1/5, Ron Crummett : > Hi - > > I have recently run into a problem with wxMaxima 0.6.4 - when I try > running it it starts up and then automatically closes. When I try > running it from a terminal window I find this message: > > wxmaxima: symbol lookup error: > /usr/lib/libgnomeprint/2.10.2/modules/libgnomeprintcups.so: undefined > symbol: gnome_cups_printer_get_ppd_async > > What exactly am I being told here? More importantly, what do I need to > do to fix it? Thanks. > > -Ron > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From rcrummett at uidaho.edu Thu Jan 5 20:04:00 2006 From: rcrummett at uidaho.edu (Ron Crummett) Date: Thu, 05 Jan 2006 18:04:00 -0800 Subject: [Maxima] wxmaxima problems In-Reply-To: References: <43BD9DC2.8040405@uidaho.edu> Message-ID: <43BDD010.3060506@uidaho.edu> Ryan Krauss wrote: >How do you know if CUPS is running? Open up your web browser and type >in the URL: > >http://localhost:631 > >If CUPS is installed and running on your system than the CUPS >administration web server will run and ask you for a username and >password. Use your ROOT user account (remember the first rule of >Linux). > > CUPS is running fine. I just printed out a test page to verify that. Getting the printer to work is one of the first things I do on a Linux install. I had wxmaxima working fine too and I don't know what I might have done since that would have changed things. >On 1/5/06, Ryan Krauss wrote: > > >>I had a similar problem using wxPython on something else. I was using >>a fairly new linux install that I had never hooked up a printer to, so >>cups wasn't running. Try plugging in a USB printer or something like >>that and make sure that cups is installed and running >> >>On 1/5/06, Ron Crummett wrote: >> >> >>>Hi - >>> >>>I have recently run into a problem with wxMaxima 0.6.4 - when I try >>>running it it starts up and then automatically closes. When I try >>>running it from a terminal window I find this message: >>> >>>wxmaxima: symbol lookup error: >>>/usr/lib/libgnomeprint/2.10.2/modules/libgnomeprintcups.so: undefined >>>symbol: gnome_cups_printer_get_ppd_async >>> >>>What exactly am I being told here? More importantly, what do I need to >>>do to fix it? Thanks. >>> >>>-Ron >>> >>>_______________________________________________ >>>Maxima mailing list >>>Maxima at math.utexas.edu >>>http://www.math.utexas.edu/mailman/listinfo/maxima >>> >>> >>> From vb at cybertester.com Thu Jan 5 20:52:24 2006 From: vb at cybertester.com (Vladimir Bondarenko) Date: Fri, 6 Jan 2006 04:52:24 +0200 Subject: [Maxima] Why do some integrations not work? Message-ID: <44140547797.20060106045224@cybertester.com> der_wachtmeister at freenet.de> Is this a problem of Maxima Yes. The integrator of Maxima 5.9.2 is fairly weak. The answer to your integral integrate(%e^(-%i*w*t)/(t^2+2), t,-1,1) is 1/4*%i*SQRT(2)*(-%e^(SQRT(8)*w)*ei(1,-%i*w+SQRT(2)*w)+ ei(1,-%i*w-SQRT(2)*w)+%e^(SQRT(8)*w)*ei(1,%i*w+SQRT(2)*w) -ei(1,%i*w-SQRT(2)*w))*%e^(-SQRT(2)*w) where ei is a special function named the exponential integral http://mathworld.wolfram.com/ExponentialIntegral.html which can be defined as integrate(exp(-t*z)*t^(-a),t,1,inf). Best wishes, Vladimir Bondarenko VM and GEMM architect Co-founder, CEO, Mathematical Director Cyber Tester, LLC http://www.cybertester.com/ http://maple.bug-list.org/ http://www.CAS-testing.org/ ----- Original Message ----- From: To: Sent: Thursday, January 05, 2006 1:48 PM Subject: [Maxima] Why do some integrations not work? > Why can Maxima solve this: > > (%i3) integrate ( %e ^ ( -%i * w * t ), t, -1, 1 ); > > and this not: > > (%i5) integrate ( %e ^ ( -%i * w * t ) / ( t ^ 2 + 2 ), t, -1, 1 ); > > ? Is this a problem of Maxima (i.e. could Mathematica or Maple solve it) > or of CAS in general? > > Phil > > > _______________________________________________ Maxima mailing list Maxima at math.utexas.edu http://www.math.utexas.edu/mailman/listinfo/maxima From raymond-rogers at idexx.com Fri Jan 6 08:52:19 2006 From: raymond-rogers at idexx.com (Rogers, Raymond) Date: Fri, 6 Jan 2006 09:52:19 -0500 Subject: [Maxima] ilt() Message-ID: <3F4FE8951F7D314DB337D3693C9CFE7D19C29DC9@taz.namerica.idexxi.com> > -----Original Message----- > From: Frank Palazzolo [mailto:frank.palazzolo at mcm1.com] > Sent: Thursday, January 05, 2006 10:21 AM > To: 'Barton Willis' > Cc: maxima at math.utexas.edu > Subject: RE: [Maxima] ilt() > > > > Thanks! I knew it was something simple. > > -Frank > > -----Original Message----- > From: Barton Willis [mailto:willisb at unk.edu] > Sent: Thursday, January 05, 2006 9:15 AM > To: Frank Palazzolo > Cc: maxima at math.utexas.edu > Subject: Re: [Maxima] ilt() > > > > > ----Frank Palazzolo ----- > > > For whatever reason, I can't get > >ilt() to evaluate, even in a trivial case: > > > >ilt( s/(s+1), s, t); > > > >(This doesn't seem to do anything) > > This inverse Laplace transform involves a Dirac delta > function--Maxima just > gives up on such transforms. The function ilt isn't completely > broken: > > (%i4) ilt( s/(s+1), s, t); > (%o4) ILT(s/(s+1),s,t) > (%i5) ilt( 1/(s+1), s, t); > (%o5) %e^(-t) > > Barton > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From raymond-rogers at idexx.com Fri Jan 6 08:55:56 2006 From: raymond-rogers at idexx.com (Rogers, Raymond) Date: Fri, 6 Jan 2006 09:55:56 -0500 Subject: [Maxima] ilt() Message-ID: <3F4FE8951F7D314DB337D3693C9CFE7D19C29DCD@taz.namerica.idexxi.com> Sorry about the empty message last time; finger twitch. You might divide out the zero zero's and reinsert them after the transform as differentiations. If that's not clear I could make a wrapper this weekend; ilt_s(), or something. Ray > -----Original Message----- > From: Frank Palazzolo [mailto:frank.palazzolo at mcm1.com] > Sent: Thursday, January 05, 2006 10:21 AM > To: 'Barton Willis' > Cc: maxima at math.utexas.edu > Subject: RE: [Maxima] ilt() > > > > Thanks! I knew it was something simple. > > -Frank > > -----Original Message----- > From: Barton Willis [mailto:willisb at unk.edu] > Sent: Thursday, January 05, 2006 9:15 AM > To: Frank Palazzolo > Cc: maxima at math.utexas.edu > Subject: Re: [Maxima] ilt() > > > > > ----Frank Palazzolo ----- > > > For whatever reason, I can't get > >ilt() to evaluate, even in a trivial case: > > > >ilt( s/(s+1), s, t); > > > >(This doesn't seem to do anything) > > This inverse Laplace transform involves a Dirac delta > function--Maxima just > gives up on such transforms. The function ilt isn't completely > broken: > > (%i4) ilt( s/(s+1), s, t); > (%o4) ILT(s/(s+1),s,t) > (%i5) ilt( 1/(s+1), s, t); > (%o5) %e^(-t) > > Barton > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From frank.palazzolo at mcm1.com Fri Jan 6 10:23:51 2006 From: frank.palazzolo at mcm1.com (Frank Palazzolo) Date: Fri, 6 Jan 2006 11:23:51 -0500 Subject: [Maxima] ilt() In-Reply-To: <3F4FE8951F7D314DB337D3693C9CFE7D19C29DCD@taz.namerica.idexxi.com> Message-ID: <004101c612dd$94a4d2a0$1600100a@xw500006> That's a decent idea, I might try that. Just for completeness, the Mathematica Notebook I am trying to port to Maxima can be found here: http://bigwww.epfl.ch/demo/Esplines/ It's probably trivial for someone who knows both packages, but I'm just learning Maxima, and I don't even have Mathematica. (I'm just using MathReader to view the notebook.) Thanks, -Frank -----Original Message----- From: maxima-admin at math.utexas.edu [mailto:maxima-admin at math.utexas.edu] On Behalf Of Rogers, Raymond Sent: Friday, January 06, 2006 9:56 AM To: Frank Palazzolo Cc: maxima at math.utexas.edu Subject: RE: [Maxima] ilt() Sorry about the empty message last time; finger twitch. You might divide out the zero zero's and reinsert them after the transform as differentiations. If that's not clear I could make a wrapper this weekend; ilt_s(), or something. Ray > -----Original Message----- > From: Frank Palazzolo [mailto:frank.palazzolo at mcm1.com] > Sent: Thursday, January 05, 2006 10:21 AM > To: 'Barton Willis' > Cc: maxima at math.utexas.edu > Subject: RE: [Maxima] ilt() > > > > Thanks! I knew it was something simple. > > -Frank > > -----Original Message----- > From: Barton Willis [mailto:willisb at unk.edu] > Sent: Thursday, January 05, 2006 9:15 AM > To: Frank Palazzolo > Cc: maxima at math.utexas.edu > Subject: Re: [Maxima] ilt() > > > > > ----Frank Palazzolo ----- > > > For whatever reason, I can't get > >ilt() to evaluate, even in a trivial case: > > > >ilt( s/(s+1), s, t); > > > >(This doesn't seem to do anything) > > This inverse Laplace transform involves a Dirac delta > function--Maxima just > gives up on such transforms. The function ilt isn't completely > broken: > > (%i4) ilt( s/(s+1), s, t); > (%o4) ILT(s/(s+1),s,t) > (%i5) ilt( 1/(s+1), s, t); > (%o5) %e^(-t) > > Barton > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > _______________________________________________ Maxima mailing list Maxima at math.utexas.edu http://www.math.utexas.edu/mailman/listinfo/maxima From david.billinghurst at comalco.riotinto.com.au Sun Jan 8 03:06:09 2006 From: david.billinghurst at comalco.riotinto.com.au (Billinghurst, David CALCRTS) Date: Sun, 8 Jan 2006 20:06:09 +1100 Subject: [Maxima] float(0.0b0) overflows? Message-ID: <026DCC31AB859648A6F16C0E5CD2580D308E86@calttsv025.cal.riotinto.org> With 5.9.2 and CVS maxima with clisp on cygwin I see (%i1) float(0.0b0); Floating point overflow in converting 0.0B0 to flonum -- an error. Quitting. To debug this try debugmode(true); I don't see this with 5.9.2 on windows (gcl) I will investigate further. D NOTICE This e-mail and any attachments are private and confidential and may contain privileged information. If you are not an authorised recipient, the copying or distribution of this e-mail and any attachments is prohibited and you must not read, print or act in reliance on this e-mail or attachments. This notice should not be removed. From viktor.nagy at gmail.com Sun Jan 8 08:43:41 2006 From: viktor.nagy at gmail.com (Viktor Nagy) Date: Sun, 8 Jan 2006 15:43:41 +0100 Subject: [Maxima] imaxima: undefined control sequence Message-ID: <8f75d250601080643t481ae063j@mail.gmail.com> Hello! I just installed imaxima.el and the breqn package, but imaxima does not work. This is a development version of Maxima. The function bug_report() provides bug reporting information. (%i1) block(load("/usr/local/share/emacs/site-lisp/imaxima.lisp"), linenum:0)$ 1+1; (%i1) 1+1; LaTex error in: 2 So I have clicked the "Latex error in:" text, you can see my log file beneath. Do you have any ideas? Thanks, Viktor (kubuntu 5.10) This is e-TeX, Version 3.14159-2.1 (Web2C 7.4.5) (format=latex 2005.12.19) 8 JAN 2006 15:17 entering extended mode **&mylatex /tmp/imaxima9237HMt/3.tex (/tmp/imaxima9237HMt/3.tex LaTeX2e <2001/06/01> Babel and hyphenation patterns for american, french, german, ngerman, b ahasa, basque, catalan, croatian, czech, danish, dutch, finnish, greek, iceland ic, irish, italian, latin, magyar, norsk, norsk, portuges, romanian, russian, s lovak, slovene, spanish, swedish, turkish, ukrainian, nohyphenation, loaded. (/usr/share/texmf/tex/latex/base/article.cls Document Class: article 2001/04/21 v1.4e Standard LaTeX document class (/usr/share/texmf/tex/latex/base/leqno.clo File: leqno.clo 1998/08/17 v1.1c Standard LaTeX option (left equation numbers) ) (/usr/share/texmf/tex/latex/base/size11.clo File: size11.clo 2001/04/21 v1.4e Standard LaTeX file (size option) ) \c at part=\count79 \c at section=\count80 \c at subsection=\count81 \c at subsubsection=\count82 \c at paragraph=\count83 \c at subparagraph=\count84 \c at figure=\count85 \c at table=\count86 \abovecaptionskip=\skip41 \belowcaptionskip=\skip42 \bibindent=\dimen102 ) No file 3.aux. \openout1 = `3.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. ! Undefined control sequence. l.6 \pagecolor [rgb]{0.000000,0.000000,0.000000}\pagestyle{empty} ? ! Emergency stop. l.6 \pagecolor [rgb]{0.000000,0.000000,0.000000}\pagestyle{empty} End of file on the terminal! Here is how much of TeX's memory you used: 199 strings out of 95370 2088 string characters out of 1188184 47266 words of memory out of 1000001 3341 multiletter control sequences out of 10000+50000 3940 words of font info for 15 fonts, out of 500000 for 1000 198 hyphenation exceptions out of 1000 22i,0n,19p,137b,36s stack positions out of 1500i,500n,5000p,200000b,5000s No pages of output. From robert.dodier at gmail.com Sun Jan 8 11:39:27 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 8 Jan 2006 10:39:27 -0700 Subject: [Maxima] float(0.0b0) overflows? In-Reply-To: <026DCC31AB859648A6F16C0E5CD2580D308E86@calttsv025.cal.riotinto.org> References: <026DCC31AB859648A6F16C0E5CD2580D308E86@calttsv025.cal.riotinto.org> Message-ID: hello david, > With 5.9.2 and CVS maxima with clisp on cygwin I see > > (%i1) float(0.0b0); > Floating point overflow in converting 0.0B0 to flonum > -- an error. Quitting. To debug this try debugmode(true); > > I don't see this with 5.9.2 on windows (gcl) a few more data -- clisp 2.34 / maxima 5.9.2cvs / linux => same error gcl 2.6.7 / maxima 5.9.2cvs / linux => OK fwiw robert dodier From robert.dodier at gmail.com Sun Jan 8 18:41:55 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 8 Jan 2006 17:41:55 -0700 Subject: [Maxima] proposal to extend rhs / lhs to all relational operators, maybe others Message-ID: Hello, At present rhs and lhs return the right-hand side and left-hand side, respectively, of an expression of the form a = b. For any operator other than "=", rhs returns 0 while lhs returns the whole expression. I would like to change that so that rhs and lhs return the right- and left-hand sides for all relational operators (namely < <= = equal # notequal >= and >). We might also consider having rhs / lhs recognize := ::= : and :: since those also have unambiguous right- and left-hand sides. Maybe there are others. It is true that the right- and left-hand sides can be obtained at present via part. However, (1) the operands of all relational operators should be accessible the same way -- either all via rhs / lhs or none of them. (2) There is precedent for having general-purpose named part functions (e.g. op, args) as well as part itself. I ran into this when I was trying to work with some inequalities. Not a big deal, but it seems obvious and the implementation is simple (see patch below). Comments? All the best, Robert Dodier PS. Index: src/csimp.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/csimp.lisp,v retrieving revision 1.6 diff -u -r1.6 csimp.lisp --- src/csimp.lisp 7 Nov 2005 17:37:11 -0000 1.6 +++ src/csimp.lisp 8 Jan 2006 19:26:30 -0000 @@ -173,11 +173,21 @@ (defun subin (y x) (cond ((not (among var x)) x) (t (maxima-substitute y var x)))) -(defmfun $rhs (eq) - (cond ((or (atom eq) (not (eq (caar eq) 'mequal))) 0) (t (caddr eq)))) - -(defmfun $lhs (eq) - (cond ((or (atom eq) (not (eq (caar eq) 'mequal))) eq) (t (cadr eq)))) +(let + ((relops '(mlessp mleqp mequal mnotequal $equal $notequal mgeqp mgreaterp + %mlessp %mleqp %mequal %mnotequal %equal %notequal %mgeqp %mgreaterp))) + (defmfun $rhs (rel) + (if (atom rel) + 0 + (if (memq (caar rel) relops) + (caddr rel) + 0))) + (defmfun $lhs (rel) + (if (atom rel) + rel + (if (memq (caar rel) relops) + (cadr rel) + rel)))) (defun ratgreaterp (x y) (cond ((and (mnump x) (mnump y)) From raymond.toy at ericsson.com Mon Jan 9 08:28:02 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 09 Jan 2006 09:28:02 -0500 Subject: [Maxima] float(0.0b0) overflows? In-Reply-To: (Robert Dodier's message of "Sun, 8 Jan 2006 10:39:27 -0700") References: <026DCC31AB859648A6F16C0E5CD2580D308E86@calttsv025.cal.riotinto.org> Message-ID: >>>>> "Robert" == Robert Dodier writes: Robert> hello david, >> With 5.9.2 and CVS maxima with clisp on cygwin I see >> >> (%i1) float(0.0b0); >> Floating point overflow in converting 0.0B0 to flonum >> -- an error. Quitting. To debug this try debugmode(true); >> >> I don't see this with 5.9.2 on windows (gcl) Robert> a few more data -- Robert> clisp 2.34 / maxima 5.9.2cvs / linux => same error Robert> gcl 2.6.7 / maxima 5.9.2cvs / linux => OK Neat. cmucl and cvs HEAD produce the correct answer. The problem is in fp2flo in float.lisp and can be seen to be caused by clisp: (/ 0 (expt 2d0 53)) => 0 instead of 0d0. The error message that is produced is wrong because it thinks if scale-float signals an error, it's because of overflow. In this case scale-float signals an error because the first arg is not a float. This result is independent of *floating-point-contagion-ansi*. Sounds like a bug in clisp. An easy workaround is just cl:float the arg to scale-float. Ray From raymond.toy at ericsson.com Mon Jan 9 08:40:15 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 09 Jan 2006 09:40:15 -0500 Subject: [Maxima] float(0.0b0) overflows? In-Reply-To: (Raymond Toy's message of "Mon, 09 Jan 2006 09:28:02 -0500") References: <026DCC31AB859648A6F16C0E5CD2580D308E86@calttsv025.cal.riotinto.org> Message-ID: >>>>> "Raymond" == Raymond Toy writes: >>>>> "Robert" == Robert Dodier writes: Raymond> The problem is in fp2flo in float.lisp and can be seen to be caused by Raymond> clisp: Raymond> (/ 0 (expt 2d0 53)) => 0 instead of 0d0. [snip] Raymond> This result is independent of *floating-point-contagion-ansi*. Raymond> Sounds like a bug in clisp. An easy workaround is just cl:float the Raymond> arg to scale-float. Or setting custom:*floating-point-rational-contagion-ansi* to T. Then (/ 0 1d0) => 0d0, as expected. Ray From Robert.Gloeckner at Web.de Mon Jan 9 14:48:20 2006 From: Robert.Gloeckner at Web.de (Robert Gloeckner) Date: Mon, 09 Jan 2006 21:48:20 +0100 Subject: [Maxima] adding/modifying maximas lisp-code (tex-output) Message-ID: <43C2CC14.7070609@Web.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 hello, i am still in the beginning of maxima & lisp learning, but there is a function i think i could manage to modify to fulfill certain needs of mine (and propably of other users). i would like to modify tex(%) in such a way, that there will be ooo(%) - an openoffice.math output (not the xml, only the formula code). i am using maxima via emacs-maxima-mode, so i wonder if it is possible, just to change mactex.lisp so that the modifications are available in maxima directly, without recompiling (?) maxima completely. if there is somebody familiar with slight changes in maxima-lisp code and willing to answer some questions about this, it would be perfect to meet at the irc-channel #maxima at irc.freenode.net, because interaction is more direct (if you like too, just reply time/date). ciao, robert PS: 2 commands may be helpful (located at the end of .emacs) if using maxima under windows (maxima installed on d:/Programme/Maxima-5.9.2): ~ (setq maxima-command "d:/Programme/Maxima-5.9.2/bin/maxima.bat") ~ (add-to-list 'Info-additional-directory-list' "d:/Programme/Maxima-5.9.2/info") - -- https://gna.org/projects/mipisti - (microscope) picture stitching ~ T_a_k_e__c_a_r_e__o_f__y_o_u_r__R_I_G_H_T_S. ~ P_r_e_v_e_n_t__L_O_G_I_C--P_A_T_E_N_T_S ~ http://www.ffii.org, http://www.nosoftwarepatents.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFDwswUV8k0kPlGZngRAg/2AJ9Eec2kzVIcH6Ynuu3P5CZlLBqpOgCgtP1J ELkDfUw/rcEoKxTB8yG5Pmo= =wGY/ -----END PGP SIGNATURE----- From ryanlists at gmail.com Mon Jan 9 19:47:33 2006 From: ryanlists at gmail.com (Ryan Krauss) Date: Mon, 9 Jan 2006 20:47:33 -0500 Subject: [Maxima] Operator search and replace Message-ID: I am using the fortran function in some of my work. Fortran does not allow complex sinh and cosh (as far as I can tell with g77). I am defining zsinh and zcosh functions in my fortran file that get around this (since fortran does allow complex exp). So, I need to take the output of my maxima script and run a search and replace on the expression to change all sinh to zsinh and cosh to zcosh before I call the fortran function. I need to do this in maxima before the fortran function is called because the expression is long and the fortran line wrap is at a hard 72 characters or whatever, so parsing the fortran file to do the replacement would be very painful (I would have to search for sinh, sinh, ... and I would have to change the names of zsinh and zcosh to have 4 letters so I don't have to re-wrap the entire function each time I find one). Can this kind of search and replace be done? And I don't want to just use zsinh and zcosh from the beginning because I want maxima to do any appropriate simplifications. I guess another option would be to define my own maxima function zsinh that acts just like sinh - but I don't know if that is possible and I don't know how to do it? Thanks, Ryan From robert.dodier at gmail.com Mon Jan 9 20:11:49 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 9 Jan 2006 19:11:49 -0700 Subject: [Maxima] adding/modifying maximas lisp-code (tex-output) In-Reply-To: <43C2CC14.7070609@Web.de> References: <43C2CC14.7070609@Web.de> Message-ID: Hello Robert, > i would like to modify tex(%) in such a way, that there will be ooo(%) - > an openoffice.math output (not the xml, only the formula code). > i am using maxima via emacs-maxima-mode, so i wonder if it is possible, > just to change mactex.lisp so that the modifications are available in > maxima directly, without recompiling (?) maxima completely. Please help me understand better what you want to do here. I'm not familiar with the OpenOffice math format -- is it the same as MathML ? is it something else? There is some code for converting Maxima expressions to MathML in the maxima/share directory. If the format is something else, but it is not too different from TeX, it may be possible to modify up the TeX functions so that the OpenOffice format is output instead. The tex function looks at properties assigned to symbols to see what it should print for each one -- if the properties were changed, the output would be different. I look forward to your reply -- Robert Dodier From willisb at unk.edu Mon Jan 9 21:11:38 2006 From: willisb at unk.edu (Barton Willis) Date: Mon, 9 Jan 2006 21:11:38 -0600 Subject: [Maxima] Operator search and replace Message-ID: -----Ryan Krauss wrote: ----- >So, I need to take the output of my maxima script >and run a search and replace on the expression to >change all sinh to zsinh and cosh to zcosh >before I call the fortran function. Try 'subst': (%i1) cosh(x^2) + sinh(x); (%o1) cosh(x^2)+sinh(x) (%i2) subst([cosh=zcosh, sinh = zsinh],%); (%o2) zcosh(x^2)+zsinh(x) Barton From robert.dodier at gmail.com Mon Jan 9 21:19:25 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 9 Jan 2006 20:19:25 -0700 Subject: [Maxima] Operator search and replace In-Reply-To: References: Message-ID: Hello Ryan, > So, I need to take the output of my maxima script and run a search and > replace on the expression to change all sinh to zsinh and cosh to > zcosh before I call the fortran function. Is subst (zsinh, sinh, expr) enough? (Likewise subst (zcosh, cosh, expr).) e.g. expr : F(sinh(x) + exp(sinh(y))); subst (zsinh, sinh, expr); => F(zsinh(x) + exp(zsinh(y))) Maybe I'm misunderstanding what you want to accomplish. Hope this helps, Robert Dodier From ryanlists at gmail.com Mon Jan 9 21:23:45 2006 From: ryanlists at gmail.com (Ryan Krauss) Date: Mon, 9 Jan 2006 22:23:45 -0500 Subject: [Maxima] Operator search and replace In-Reply-To: References: Message-ID: I think subst will be perfect. I will test it here in a bit. Ryan On 1/9/06, Robert Dodier wrote: > Hello Ryan, > > > So, I need to take the output of my maxima script and run a search and > > replace on the expression to change all sinh to zsinh and cosh to > > zcosh before I call the fortran function. > > Is subst (zsinh, sinh, expr) enough? > (Likewise subst (zcosh, cosh, expr).) > > e.g. > expr : F(sinh(x) + exp(sinh(y))); > subst (zsinh, sinh, expr); => F(zsinh(x) + exp(zsinh(y))) > > Maybe I'm misunderstanding what you want to accomplish. > > Hope this helps, > Robert Dodier > From deniska at westnet.com.au Tue Jan 10 02:46:55 2006 From: deniska at westnet.com.au (Denis Potapov) Date: Tue, 10 Jan 2006 19:16:55 +1030 Subject: [Maxima] How to declare the inverse to a function Message-ID: <20060110084655.GA24861@(none)> Hi, could anyone give me a tip how to declare the inverse to the 'conjugate' function, to avoid this: (%i52) solve(conjugate(z) = %i); (%o52) [conjugate(z) = %i] Thanks in advance, D. From yhonda at mac.com Tue Jan 10 10:07:43 2006 From: yhonda at mac.com (Yasuaki Honda) Date: Wed, 11 Jan 2006 01:07:43 +0900 Subject: [Maxima] imaxima: undefined control sequence In-Reply-To: <8f75d250601080643t481ae063j@mail.gmail.com> References: <8f75d250601080643t481ae063j@mail.gmail.com> Message-ID: <5B370BCC-1A00-4A12-A35D-27189491BBE1@mac.com> Hi Viktor Hagy san, I remember this situation happened once for me myself. I don't remember the exact cause of this, however. My poor memory says this may have something to do with installation of breqn.sty... Could you please make sure your installation of breqn package is correct by doing: % kpsewhich breqn.sty and you will obtain the full path to the breqn.sty file. If that is not the case, you should perform: % texhash to let TeX knows that breqn.sty is installed. If all the above goes well, could you try to latex the temporarily created .tex file (/tmp/imaxima9237HMt/3.tex in the following log) to see if the same error is generated ? Yasuaki Honda On 2006/01/08, at 11:43 PM, Viktor Nagy wrote: > Hello! > > I just installed imaxima.el and the breqn package, but imaxima does > not > work. > > This is a development version of Maxima. The function bug_report() > provides bug reporting information. > (%i1) block(load("/usr/local/share/emacs/site-lisp/imaxima.lisp"), > linenum:0)$ > 1+1; > (%i1) 1+1; > LaTex error in: 2 > > So I have clicked the "Latex error in:" text, you can see my log file > beneath. > > Do you have any ideas? > > Thanks, Viktor > (kubuntu 5.10) > > This is e-TeX, Version 3.14159-2.1 (Web2C 7.4.5) (format=latex > 2005.12.19) > 8 JAN 2006 15:17 > entering extended mode > **&mylatex /tmp/imaxima9237HMt/3.tex > (/tmp/imaxima9237HMt/3.tex > LaTeX2e <2001/06/01> > Babel and hyphenation patterns for american, french, german, > ngerman, b > ahasa, basque, catalan, croatian, czech, danish, dutch, finnish, > greek, > iceland > ic, irish, italian, latin, magyar, norsk, norsk, portuges, romanian, > russian, s > lovak, slovene, spanish, swedish, turkish, ukrainian, > nohyphenation, loaded. > (/usr/share/texmf/tex/latex/base/article.cls > Document Class: article 2001/04/21 v1.4e Standard LaTeX document class > (/usr/share/texmf/tex/latex/base/leqno.clo > File: leqno.clo 1998/08/17 v1.1c Standard LaTeX option (left equation > numbers) > ) > (/usr/share/texmf/tex/latex/base/size11.clo > File: size11.clo 2001/04/21 v1.4e Standard LaTeX file (size option) > ) > \c at part=\count79 > \c at section=\count80 > \c at subsection=\count81 > \c at subsubsection=\count82 > \c at paragraph=\count83 > \c at subparagraph=\count84 > \c at figure=\count85 > \c at table=\count86 > \abovecaptionskip=\skip41 > \belowcaptionskip=\skip42 > \bibindent=\dimen102 > ) > No file 3.aux. > \openout1 = `3.aux'. > > LaTeX Font Info: Checking defaults for OML/cmm/m/it on input > line 5. > LaTeX Font Info: ... okay on input line 5. > LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5. > LaTeX Font Info: ... okay on input line 5. > LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5. > LaTeX Font Info: ... okay on input line 5. > LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input > line 5. > LaTeX Font Info: ... okay on input line 5. > LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input > line 5. > LaTeX Font Info: ... okay on input line 5. > LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5. > LaTeX Font Info: ... okay on input line 5. > ! Undefined control sequence. > l.6 \pagecolor > [rgb]{0.000000,0.000000,0.000000}\pagestyle{empty} > ? > ! Emergency stop. > l.6 \pagecolor > [rgb]{0.000000,0.000000,0.000000}\pagestyle{empty} > End of file on the terminal! > > > Here is how much of TeX's memory you used: > 199 strings out of 95370 > 2088 string characters out of 1188184 > 47266 words of memory out of 1000001 > 3341 multiletter control sequences out of 10000+50000 > 3940 words of font info for 15 fonts, out of 500000 for 1000 > 198 hyphenation exceptions out of 1000 > 22i,0n,19p,137b,36s stack positions out of 1500i,500n,5000p, > 200000b,5000s > No pages of output. > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima From milan at eskimo.com Tue Jan 10 12:12:45 2006 From: milan at eskimo.com (Milan Lukic) Date: Tue, 10 Jan 2006 10:12:45 -0800 Subject: [Maxima] How to declare the inverse to a function In-Reply-To: <20060110084655.GA24861@(none)>; from deniska@westnet.com.au on Tue, Jan 10, 2006 at 07:16:55PM +1030 References: <20060110084655.GA24861@(none)> Message-ID: <20060110101245.B8999@eskimo.com> Perhaps I am not undersanding what are you trying to accomplish, but couldn't you just use the fact that conjugate(conjugate(z))=z. Milan > Hi, > > could anyone give me a tip how to declare the inverse to the > 'conjugate' function, to avoid this: > > (%i52) solve(conjugate(z) = %i); > (%o52) [conjugate(z) = %i] > > Thanks in advance, > D. > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima -- From macrakis at alum.mit.edu Tue Jan 10 12:52:27 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Tue, 10 Jan 2006 13:52:27 -0500 Subject: [Maxima] How to declare the inverse to a function In-Reply-To: <20060110101245.B8999@eskimo.com> References: <20060110101245.B8999@eskimo.com> Message-ID: <8b356f880601101052x49231fbj26a4a630b5e498cf@mail.gmail.com> ------=_Part_22783_22214249.1136919147987 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > > could anyone give me a tip how to declare the inverse to the > > 'conjugate' function, to avoid this: > Maxima offers no way to extend the functionality of "solve" by declaring inverses of functions. Although there is an internal mechanism for declaring inverses, it is restricted in scope and in fact does not work correctly in general: solve(atan(x)=3D2,x) =3D> x=3Dtan(2). ------=_Part_22783_22214249.1136919147987 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
> could a= nyone give me a tip how to declare the inverse to the
> 'conjugate' f= unction, to avoid this:

Maxima offers no way to extend the functionality= of "solve" by declaring inverses of functions.  Although th= ere is an internal mechanism for declaring inverses, it is restricted in sc= ope and in fact does not work correctly in general: solve(atan(x)=3D2,x) = =3D> x=3Dtan(2).
------=_Part_22783_22214249.1136919147987-- From RGloeckner at dki.tu-darmstadt.de Tue Jan 10 16:54:32 2006 From: RGloeckner at dki.tu-darmstadt.de (Gloeckner, Robert) Date: Tue, 10 Jan 2006 23:54:32 +0100 Subject: [Maxima] solving strategy, getting float-numbers? Message-ID: hello, i try to use maxima for daily work, but somehow i do not know the right solving strategies. maybe some of you can give me hints. the following maxima-code works fairly, but even in the second solving (with numbers) i am not able to get numbers for the vars, although they only contain numbers themselves. the first solving stops at solving for k7 - i left them in the code in order to show what my intention was. the second solving uses numerical data for the curves. i managed to get all variables solved (somehow strange for k7 again), but i do not get numbers, why? thanks for infos, robert /* $Header: /home/cvs/lisp/test.max,v 1.10 2006/01/10 22:53:38 robert Exp $ * * (C) Robert Gloeckner, 2006 * * This is a maxima-file about adaptive fitting pvT-data for * 7(11)-coefficient-fit. the curve will be divided in two (three) * parts: (1) a linear, an (2) exponential and (3) another linear part. * * * the curve is described by 2 functions, * for (1) and (2): * v(k1, k2, k3, k4, k5, k6, k7) = vv(k1, k2, k3, k4) + vvv(k5, k6, k7) * * for (3) * u(k8, k9, k10, k11) * * * point 1->2 & 5->6 linear part 1 => vv(k1, k2, k3, k4) * point 2->3 & 6->7 exponential part => vvv(k5, k6, k7) * point 3->4 & 7->8 linear part 2 => u(k8, k9, k10, k11) * * so there are 8 points = 10 equations but 11 variables. * * i introduce a free parameter to have enough equations * i hope i do not kill my solvability(?) (i fear so) * the chosen free parameter describes the exponential fraction * at point 2: L = vvv_2 / v_2 */ kill(all); /* linear part1 of the pvT-curve */ vv(p, T, k1, k2, k3, k4) := (k1 / (k3 + p)) + T * ( k2 / (k4 + p)); /* exponential part of the pvT-curve */ vvv(p, T, k5, k6, k7) := k7 * exp ( k5 * p + k6 * T); /* 7-coefficient-model of the pvT-curve (linear part 1 + exponential part) */ v(p, T, k1, k2, k3, k4, k5, k6, k7) := vv(p, T, k1, k2, k3, k4) + vvv(p, T, k5, k6, k7); /* linear part2 of the pvT-curve */ u(p, T, k8, k9, k10, k11) := vv(p, T, k8, k9, k10, k11); /************** i n p u t - d a t a ***********************************/ v1 : v(p1, T1, k1, k2, k3, k4, k5, k6, k7) = v_1; /* curve-point 1 */ v2 : v(p1, T2, k1, k2, k3, k4, k5, k6, k7) = v_2; /* curve-point 2 */ v3 : v(p1, T3, k1, k2, k3, k4, k5, k6, k7) = v_3; /* curve-point 3 */ v3_: u(p1, T3, k8, k9, k10, k11) = v_3; v4 : u(p1, T4, k8, k9, k10, k11) = v_4; /* curve-point 4 */ v5 : v(p2, T5, k1, k2, k3, k4, k5, k6, k7) = v_5; /* curve-point 5 */ v6 : v(p2, T6, k1, k2, k3, k4, k5, k6, k7) = v_6; /* curve-point 6 */ v7 : v(p2, T7, k1, k2, k3, k4, k5, k6, k7) = v_7; /* curve-point 7 */ v7_: u(p2, T7, k8, k9, k10, k11) = v_7; v8 : u(p2, T8, k8, k9, k10, k11) = v_8; /* curve-point 8 */ v1a: vv(p1, T1, k1, k2, k3, k4) = v_1; /* approximation vvv(T1) -> 0 */ v5a: vv(p2, T5, k1, k2, k3, k4) = v_5; /* approximation vvv(T5) -> 0 */ v2a: vvv(p1, T2, k5, k6, k7) = L * v_2; /* exponential fraction in point 2 as _FREE_PARAMETER_ */ v2b: vv(p1, T2, k1, k2, k3, k4) = ( 1 - L) * v_2; /* resulting linear fraction in point 2 */ /************ s y m b o l i c - s o l v i n g ********************/ kill( k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11); solveradcan : true; globalsolve : true; /* */ k7 : part( part( solve( ev( v2a), k7), 1), 2); /* k5 v2a */ k1 : part( part( solve( ev( v2b), k1), 1), 2); /* k1 k5 v2a v2b */ k2 : part( part( solve( ev( v5a), k2), 1), 2); k1 : ev( k1)$ k7 : ev( k7)$ k2 : ev( k2)$ /* k1 k2 k7 v2a v2b v5a */ k3 : part( part( solve( ev( v1a), k3), 1), 2); k1 : ev( k1)$ k7 : ev( k7)$ k2 : ev( k2)$ k3 : ev( k3)$ /* k1 k2 k3 k7 v1a v2a v2b v5a */ k6 : part( part( solve( ev( v3), k6), 1), 2); k1 : ev( k1)$ k7 : ev( k7)$ k2 : ev( k2)$ k3 : ev( k3)$ k6 : ev( k6)$ /* k1 k2 k3 k4 k7 v1a v2a v2b v3 v5a */ k4 : part( part( solve( ev( v6), k4), 1), 2); k1 : ev( k1)$ k7 : ev( k7)$ k2 : ev( k2)$ k3 : ev( k3)$ k6 : ev( k6)$ k4 : ev( k4)$ /* k1 k2 k3 k4 k7 k6 v1a v2a v2b v3 v5a v6 */ t: ratsimp( ev( v7)); k7: rhs(solve( t, k7)[1]); k1:ev(k1)$ k7:ev(k7)$ k2:ev(k2)$ k3:ev(k3)$ k6:ev(k6)$ k4:ev(k4)$ k5:ev(k5)$ for f in ['k1, 'k2, 'k3, 'k4, 'k5, 'k6, 'k7] do print( f = ev( f, numer)); /**********e x a m p l e - d a t a **************************/ T5 : T1; L : 1e-2; T1 : 100; T2 : 200; T3 : 220; T4 : 300; T5 : 100; T6 : 210; T7 : 240; T8 : 330; p1 : 1; p2 : 1000; v_1 : 20; v_2 : 40; v_3 : 55; v_4 : 80; v_5 : 10; v_6 : 20; v_7 : 40; v_8 : 60; /************ ( n u m e r i c a l) - s o l v i n g ************/ kill( k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11); solveradcan : true; globalsolve : true; /* */ k7 : part( part( solve( ev( v2a), k7), 1), 2); /* k5 v2a */ k1 : part( part( solve( ev( v2b), k1), 1), 2); /* k1 k5 v2a v2b */ k2 : part( part( solve( ev( v5a), k2), 1), 2); k1 : ev( k1)$ k7 : ev( k7)$ k2 : ev( k2)$ /* k1 k2 k7 v2a v2b v5a */ k3 : part( part( solve( ev( v1a), k3), 1), 2); k1 : ev( k1)$ k7 : ev( k7)$ k2 : ev( k2)$ k3 : ev( k3)$ /* k1 k2 k3 k7 v1a v2a v2b v5a */ k6 : part( part( solve( ev( v3), k6), 1), 2); k1 : ev( k1)$ k7 : ev( k7)$ k2 : ev( k2)$ k3 : ev( k3)$ k6 : ev( k6)$ /* k1 k2 k3 k4 k7 v1a v2a v2b v3 v5a */ k4 : part( part( solve( ev( v6), k4), 1), 2); k1 : ev( k1)$ k7 : ev( k7)$ k2 : ev( k2)$ k3 : ev( k3)$ k6 : ev( k6)$ k4 : ev( k4)$ /* k1 k2 k3 k4 k7 k6 v1a v2a v2b v3 v5a v6 */ t: ratsimp( ev( v7)); t1: subst( exp(999*k5), kk5, solve( subst( kk5, exp(999*k5), t), kk5)) ; k5: rhs(solve( t1^(1/999), k5)[1]); k1:ev(k1)$ k7:ev(k7)$ k2:ev(k2)$ k3:ev(k3)$ k6:ev(k6)$ k4:ev(k4)$ k5:ev(k5)$ for f in ['k1, 'k2, 'k3, 'k4, 'k5, 'k6, 'k7] do print( f = ev( f, numer)); -- Dipl.-Phys. Robert Gloeckner Research Assistant Deutsches Kunststoff-Institut DKI German Institute for Polymers Department of Technology Schlossgartenstr. 6 D-64289 Darmstadt, Germany phone +49(0)6151 - 16 6516 fax +49(0)6151 - 29 2855 http://www.DKI-online.de GnuPG-Key: 1024D/9A0A2D72 From deniska at westnet.com.au Wed Jan 11 04:20:28 2006 From: deniska at westnet.com.au (Denis Potapov) Date: Wed, 11 Jan 2006 20:50:28 +1030 Subject: [Maxima] How to declare the inverse to a function In-Reply-To: <20060110101245.B8999@eskimo.com> References: <20060110084655.GA24861@(none)> <20060110101245.B8999@eskimo.com> Message-ID: <20060111102028.GA31894@(none)> Hi, > Perhaps I am not undersanding what are you trying to accomplish, but > couldn't you just use the fact that conjugate(conjugate(z))=z. I could, but maxima conldn't :-). I expected (and needed) the line (%i52) below whould return (%o52') [z = - %i] D. > Milan > > > Hi, > > > > could anyone give me a tip how to declare the inverse to the > > 'conjugate' function, to avoid this: > > > > (%i52) solve(conjugate(z) = %i); > > (%o52) [conjugate(z) = %i] > > > > Thanks in advance, > > D. > > > > _______________________________________________ > > Maxima mailing list > > Maxima at math.utexas.edu > > http://www.math.utexas.edu/mailman/listinfo/maxima > > -- > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima From deniska at westnet.com.au Wed Jan 11 04:36:42 2006 From: deniska at westnet.com.au (Denis Potapov) Date: Wed, 11 Jan 2006 21:06:42 +1030 Subject: [Maxima] How to declare the inverse to a function In-Reply-To: <8b356f880601101052x49231fbj26a4a630b5e498cf@mail.gmail.com> References: <20060110101245.B8999@eskimo.com> <8b356f880601101052x49231fbj26a4a630b5e498cf@mail.gmail.com> Message-ID: <20060111103642.GA32015@(none)> Hi, you wrote: > > > > > could anyone give me a tip how to declare the inverse to the > > > 'conjugate' function, to avoid this: > > > > Maxima offers no way to extend the functionality of "solve" by declaring > inverses of functions. Although there is an internal mechanism for > declaring inverses, it is restricted in scope and in fact does not work > correctly in general: solve(atan(x)=2,x) => x=tan(2). If you mean lisp under "internal mechanism", well, then, that "internal mechanism" is what I'm asking about. If you gave me some details (in lisp) that would be nice. I'm just trying to avoid digging in the (lisp) definition of $solve function myself :-). D. From RGloeckner at dki.tu-darmstadt.de Wed Jan 11 08:29:11 2006 From: RGloeckner at dki.tu-darmstadt.de (Gloeckner, Robert) Date: Wed, 11 Jan 2006 15:29:11 +0100 Subject: [Maxima] german introduction to symbolic calculation Message-ID: hello, maybe there are german readers who would like to read a german introduction to symbolic calculus (maxima and others): http://www.informatik.uni-leipzig.de/~graebe/skripte/esr05.pdf ciao, robert From macrakis at alum.mit.edu Wed Jan 11 10:06:49 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Wed, 11 Jan 2006 11:06:49 -0500 Subject: [Maxima] How to declare the inverse to a function In-Reply-To: <-1950141805566980145@unknownmsgid> References: <20060110101245.B8999@eskimo.com> <8b356f880601101052x49231fbj26a4a630b5e498cf@mail.gmail.com> <-1950141805566980145@unknownmsgid> Message-ID: <8b356f880601110806h6cf1cdf1scf5b7cd395e51c1e@mail.gmail.com> ------=_Part_3382_22468389.1136995609533 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline OK, here is how you declare conjugate to be the inverse of conjugate for Solve internally. I do not guarantee that it will work correctly in general. It does work in the case of solve(conjugate(x)=3D%i), but I have not studied the code, and = it is possible that various things could go wrong (infinite loops, etc.). load(conjugate)$ /* load the standard conjugate definitions */ :lisp (putprop '$conjugate '$conjugate '$inverse) ------=_Part_3382_22468389.1136995609533 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline OK, here is how you declare conjugate to be the inverse of conjugate for So= lve internally.

I do not guarantee that it will work correctly in ge= neral.  It does work in the case of solve(conjugate(x)=3D%i), but I ha= ve not studied the code, and it is possible that various things could go wr= ong (infinite loops, etc.).

load(conjugate)$         &n= bsp;   /* load the standard conjugate definitions */

:lisp= (putprop '$conjugate '$conjugate '$inverse)

------=_Part_3382_22468389.1136995609533-- From RGloeckner at dki.tu-darmstadt.de Wed Jan 11 10:59:24 2006 From: RGloeckner at dki.tu-darmstadt.de (Gloeckner, Robert) Date: Wed, 11 Jan 2006 17:59:24 +0100 Subject: [Maxima] maxima-lisp-source-code questions (mactex.lisp) Message-ID: hello, does somebody know about the following lisp expressions? declare-top defprop and more mactex-specific tex-lbp tex-rbp if there is an explanation within maxima (src/doc), please tell me where to read more about the way (style) maxima was coded. thanks, robert From robert.dodier at gmail.com Wed Jan 11 12:07:15 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 11 Jan 2006 11:07:15 -0700 Subject: [Maxima] numerical evaluation of 2F1 Message-ID: hello, i wonder if anyone has some advice about the numerical evaluation of the hypergeometric function 2F1. i'm willing to consider pretty much any method (even if not particularly fast or accurate), since the alternative is numerical evaluation of an integral. that's not the end of the world, but i'd rather avoid it. if i'm not mistaken hgfred is maxima's hypergeometric function. hgfred ([a, b], [c], z), numer; yields numerical values for some values of a, b, c, and z but not for all. so i'm looking for a way to evaluate it when the built-in method returns a noun expression. 2F1 is defined by an infinite series which converges only for |z| < 1. however i want to evaluate it for -100 < z < 0 (real values of z only). i guess the function has an analytic continuation, however i don't know how to exploit that to get numerical values. thanks in advance for any advice. robert dodier From A.G.Grozin at inp.nsk.su Wed Jan 11 12:28:00 2006 From: A.G.Grozin at inp.nsk.su (Andrey G. Grozin) Date: Thu, 12 Jan 2006 00:28:00 +0600 (NOVT) Subject: [Maxima] maxima-lisp-source-code questions (mactex.lisp) In-Reply-To: References: Message-ID: On Wed, 11 Jan 2006, Gloeckner, Robert wrote: > does somebody know about the following lisp expressions? > tex-lbp > tex-rbp left binding power, right binding power Andrey From raymond.toy at ericsson.com Wed Jan 11 13:33:03 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Wed, 11 Jan 2006 14:33:03 -0500 Subject: [Maxima] maxima-lisp-source-code questions (mactex.lisp) In-Reply-To: (Robert Gloeckner's message of "Wed, 11 Jan 2006 17:59:24 +0100") References: Message-ID: >>>>> "Robert" == Robert Gloeckner writes: Robert> hello, Robert> does somebody know about the following lisp expressions? Robert> declare-top Robert> defprop You can very likely ignore declare-top. But in essence, it's basically the same as CL declaim. defprop is a macro that assigns a value to some indicator on a symbol's propertly list. This is basically how maxima determines if some symbol has certain properies, which maxima uses to compute stuff. For example, the grad property is on the symbol-list for %jacobi_sn. This tells maxima what the derivative of jacobi_sn is. Ray From robert.dodier at gmail.com Wed Jan 11 13:51:43 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 11 Jan 2006 12:51:43 -0700 Subject: [Maxima] cacheing compiled integrand in quadpack functions Message-ID: hello ray, the quadpack functions (quad_qags etc) call COMPILE on the integrand. i'm working on a problem in which i'd like to evaluate the integrand repeatedly for different limits of integration, so it seems like the integrand only needs to be compiled once. does it seem reasonable and practical to put the compiled integrand into a hash table with the integrand as the key? the idea is that the integrand would be compiled only if a table lookup yields nil. thanks for any advice, robert From macrakis at alum.mit.edu Wed Jan 11 14:46:48 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Wed, 11 Jan 2006 15:46:48 -0500 Subject: [Maxima] cacheing compiled integrand in quadpack functions In-Reply-To: References: Message-ID: <8b356f880601111246u13f327b9h4d2e00f1761773ca@mail.gmail.com> ------=_Part_7684_2651560.1137012408735 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > the quadpack functions (quad_qags etc) call COMPILE on the > integrand. i'm working on a problem in which i'd like to evaluate > the integrand repeatedly for different limits of integration, > so it seems like the integrand only needs to be compiled once. > does it seem reasonable and practical to put the compiled > integrand into a hash table with the integrand as the key? Sounds like a very sensible idea for your own uses. It might be more problematic to have it as part of the standard library, because the user may have redefined macros or changed translator or compile= r flags between one call and the next. Perhaps a reasonable compromise between getting the semantics exactly right and not worrying about unusual or rare cases would be to use the translated-to-Lisp (Translate) version of the integrand as the key instead of the source form. Translation-to-Lisp should be several orders of magnitude faster than full compilation, which starts an external process, etc. ------=_Part_7684_2651560.1137012408735 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
the quadpack= functions (quad_qags etc) call COMPILE on the
integrand. i'm working on= a problem in which i'd like to evaluate
the integrand repeatedly for different limits of integration,
so it = seems like the integrand only needs to be compiled once.
does it seem re= asonable and practical to put the compiled
integrand into a hash table w= ith the integrand as the key?

Sounds like a very sensible idea for your= own uses.

It might be more problematic to have it as part of the st= andard library, because the user may have redefined macros or changed trans= lator or compiler flags between one call and the next.  Perhaps a reas= onable compromise between getting the semantics exactly right and not worry= ing about unusual or rare cases would be to use the translated-to-Lisp (Tra= nslate) version of the integrand as the key instead of the source form.&nbs= p; Translation-to-Lisp should be several orders of magnitude faster than fu= ll compilation, which starts an external process, etc.
------=_Part_7684_2651560.1137012408735-- From raymond.toy at ericsson.com Wed Jan 11 15:10:35 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Wed, 11 Jan 2006 16:10:35 -0500 Subject: [Maxima] cacheing compiled integrand in quadpack functions In-Reply-To: <8b356f880601111246u13f327b9h4d2e00f1761773ca@mail.gmail.com> (Stavros Macrakis's message of "Wed, 11 Jan 2006 15:46:48 -0500") References: <8b356f880601111246u13f327b9h4d2e00f1761773ca@mail.gmail.com> Message-ID: >>>>> "Stavros" == Stavros Macrakis writes: Stavros> the integrand as the key instead of the source form. Stavros> Translation-to-Lisp should be several orders of magnitude Stavros> faster than full compilation, which starts an external Stavros> process, etc. I believe the external process only happens with gcl. I think every other Lisp we support has the compiler built-in so compiling is very fast compared to gcl, even for cmucl which has a relatively slow compiler. Ray From raymond.toy at ericsson.com Wed Jan 11 15:22:10 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Wed, 11 Jan 2006 16:22:10 -0500 Subject: [Maxima] numerical evaluation of 2F1 In-Reply-To: (Robert Dodier's message of "Wed, 11 Jan 2006 11:07:15 -0700") References: Message-ID: >>>>> "Robert" == Robert Dodier writes: Robert> if i'm not mistaken hgfred is maxima's hypergeometric function. Robert> hgfred ([a, b], [c], z), numer; yields numerical values for Robert> some values of a, b, c, and z but not for all. Robert> so i'm looking for a way to evaluate it when the built-in Robert> method returns a noun expression. Actually, hgfred is really a simplifier for hypergeometric functions where it tries to simplify a hypergeometric function in terms of other, simpler, functions. That hgfred yields numerical values at all is just chance that it simplified pFq to something that maxima knew how to evaluate. Robert> 2F1 is defined by an infinite series which converges Robert> only for |z| < 1. however i want to evaluate it for -100 < z < 0 Robert> (real values of z only). i guess the function has an Robert> analytic continuation, however i don't know how to Robert> exploit that to get numerical values. http://www.math.sfu.ca/~cbm/aands/page_559.htm has some formulas that might be useful to you. However, as far as I know, the only way to evaluate 2F1 in general is from the series. I have a couple of books (at home) that do that. They don't give any other method than that with some simple relationships thrown in to help the convergence of the series. Ray From steve at horne.homelinux.net Thu Jan 12 10:46:19 2006 From: steve at horne.homelinux.net (steve at horne.homelinux.net) Date: Thu, 12 Jan 2006 11:46:19 -0500 Subject: [Maxima] another batch/pipe question... Message-ID: <20060112114619.A11769@rio> Hello group -- Recently there was a thread on the question of piping or batching files to maxima -- I looked through it without resolving this question: I had to revive some old code that worked on Maxima 5.9.0 which included lines like this: a3: limit(a2,theta,pi, MINUS); nonzero; positive; positive; positive; positive; which I used to invoke so $ maxima < a16_1.mc This doesn't work with Maxima 5.9.1; instead the session hangs waiting for input, like this: 2 2 2 2 Is (z + r2 - 2 r2 + 1) (z + r2 + 2 r2 + 1) positive or negative? Even in 5.9.0, batch("...") gave the "wrong" behavior; only the pipe worked, and now that fails too. Is there a workaround? Thanks, Steve From robert.dodier at gmail.com Thu Jan 12 09:54:27 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 12 Jan 2006 08:54:27 -0700 Subject: [Maxima] lambda expressions in plot2d and quadpack functions Message-ID: hello, at present plot2d (lambda ([x], ...), [x, a, b]) fails, also quad_qags (lambda ([x], ...), x, a, b) and other quadpack functions. i would like to suggest that those should succeed. i wonder if anyone has an objection to extending COERCE-FLOAT-FUN slightly to handle maxima lambda expressions, as shown in the attached patch. best, robert dodier Index: plot.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/plot.lisp,v retrieving revision 1.59 diff -u -r1.59 plot.lisp --- plot.lisp 10 Jan 2006 06:32:55 -0000 1.59 +++ plot.lisp 12 Jan 2006 15:46:04 -0000 @@ -523,6 +523,18 @@ ($float result) nil))) 'function))))) + ((and (consp expr) (eq (caar expr) 'lambda)) + ; FOLLOWING CODE IS IDENTICAL TO CODE FOR EXPR = SYMBOL + ; (EXCEPT HERE WE HAVE EXPR INSTEAD OF MEXPR). DOUBTLESS BEST TO MERGE. + (let ((args (nth 1 expr))) + (coerce `(lambda ,(cdr args) + (declare (special ,@(cdr args))) + (let* (($ratprint nil) + (result ($realpart (meval* ',(nth 2 expr))))) + (if ($numberp result) + ($float result) + nil))) + 'function))) (t (let ((vars (or lvars ($sort ($listofvars expr)))) ;(na (gensym "TMPF")) From hiperfume at yahoo.com Thu Jan 12 00:37:44 2006 From: hiperfume at yahoo.com (Nguyen Huong) Date: Wed, 11 Jan 2006 22:37:44 -0800 (PST) Subject: [Maxima] Compare Maxima and Macsyma Message-ID: <20060112063744.17955.qmail@web60318.mail.yahoo.com> --0-372849050-1137047864=:96716 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Hello I want to work with Maxima now. I know that Maxima is based on DOE Macsyma in 1982. And I consider two questions: 1) What is the differences between Maxima and Macsyma ? 2)What is any advantage of Maxima comparing to Macsyma? If anybody know any document about that or if you have any experience can share, please let me know. Thanks a lot. Nguyen, --------------------------------- Yahoo! Photos Got holiday prints? See all the ways to get quality prints in your hands ASAP. --0-372849050-1137047864=:96716 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: 8bit
 Hello

I want to work with Maxima now. I know that Maxima is based on DOE Macsyma in 1982. And I consider two questions:

1) What is the differences between Maxima and Macsyma ?

2)What is any advantage of Maxima comparing to Macsyma?

If anybody know any document about that or if you have any experience can share, please let me know. Thanks a lot.

Nguyen,


Yahoo! Photos
Got holiday prints? See all the ways to get quality prints in your hands ASAP. --0-372849050-1137047864=:96716-- From fateman at cs.berkeley.edu Thu Jan 12 10:58:37 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Thu, 12 Jan 2006 08:58:37 -0800 Subject: [Maxima] Compare Maxima and Macsyma References: <20060112063744.17955.qmail@web60318.mail.yahoo.com> Message-ID: <02d901c61799$70704980$210110ac@windsor> This is a multi-part message in MIME format. ------=_NextPart_000_02D6_01C61756.602A0270 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable The questions you ask are not easy to answer. However, the answers are not relevant to you=20 unless you can get a licensed copy of Macsyma. Can you? RJF ----- Original Message -----=20 From: Nguyen Huong=20 To: maxima at math.utexas.edu=20 Sent: Wednesday, January 11, 2006 10:37 PM Subject: [Maxima] Compare Maxima and Macsyma Hello I want to work with Maxima now. I know that Maxima is based on DOE = Macsyma in 1982. And I consider two questions: 1) What is the differences between Maxima and Macsyma ? 2)What is any advantage of Maxima comparing to Macsyma? If anybody know any document about that or if you have any experience = can share, please let me know. Thanks a lot. Nguyen, -------------------------------------------------------------------------= ----- Yahoo! Photos Got holiday prints? See all the ways to get quality prints in your = hands ASAP. ------=_NextPart_000_02D6_01C61756.602A0270 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
The questions you ask are not = easy to=20 answer.
However, the answers are not = relevant to=20 you 
unless you can get a licensed = copy of=20 Macsyma. Can you?
RJF
 
----- Original Message -----
From:=20 Nguyen=20 Huong
Sent: Wednesday, January 11, = 2006 10:37=20 PM
Subject: [Maxima] Compare = Maxima and=20 Macsyma

 Hello

I want to work with Maxima = now. I know=20 that Maxima is based on DOE Macsyma in 1982. And I consider two=20 questions:

1) What is the differences between Maxima and = Macsyma=20 ?

2)What is any advantage of Maxima comparing to = Macsyma?

If=20 anybody know any document about that or if you have any experience can = share,=20 please let me know. Thanks a lot.

Nguyen,


Yahoo! Photos
Got holiday prints? See=20 all the ways to get quality prints in your hands=20 ASAP. ------=_NextPart_000_02D6_01C61756.602A0270-- From robert.dodier at gmail.com Thu Jan 12 11:35:03 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 12 Jan 2006 10:35:03 -0700 Subject: [Maxima] another batch/pipe question... In-Reply-To: <20060112114619.A11769@rio> References: <20060112114619.A11769@rio> Message-ID: hello steve, > This doesn't work with Maxima 5.9.1; > instead the session hangs waiting for input, like this: > 2 2 2 2 > Is (z + r2 - 2 r2 + 1) (z + r2 + 2 r2 + 1) > positive or negative? > > Even in 5.9.0, batch("...") gave the "wrong" behavior; > only the pipe worked, and now > that fails too. > > Is there a workaround? asksign eventually calls RETRIEVE, which reads *QUERY-IO*, which is a synonym stream for *TERMINAL-IO*. so i guess the reason that maxima < input.mac doesn't work is that the file input stream is different from *QUERY-IO*. (i don't know how it could have worked in the past.) you might try cat input.mac | maxima , i believe that hides the fact that the input is coming from a file; that might make the input come through *TERMINAL-IO*. just a guess -- i didn't try it. a larger question is whether RETRIEVE should read *QUERY-IO*. at the moment i'm not seeing a motivation to read a stream other than the one the input is coming from. a still larger question is whether asksign should be invoked in a noninteractive mode. i believe the answer is no. i don't have any replacement yet, though. sorry i can't be more helpful, robert dodier From raymond.toy at ericsson.com Thu Jan 12 12:23:45 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Thu, 12 Jan 2006 13:23:45 -0500 Subject: [Maxima] another batch/pipe question... In-Reply-To: (Robert Dodier's message of "Thu, 12 Jan 2006 10:35:03 -0700") References: <20060112114619.A11769@rio> Message-ID: >>>>> "Robert" == Robert Dodier writes: Robert> asksign eventually calls RETRIEVE, which reads *QUERY-IO*, Robert> which is a synonym stream for *TERMINAL-IO*. Robert> so i guess the reason that maxima < input.mac Robert> doesn't work is that the file input stream is different from *QUERY-IO*. Robert> (i don't know how it could have worked in the past.) Robert> you might try cat input.mac | maxima , Robert> i believe that hides the fact that the input is coming from a file; Robert> that might make the input come through *TERMINAL-IO*. Robert> just a guess -- i didn't try it. Robert> a larger question is whether RETRIEVE should read *QUERY-IO*. Robert> at the moment i'm not seeing a motivation to read a stream other Robert> than the one the input is coming from. Robert> a still larger question is whether asksign should be invoked in Robert> a noninteractive mode. i believe the answer is no. i don't have Robert> any replacement yet, though. However, when creating new tests for the testsuite, I sometimes forget to put an appropriate assume somewhere, and then the testsuite just stops running at some random point, waiting for input. I know this used to work (pre 5.6?) and you could answer some of the queries. There used to be a prompt, and you could enter the answer. No there's nothing. I've gotten used to this finally, but it's really annoying. Ray From steve at horne.homelinux.net Thu Jan 12 16:49:43 2006 From: steve at horne.homelinux.net (steve at horne.homelinux.net) Date: Thu, 12 Jan 2006 17:49:43 -0500 Subject: [Maxima] another batch/pipe question... input.mac | maxima fails... In-Reply-To: ; from raymond.toy@ericsson.com on Thu, Jan 12, 2006 at 01:23:45PM -0500 References: <20060112114619.A11769@rio> Message-ID: <20060112174943.A12149@rio> Robert, Ray, thanks for your help... I tried input.mac | maxima, plus variants of maxima <&n a16_1.mc for various n; none did the right thing... I would argue that the current behavior is broken, in that it violates a basic unix rule -- read from standard input, write to standard output - There could be good reasons for violating the rule -- maybe for some applications where maxima is used as an engine, interactively, from another application -- but I'd argue that there should exist _some_ mechanism to enforce standard unix behavior. > Robert> (i don't know how it could have worked in the past.) I used this -- when it worked -- in a consulting job, where the deliverables were not only some answers, but functional code to generate the answers... it was straightforward for the customer to tweak the files to customize the calculation, without having to really know how to use maxima. I recently tried to recycle some of the files (you know how consulting works -- write once, sell many) and became stuck... > Robert> a still larger question is whether asksign should be invoked in > Robert> a noninteractive mode. i believe the answer is no. i don't have > Robert> any replacement yet, though. Thee may be arguments in favor of either side of this question -- but the current situation seems uniquely perverse. In the meantime I'll try "assume"ing .... Thanks, Steve On Thu, Jan 12, 2006 at 01:23:45PM -0500, Raymond Toy wrote: > >>>>> "Robert" == Robert Dodier writes: > > Robert> asksign eventually calls RETRIEVE, which reads *QUERY-IO*, > Robert> which is a synonym stream for *TERMINAL-IO*. > Robert> so i guess the reason that maxima < input.mac > Robert> doesn't work is that the file input stream is different from *QUERY-IO*. > Robert> (i don't know how it could have worked in the past.) > > Robert> you might try cat input.mac | maxima , > Robert> i believe that hides the fact that the input is coming from a file; > Robert> that might make the input come through *TERMINAL-IO*. > Robert> just a guess -- i didn't try it. > > Robert> a larger question is whether RETRIEVE should read *QUERY-IO*. > Robert> at the moment i'm not seeing a motivation to read a stream other > Robert> than the one the input is coming from. > > Robert> a still larger question is whether asksign should be invoked in > Robert> a noninteractive mode. i believe the answer is no. i don't have > Robert> any replacement yet, though. > > However, when creating new tests for the testsuite, I sometimes forget > to put an appropriate assume somewhere, and then the testsuite just > stops running at some random point, waiting for input. I know this > used to work (pre 5.6?) and you could answer some of the queries. > There used to be a prompt, and you could enter the answer. No there's > nothing. > > I've gotten used to this finally, but it's really annoying. > > Ray > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima From robert.dodier at gmail.com Thu Jan 12 14:02:59 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 12 Jan 2006 13:02:59 -0700 Subject: [Maxima] another batch/pipe question... input.mac | maxima fails... In-Reply-To: <20060112174943.A12149@rio> References: <20060112114619.A11769@rio> <20060112174943.A12149@rio> Message-ID: hi steve, > Thee may be arguments in favor of either side of this question -- > but the current situation seems uniquely perverse. ha. if only this situation were unique. you can try replacing the *QUERY-IO* in RETRIEVE (src/macsys.lisp) with *STANDARD-INPUT*. that probably means either rebuilding maxima (and shipping the rebuilt image) or loading a batch file. dunno if that's workable for you. also i don't know if this modification goofs up normal operation of asksign or batch files. hth robert dodier From RGloeckner at dki.tu-darmstadt.de Thu Jan 12 14:14:57 2006 From: RGloeckner at dki.tu-darmstadt.de (Gloeckner, Robert) Date: Thu, 12 Jan 2006 21:14:57 +0100 Subject: [Maxima] German introduction to maxima Message-ID: hello, i have translated maxima introductin from r. h. rand into german. it is a first attempt. please give me feedback. http://130.83.61.160/~robert/Maxima-Einfuehrung.pdf regards, robert From fateman at cs.berkeley.edu Thu Jan 12 15:33:03 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Thu, 12 Jan 2006 13:33:03 -0800 Subject: [Maxima] Compare Maxima and Macsyma In-Reply-To: <20060112203049.73480.qmail@web60323.mail.yahoo.com> References: <20060112203049.73480.qmail@web60323.mail.yahoo.com> Message-ID: <43C6CB0F.2060609@cs.berkeley.edu> This is a multi-part message in MIME format. --------------090907010400050801060503 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit The comparison is not meaningful then. if the ranking is BEST WORST Macsyma X Y Z ............. Then if the ranking is Macsyma Maxima ........ You don't know if the total order is Macsyma X Y Z Maxima or Macsyma Maxima X Y Z or something else. If you tell us what other systems you are comparing it to (X, Y, Z), and what parts of a CAS you need to use, (maybe more about your project), it might be possible to either (a) explain why Maxima is a good choice or (b) choose another system if Maxima is not as good. For example, if all you are doing is very long integer arithmetic, you could use any number of systems. Some are faster than others, but they should all get the right answers. You could then choose Maxima because it gets the job done. RJf Nguyen Huong wrote: > I need the comparison since I want to choose the CAS Maxima for my > project and I need to explain why I choose it among a large number > CAS(s). And I want to show that the capabalities of Maxima is good > enough for my work since it is based on Macsyma - a CAS was rated as > one of the best and most mature CAS(s). > > Richard Fateman wrote: > > > Perhaps you should explain why you need to do this comparison! > (Or why you need help doing it..) > > > You can look at the many pages of online documentation of Macsyma > at http://www.cs.berkeley.edu/~fateman/macsyma/ > and the many pages of onlin e Maxima documentation at sourceforge. > > See if there are differences in the areas of interest to you, or to > the person who is asking you to do this task. > > Both Macsyma and Maxima are (now) written in Common Lisp. > > The main advantage as well as the main difference between > them is this: you can legally get a free copy of Maxima. > > In terms of capabilities, Macsyma is generally but not > entirely a superset of Maxima. > > > > > Nguyen Huong wrote: > >> No, I can not. I want to find some documents in which someone >> compares these two CAS(s) but I did not find any except that >> Macsyma is written in Lisp and Maxima is written in Common Lisp. >> >> Thanks. >> >> Nguyen >> >> Richard Fateman wrote: >> >> The questions you ask are not easy to answer. >> However, the answers are not relevant to you >> unless you can get a licensed copy of Macsyma. Can you? >> RJF >> >> >> ----- Ori ginal Message ----- >> From: Nguyen Huong >> To: maxima at math.utexas.edu >> Sent: Wedne sday, January 11, 2006 10:37 PM >> Subject: [Maxima] Compare Maxima and Macsyma >> >> Hello >> >> I want to work with Maxima now. I know that Maxima is >> based on DOE Macsyma in 1982. And I consider two questions: >> >> 1) What is the differences between Maxima and Macsyma ? >> >> 2)What is any advantage of Maxima comparing to Macsyma? >> >> If anybody know any document about that or if y ou have >> any experience can share, please let me know. Thanks a lot. >> >> Nguyen, >> ------------------------------------------------------------------------ >> Yahoo! Photos >> Got holiday prints? See all the ways >> >> to get quality prints in your hands ASAP. >> >> >> ------------------------------------------------------------------------ >> Yahoo! Photos >> Got holiday prints? See all the ways >> >> to get quality prints in your hands ASAP. > > > ------------------------------------------------------------------------ > Yahoo! Photos > Ring in the New Year with Photo Calendars > . > Add photos, events, holidays, whatever. --------------090907010400050801060503 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit The comparison is not meaningful then. 
if the ranking is

   BEST                                                                        WORST
    Macsyma        X   Y  Z         .............

Then if  the ranking is

    Macsyma     Maxima ........  

You don't know if the total order is

    Macsyma  X Y Z Maxima

or
    Macsyma Maxima  X Y Z  

or something else.

If you tell us what other systems you are comparing it to  (X, Y, Z), and
what parts of a CAS you need to use, (maybe more about your project), it
might be possible to either
 (a) explain why Maxima is a good choice
    or
 (b) choose another system if Maxima is not as good.

For example, if all you are doing is very long integer arithmetic, you
could use any number of systems.  Some are faster than others, but
they should all get the right answers.  You could then choose Maxima
because it gets the job done.

RJf


Nguyen Huong wrote:
I need the comparison since I want to choose the CAS Maxima for my project and I need to explain why I choose it among a large number CAS(s). And I want to show that the capabalities of Maxima is good enough for my work since it is based on Macsyma - a CAS was rated as one of the best and most mature CAS(s).

Richard Fateman <fateman at cs.berkeley.edu> wrote:

Perhaps you should explain why you need to do this comparison!
(Or why you need help doing it..)


You can look at the many pages of online documentation of Macsyma
at http://www.cs.berkeley.edu/~fateman/macsyma/
and the many pages of onlin e Maxima documentation at sourceforge.

See if there are differences in the areas of interest to you, or to
the person who is asking you to do this task.

Both Macsyma and Maxima are (now) written in Common Lisp.

The main advantage as well as the main difference between
them is this: you can legally get a free copy of Maxima.

In terms of capabilities, Macsyma is generally but not
entirely a superset of Maxima.




Nguyen Huong wrote:
No, I can not. I want to find some documents in which someone compares these two CAS(s) but I did not find any except that Macsyma is written in Lisp and Maxima is written in Common Lisp.

Thanks.

Nguyen

Richard Fateman <fateman at cs.berkeley.edu> wrote:
The questions you ask are not easy to answer.
However, the answers are not relevant to you 
unless you can get a licensed copy of Macsyma. Can you?
RJF
 
----- Ori ginal Message -----
Sent: Wedne sday, January 11, 2006 10:37 PM
Subject: [Maxima] Compare Maxima and Macsyma

 Hello

I want to work with Maxima now. I know that Maxima is based on DOE Macsyma in 1982. And I consider two questions:

1) What is the differences between Maxima and Macsyma ?

2)What is any advantage of Maxima comparing to Macsyma?

If anybody know any document about that or if y ou have any experience can share, please let me know. Thanks a lot.

Nguyen,

Yahoo! Photos
Got holiday prints? See all the ways to get quality prints in your hands ASAP.


Yahoo! Photos
Got holiday prints? See all the ways to get quality prints in your hands ASAP.


Yahoo! Photos
Ring in the New Year with Photo Calendars. Add photos, events, holidays, whatever.
--------------090907010400050801060503-- From biomates at telefonica.net Thu Jan 12 15:38:10 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Thu, 12 Jan 2006 22:38:10 +0100 Subject: [Maxima] German introduction to maxima In-Reply-To: References: Message-ID: <1137101890.18311.8.camel@localhost.localdomain> Hi Robert, > > i have translated maxima introductin from r. h. rand into german. > it is a first attempt. please give me feedback. > > http://130.83.61.160/~robert/Maxima-Einfuehrung.pdf If you wish, we could commit the tex source of this document to section maxima/doc/tutorial/de in the cvs, once you think it is ready. Vielen Dank fuer die Uebersetzung ! -- Mario Rodriguez Riotorto www.biomates.net From RGloeckner at dki.tu-darmstadt.de Thu Jan 12 16:10:53 2006 From: RGloeckner at dki.tu-darmstadt.de (Gloeckner, Robert) Date: Thu, 12 Jan 2006 23:10:53 +0100 Subject: [Maxima] German introduction to maxima Message-ID: r. fateman wrote 20060112 10:45 pm: > Pages 21-34 of a 34 page document seem excessive > for reproducing the GPL. I do not know why it needs > to be in there at all, oh. i thought all documentation should be under gpl. > but I suggest you use single-spacing > and a very small typefont if you feel it must be there. done. > Did Richard Rand/ Springer give permission? no. i thought (again) it was only "adapted" and if r. dodier updated it ... how did you handle the other translations? > Also, a clear pointer to the original source (the English > version) seems like a good idea. done. regards, robert From hiperfume at yahoo.com Thu Jan 12 13:30:11 2006 From: hiperfume at yahoo.com (Nguyen Huong) Date: Thu, 12 Jan 2006 11:30:11 -0800 (PST) Subject: [Maxima] Compare Maxima and Macsyma In-Reply-To: <02d901c61799$70704980$210110ac@windsor> Message-ID: <20060112193011.96882.qmail@web60318.mail.yahoo.com> --0-1388389960-1137094211=:95525 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit No, I can not. I want to find some documents in which someone compares these two CAS(s) but I did not find any except that Macsyma is written in Lisp and Maxima is written in Common Lisp. Thanks. Nguyen Richard Fateman wrote: The questions you ask are not easy to answer. However, the answers are not relevant to you unless you can get a licensed copy of Macsyma. Can you? RJF ----- Original Message ----- From: Nguyen Huong To: maxima at math.utexas.edu Sent: Wednesday, January 11, 2006 10:37 PM Subject: [Maxima] Compare Maxima and Macsyma Hello I want to work with Maxima now. I know that Maxima is based on DOE Macsyma in 1982. And I consider two questions: 1) What is the differences between Maxima and Macsyma ? 2)What is any advantage of Maxima comparing to Macsyma? If anybody know any document about that or if you have any experience can share, please let me know. Thanks a lot. Nguyen, --------------------------------- Yahoo! Photos Got holiday prints? See all the ways to get quality prints in your hands ASAP. --------------------------------- Yahoo! Photos Got holiday prints? See all the ways to get quality prints in your hands ASAP. --0-1388389960-1137094211=:95525 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: 8bit
No, I can not. I want to find some documents in which someone compares these two CAS(s) but I did not find any except that Macsyma is written in Lisp and Maxima is written in Common Lisp.

Thanks.

Nguyen

Richard Fateman <fateman at cs.berkeley.edu> wrote:
The questions you ask are not easy to answer.
However, the answers are not relevant to you 
unless you can get a licensed copy of Macsyma. Can you?
RJF
 
----- Original Message -----
Sent: Wednesday, January 11, 2006 10:37 PM
Subject: [Maxima] Compare Maxima and Macsyma

 Hello

I want to work with Maxima now. I know that Maxima is based on DOE Macsyma in 1982. And I consider two questions:

1) What is the differences between Maxima and Macsyma ?

2)What is any advantage of Maxima comparing to Macsyma?

If anybody know any document about that or if you have any experience can share, please let me know. Thanks a lot.

Nguyen,

Yahoo! Photos
Got holiday prints? See all the ways to get quality prints in your hands ASAP.


Yahoo! Photos
Got holiday prints? See all the ways to get quality prints in your hands ASAP. --0-1388389960-1137094211=:95525-- From hiperfume at yahoo.com Thu Jan 12 13:39:26 2006 From: hiperfume at yahoo.com (Nguyen Huong) Date: Thu, 12 Jan 2006 11:39:26 -0800 (PST) Subject: [Maxima] Compare Maxima and Macsyma In-Reply-To: <02d901c61799$70704980$210110ac@windsor> Message-ID: <20060112193926.22523.qmail@web60320.mail.yahoo.com> --0-432557197-1137094766=:19354 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit I do not need a detailed comparison, I need some (two or three points) different points between them. And since Maxima is continuously maintained based on original Macsyma(1982), so whether it has any advantage comparing to Macsyma. Thanks. Nguyen, Richard Fateman wrote: The questions you ask are not easy to answer. However, the answers are not relevant to you unless you can get a licensed copy of Macsyma. Can you? RJF ----- Original Message ----- From: Nguyen Huong To: maxima at math.utexas.edu Sent: Wednesday, January 11, 2006 10:37 PM Subject: [Maxima] Compare Maxima and Macsyma Hello I want to work with Maxima now. I know that Maxima is based on DOE Macsyma in 1982. And I consider two questions: 1) What is the differences between Maxima and Macsyma ? 2)What is any advantage of Maxima comparing to Macsyma? If anybody know any document about that or if you have any experience can share, please let me know. Thanks a lot. Nguyen, --------------------------------- Yahoo! Photos Got holiday prints? See all the ways to get quality prints in your hands ASAP. --------------------------------- Yahoo! Photos ? Showcase holiday pictures in hardcover Photo Books. You design it and we?ll bind it! --0-432557197-1137094766=:19354 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: 8bit
I do not need a detailed comparison, I need some (two or three points) different points between them. And since Maxima is continuously maintained based on original Macsyma(1982), so whether it has any advantage comparing to Macsyma.

Thanks.

Nguyen,

Richard Fateman <fateman at cs.berkeley.edu> wrote:
The questions you ask are not easy to answer.
However, the answers are not relevant to you 
unless you can get a licensed copy of Macsyma. Can you?
RJF
 
----- Original Message -----
Sent: Wednesday, January 11, 2006 10:37 PM
Subject: [Maxima] Compare Maxima and Macsyma

 Hello

I want to work with Maxima now. I know that Maxima is based on DOE Macsyma in 1982. And I consider two questions:

1) What is the differences between Maxima and Macsyma ?

2)What is any advantage of Maxima comparing to Macsyma?

If anybody know any document about that or if you have any experience can share, please let me know. Thanks a lot.

Nguyen,

Yahoo! Photos
Got holiday prints? See all the ways to get quality prints in your hands ASAP.


Yahoo! Photos ? Showcase holiday pictures in hardcover
Photo Books. You design it and we?ll bind it! --0-432557197-1137094766=:19354-- From robert.dodier at gmail.com Thu Jan 12 17:07:51 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 12 Jan 2006 16:07:51 -0700 Subject: [Maxima] German introduction to maxima In-Reply-To: References: Message-ID: Hello, About the "Introduction to Maxima" by Richard Rand (http://maxima.sourceforge.net/docs/intromax/intromax.html), its earliest appearance in Maxima (July 2000) appears to be Maxima 5.5 beta (http://sourceforge.net/project/showfiles.php?group_id=4933) It apparently was committed to cvs by Bill Schelter shortly thereafter (http://cvs.sf.net/viewcvs.py/maxima/maxima/doc/intromax/intromax.ltx?view=log) In that revision, it appears to have been prepared by one Nelson L. Dias. (I am pretty sure it was committed to a cvs repository at U Texas which was later imported into Sourceforge.) I did some clean up and updating in August 2005. There isn't a license notice in the document itself. Also, I haven't found any correspondence between Rand, Dias, and Schelter. Richard Rand appears to be at Cornell U (http://tam.cornell.edu/Rand.html). There is an affiliation and email address for Nelson Dias in the document. If Richard Rand ever granted permission to include the document in Maxima, I can't find it now. If we don't uncover evidence of such within a day or so, I will try to email him about it. best, Robert Dodier From david.billinghurst at comalco.riotinto.com.au Thu Jan 12 06:53:08 2006 From: david.billinghurst at comalco.riotinto.com.au (Billinghurst, David CALCRTS) Date: Thu, 12 Jan 2006 23:53:08 +1100 Subject: [Maxima] numerical evaluation of 2F1 Message-ID: <026DCC31AB859648A6F16C0E5CD2580D308E93@calttsv025.cal.riotinto.org> This is a multi-part message in MIME format. ------_=_NextPart_001_01C61777.235A6841 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable > From: Robert Dodier > > i wonder if anyone has some advice about the numerical > evaluation of the hypergeometric function 2F1. > i'm willing to consider pretty much any method > (even if not particularly fast or accurate), since the > alternative is numerical evaluation of an integral. > that's not the end of the world, but i'd rather avoid it. I have been writing some code for numerical evaluation of 1F1 and have a reference for the general case pFq. There are three=20 papers and Fortran code by Nadin, Perger and Bhalla. See http://www.ece.mtu.edu/faculty/wfp/research/comp_math.html The evaluation is by direct summation of the defining series, although for 2F1 with |z|>1 they use the transformation in Abramowitz and Stegun 15.3.7 to map z to 1/z. I thought of translating the Fortran code, but most of it is=20 routines for extended precision complex operations. I have=20 just (tonight) produced some "working" 1F1 code (attached). It has survived half an hour of testing. Now I need to work out how to integrate it into maxima. (%i1) load("complexfloat.lisp"); (%o1) complexfloat.lisp (%i2) load("1f1.lisp"); (%o2) 1f1.lisp (%i3) ?onefone(-1,0.6,0.4); (%o3) .3333333333333333 (%i4) ?onefone(1,1,9); (%o4) 8103.083927575384 (%i5) exp(9.0); (%o5) 8103.083927575384 (%i6) ?onefone(1+%i,1+%i,10*%i); (%o6) - .5440211108893698 %i - .8390715290764524 (%i7) cos(10.0)+%i*sin(10.0); (%o7) - .5440211108893698 %i - .8390715290764524 (%i8) a:-15+55*%i; (%o8) 55 %i - 15 (%i9) b:20+25*%i; (%o9) 25 %i + 20 (%i10) ?onefone(a,b,-100+150*%i); (%o10) - 4.926004329884517E-10 %i - 6.927737354370276E-10 NOTICE This e-mail and any attachments are private and confidential and may = contain privileged information. If you are not an authorised recipient, = the copying or distribution of this e-mail and any attachments is = prohibited and you must not read, print or act in reliance on this = e-mail or attachments. This notice should not be removed. ------_=_NextPart_001_01C61777.235A6841 Content-Type: application/octet-stream; name="complexfloat.lisp" Content-Transfer-Encoding: base64 Content-Description: complexfloat.lisp Content-Disposition: attachment; filename="complexfloat.lisp" OzsgY29tcGxleGZsb2F0Lmxpc3AKOzsKOzsgUm91dGluZXMgZm9yIGV4dGVuZGVkIHByZWNpc2lv biBjb21wbGV4IGZsb2F0aW5nIHBvaW50IG51bWJlcnMKOzsgU2VlIGZsb2F0Lmxpc3AKCjs7IENv bXBsZXggRlAgbnVtYmVyIHggPSB4ciArICVpKnhpIGlzIHJlcHJlc2VudGVkIGJ5IChsaXN0IHhy IHhpKQoKKGluLXBhY2thZ2UgOm1heGltYSkKCjs7IGRlZmluZSB0aGUgZGF0YSBzdHJ1Y3R1cmUg Zm9yIGEgY29tcGxleCBGUCBudW1iZXIKOzsgQ29tcGxleCBGUCBudW1iZXIgeCA9IHhyICsgJWkq eGkgaXMgcmVwcmVzZW50ZWQgYnkgKGxpc3QgeHIgeGkpCihkZWZ1biBmcHotcmUgKHopIChjYXIg eikpCihkZWZ1biBmcHotaW0gKHopIChjYWRyIHopKQooZGVmdW4gZnB6ICh4IHkpIGAoLHggLHkp KQoKOzsgeiA9IHggKyB5CihkZWZ1biBmcHorICh4IHkpCiAgKGZweiAoZnBwbHVzIChmcHotcmUg eCkgKGZwei1yZSB5KSkgCiAgICAgICAoZnBwbHVzIChmcHotaW0geCkgKGZwei1pbSB5KSkpKQoK OzsgeiA9IHggLSB5CihkZWZ1biBmcHotICh4IHkpCiAgKGZweiAoZnBkaWZmZXJlbmNlIChmcHot cmUgeCkgKGZwei1yZSB5KSkKICAgICAgIChmcGRpZmZlcmVuY2UgKGZwei1pbSB4KSAoZnB6LWlt IHkpKSkpCgo7OyB6ID0geCAqIHkgICBGSVhNRTogUHJvYmFibHkgd2FudCBhIGd1YXJkIGRpZ2l0 IG9yIHR3bwooZGVmdW4gZnB6KiAoeCB5KQogIChmcHogKGZwZGlmZmVyZW5jZSAoZnB0aW1lcyog KGZwei1yZSB4KSAoZnB6LXJlIHkpKSAKCQkgICAgIChmcHRpbWVzKiAoZnB6LWltIHgpIChmcHot aW0geSkpKQogICAgICAgKGZwcGx1cyAoZnB0aW1lcyogKGZwei1yZSB4KSAoZnB6LWltIHkpKQoJ ICAgICAgIChmcHRpbWVzKiAoZnB6LWltIHgpIChmcHotcmUgeSkpKSkpCgo7OyB6ID0geCAvIHkg IEZJWE1FOiBQcm9iYWJseSB3YW50IGEgZ3VhcmQgZGlnaXQgb3IgdHdvCihkZWZ1biBmcHovICh4 IHkpCiAgKGNvbmQgKChhbmQgKGVxdWFsIChmcHotcmUgeSkgJygwIDApKSAoZXF1YWwgKGZwei1p bSB5KSAnKDAgMCkpKQoJIChtZXJyb3IgImNvbXBsZXggZGl2aXNpb24gYnkgemVybyIpKQoJKChl cXVhbCAoZnB6LWltIHkpICcoMCAwKSkKCSAoZnB6IChmcHF1b3RpZW50IChmcHotcmUgeCkgKGZw ei1yZSB5KSkgCgkgICAgICAoZnBxdW90aWVudCAoZnB6LWltIHgpIChmcHotcmUgeSkpKSkKCSgo ZXF1YWwgKGZwei1yZSB5KSAnKDAgMCkpCgkgKGZweiAoZnBxdW90aWVudCAoZnB6LWltIHgpIChm cHotaW0geSkpIAoJICAgICAgIChmcHF1b3RpZW50IChmcG1pbnVzIChmcHotcmUgeCkpIChmcHot aW0geSkpKSkKCSh0IChsZXQKCSAgICAgKChkZW5vbWluYXRvciAoZnBwbHVzIChmcHRpbWVzKiAo ZnB6LXJlIHkpIChmcHotcmUgeSkpCgkJCQkgICAoZnB0aW1lcyogKGZwei1pbSB5KSAoZnB6LWlt IHkpKSkpCgkgICAgICAocmUtbnVtZXJhdG9yIChmcHBsdXMgKGZwdGltZXMqIChmcHotcmUgeCkg KGZwei1yZSB5KSkKCQkJCSAgICAoZnB0aW1lcyogKGZwei1pbSB4KSAoZnB6LWltIHkpKSkpCgkg ICAgICAoaW0tbnVtZXJhdG9yIChmcGRpZmZlcmVuY2UgKGZwdGltZXMqIChmcHotaW0geCkgKGZw ei1yZSB5KSkKCQkJCQkgIChmcHRpbWVzKiAoZnB6LXJlIHgpIChmcHotaW0geSkpKSkpCgkgICAg IChmcHogKGZwcXVvdGllbnQgcmUtbnVtZXJhdG9yIGRlbm9taW5hdG9yKQoJCSAgKGZwcXVvdGll bnQgaW0tbnVtZXJhdG9yIGRlbm9taW5hdG9yKSkpKSkpCgo7OyB6ID0gYWJzKHgpIGZvciBjb21w bGV4IEZQIHggCjs7IE5vdGU6IGZwcm9vdCB0YWtlcyBhIGJpZ2Zsb2F0CihkZWZ1biBmcHphYnMg KHgpCiAgKGZwcm9vdCAoYmNvbnMgKGZwcGx1cyAoZnB0aW1lcyogKGZwei1yZSB4KSAoZnB6LXJl IHgpKSAKCQkJIChmcHRpbWVzKiAoZnB6LWltIHgpIChmcHotaW0geCkpKSkgCgkgIDIpKQoKCjs7 IFNvbWUgdXRpbGl0aWVzIGZvciB0ZXN0aW5nCgo7OyBDb252ZXJ0IGEgbWF4aW1hIG51bWJlciB0 byBjb21wbGV4IEZQCihkZWZ1biBmbG9hdHRvZnB6ICh6KQogIChsZXQgKCgkZmxvYXQyYmYgdCkp CiAgICAoZnB6IChpbnRvZnAgKCRyZWFscGFydCB6KSkgKGludG9mcCAoJGltYWdwYXJ0IHopKSkp KQoKOzsgQ29udmVydCBGUCB0byBmbG9hdAooZGVmdW4gZnB0b2Zsb2F0ICh4KSAoZnAyZmxvIChi Y29ucyB4KSkpCgo7OyBDb252ZXJ0IEZQIGNvbXBsZXggdG8gbWF4aW1hIGZsb2F0Cjs7IFJldHVy biByZWFsIG9yIGltCihkZWZ1biBmcHp0b2Zsb2F0ICh6KQogIChjb25kICgoZXF1YWwgKGZwei1p bSB6KSAnKDAgMCkpCgkgICAoZnB0b2Zsb2F0IChmcHotcmUgeikpKQoJICgoZXF1YWwgKGZwei1y ZSB6KSAnKDAgMCkpCgkgICBgKChtdGltZXMgc2ltcCkgLChmcHRvZmxvYXQgKGZwei1pbSB6KSkg JCVpKSkKICAgICAgICAgKHQgYCgobXBsdXMgc2ltcCkgLChmcHRvZmxvYXQgKGZwei1yZSB6KSkg CgkgICAgICAoKG10aW1lcyBzaW1wKSAsKGZwdG9mbG9hdCAoZnB6LWltIHopKSAkJWkpKSkpKQoK OzsgQ29udmVydCBGUCBjb21wbGV4IHRvIG1heGltYSBjb21wbGV4IGJpZ2Zsb2F0CihkZWZ1biBm cHp0b2JpZ2Zsb2F0ICh6KQogIChjb25kICgoZXF1YWwgKGZwei1pbSB6KSAnKDAgMCkpCgkgICAo YmNvbnMgKGZwei1yZSB6KSkpCgkgKChlcXVhbCAoZnB6LXJlIHopICcoMCAwKSkKCSAgIGAoKG10 aW1lcyBzaW1wKSAsKGJjb25zIChmcHotaW0geikpICQlaSkpCiAgICAgICAgICh0IGAoKG1wbHVz IHNpbXApICwoYmNvbnMgKGZwei1yZSB6KSkgCgkgICAgICAoKG10aW1lcyBzaW1wKSAsKGJjb25z IChmcHotaW0geikpICQlaSkpKSkpCg== ------_=_NextPart_001_01C61777.235A6841 Content-Type: application/octet-stream; name="1f1.lisp" Content-Transfer-Encoding: base64 Content-Description: 1f1.lisp Content-Disposition: attachment; filename="1f1.lisp" OzsgMWYxLmxpc3AKOzsKOzsgIENvbmZsdWVudCBoeXBlcmdlb21ldHJpYyBmdW5jdGlvbiBNKGE7 Yjt6KSBvciAxRjEoYTtiO3opCjs7Cjs7ICBUaGUgY29uZmx1ZW50IGh5cGVyZ2VvbWV0cmljIGZ1 bmN0aW9uIGlzIHRoZSBzb2x1dGlvbiB0bwo7OyAgdGhlIGRpZmZlcmVudGlhbCBlcXVhdGlvbjoK OzsKOzsgICAgeiBNIihhO2I7eikgKyAoYi16KSBNJyhhO2I7eikgLSBhIE0oYTtiO3opID0gMCAg ICAoQSZTIDEzLjEuMSkKOzsKOzsgIEV2YWx1YXRlIGl0IGJ5IGRpcmVjdCBzdW1tYXRpb24gb2Yg QSZTIDEzLjEuMgo7Owo7OyAgICAgICAgICAgICAgICAgIGEgeiAgICAoYSlfMiB6XjIgICAgICAg ICAgKGEpX24gel5uCjs7ICAgTShhO2I7eikgPSAxICsgLS0tICsgIC0tLS0tLS0tLSAgKyAuLi4g KyAtLS0tLS0tLS0gKyAuLi4KOzsgICAgICAgICAgICAgICAgICAgYiAgICAgKGIpXzIgMiEgICAg ICAgICAgIChiKV9uIG4hCjs7Cjs7ICAgd2hlcmUgKGEpX24gaXMgUG9jaGhhbW1lciBzeW1ib2wg KEEmUyA2LjEuMjIpCjs7ICAgICAgICAgKGEpXzAgPSAxCjs7ICAgICAgICAgKGEpX24gPSBhKGEr MSkoYSsyKS4uLihhK24tMSksICAgCjs7Cjs7ICAgRklYTUU6ICAxRjEgaGFzIHNpbmd1bGFyaXRp ZXMgd2hlbiBiIGlzIGEgbmVnYXRpdmUgaW50ZWdlcgo7OyAgICAgICAgICAgVGhlc2UgYXJlIG5v dCBjaGVja2VkIGFuZCBhbiBlcnJvciB3aWxsIG9jY3VyLiAKCihpbi1wYWNrYWdlIDptYXhpbWEp Cgo7OyBDb25mbHVlbnQgaHlwZXJnZW9tZXRyaWMgZnVuY3Rpb24gTShhO2I7eikgb3IgMUYxKGE7 Yjt6KQo7OyBBcmd1bWVudHMgYXJlIChjb21wbGV4KSBtYXhpbWEgbnVtYmVycyBhbmQgYXJlIG5v dCBjaGVja2VkLiAgCjs7IFJlc3VsdCBpcyBhIChjb21wbGV4KSBtYXhpbWEgZmxvYXQgYW5kIHNo b3VsZCBiZSBhY2N1cmF0ZQo7OyB0byBtYWNoaW5lIHByZWNpc2lvbi4KKGRlZnVuIG9uZWZvbmUg KGEgYiB6KQogIChsZXQgKChmcHByZWMgbWFjaGluZS1tYW50aXNzYS1wcmVjaXNpb24pKQogICAg KCRmbG9hdCAob25lZm9uZWJmIGEgYiB6KSkpKQoKOzsgQ29uZmx1ZW50IGh5cGVyZ2VvbWV0cmlj IGZ1bmN0aW9uIE0oYTtiO3opIG9yIDFGMShhO2I7eikKOzsgQXJndW1lbnRzIGFyZSBjb21wbGV4 IG1heGltYSBudW1iZXJzIGFuZCBhcmUgbm90IGNoZWNrZWQuCjs7IFJlc3VsdCBpcyBhIGNvbXBs ZXggbWF4aW1hIGJpZ2Zsb2F0IGFuZCBzaG91bGQgYmUgYWNjdXJhdGUKOzsgdG8gZnBwcmVjIGJp dHMgb2YgcHJlY2lzaW9uLgooZGVmdW4gb25lZm9uZWJmIChhIGIgeikKICAobGV0ICggKG9sZC1m cHByZWMgZnBwcmVjKSByZXN1bHQgb25lLWYtb25lLWZwIChiaXRzLWFjY3VyYWN5IDApKQogICAg OzsgS2VlcCBpbmNyZWFzaW5nIHByZWNpc2lvbiB1bnRpbCBhbnN3ZXIgaXMgc3VmZmljaWVudGx5 IGFjY3VyYXRlCiAgICAoZG8gKChmcHByZWMgKCsgb2xkLWZwcHJlYyA5KSAoKyBmcHByZWMgNjQp KSkKCSgoPiBiaXRzLWFjY3VyYWN5IG9sZC1mcHByZWMpKQoJKG11bHRpcGxlLXZhbHVlLXNldHEg CgkgIChvbmUtZi1vbmUgYml0cy1hY2N1cmFjeSkKCSAgKG9uZS1mLW9uZS1mcCAoZmxvYXR0b2Zw eiBhKSAoZmxvYXR0b2ZweiBiKShmbG9hdHRvZnB6IHopKSkKCTs7IFJlZm9ybWF0IGFzIGJpZ2Zs b2F0IHRvIGNhcHR1cmUgY3VycmVudCBmcHByZWMKCShzZXRxIG9uZS1mLW9uZSAoZnB6dG9iaWdm bG9hdCBvbmUtZi1vbmUpKSkKICAgIChzZXRxIGZwcHJlYyBvbGQtZnBwcmVjKQogICAgKCRiZmxv YXQgb25lLWYtb25lKSkpCgo7OyBDb25mbHVlbnQgaHlwZXJnZW9tZXRyaWMgZnVuY3Rpb24gTShh O2I7eikgb3IgMUYxKGE7Yjt6KQo7OyBieSBkaXJlY3Qgc3VtbWF0aW9uIG9mIEEmUyAxMy4xLjIK OzsKOzsgQXJndW1lbnRzIGFyZSBjb21wbGV4IEZQIG51bWJlcnMgcmVwcmVzZW50ZWQgYXMgbGlz dAo7OyAoIChtYW50aXNzYSBleHBvbmVudCkgKG1hbnRpc3NhIGV4cG9uZW50KSkKOzsKOzsgICAg ICAgICAgICAgICAgICBhIHogICAgKGEpXzIgel4yICAgICAgICAgIChhKV9uIHpebgo7OyAgIE0o YTtiO3opID0gMSArIC0tLSArICAtLS0tLS0tLS0gICsgLi4uICsgLS0tLS0tLS0tICsgLi4uCjs7 ICAgICAgICAgICAgICAgICAgIGIgICAgIChiKV8yIDIhICAgICAgICAgICAoYilfbiBuIQo7Owo7 OyAgIHdoZXJlIChhKV9uID0gYShhKzEpKGErMikuLi4oYStuLTEpLCAgIAo7OyAgICAgICAgIChh KV8wID0gMQo7Owo7OyAgIG50aCBwYXJ0aWFsIHN1bSBzX24gPSBzXyhuLTEpICsgdF9uCjs7ICAg d2l0aAo7OyAgICAgICAgIHRfMSA9IGEgei9iCjs7ICAgICAgICAgdF9uID0gdF8obi0xKSAqIChh K24tMSkqei8oKGIrbi0xKSpuKQo7Owo7OyAgIFRvIHJlZHVjZSBudW1iZXIgb2YgKGNvbXBsZXgp IGRpdmlzaW9ucywgYWNjdW11bGF0ZSAKOzsgICBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIHNl cGFyYXRlbHkuCjs7Cjs7ICAgc19uID0gTl9uIC8gRF9uLAo7Owo7OyAgIERfbiA9IChiKV9uIG4h LCB0aGUgZGVub21pbmF0b3Igb2YgdF9uCjs7ICAgRF8wID0gMQo7OyAgIERfbiA9IERfKG4tMSkg KiAoYituLTEpKm4KOzsKOzsgICBOXzAgPSAxCjs7ICAgTl9uID0gTl8obi0xKSAqIChiK24tMSkq biArIFRfbgo7Owo7OyAgIFRfMCA9IDEKOzsgICBUX24gPSBUXyhuLTEpICogKGErbi0xKSp6Cjs7 Cjs7ICBDYW4gaGF2ZSBzaWduaWZpY2FudCBsb3NzIG9mIHByZWNpc2lvbiBkdWUgdG8gY2FuY2Vs bGF0aW9uIG9mCjs7ICBsYXJnZSB0ZXJtcy4gIEVzdGltYXRlIHRoZSBudW1iZXIgb2YgYml0cyBv ZiBwcmVjaXNpb24gbG9zdAo7OyAgYnkgY29tcGFyaW5nIGV4cG9uZW50cyBvZiBsYXJnZXN0IHBh cnRpYWwgc3VtIHNfbiBhbmQgZmluYWwgc19uLgo7Owo7OyAgRm9yIGV4YW1wbGUsIGlmIGEgYW5k IGIgYXJlIGVxdWFsIGFuZCB6ID0gMCArIDE0MCBpIHRoZW4gCjs7ICBpbnRlcm1lZGlhdGUgdGVy bXMgYXJlIG9mIG9yZGVyIDEwXjYwIH4gMl4yMDAgYnV0IHJlc3VsdCBpcyAKOzsgIGV4cCgxNDAg aSkgPSBjb3MoMTQwKSArIGkgc2luKDE0MCkgfiBPKDEpCjs7Cjs7ICBFeHBvbmVudCBvZiB0X24g fiAoZXhwb25lbnQgb2YgVF9uKSAtIChleHBvbmVudCBvZiBEX24pCjs7ICBDb21wbGV4IG51bWJl cnMgYXJlIGEgY29tcGxpY2F0aW9uLiAgSnVzdCB0YWtlIGxhcmdlciBvZiB0d28gdmFsdWVzCjs7 CihkZWZ1biBvbmUtZi1vbmUtZnAgKGEgYiB6KQogIChwcm9nCiAgICAoKHN1bS1udW1lcmF0b3Ig ICAoZmxvYXR0b2ZweiAxKSkKICAgICAoc3VtLWRlbm9taW5hdG9yIChmbG9hdHRvZnB6IDEpKQog ICAgICh0ZXJtLW51bWVyYXRvciAgKGZsb2F0dG9mcHogMSkpCiAgICAgKHN1bS1leHBvbmVudCAw KSA7OyBUaGUgZmlyc3QgdGVybSBpcyAxCiAgICAgKG1heC1zdW0tZXhwb25lbnQgMCkKICAgICBi aXRzLWFjY3VyYWN5IDs7IGVzdGltYXRlIG9mIG51bWJlciBvZiBhY2N1cmFjeSBiaXRzIGluIHJl c3VsdAogICAgIGF0ZXJtIGJ0ZXJtIGFuc3dlciBuLTEtZnAgKQogICAgKGRvICgobiAxIChmKyBu IDEpKSkKCTs7IEl0ZXJhdGUgdW50aWwgdGhlIGxhc3QgdGVybSBpcyBpbnNpZ25pZmljYW50IHdo ZW4gY29tcGFyZWQgCgk7OyB0byB0aGUgbGFyZ2VzdCBwYXJ0aWFsIHN1bQoJKCg+ICgtIG1heC1z dW0tZXhwb25lbnQgZnBwcmVjKSA7OyBMZWFzdCBzaWduaWZpY2FudCBiaXQgaW4gcGFydGlhbCBz dW0KCSAgICgtIChmcHotZXhwb25lbnQgdGVybS1udW1lcmF0b3IpIChmcHotZXhwb25lbnQgc3Vt LWRlbm9taW5hdG9yKSAxKSkpCgkoc2V0cSBuLTEtZnAgKGZsb2F0dG9mcHogKGYtIG4gMSkpKQoJ KHNldHEgYnRlcm0gKGZweiogKGZsb2F0dG9mcHogbikgKGZweisgYiBuLTEtZnApKSkKCShzZXRx IHN1bS1kZW5vbWluYXRvciAoZnB6KiBzdW0tZGVub21pbmF0b3IgYnRlcm0pKQoJKHNldHEgc3Vt LW51bWVyYXRvciAoZnB6KiBzdW0tbnVtZXJhdG9yIGJ0ZXJtKSkKCShzZXRxIGF0ZXJtIChmcHoq IHogKGZweisgYSBuLTEtZnApKSkKCShzZXRxIHRlcm0tbnVtZXJhdG9yIChmcHoqIGF0ZXJtIHRl cm0tbnVtZXJhdG9yKSkKCShzZXRxIHN1bS1udW1lcmF0b3IgKGZweisgc3VtLW51bWVyYXRvciB0 ZXJtLW51bWVyYXRvcikpCgkoc2V0cSBzdW0tZXhwb25lbnQgKC0gKGZwei1leHBvbmVudCBzdW0t bnVtZXJhdG9yKQoJCQkgICAgICAoZnB6LWV4cG9uZW50IHN1bS1kZW5vbWluYXRvcikpKQoJKHNl dHEgbWF4LXN1bS1leHBvbmVudCAobWF4IG1heC1zdW0tZXhwb25lbnQgc3VtLWV4cG9uZW50KSkp CiAgICAoc2V0cSBhbnN3ZXIgKGZwei8gc3VtLW51bWVyYXRvciBzdW0tZGVub21pbmF0b3IpKQog ICAgOzsgVGhlIGFjY3VyYWN5IGVzdGltYXRlIGNhbiBiZSBhYm91dCB0aHJlZSBiaXRzIHRvbyBi aWcKICAgIChzZXRxIGJpdHMtYWNjdXJhY3kKCSAgKG1heCAwICgtIGZwcHJlYyAoLSBtYXgtc3Vt LWV4cG9uZW50IChmcHotZXhwb25lbnQgYW5zd2VyKSAtMykpKSkKICAgIChyZXR1cm4gKHZhbHVl cyBhbnN3ZXIgYml0cy1hY2N1cmFjeSkpKSkKCjs7IEV4cG9uZW50IG9mIGFuIEZQIG51bWJlci4g IFJldHVybiBsYXJnZSAtdmUgbnVtYmVyIGlmIHplcm8KKGRlZnVuIGZwLWV4cG9uZW50ICh4KSAK ICAoaWYgKGVxdWFsIChjYXIgeCkgMCkgbW9zdC1uZWdhdGl2ZS1maXhudW0gKGNhZHIgeCkpKQoK OzsgR2l2ZW4gYSBjb21wbGV4IEZQIG51bWJlciwgcmV0dXJuIGxhcmdlciBleHBvbmVudAooZGVm dW4gZnB6LWV4cG9uZW50ICh6KQogIChtYXggKGZwLWV4cG9uZW50IChmcHotcmUgeikpIChmcC1l eHBvbmVudCAoZnB6LWltIHopKSkpIAo= ------_=_NextPart_001_01C61777.235A6841-- From robert.dodier at gmail.com Fri Jan 13 01:01:15 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 13 Jan 2006 00:01:15 -0700 Subject: [Maxima] solving strategy, getting float-numbers? In-Reply-To: References: Message-ID: hi robert, > /* k1 k2 k3 k4 k7 v1a v2a v2b v3 v5a */ > k4 : part( part( solve( ev( v6), k4), 1), 2); this step (in the symbol solving stuff) seem to take forever. v6 is a very large expression. i don't see that there is anything wrong with it, except its size. > for f in ['k1, 'k2, 'k3, 'k4, 'k5, 'k6, 'k7] do print( f = ev( f, numer)); try this instead: for f in ['k1, 'k2, 'k3, 'k4, 'k5, 'k6, 'k7] do block ([g: ev(f)], print(f=ev(g,numer))); (i.e., cause another evaluation.) for that i get the following: k1 = - 791.5556605291486 k2 = 172.9346332263238 k3 = - 1979.889151322858 k4 = 881.3195572771623 k5 = - 0.0029595779733675 k6 = 0.05 (6.283185307179586 %i + 3.356897122765576) k7 = 1.0580991179958923E-15 maybe the imaginary unit in k6 is due to choosing a complex root at some step of the calculation instead of a real root. i didn't investigate that. hope this helps, robert dodier From fateman at cs.berkeley.edu Fri Jan 13 01:53:51 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Thu, 12 Jan 2006 23:53:51 -0800 Subject: [Maxima] solving strategy, getting float-numbers? References: Message-ID: <030801c61816$81c9f000$210110ac@windsor> if the result of solve is very large, you could try using inpart instead of part. there is also a flag called, I think, keepsolve, which will in fact assign to k4 the value that solve finds. RJF ----- Original Message ----- From: "Robert Dodier" To: "Gloeckner, Robert" Cc: "Maxima List" Sent: Thursday, January 12, 2006 11:01 PM Subject: Re: [Maxima] solving strategy, getting float-numbers? > hi robert, > >> /* k1 k2 k3 k4 k7 v1a v2a v2b v3 v5a */ >> k4 : part( part( solve( ev( v6), k4), 1), 2); > > this step (in the symbol solving stuff) seem to take forever. > v6 is a very large expression. i don't see that there is anything > wrong with it, except its size. > >> for f in ['k1, 'k2, 'k3, 'k4, 'k5, 'k6, 'k7] do print( f = ev( f, >> numer)); > > try this instead: > > for f in ['k1, 'k2, 'k3, 'k4, 'k5, 'k6, 'k7] do block ([g: ev(f)], > print(f=ev(g,numer))); > > (i.e., cause another evaluation.) for that i get the following: > > k1 = - 791.5556605291486 > k2 = 172.9346332263238 > k3 = - 1979.889151322858 > k4 = 881.3195572771623 > k5 = - 0.0029595779733675 > k6 = 0.05 (6.283185307179586 %i + 3.356897122765576) > k7 = 1.0580991179958923E-15 > > maybe the imaginary unit in k6 is due to choosing a complex > root at some step of the calculation instead of a real root. > i didn't investigate that. > > hope this helps, > robert dodier > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From RGloeckner at dki.tu-darmstadt.de Fri Jan 13 04:16:45 2006 From: RGloeckner at dki.tu-darmstadt.de (Gloeckner, Robert) Date: Fri, 13 Jan 2006 11:16:45 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima" Message-ID: Hella, I deleted the GPL from the german translation. R. Rand gave his permision to put it online. You can download it at: http://130.83.61.160/~robert/Maxima-Einfuehrung.pdf Ciao, Robert R. Rand wrote on Friday, January 13, 2006 10:44 AM (Subject: Re: german translation of your "introduction to maxima"): > Dear Robert, > Thanks for telling me about your translation. I would be > delighted if you would put it online. I still use macsyma and > think it is a great environment in which to do algebraic > computations. There are no copyright concerns as far as I am > concerned, and frankly I don't think Springer would care. > Best Wishes, Richard Rand http:\\www.tam.cornell.edu/Rand.html > rhr2 at cornell.edu > > ----- Original Message ----- > From: "Gloeckner, Robert" > To: > Sent: Friday, January 13, 2006 4:20 AM > Subject: german translation of your "introduction to maxima" > > > Dear Mr. Rand, > > I translated your text "introduction to maxima", which is > online available at: > http://maxima.sourceforge.net/docs/intromax/i> ntromax.html > into german. > I would like to ask you for permission to put the translation > online. Are there any copyright concerns from your side? Do I > have to ask third parties (i.e. springer) for permission? > > > Yours sincerely, > Robert Gloeckner > > > > > -- > Dipl.-Phys. Robert Gloeckner > Research Assistant > > Deutsches Kunststoff-Institut DKI > German Institute for Polymers > Department of Technology > Schlossgartenstr. 6 > D-64289 Darmstadt, Germany > > phone +49(0)6151 - 16 6516 > fax +49(0)6151 - 29 2855 > http://www.DKI-online.de > GnuPG-Key: 1024D/9A0A2D72 > > > > From robert.dodier at gmail.com Fri Jan 13 10:33:47 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 13 Jan 2006 09:33:47 -0700 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima" In-Reply-To: References: Message-ID: Hello Robert, Thank you for contacting Richard Rand. Unfortunately I don't think the Maxima project is in a strong position here. It is almost certain that the authors (Rand and Armbruster) assigned the copyright to Springer-Verlag. If so, derivative works are under the control of Springer-Verlag. (A look at the title page of the book would show who has the copyright, but the nearest university library doesn't have the book.) I'm not sure what to do at this point. We could try to contact Springer-Verlag; I don't know what approach is likely to yield an agreement. We could leave it be and keep the document, or we could remove it. All the best, Robert Dodier From RGloeckner at dki.tu-darmstadt.de Fri Jan 13 10:45:49 2006 From: RGloeckner at dki.tu-darmstadt.de (Gloeckner, Robert) Date: Fri, 13 Jan 2006 17:45:49 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] Message-ID: Hello Robert, Robert Dodier wrote on 20060113 05:34 pm: > Unfortunately I don't think the Maxima project is in a strong > position here. It is almost certain that the authors (Rand > and Armbruster) assigned the copyright to Springer-Verlag. If > so, derivative works are under the control of > Springer-Verlag. (A look at the title page of the book would > show who has the copyright, but the nearest university > library doesn't have the book.) The book is from 1987 ... I do not think they care. > I'm not sure what to do at this point. We could try to > contact Springer-Verlag; I don't know what approach is > likely to yield an agreement. We could leave it be and > keep the document, or we could remove it. (1) I will keep it on my page. (2) I will rewrite it a little bit, so that there is no relation between my text and R. Rands. Ciao, Robert From biomates at telefonica.net Fri Jan 13 12:40:04 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Fri, 13 Jan 2006 19:40:04 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: References: Message-ID: <1137177604.8826.34.camel@localhost.localdomain> Hello, El vie, 13-01-2006 a las 17:45 +0100, Gloeckner, Robert escribi??: > Hello Robert, > > Robert Dodier wrote on 20060113 05:34 pm: > > Unfortunately I don't think the Maxima project is in a strong > > position here. It is almost certain that the authors (Rand > > and Armbruster) assigned the copyright to Springer-Verlag. If > > so, derivative works are under the control of > > Springer-Verlag. (A look at the title page of the book would > > show who has the copyright, but the nearest university > > library doesn't have the book.) > The book is from 1987 ... I do not think they care. > > > > I'm not sure what to do at this point. We could try to > > contact Springer-Verlag; I don't know what approach is > > likely to yield an agreement. We could leave it be and > > keep the document, or we could remove it. > (1) I will keep it on my page. > (2) I will rewrite it a little bit, so that there is no relation > between my text and R. Rands. > I'd suggest some ideas: * You can change some examples here and there. * You can add some new sections: equations, systems of equations, complex numbers, limits, graphics, set operations, lists manipulation or whatever you want. You can get inspired looking at this document: http://www.telefonica.net/web2/biomates/maxima/max.pdf You don't have to understand much Spanish to get what it is talking about. The LaTex source is here: http://cvs.sourceforge.net/viewcvs.py/maxima/maxima/doc/tutorial/es/ You can copy and paste all the examples you wish; the author is a good friend of mine and I know he won't call the lawyer. * At the end of this document there is a list of Maxima functions, you can add some of them to Rand's list. Well, that would be enough.... I suppose. Best wishes. -- Mario Rodriguez Riotorto www.biomates.net From robert.dodier at gmail.com Fri Jan 13 13:58:49 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 13 Jan 2006 12:58:49 -0700 Subject: [Maxima] cacheing compiled integrand in quadpack functions In-Reply-To: References: <8b356f880601111246u13f327b9h4d2e00f1761773ca@mail.gmail.com> Message-ID: On 1/11/06, Raymond Toy wrote: > I believe the external process only happens with gcl. I think every > other Lisp we support has the compiler built-in so compiling is very > fast compared to gcl, even for cmucl which has a relatively slow > compiler. It's too bad gcl needs to hit the disk, since it is otherwise substantially faster than sbcl and cmucl and much faster than clisp, so far as I can tell. Compiling the quadpack integrand vs not compiling it seems to yield about the same overall elapsed time, in some limited tests I did, so I'm going to just leave it be. Robert From van.Nek at gmx.net Fri Jan 13 14:13:45 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Fri, 13 Jan 2006 21:13:45 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: Message-ID: <43C81809.8119.5BF78A@localhost> Am 13 Jan 2006 um 17:45 hat Gloeckner, Robert geschrieben: > (1) I will keep it on my page. > (2) I will rewrite it a little bit, so that there is no relation > between my text and R. Rands. Hallo Robert, if you think about rewriting, I would like to recommend to use another example for introducing Maximas programming language. I would suggest to show an example function, that uses the block construct to introduce local variables and avoids unwanted side effects. Gru? Volker van Nek From van.Nek at gmx.net Fri Jan 13 14:39:08 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Fri, 13 Jan 2006 21:39:08 +0100 Subject: [Maxima] Worksheets in xmaxima? Message-ID: <43C81DFC.14412.7335BC@localhost> Hello, it is possible to change the blue expressions in the Maxima Primer window and to evaluate them. It is also possible to write some text in between. But unfortunately it is not possible to save the changed window. If one could do this, this would be a first step to worksheets like in Maple. Question: Does anyone see a chance to go in that direction? Just an idea For what its worth Volker From paul.rivier at eleve.emn.fr Fri Jan 13 15:07:46 2006 From: paul.rivier at eleve.emn.fr (Paul RIVIER) Date: Fri, 13 Jan 2006 21:07:46 +0000 Subject: [Maxima] Worksheets in xmaxima? In-Reply-To: <43C81DFC.14412.7335BC@localhost> References: <43C81DFC.14412.7335BC@localhost> Message-ID: <43C816A2.5080707@eleve.emn.fr> you can try to go for wxmaxima, which provides this type of button. paul van.Nek at gmx.net wrote: >Hello, >it is possible to change the blue expressions in the Maxima Primer window and to >evaluate them. It is also possible to write some text in between. >But unfortunately it is not possible to save the changed window. >If one could do this, this would be a first step to worksheets like in Maple. >Question: Does anyone see a chance to go in that direction? >Just an idea >For what its worth >Volker > >_______________________________________________ >Maxima mailing list >Maxima at math.utexas.edu >http://www.math.utexas.edu/mailman/listinfo/maxima > > > From raymond.toy at ericsson.com Fri Jan 13 15:11:10 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Fri, 13 Jan 2006 16:11:10 -0500 Subject: [Maxima] Patch for [ 1404758 ] exp() not evaluated for complex (big)float Message-ID: Here is a patch for Bug 1404758. I think it works as expected. (I probably should have used the bug report thing, but I hate web interfaces for that.) Ray diff -u -r1.16 simp.lisp --- src/simp.lisp 5 Jan 2006 17:30:26 -0000 1.16 +++ src/simp.lisp 13 Jan 2006 19:59:40 -0000 @@ -1554,7 +1554,26 @@ (t (go retno)))) (mget gr '$numer))) ((eq gr '$%e) - (cond (($bfloatp pot) (return ($bfloat (list '(mexpt) '$%e pot)))) + ;; Numerically evaluate if the power is a double-float. + (let ((val (double-float-eval '$exp pot))) + (when val + (return val))) + ;; Numerically evaluate if the power is a (complex) + ;; big-float. (This is basically the guts of + ;; big-float-eval, but we can't use big-float-eval.) + (when (and (not (member 'simp (car x))) + (complex-number-p pot 'bigfloat-or-number-p)) + (let ((x ($realpart pot)) + (y ($imagpart pot))) + (cond ((and ($bfloatp x) (like 0 y)) + ($bfloat `((mexpt simp) $%e ,pot))) + ((or ($bfloatp x) ($bfloatp y)) + (let ((z (add ($bfloat x) (mul '$%i ($bfloat y))))) + (setq z ($rectform `((mexpt simp) $%e ,z))) + (return ($bfloat z))))))) + (cond #+nil + (($bfloatp pot) (return ($bfloat (list '(mexpt) '$%e pot)))) + #+nil ((or (floatp pot) (and $numer (integerp pot))) (return (exp pot))) ((and $logsimp (among '%log pot)) (return (%etolog pot))) From camm at enhanced.com Sat Jan 14 08:48:50 2006 From: camm at enhanced.com (Camm Maguire) Date: 14 Jan 2006 09:48:50 -0500 Subject: [Maxima] cacheing compiled integrand in quadpack functions In-Reply-To: References: <8b356f880601111246u13f327b9h4d2e00f1761773ca@mail.gmail.com> Message-ID: <54mzhyzwz1.fsf@intech19.enhanced.com> Greetings! We had a compiler speed discussion some time ago, and the input then was that people wanted fast executables even if at the expense of some compile time. That said, there are some obvious things we could do if there is interest, such as leaving a gcc process open and speaking to it via a pipe, etc. I won't be able to look into this for a month, but ideas/suggestions are always most welcome. Take care, Robert Dodier writes: > On 1/11/06, Raymond Toy wrote: > > > I believe the external process only happens with gcl. I think every > > other Lisp we support has the compiler built-in so compiling is very > > fast compared to gcl, even for cmucl which has a relatively slow > > compiler. > > It's too bad gcl needs to hit the disk, since it is otherwise substantially > faster than sbcl and cmucl and much faster than clisp, > so far as I can tell. > > Compiling the quadpack integrand vs not compiling it seems to yield > about the same overall elapsed time, in some limited tests I did, > so I'm going to just leave it be. > > Robert > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > > > -- Camm Maguire camm at enhanced.com ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah From robert.dodier at gmail.com Sat Jan 14 11:03:51 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sat, 14 Jan 2006 10:03:51 -0700 Subject: [Maxima] Patch for [ 1404758 ] exp() not evaluated for complex (big)float In-Reply-To: References: Message-ID: On 1/13/06, Raymond Toy wrote: > Here is a patch for Bug 1404758. I think it works as expected. works for me, although i didn't test it very much. > (I probably should have used the bug report thing, but I hate web > interfaces for that.) well, you and me both, although if you don't update the bug report, chances are good it just won't happen. best, robert From robert.dodier at gmail.com Sat Jan 14 11:09:28 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sat, 14 Jan 2006 10:09:28 -0700 Subject: [Maxima] cacheing compiled integrand in quadpack functions In-Reply-To: <54mzhyzwz1.fsf@intech19.enhanced.com> References: <8b356f880601111246u13f327b9h4d2e00f1761773ca@mail.gmail.com> <54mzhyzwz1.fsf@intech19.enhanced.com> Message-ID: Camm Maguire wrote: > We had a compiler speed discussion some time ago, and the input then > was that people wanted fast executables even if at the expense of some > compile time. That said, there are some obvious things we could do if > there is interest, such as leaving a gcc process open and speaking to > it via a pipe, etc. I won't be able to look into this for a month, > but ideas/suggestions are always most welcome. a couple of ideas -- (1) can a "warm start" of the compiler be arranged? talking to gcc via a pipe might address that. (2) can we arrange it so the compiler doesn't touch the file system? that would have 2 nice effects -- the compiler could run faster, and gcl could run on read-only file systems. for what it's worth, robert dodier From Nicolas.Neuss at iwr.uni-heidelberg.de Sat Jan 14 11:11:41 2006 From: Nicolas.Neuss at iwr.uni-heidelberg.de (Nicolas Neuss) Date: Sat, 14 Jan 2006 18:11:41 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: (Robert Gloeckner's message of "Fri, 13 Jan 2006 17:45:49 +0100") References: Message-ID: <87irsmzqcy.fsf@ortler.iwr.uni-heidelberg.de> "Gloeckner, Robert" writes: > Hello Robert, > > Robert Dodier wrote on 20060113 05:34 pm: >> Unfortunately I don't think the Maxima project is in a strong >> position here. It is almost certain that the authors (Rand >> and Armbruster) assigned the copyright to Springer-Verlag. If >> so, derivative works are under the control of >> Springer-Verlag. (A look at the title page of the book would >> show who has the copyright, but the nearest university >> library doesn't have the book.) > The book is from 1987 ... I do not think they care. Why take a risk? I have good experience with asking the Springer-Verlag about permission for putting versions of my articles on my homepage or using my articles also in other contexts. I assume that they will only require that you acknowledge the original source. Yours, Nicolas. From robert.dodier at gmail.com Sat Jan 14 11:17:42 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sat, 14 Jan 2006 10:17:42 -0700 Subject: [Maxima] Worksheets in xmaxima? In-Reply-To: <43C81DFC.14412.7335BC@localhost> References: <43C81DFC.14412.7335BC@localhost> Message-ID: On 1/13/06, van.Nek at gmx.net wrote: > it is possible to change the blue expressions in the Maxima Primer window and to > evaluate them. It is also possible to write some text in between. > But unfortunately it is not possible to save the changed window. > If one could do this, this would be a first step to worksheets like in Maple. > Question: Does anyone see a chance to go in that direction? i do think a worksheet interface would be valuable and useful to many people. my own opinion about that is that wxMaxima or TeXmacs is a more suitable basis, since those user interfaces are nicer as they stand, and they are actively maintained. of the two, i think i like wxMaxima better. i don't know how much work it is to add worksheet functionality, though. it is possible that some parts of the worksheet functionality already exists in wxMaxima or TeXmacs. you might bring up this topic with the developers of those projects. if you decide to work on worksheet functionality in one form or another i would be interested to hear about it. best, robert From david.billinghurst at comalco.riotinto.com.au Sat Jan 14 18:00:08 2006 From: david.billinghurst at comalco.riotinto.com.au (Billinghurst, David CALCRTS) Date: Sun, 15 Jan 2006 11:00:08 +1100 Subject: [Maxima] FW: [ maxima-Bugs-1404754 ] bfloat(1.0*%i) is %i rather than 1.0b0*%i Message-ID: <026DCC31AB859648A6F16C0E5CD2580D308E98@calttsv025.cal.riotinto.org> I will check in this patch shortly. It prevents 1.0b0*x -> x. It results in a visible change in behavior, but makes floats and bfloats behave in the same way. There are no testsuite regressions > Comment By: Raymond Toy (rtoy) > Date: 2006-01-13 09:04 > > I agree that we should leave 1.0*%i as 1.0*%i. > > I think the fix is in timesbigfloat in float.lisp: > > (return (cond ((equal nfans 1) fans) > ((equal fans tst) nfans) > (t (simplify (list '(mtimes) fans nfans))))))) > > The test (equal fans tst) should be removed. It checks to > see if the product of all the bigfloats is equal to 1 and > returns everything else. NOTICE This e-mail and any attachments are private and confidential and may contain privileged information. If you are not an authorised recipient, the copying or distribution of this e-mail and any attachments is prohibited and you must not read, print or act in reliance on this e-mail or attachments. This notice should not be removed. From vvzhy at mail.ru Sun Jan 15 09:45:34 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Sun, 15 Jan 2006 18:45:34 +0300 Subject: [Maxima] Localized describe - progress Message-ID: <43CA6E1E.3040203@mail.ru> Hi! I've just committed a path which makes Maxima describe/? command locale aware. Now in Spanish and Portuguese locales it works perfectly well with mixed Spanish/English and Portuguese/English info files. It works to me on Linux with GCL, CMUCL and SBCL and with GCL on Windows. New Windows test builds are available. So far so good but here comes bad news. With this modification describe is broken on Clisp. And it is broken even with English info. I'm quite puzzled since modification to cl-info.lisp is small and essentially very simple -- several English search patterns are replaced by localized versions. In English locale it should work as before. At present I don't have an idea why this machinery works as expected on GCL, CMUCL and SBCL and fails on Clisp. If somebody get interested you can compare cl-info.lisp in current Maxima CVS and CVS/2006/01/01 for which clisp describe still works (don't forget to build maxima.info with LANG=C otherwise describe may produce an error - but this is completely different problem). Working on the problem. Best wishes, Vadim -- Vadim V. Zhytnikov From david.billinghurst at comalco.riotinto.com.au Sun Jan 15 17:53:43 2006 From: david.billinghurst at comalco.riotinto.com.au (Billinghurst, David CALCRTS) Date: Mon, 16 Jan 2006 10:53:43 +1100 Subject: [Maxima] [RFC] Code for extended precision complex floating point arithmetic Message-ID: <026DCC31AB859648A6F16C0E5CD2580D308E9A@calttsv025.cal.riotinto.org> I have been writing some code to evaluate the hypergeometric functions 1F1(a;b,z) and 2F1(a,b;c;z) for complex arguments. I now have working routines I needed to evaluate compex power series in extended precision, so I wrote the code below. It works, but I'd like to discuss the structure. (My Fortran heritage shows through). The code is layered on top of the routines in float.lisp. A maxima bigfloat is ;; Representation of a Bigfloat: ((BIGFLOAT SIMP precision) mantissa exponent) ;; precision -- number of bits of precision in the mantissa. ;; precision = (haulong mantissa) ;; mantissa -- a signed integer representing a fractional portion computed by ;; fraction = (// mantissa (^ 2 precision)). ;; exponent -- a signed integer representing the scale of the number. ;; The actual number represented is (f* fraction (^ 2 exponent)). Many of the lower level in float.lisp routines work on "floating point numbers" which are just (mantissa exponent) pairs using the current value of fpprec. I have chosen to represent "complex floating point numbers" as (list (mantissa exponent) (mantissa exponent)) We then have fpz Construct complex floating point number fpz-re Real part of complex floating point number fpz-im Imaginary part of complex floating point number fpz+ + for complex floating point number fpz- - for complex floating point number fpz* * for complex floating point number fpz/ / for complex floating point number fpzabs Absolute value I would really welcome some feedback, particularly on - the data structure - function names. - the FIXME comments on the code regarding algorithms. I need to reread Kahan's paper "Branch Cuts for Complex Elementary Functions" for a start). ;; complexfloat.lisp ;; ;; Routines for extended precision complex floating point numbers ;; See float.lisp (in-package :maxima) ;; define the data structure for a complex FP number ;; Complex FP number x = xr + %i*xi is represented by (list xr xi) (defun fpz (x y) "FP complex from two FP numbers" `(,x ,y)) (defun fpz-re (z) "Real part of FP number" (car z)) (defun fpz-im (z) "Imaginary part of FP number" (cadr z)) (defun fpz+ (&rest args) "Add FP complex numbers" (let ((l (length args))) (cond ((equal l 0) (floattofpz 0)) ((equal l 1) (car args)) ((equal l 2) (let ((x (car args)) (y (cadr args))) (fpz (fpplus (fpz-re x) (fpz-re y)) (fpplus (fpz-im x) (fpz-im y))))) (t (reduce #'fpz+ args))))) (defun fpz- (x &rest args) "Difference of two FP complex numbers" (let ((l (length args))) (cond ((equal l 0) (fpz (fpminus (fpz-re x)) (fpminus (fpz-im x)))) ((equal l 1) (let ((y (car args))) (fpz (fpdifference (fpz-re x) (fpz-re y)) (fpdifference (fpz-im x) (fpz-im y))))) (t (fpz- x (reduce #'fpz+ args)))))) (defun fpz* (&rest args) "Multilpy FP complex numbers" (let ((l (length args))) (cond ((equal l 0) (floattofpz 1)) ((equal l 1) (car args)) ((equal l 2) (let ((x (car args)) (y (cadr args))) (fpz (fpdifference (fptimes* (fpz-re x) (fpz-re y)) (fptimes* (fpz-im x) (fpz-im y))) (fpplus (fptimes* (fpz-re x) (fpz-im y)) (fptimes* (fpz-im x) (fpz-re y)))))) (t (reduce #'fpz* args))))) ;; z = x / y FIXME: Are guard digits required? (defun fpz/ (x &rest args) "Quotient of FP complex numbers" (let ((l (length args))) (cond ((equal l 0) (fpz/ (floattofpz 1) x)) ((equal l 1) (let ((y (car args))) (cond ((and (equal (fpz-re y) '(0 0)) (equal (fpz-im y) '(0 0))) (merror "complex division by zero")) ((equal (fpz-im y) '(0 0)) (fpz (fpquotient (fpz-re x) (fpz-re y)) (fpquotient (fpz-im x) (fpz-re y)))) ((equal (fpz-re y) '(0 0)) (fpz (fpquotient (fpz-im x) (fpz-im y)) (fpquotient (fpminus (fpz-re x)) (fpz-im y)))) (t (let ((denominator (fpplus (fptimes* (fpz-re y) (fpz-re y)) (fptimes* (fpz-im y) (fpz-im y)))) (re-numerator (fpplus (fptimes* (fpz-re x) (fpz-re y)) (fptimes* (fpz-im x) (fpz-im y)))) (im-numerator (fpdifference (fptimes* (fpz-im x) (fpz-re y)) (fptimes* (fpz-re x) (fpz-im y))))) (fpz (fpquotient re-numerator denominator) (fpquotient im-numerator denominator))))))) (t (fpz/ x (reduce #'fpz* args)))))) ;; z = abs(x) FIXME: Is a more sophisticated algorithm needed? ;; Note: fproot takes a bigfloat (defun fpzabs (x) "Absolute value of a complex FP number" (fproot (bcons (fpplus (fptimes* (fpz-re x) (fpz-re x)) (fptimes* (fpz-im x) (fpz-im x)))) 2)) ;; Convert a maxima number to complex FP (defun floattofpz (z) (let (($float2bf t)) (fpz (intofp ($realpart z)) (intofp ($imagpart z))))) ;; Convert FP to float (defun fptofloat (x) (fp2flo (bcons x))) ;; Convert FP complex to maxima float ;; Return real or im (defun fpztofloat (z) (cond ((equal (fpz-im z) '(0 0)) (fptofloat (fpz-re z))) ((equal (fpz-re z) '(0 0)) `((mtimes simp) ,(fptofloat (fpz-im z)) $%i)) (t `((mplus simp) ,(fptofloat (fpz-re z)) ((mtimes simp) ,(fptofloat (fpz-im z)) $%i))))) ;; Convert FP complex to maxima complex bigfloat (defun fpztobigfloat (z) (cond ((equal (fpz-im z) '(0 0)) (bcons (fpz-re z))) ((equal (fpz-re z) '(0 0)) `((mtimes simp) ,(bcons (fpz-im z)) $%i)) (t `((mplus simp) ,(bcons (fpz-re z)) ((mtimes simp) ,(bcons (fpz-im z)) $%i))))) ;; Exponent of an FP number. Return large -ve number if zero (defun fp-exponent (x) (if (equal (car x) 0) most-negative-fixnum (cadr x))) ;; Given a complex FP number, return larger exponent (defun fpz-exponent (z) (max (fp-exponent (fpz-re z)) (fp-exponent (fpz-im z)))) NOTICE This e-mail and any attachments are private and confidential and may contain privileged information. If you are not an authorised recipient, the copying or distribution of this e-mail and any attachments is prohibited and you must not read, print or act in reliance on this e-mail or attachments. This notice should not be removed. From fateman at cs.berkeley.edu Sun Jan 15 18:37:49 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sun, 15 Jan 2006 16:37:49 -0800 Subject: [Maxima] [RFC] Code for extended precision complex floating point arithmetic References: <026DCC31AB859648A6F16C0E5CD2580D308E9A@calttsv025.cal.riotinto.org> Message-ID: <04b001c61a35$1657cec0$210110ac@windsor> from the perspective of the author of the macsyma bigfloat stuff, this looks ok, relative to programming circa 1974. It is possible that one should write this differently given Common Lisp and CLOS. I would organize it differently myself. See also comments about MPFR too. For example, instead of using lists for pairs, use structures. The names here are too long but .. something like (defstruct complex-bigfloat ( real-part bfzero :type bigfloat) ( imag-part bfzero :type bigfloat) precision) Instead of defining complex bigfloat + as fpz+, use what amounts to (defmethod two-arg-+ ( (x complex-bigfloat)(y complex-bigfloat)) .... which also allows you to defineb (defmethod two-arg-+ ((x complex-bigfloat) (y bigfloat)) ... and (defmethod two-arg-+ ((x bigfloat) (y complex-bigfloat)) ... and (defmethod two-arg-+ ((x complex-bigfloat)( y number)) ... for all common lisp number types. Oh, you define generic + in terms of two-arg-+, so you can also do (+ a b c) for complex bigfloats a b c. What does this get you: More versatility Probably slower speed The same program that computes 2F1 for complex bigfloat, may also work for double-float [unchanged except for different epsilon parameters etc]. Though if you know you only need double-float there are probably shortcuts. The way to use more bits for division... bump up the floating precision if you really need it.. The division should be correctly rounded. Also, if you need names for these operations, look at the GMP names or perhaps the float package on top of GMP http://www.mpfr.org/ This has probably made your life more complicated, if you care to follow it all. but if you do, I can give you more details and code for generic arithmetic, and it could possibly be a model for other improvements to Maxima. Also, what if we just said we would do a really bang-up job of double-double (i.e. quad precision), and imported a really good library for this. Would we still have much call for bigfloats? Or could we kind of ooze over from double to quad to slow bigfloats? Or should we really be importing the MPFR library? I found this, which is claimed to be generic code for hypergeometric series... http://cvs.rpm.org/viewcvs/genius/mpfr/generic.c?rev=1.2 Sorry for complicating things.. RJF ----- Original Message ----- From: "Billinghurst, David (CALCRTS)" To: Sent: Sunday, January 15, 2006 3:53 PM Subject: [Maxima] [RFC] Code for extended precision complex floating point arithmetic >I have been writing some code to evaluate the hypergeometric > functions 1F1(a;b,z) and 2F1(a,b;c;z) for complex arguments. > I now have working routines > > I needed to evaluate compex power series in extended precision, > so I wrote the code below. It works, but I'd like to > discuss the structure. (My Fortran heritage shows through). > > The code is layered on top of the routines in float.lisp. > > A maxima bigfloat is > ;; Representation of a Bigfloat: ((BIGFLOAT SIMP precision) mantissa > exponent) > ;; precision -- number of bits of precision in the mantissa. > ;; precision = (haulong mantissa) > ;; mantissa -- a signed integer representing a fractional portion computed > by > ;; fraction = (// mantissa (^ 2 precision)). > ;; exponent -- a signed integer representing the scale of the number. > ;; The actual number represented is (f* fraction (^ 2 exponent)). > > Many of the lower level in float.lisp routines work on "floating point > numbers" > which are just (mantissa exponent) pairs using the current value of > fpprec. > I have chosen to represent "complex floating point numbers" as > (list (mantissa exponent) (mantissa exponent)) > > We then have > fpz Construct complex floating point number > fpz-re Real part of complex floating point number > fpz-im Imaginary part of complex floating point number > fpz+ + for complex floating point number > fpz- - for complex floating point number > fpz* * for complex floating point number > fpz/ / for complex floating point number > fpzabs Absolute value > > I would really welcome some feedback, particularly on > - the data structure > - function names. > - the FIXME comments on the code regarding algorithms. I need to > reread Kahan's paper "Branch Cuts for Complex Elementary Functions" > for a start). > > ;; complexfloat.lisp > ;; > ;; Routines for extended precision complex floating point numbers > ;; See float.lisp > > (in-package :maxima) > > ;; define the data structure for a complex FP number > ;; Complex FP number x = xr + %i*xi is represented by (list xr xi) > (defun fpz (x y) "FP complex from two FP numbers" `(,x ,y)) > (defun fpz-re (z) "Real part of FP number" (car z)) > (defun fpz-im (z) "Imaginary part of FP number" (cadr z)) > > (defun fpz+ (&rest args) > "Add FP complex numbers" > (let ((l (length args))) > (cond ((equal l 0) (floattofpz 0)) > ((equal l 1) (car args)) > ((equal l 2) > (let ((x (car args)) (y (cadr args))) > (fpz (fpplus (fpz-re x) (fpz-re y)) > (fpplus (fpz-im x) (fpz-im y))))) > (t (reduce #'fpz+ args))))) > > (defun fpz- (x &rest args) > "Difference of two FP complex numbers" > (let ((l (length args))) > (cond ((equal l 0) > (fpz (fpminus (fpz-re x)) (fpminus (fpz-im x)))) > ((equal l 1) > (let ((y (car args))) > (fpz (fpdifference (fpz-re x) (fpz-re y)) > (fpdifference (fpz-im x) (fpz-im y))))) > (t (fpz- x (reduce #'fpz+ args)))))) > > (defun fpz* (&rest args) > "Multilpy FP complex numbers" > (let ((l (length args))) > (cond ((equal l 0) (floattofpz 1)) > ((equal l 1) (car args)) > ((equal l 2) > (let ((x (car args)) (y (cadr args))) > (fpz (fpdifference (fptimes* (fpz-re x) (fpz-re y)) > (fptimes* (fpz-im x) (fpz-im y))) > (fpplus (fptimes* (fpz-re x) (fpz-im y)) > (fptimes* (fpz-im x) (fpz-re y)))))) > (t (reduce #'fpz* args))))) > > ;; z = x / y FIXME: Are guard digits required? > (defun fpz/ (x &rest args) > "Quotient of FP complex numbers" > (let ((l (length args))) > (cond ((equal l 0) > (fpz/ (floattofpz 1) x)) > ((equal l 1) > (let ((y (car args))) > (cond ((and (equal (fpz-re y) '(0 0)) > (equal (fpz-im y) '(0 0))) > (merror "complex division by zero")) > ((equal (fpz-im y) '(0 0)) > (fpz (fpquotient (fpz-re x) (fpz-re y)) > (fpquotient (fpz-im x) (fpz-re y)))) > ((equal (fpz-re y) '(0 0)) > (fpz (fpquotient (fpz-im x) (fpz-im y)) > (fpquotient (fpminus (fpz-re x)) (fpz-im y)))) > (t (let > ((denominator > (fpplus (fptimes* (fpz-re y) (fpz-re y)) > (fptimes* (fpz-im y) (fpz-im y)))) > (re-numerator > (fpplus (fptimes* (fpz-re x) (fpz-re y)) > (fptimes* (fpz-im x) (fpz-im y)))) > (im-numerator > (fpdifference (fptimes* (fpz-im x) (fpz-re y)) > (fptimes* (fpz-re x) (fpz-im y))))) > (fpz (fpquotient re-numerator denominator) > (fpquotient im-numerator denominator))))))) > (t (fpz/ x (reduce #'fpz* args)))))) > > ;; z = abs(x) FIXME: Is a more sophisticated algorithm needed? > ;; Note: fproot takes a bigfloat > (defun fpzabs (x) > "Absolute value of a complex FP number" > (fproot (bcons (fpplus (fptimes* (fpz-re x) (fpz-re x)) > (fptimes* (fpz-im x) (fpz-im x)))) > 2)) > > ;; Convert a maxima number to complex FP > (defun floattofpz (z) > (let (($float2bf t)) > (fpz (intofp ($realpart z)) (intofp ($imagpart z))))) > > ;; Convert FP to float > (defun fptofloat (x) (fp2flo (bcons x))) > > ;; Convert FP complex to maxima float > ;; Return real or im > (defun fpztofloat (z) > (cond ((equal (fpz-im z) '(0 0)) > (fptofloat (fpz-re z))) > ((equal (fpz-re z) '(0 0)) > `((mtimes simp) ,(fptofloat (fpz-im z)) $%i)) > (t `((mplus simp) ,(fptofloat (fpz-re z)) > ((mtimes simp) ,(fptofloat (fpz-im z)) $%i))))) > > ;; Convert FP complex to maxima complex bigfloat > (defun fpztobigfloat (z) > (cond ((equal (fpz-im z) '(0 0)) > (bcons (fpz-re z))) > ((equal (fpz-re z) '(0 0)) > `((mtimes simp) ,(bcons (fpz-im z)) $%i)) > (t `((mplus simp) ,(bcons (fpz-re z)) > ((mtimes simp) ,(bcons (fpz-im z)) $%i))))) > > ;; Exponent of an FP number. Return large -ve number if zero > (defun fp-exponent (x) > (if (equal (car x) 0) most-negative-fixnum (cadr x))) > > ;; Given a complex FP number, return larger exponent > (defun fpz-exponent (z) > (max (fp-exponent (fpz-re z)) (fp-exponent (fpz-im z)))) > > > NOTICE > This e-mail and any attachments are private and confidential and may > contain privileged information. If you are not an authorised recipient, > the copying or distribution of this e-mail and any attachments is > prohibited and you must not read, print or act in reliance on this e-mail > or attachments. > This notice should not be removed. > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From fateman at cs.berkeley.edu Sun Jan 15 18:37:43 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sun, 15 Jan 2006 16:37:43 -0800 Subject: [Maxima] [RFC] Code for extended precision complex floating point arithmetic References: <026DCC31AB859648A6F16C0E5CD2580D308E9A@calttsv025.cal.riotinto.org> Message-ID: <04af01c61a35$151563b0$210110ac@windsor> from the perspective of the author of the macsyma bigfloat stuff, this looks ok, relative to programming circa 1974. It is possible that one should write this differently given Common Lisp and CLOS. I would organize it differently myself. See also comments about MPFR too. For example, instead of using lists for pairs, use structures. The names here are too long but .. something like (defstruct complex-bigfloat ( real-part bfzero :type bigfloat) ( imag-part bfzero :type bigfloat) precision) Instead of defining complex bigfloat + as fpz+, use what amounts to (defmethod two-arg-+ ( (x complex-bigfloat)(y complex-bigfloat)) .... which also allows you to defineb (defmethod two-arg-+ ((x complex-bigfloat) (y bigfloat)) ... and (defmethod two-arg-+ ((x bigfloat) (y complex-bigfloat)) ... and (defmethod two-arg-+ ((x complex-bigfloat)( y number)) ... for all common lisp number types. Oh, you define generic + in terms of two-arg-+, so you can also do (+ a b c) for complex bigfloats a b c. What does this get you: More versatility Probably slower speed The same program that computes 2F1 for complex bigfloat, may also work for double-float [unchanged except for different epsilon parameters etc]. Though if you know you only need double-float there are probably shortcuts. The way to use more bits for division... bump up the floating precision if you really need it.. The division should be correctly rounded. Also, if you need names for these operations, look at the GMP names or perhaps the float package on top of GMP http://www.mpfr.org/ This has probably made your life more complicated, if you care to follow it all. but if you do, I can give you more details and code for generic arithmetic, and it could possibly be a model for other improvements to Maxima. Also, what if we just said we would do a really bang-up job of double-double (i.e. quad precision), and imported a really good library for this. Would we still have much call for bigfloats? Or could we kind of ooze over from double to quad to slow bigfloats? Or should we really be importing the MPFR library? I found this, which is claimed to be generic code for hypergeometric series... http://cvs.rpm.org/viewcvs/genius/mpfr/generic.c?rev=1.2 Sorry for complicating things.. RJF ----- Original Message ----- From: "Billinghurst, David (CALCRTS)" To: Sent: Sunday, January 15, 2006 3:53 PM Subject: [Maxima] [RFC] Code for extended precision complex floating point arithmetic >I have been writing some code to evaluate the hypergeometric > functions 1F1(a;b,z) and 2F1(a,b;c;z) for complex arguments. > I now have working routines > > I needed to evaluate compex power series in extended precision, > so I wrote the code below. It works, but I'd like to > discuss the structure. (My Fortran heritage shows through). > > The code is layered on top of the routines in float.lisp. > > A maxima bigfloat is > ;; Representation of a Bigfloat: ((BIGFLOAT SIMP precision) mantissa > exponent) > ;; precision -- number of bits of precision in the mantissa. > ;; precision = (haulong mantissa) > ;; mantissa -- a signed integer representing a fractional portion computed > by > ;; fraction = (// mantissa (^ 2 precision)). > ;; exponent -- a signed integer representing the scale of the number. > ;; The actual number represented is (f* fraction (^ 2 exponent)). > > Many of the lower level in float.lisp routines work on "floating point > numbers" > which are just (mantissa exponent) pairs using the current value of > fpprec. > I have chosen to represent "complex floating point numbers" as > (list (mantissa exponent) (mantissa exponent)) > > We then have > fpz Construct complex floating point number > fpz-re Real part of complex floating point number > fpz-im Imaginary part of complex floating point number > fpz+ + for complex floating point number > fpz- - for complex floating point number > fpz* * for complex floating point number > fpz/ / for complex floating point number > fpzabs Absolute value > > I would really welcome some feedback, particularly on > - the data structure > - function names. > - the FIXME comments on the code regarding algorithms. I need to > reread Kahan's paper "Branch Cuts for Complex Elementary Functions" > for a start). > > ;; complexfloat.lisp > ;; > ;; Routines for extended precision complex floating point numbers > ;; See float.lisp > > (in-package :maxima) > > ;; define the data structure for a complex FP number > ;; Complex FP number x = xr + %i*xi is represented by (list xr xi) > (defun fpz (x y) "FP complex from two FP numbers" `(,x ,y)) > (defun fpz-re (z) "Real part of FP number" (car z)) > (defun fpz-im (z) "Imaginary part of FP number" (cadr z)) > > (defun fpz+ (&rest args) > "Add FP complex numbers" > (let ((l (length args))) > (cond ((equal l 0) (floattofpz 0)) > ((equal l 1) (car args)) > ((equal l 2) > (let ((x (car args)) (y (cadr args))) > (fpz (fpplus (fpz-re x) (fpz-re y)) > (fpplus (fpz-im x) (fpz-im y))))) > (t (reduce #'fpz+ args))))) > > (defun fpz- (x &rest args) > "Difference of two FP complex numbers" > (let ((l (length args))) > (cond ((equal l 0) > (fpz (fpminus (fpz-re x)) (fpminus (fpz-im x)))) > ((equal l 1) > (let ((y (car args))) > (fpz (fpdifference (fpz-re x) (fpz-re y)) > (fpdifference (fpz-im x) (fpz-im y))))) > (t (fpz- x (reduce #'fpz+ args)))))) > > (defun fpz* (&rest args) > "Multilpy FP complex numbers" > (let ((l (length args))) > (cond ((equal l 0) (floattofpz 1)) > ((equal l 1) (car args)) > ((equal l 2) > (let ((x (car args)) (y (cadr args))) > (fpz (fpdifference (fptimes* (fpz-re x) (fpz-re y)) > (fptimes* (fpz-im x) (fpz-im y))) > (fpplus (fptimes* (fpz-re x) (fpz-im y)) > (fptimes* (fpz-im x) (fpz-re y)))))) > (t (reduce #'fpz* args))))) > > ;; z = x / y FIXME: Are guard digits required? > (defun fpz/ (x &rest args) > "Quotient of FP complex numbers" > (let ((l (length args))) > (cond ((equal l 0) > (fpz/ (floattofpz 1) x)) > ((equal l 1) > (let ((y (car args))) > (cond ((and (equal (fpz-re y) '(0 0)) > (equal (fpz-im y) '(0 0))) > (merror "complex division by zero")) > ((equal (fpz-im y) '(0 0)) > (fpz (fpquotient (fpz-re x) (fpz-re y)) > (fpquotient (fpz-im x) (fpz-re y)))) > ((equal (fpz-re y) '(0 0)) > (fpz (fpquotient (fpz-im x) (fpz-im y)) > (fpquotient (fpminus (fpz-re x)) (fpz-im y)))) > (t (let > ((denominator > (fpplus (fptimes* (fpz-re y) (fpz-re y)) > (fptimes* (fpz-im y) (fpz-im y)))) > (re-numerator > (fpplus (fptimes* (fpz-re x) (fpz-re y)) > (fptimes* (fpz-im x) (fpz-im y)))) > (im-numerator > (fpdifference (fptimes* (fpz-im x) (fpz-re y)) > (fptimes* (fpz-re x) (fpz-im y))))) > (fpz (fpquotient re-numerator denominator) > (fpquotient im-numerator denominator))))))) > (t (fpz/ x (reduce #'fpz* args)))))) > > ;; z = abs(x) FIXME: Is a more sophisticated algorithm needed? > ;; Note: fproot takes a bigfloat > (defun fpzabs (x) > "Absolute value of a complex FP number" > (fproot (bcons (fpplus (fptimes* (fpz-re x) (fpz-re x)) > (fptimes* (fpz-im x) (fpz-im x)))) > 2)) > > ;; Convert a maxima number to complex FP > (defun floattofpz (z) > (let (($float2bf t)) > (fpz (intofp ($realpart z)) (intofp ($imagpart z))))) > > ;; Convert FP to float > (defun fptofloat (x) (fp2flo (bcons x))) > > ;; Convert FP complex to maxima float > ;; Return real or im > (defun fpztofloat (z) > (cond ((equal (fpz-im z) '(0 0)) > (fptofloat (fpz-re z))) > ((equal (fpz-re z) '(0 0)) > `((mtimes simp) ,(fptofloat (fpz-im z)) $%i)) > (t `((mplus simp) ,(fptofloat (fpz-re z)) > ((mtimes simp) ,(fptofloat (fpz-im z)) $%i))))) > > ;; Convert FP complex to maxima complex bigfloat > (defun fpztobigfloat (z) > (cond ((equal (fpz-im z) '(0 0)) > (bcons (fpz-re z))) > ((equal (fpz-re z) '(0 0)) > `((mtimes simp) ,(bcons (fpz-im z)) $%i)) > (t `((mplus simp) ,(bcons (fpz-re z)) > ((mtimes simp) ,(bcons (fpz-im z)) $%i))))) > > ;; Exponent of an FP number. Return large -ve number if zero > (defun fp-exponent (x) > (if (equal (car x) 0) most-negative-fixnum (cadr x))) > > ;; Given a complex FP number, return larger exponent > (defun fpz-exponent (z) > (max (fp-exponent (fpz-re z)) (fp-exponent (fpz-im z)))) > > > NOTICE > This e-mail and any attachments are private and confidential and may > contain privileged information. If you are not an authorised recipient, > the copying or distribution of this e-mail and any attachments is > prohibited and you must not read, print or act in reliance on this e-mail > or attachments. > This notice should not be removed. > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From Robert.Gloeckner at Web.de Mon Jan 16 05:15:50 2006 From: Robert.Gloeckner at Web.de (Robert Gloeckner) Date: Mon, 16 Jan 2006 12:15:50 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: References: Message-ID: <43CB8066.7010404@Web.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello, While rewriting a german introduction to maxima, I remove the links to the earlier documents on my homepage untill I get permission from springer verlag. I sent springer verlag an email asking for permission to use parts of r. rands texts for direct translation to german (sections "Calculus", "Matrix calculations", "Programming in Maxima" and "A partial list of Maxima functions"). On the other hand it would be nice to have alternative examples for those sections, especially "Matrix calculations" and "Programming in Maxima". It would be very nice, if somebody could provide me with links to short examples. Regards, Robert - -- https://gna.org/projects/mipisti - (microscope) picture stitching ~ T_a_k_e__c_a_r_e__o_f__y_o_u_r__R_I_G_H_T_S. ~ P_r_e_v_e_n_t__L_O_G_I_C--P_A_T_E_N_T_S ~ http://www.ffii.org, http://www.nosoftwarepatents.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFDy3/+V8k0kPlGZngRAtRTAJ9UbG+Q1HpC3/7afJQfECaGRxwX/ACgjavR IEVykIlAiWBNL2C8HdOKAd8= =tHzX -----END PGP SIGNATURE----- From sabine.limbourg at fucam.ac.be Mon Jan 16 06:48:04 2006 From: sabine.limbourg at fucam.ac.be (Sabine Limbourg) Date: Mon, 16 Jan 2006 13:48:04 +0100 Subject: [Maxima] dilog Message-ID: <6.0.1.1.0.20060116134622.01a09090@mail.fucam.ac.be> --=====================_17005875==.ALT Content-Type: text/plain; charset="us-ascii"; format=flowed Hello, I try to use dilog(). Here is the copy of the error : (%i3) ?dilog(10); Maxima encountered a Lisp error: Error in MACSYMA-TOP-LEVEL [or a callee]: 10 is not of type LIST. Automatically continuing. To reenable the Lisp debugger set *debugger-hook* to nil. Thanks for your help Sabine limbourg --=====================_17005875==.ALT Content-Type: text/html; charset="us-ascii" Hello,

I try to use dilog(). Here is the copy of the error :
(%i3) ?dilog(10);
Maxima encountered a Lisp error:

 Error in MACSYMA-TOP-LEVEL [or a callee]: 10 is not of type LIST.

Automatically continuing.
To reenable the Lisp debugger set *debugger-hook* to nil.

Thanks for your help

Sabine limbourg --=====================_17005875==.ALT-- From robert.dodier at gmail.com Mon Jan 16 08:18:38 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 16 Jan 2006 07:18:38 -0700 Subject: [Maxima] dilog In-Reply-To: <6.0.1.1.0.20060116134622.01a09090@mail.fucam.ac.be> References: <6.0.1.1.0.20060116134622.01a09090@mail.fucam.ac.be> Message-ID: Hello Sabine, > I try to use dilog(). Here is the copy of the error : > (%i3) ?dilog(10); > Maxima encountered a Lisp error: > > Error in MACSYMA-TOP-LEVEL [or a callee]: 10 is not of type LIST. The Lisp function DILOG does not calculate numerical values of the dilogarithm; it is part of the Risch algorithm for symbolic integration. li [2] is the symbolic representation of the dilogarithm. It returns a float value when its argument is a float or appropriate evaluation flags (namely numer and float) are enabled. li [2] (10.0); => .5363012834971784 - 7.233784404149661 %i li [2] (10); => li[2](10) %, numer, float; => .5363012834971784 - 7.233784404149661 %i Maxima seems to know numerical values of the trilogarithm as well: li [3] (0.2); => .2053241953742051 li is undocumented -- that is an oversight. It is possible that there are other representations of the dilogarithm in Maxima. Hope this helps, Robert Dodier From Robert.Gloeckner at Web.de Mon Jan 16 08:53:00 2006 From: Robert.Gloeckner at Web.de (Robert Gloeckner) Date: Mon, 16 Jan 2006 15:53:00 +0100 Subject: [Maxima] another try: german introduction to maxima Message-ID: <43CBB34C.4030204@Web.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello, I've rewritten the german introduction to maxima. On my homepage you can see a first draft. Only the programming part and the list of main maxima functions is from r. rand. the program is not originally from him, so springer should havre no rights on this. And a part of a list of maxima-functions is not a thing which can be copyrighted, IMHO. But after all, please give me feedback (and maybe a better examples, esp. for programming). http://130.83.61.160/~robert/maxima-einfuehrung.pdf Regards, Robert - -- https://gna.org/projects/mipisti - (microscope) picture stitching ~ T_a_k_e__c_a_r_e__o_f__y_o_u_r__R_I_G_H_T_S. ~ P_r_e_v_e_n_t__L_O_G_I_C--P_A_T_E_N_T_S ~ http://www.ffii.org, http://www.nosoftwarepatents.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFDy7NMV8k0kPlGZngRArGNAKC1WKI4hShiRmlYQfIBTu7RTt6GSACfdohr 7ouLzd842zwsbwOc7ZLwsXM= =Zo7A -----END PGP SIGNATURE----- From van.Nek at gmx.net Mon Jan 16 10:20:42 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Mon, 16 Jan 2006 17:20:42 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: <43CB8066.7010404@Web.de> References: Message-ID: <43CBD5EA.6127.5B95A0@localhost> Am 16 Jan 2006 um 12:15 hat Robert Gloeckner geschrieben: > On the other hand it would be nice to have alternative examples for > those sections, especially "Matrix calculations" and "Programming in > Maxima". It would be very nice, if somebody could provide me with links > to short examples. Hello Robert, here is one of my favourite examples I use for teaching basic programming constructs. It is not really a computer algebra example, but is easy to understand and has some basic programming elements in it. (C1) roll_dice(n):= block ( /* simulation of n throws of a dice */ [ tmp, count:[0,0,0,0,0,0] ], /* local variables */ for i:1 thru n do ( /* loop */ tmp: random(6)+1, /* randomly throwing */ count[tmp]: count[tmp]+1 ), /* counting */ /* end of loop */ count )$ /* return value */ I copied this from my text editor into xmaxima and do now use this function. (C2) roll_dice(1000); (D2) [163, 176, 159, 148, 178, 176] 1000 or 10000 times is quite fast. For more times I compile my function. (C3) compile(roll_dice)$ Compiling gazonk0.lsp. End of Pass 1. End of Pass 2. OPTIMIZE levels: Safety=2, Space=2, Speed=2 Finished compiling gazonk0.lsp. (C4) roll_dice(1000000); (D4) [166351, 166425, 167102, 166591, 167192, 166339] For what its worth Volker From Robert.Gloeckner at Web.de Mon Jan 16 10:51:03 2006 From: Robert.Gloeckner at Web.de (Robert Gloeckner) Date: Mon, 16 Jan 2006 17:51:03 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: <43CBD5EA.6127.5B95A0@localhost> References: <43CBD5EA.6127.5B95A0@localhost> Message-ID: <43CBCEF7.7080905@Web.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello Volker, van.Nek at gmx.net wrote: | Am 16 Jan 2006 um 12:15 hat Robert Gloeckner geschrieben: | (C1) roll_dice(n):= block ( /* simulation of n throws of a dice */ | [ tmp, count:[0,0,0,0,0,0] ], /* local variables */ | for i:1 thru n do ( /* loop */ | tmp: random(6)+1, /* randomly throwing */ | count[tmp]: count[tmp]+1 ), /* counting */ /* end of loop */ | count )$ /* return value */ | | I copied this from my text editor into xmaxima and do now use this function. | | (C2) roll_dice(1000); | (D2) [163, 176, 159, 148, 178, 176] | I get an error, if I try: roll_dice(n) := block ( ~ [ tmp, count:[0,0,0,0,0,0] ], ~ for i:1 thru n do ( ~ tmp: random(6)+1, ~ count[tmp]: count[tmp]+1 ), ~ count ); Display all 1103 possibilities? (y or n) &ALLOW-OTHER-KEYS LEAST-NEGATIVE-SINGLE-FLOAT &AUX LEAST-POSITIVE-DOUBLE-FLOAT ... PPRINT-EXIT-IF-LIST-EXHAUSTED CELL-ERROR PPRINT-FILL CELL-ERROR-NAME PPRINT-INDENT (%o1) roll_dice(n) := block([tmp, count : [0, 0, 0, 0, 0, 0]], for i thru n do (dom(6) + 1, count : count + 1), count) tmp tmp (%i2) (%i2) roll_dice(1000); Subscript must be an integer: tmp #0: roll_dice(n=1000) ~ -- an error. Quitting. To debug this try debugmode(true); (%i3) (%i3) What am I doing wrong? Regards, Robert - -- https://gna.org/projects/mipisti - (microscope) picture stitching ~ T_a_k_e__c_a_r_e__o_f__y_o_u_r__R_I_G_H_T_S. ~ P_r_e_v_e_n_t__L_O_G_I_C--P_A_T_E_N_T_S ~ http://www.ffii.org, http://www.nosoftwarepatents.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFDy872V8k0kPlGZngRAuxXAJ4h0sm4fCiukmZsVhrRmv5Yy2I/4QCgrb7x aiXrqmuY2SBxoHLWHpLp8R4= =b8Ab -----END PGP SIGNATURE----- From van.Nek at gmx.net Mon Jan 16 11:27:31 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Mon, 16 Jan 2006 18:27:31 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: <43CBCEF7.7080905@Web.de> References: <43CBD5EA.6127.5B95A0@localhost> Message-ID: <43CBE593.27994.98C0FA@localhost> Am 16 Jan 2006 um 17:51 hat Robert Gloeckner geschrieben: > roll_dice(n) := block ( > ~ [ tmp, count:[0,0,0,0,0,0] ], > ~ for i:1 thru n do ( > ~ tmp: random(6)+1, > ~ count[tmp]: count[tmp]+1 ), > ~ count ); Hello Robert, I guess you have copied this from my email via copy and paste. By looking at the definition in %o1, I see that some characters are missing, the definition is not complete. > (%o1) roll_dice(n) := block([tmp, count : [0, 0, 0, 0, 0, 0]], > for i thru n do (dom(6) + 1, count : count + 1), count) > tmp tmp > (%i2) (%i2) roll_dice(1000); > > Subscript must be an integer: > tmp As a consequence, tmp is not known. I have no idea, why this happened. Please type in the code, don't paste it, and lets see what happens. Volker From raymond.toy at ericsson.com Mon Jan 16 11:51:09 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 16 Jan 2006 12:51:09 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: (SourceForge net's message of "Mon, 16 Jan 2006 06:35:55 -0800") References: Message-ID: >>>>> ">" == SourceForge net writes: >> Submitted By: Robert Dodier (robert_dodier) >> Assigned to: Nobody/Anonymous (nobody) >> Summary: polarform returns a rectangular expression for float argumen >> Initial Comment: >> polarform (1.0 + %i); => >> 1.414213562373095 (.7071067811865475 %i + >> .7071067811865476) >> build_info(); => >> Maxima version: 5.9.2.19cvs >> Maxima build date: 16:26 1/15/2006 >> host type: i686-redhat-linux-gnu >> lisp-implementation-type: SBCL >> lisp-implementation-version: 0.9.4 The latest CVS version I have is .15cvs. Do you, perchance, have my exp bigfloat evaluation patch? That seems to cause this. If not, then I don't know what the problem is. If you do have the patch, I'm not sure what we should do. I think it's nice that exp(1.0*%i) gets evalutated numerically, but we don't want this to happen in polarform. Ray From raymond.toy at ericsson.com Mon Jan 16 11:45:24 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 16 Jan 2006 12:45:24 -0500 Subject: [Maxima] [RFC] Code for extended precision complex floating point arithmetic In-Reply-To: <04b001c61a35$1657cec0$210110ac@windsor> (Richard Fateman's message of "Sun, 15 Jan 2006 16:37:49 -0800") References: <026DCC31AB859648A6F16C0E5CD2580D308E9A@calttsv025.cal.riotinto.org> <04b001c61a35$1657cec0$210110ac@windsor> Message-ID: >>>>> "Richard" == Richard Fateman writes: Richard> For example, instead of using lists for pairs, Richard> use structures. The names here are too long but .. something like Richard> (defstruct complex-bigfloat ( real-part bfzero :type bigfloat) ( Richard> imag-part bfzero :type bigfloat) precision) Richard> Instead of defining complex bigfloat + as fpz+, use what amounts to Richard> (defmethod two-arg-+ ( (x complex-bigfloat)(y complex-bigfloat)) .... Richard> which also allows you to defineb Richard> (defmethod two-arg-+ ((x complex-bigfloat) (y bigfloat)) ... and Richard> (defmethod two-arg-+ ((x bigfloat) (y complex-bigfloat)) ... and Richard> (defmethod two-arg-+ ((x complex-bigfloat)( y number)) ... for all Richard> common lisp number types. Richard> Oh, you define generic + in terms of two-arg-+, so you can also do Richard> (+ a b c) for complex bigfloats a b c. Richard> What does this get you: Richard> More versatility Richard> Probably slower speed I, for one, would like to see some of these changes. The nice part would be that many algorithms would work with either real or complex args, so having CLOS and methods would mean I wouldn't have to re-write them. And since numerical algorithms are usually pretty hard work, not having to write it again is a major win. And I'd like to see the 1F1 and 2F1 functions implemented too, since that means we get bigfloat implmentations of other special functions like Bessel essentially for free. :-) Ray From macrakis at alum.mit.edu Mon Jan 16 13:43:58 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Mon, 16 Jan 2006 14:43:58 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: References: Message-ID: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> ------=_Part_15794_28111593.1137440638512 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > >> polarform (1.0 + %i); =3D> 1.414213562373095 (.7071067811865475= %i > + .7071067811865476) it's nice that exp(1.0*%i) gets evalutated numerically, but we don't > want this to happen in polarform. > Polarform tries to prevent this sort of simplification by explicitly adding a simp flag. You can test whether the simp flag is being ignored by constructing the expression yourself: ?list(?list(?mexpt,?simp),%e,0.78*%i) ------=_Part_15794_28111593.1137440638512 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
  =   >> polarform (1.0 + %i);  =3D>   1.4142= 13562373095 (.7071067811865475 %i + .7071067811865476)

it's nice that exp(1.0*%i) gets evalutated numerically, but we d= on't
want this to happen in polarform.

Polarform t= ries to prevent this sort of simplification by explicitly adding a simp fla= g.  You can test whether the simp flag is being ignored by constructin= g the expression yourself:

       ?list(?list(?mexpt,?simp),%e,0= .78*%i)
------=_Part_15794_28111593.1137440638512-- From van.Nek at gmx.net Mon Jan 16 15:22:47 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Mon, 16 Jan 2006 22:22:47 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: <43CBE602.2010200@Web.de> References: <43CBE593.27994.98C0FA@localhost> Message-ID: <43CC1CB7.9330.17025C0@localhost> Am 16 Jan 2006 um 19:29 hat Robert Gloeckner geschrieben: > Do you mind me putting all the documentation under General Free > Documentation Licence? Hello Robert, there has been a detailed discussion about licensing of documentations in the mailing list the last weeks. Unfortunately I had no time to read all this mails in detail and dont know what the best is to do. Please ask Robert Dodier. Volker From raymond.toy at ericsson.com Mon Jan 16 15:37:31 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 16 Jan 2006 16:37:31 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> (Stavros Macrakis's message of "Mon, 16 Jan 2006 14:43:58 -0500") References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> Message-ID: >>>>> "Stavros" == Stavros Macrakis writes: Stavros> 1. (*) text/plain ( ) text/html >> >> >> polarform (1.0 + %i); => 1.414213562373095 (.7071067811865475 %i >> + .7071067811865476) Stavros> it's nice that exp(1.0*%i) gets evalutated numerically, but we don't >> want this to happen in polarform. >> Stavros> Polarform tries to prevent this sort of simplification by explicitly adding Stavros> a simp flag. You can test whether the simp flag is being ignored by Stavros> constructing the expression yourself: Stavros> ?list(?list(?mexpt,?simp),%e,0.78*%i) Hmm. This particular form is left unevaluated. But polarform(1.0+%i) is still evaluated. And by tracing simpexpt, I can see that there is no simp flag for mexpt. So perhaps I should check to make sure polarform is setting the simp flag. Thanks for the hint! Ray From macrakis at alum.mit.edu Mon Jan 16 15:46:03 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Mon, 16 Jan 2006 16:46:03 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> Message-ID: <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> ------=_Part_16724_17945843.1137447963115 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > Stavros> ?list(?list(?mexpt,?simp),%e,0.78*%i) > > Hmm. This particular form is left unevaluated. Well, "unsimplified" -- sorry for the nitpicking, but I think it is relevan= t here. What happens to ?list(?list(?mexpt,?simp),%e,1) or ?list(?list(?mexpt,?simp),2.3,2.2) ------=_Part_16724_17945843.1137447963115 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
  =   Stavros>        ?list(?li= st(?mexpt,?simp),%e,0.78*%i)

Hmm.  This particular form is= left unevaluated. 

Well, "unsimplified" -- sorry f= or the nitpicking, but I think it is relevant here.

What happens to =
        ?list(?list(?mexpt,?simp),%e= ,1)
or
       ?list(?list(?mexpt,?simp)= , 2.3,2.2)

------=_Part_16724_17945843.1137447963115-- From raymond.toy at ericsson.com Mon Jan 16 15:59:59 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 16 Jan 2006 16:59:59 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> (Stavros Macrakis's message of "Mon, 16 Jan 2006 16:46:03 -0500") References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> Message-ID: >>>>> "Stavros" == Stavros Macrakis writes: Stavros> 1. (*) text/plain ( ) text/html >> Stavros> ?list(?list(?mexpt,?simp),%e,0.78*%i) >> >> Hmm. This particular form is left unevaluated. Stavros> Well, "unsimplified" -- sorry for the nitpicking, but I think it is relevant Stavros> here. Terminology is important, so I should say the right thing. Stavros> What happens to Stavros> ?list(?list(?mexpt,?simp),%e,1) Stavros> or Stavros> ?list(?list(?mexpt,?simp),2.3,2.2) (%o5) false (%i6) ?list(?list(?mexpt,?simp),%e,1); 1 (%o6) %e (%i7) ?list(?list(?mexpt,?simp),2.3,2.2); 2.2 (%o7) 2.3 Which, I think, makes sense. And from looking at the code for $polarform, polarform doesn't really do anything to ensure %e^(0.78*%i) isn't simplified: (defmfun $polarform (xx) (cond ((and (not (atom xx)) (memq (caar xx) '(mequal mlist $matrix))) (cons (car xx) (mapcar #'$polarform (cdr xx)))) (t ((lambda (aas $%emode) (mul (car aas) (powers '$%e (mul '$%i (cdr aas))))) (absarg xx) nil)))) The T branch is the relevant one. (absarg xx) returns (1.414 . 0.785). Ray From macrakis at alum.mit.edu Mon Jan 16 16:20:14 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Mon, 16 Jan 2006 17:20:14 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> Message-ID: <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> ------=_Part_17140_23088880.1137450014663 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > Which, I think, makes sense. And from looking at the code for > $polarform, polarform doesn't really do anything to ensure > %e^(0.78*%i) isn't simplified: > You're right. I incorrectly assumed it did. Along these lines, what do we think polarform(1) should return? The reasonable answers are: -- 1 (current result) -- %e^0 (simplify the 1* part) -- 1*1 (no good argument for this case, I don't think...) -- 1*%e^0 (no simplification at all to preserve the form) ------=_Part_17140_23088880.1137450014663 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
Which, I thi= nk, makes sense.  And from looking at the code for
$polarform,= polarform doesn't really do anything to ensure
%e^(0.78*%i) isn't simplified:

You're right.&= nbsp; I incorrectly assumed it did.

Along these lines, what do we th= ink polarform(1) should return?  The reasonable answers are:

&n= bsp;     -- 1       =       (current result)
      -- %e^0     &nb= sp; (simplify the 1* part)
      -- 1*1 &n= bsp;        (no good argument for this c= ase, I don't think...)
      -- 1*%e^0 &nb= sp;  (no simplification at all to preserve the form)

------=_Part_17140_23088880.1137450014663-- From andrej.vodopivec at gmail.com Mon Jan 16 17:19:36 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Mon, 16 Jan 2006 15:19:36 -0800 Subject: [Maxima] share-subdirs-list too long Message-ID: <7775b21a0601161519y7234003bo@mail.gmail.com> Hi, I wanted to add contrib/simplex and contrib/solve_rec to share-subdirs-list in init-cl.lisp (line 284). This caused problems with gcl since concatenate gets too many arguments in line 287. I want to put contrib/simplex and contrib/solve_rec to share-subdirs-list so that maxima would find the documentation for these two packages. Is there another way to do this? Andrej From macrakis at alum.mit.edu Mon Jan 16 18:32:23 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Mon, 16 Jan 2006 19:32:23 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> Message-ID: <8b356f880601161632w15d69734r61759245cbe6bb8b@mail.gmail.com> ------=_Part_18488_22425939.1137457943870 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Interestingly, Polarform manages to block some other simplifications: exp(%i*%pi) =3D> -1 but polarform(-1) =3D> exp(%i*%pi) exp(%i*%pi/2) =3D> %i but polarform(%i) =3D> exp(%i*%pi/2) I originally wrote both polarform (rpart.lisp) and power (mopers.lisp) many years ago, but I can't remember how this works.... ------=_Part_18488_22425939.1137457943870 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Interestingly, Polarform manages to block some other simplifications:
     exp(%i*%pi) =3D> -1
but
  &nb= sp;  polarform(-1) =3D> exp(%i*%pi)

    = exp(%i*%pi/2) =3D> %i
but
     polarform(%i) = =3D> exp(%i*%pi/2)

I originally wrote both polarform (rpart.lisp) and power (mopers.li= sp) many years ago, but I can't remember how this works....

------=_Part_18488_22425939.1137457943870-- From andrej.vodopivec at gmail.com Mon Jan 16 19:36:48 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Mon, 16 Jan 2006 17:36:48 -0800 Subject: [Maxima] Re: share-subdirs-list too long In-Reply-To: <7775b21a0601161519y7234003bo@mail.gmail.com> References: <7775b21a0601161519y7234003bo@mail.gmail.com> Message-ID: <7775b21a0601161736o46b81840i@mail.gmail.com> ------=_Part_10991_3485812.1137461808110 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Attached is a patch which solves the problem. Andrej 2006/1/16, Andrej Vodopivec : > Hi, > > I wanted to add contrib/simplex and contrib/solve_rec to > share-subdirs-list in init-cl.lisp (line 284). This caused problems > with gcl since concatenate gets too many arguments in line 287. I want > to put contrib/simplex and contrib/solve_rec to share-subdirs-list so > that maxima would find the documentation for these two packages. Is > there another way to do this? > > Andrej > ------=_Part_10991_3485812.1137461808110 Content-Type: application/octet-stream; name=init-cl.lisp.patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="init-cl.lisp.patch" Index: src/init-cl.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/init-cl.lisp,v retrieving revision 1.60 diff -u -r1.60 init-cl.lisp --- src/init-cl.lisp 16 Jan 2006 23:11:00 -0000 1.60 +++ src/init-cl.lisp 17 Jan 2006 00:37:20 -0000 @@ -281,10 +281,10 @@ (maxima-patterns "###.{mac,mc}") (demo-patterns "###.{dem,dm1,dm2,dm3,dmt}") (usage-patterns "##.{usg,texi}") - (share-subdirs-list '("affine" "algebra" "calculus" "combinatorics" "contrib" "contrib/nset" "contrib/pdiff" "contrib/numericalio" "contrib/descriptive" "contrib/distrib" "contrib/diffequations" "contrib/stringproc" "contrib/Zeilberger" "linearalgebra" "diffequations" "graphics" "integequations" "integration" "macro" "matrix" "misc" "numeric" "orthopoly" "physics" "simplification" "sym" "tensor" "trigonometry" "utils" "vector")) + (share-subdirs-list '("affine" "algebra" "calculus" "combinatorics" "contrib" "contrib/solve_rec" "contrib/simplex" "contrib/nset" "contrib/pdiff" "contrib/numericalio" "contrib/descriptive" "contrib/distrib" "contrib/diffequations" "contrib/stringproc" "contrib/Zeilberger" "linearalgebra" "diffequations" "graphics" "integequations" "integration" "macro" "matrix" "misc" "numeric" "orthopoly" "physics" "simplification" "sym" "tensor" "trigonometry" "utils" "vector")) ; Smash the list of share subdirs into a string of the form "{affine,algebra,...,vector}" . - (L (eval `(concatenate 'list ,@(mapcar #'(lambda (x) `(list "," ,x)) (cdr share-subdirs-list))))) - (share-subdirs (eval `(concatenate 'string "{" ,(car share-subdirs-list) , at L "}")))) + (L (eval `(concatenate 'string ,@(mapcar #'(lambda (x) (concatenate 'string "," x)) (cdr share-subdirs-list))))) + (share-subdirs (eval `(concatenate 'string "{" ,(car share-subdirs-list) ,L "}")))) (setq $file_search_lisp (list '(mlist) ------=_Part_10991_3485812.1137461808110-- From robert.dodier at gmail.com Mon Jan 16 22:53:43 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 16 Jan 2006 21:53:43 -0700 Subject: [Maxima] Re: share-subdirs-list too long In-Reply-To: <7775b21a0601161736o46b81840i@mail.gmail.com> References: <7775b21a0601161519y7234003bo@mail.gmail.com> <7775b21a0601161736o46b81840i@mail.gmail.com> Message-ID: On 1/16/06, Andrej Vodopivec wrote: > Attached is a patch which solves the problem. works for me -- sbcl 0.9.4 and gcl 2.6.7 on linux. robert From robert.dodier at gmail.com Tue Jan 17 00:49:47 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 16 Jan 2006 23:49:47 -0700 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: <43CC1CB7.9330.17025C0@localhost> References: <43CBE593.27994.98C0FA@localhost> <43CBE602.2010200@Web.de> <43CC1CB7.9330.17025C0@localhost> Message-ID: Hello Robert and Volker, > Am 16 Jan 2006 um 19:29 hat Robert Gloeckner geschrieben: > > > Do you mind me putting all the documentation under General Free > > Documentation Licence? My recommendation, which is not binding on anyone, is the following. Disclaimer: I am not a lawyer. (1) Make sure that all copyright holders agree to the license terms. It seems best to put their written agreement somewhere in the document file itself. (2) Release the document under the terms of GPL (instead of GFDL). Bear in mind that the copyright holder of a "work for hire" (e.g. something written as an employee) is typically the party who paid for the work. Also, the copyright holder of a book or a printed journal article is typically the publisher. A translation is a "derivative work" and it is controlled by the copyright holder of the original. There are many other special cases. After some discussion on the mailing list, I came to the conclusion that the GPL is better for Maxima documents than GFDL. (1) GPL covers the rights which seem important, namely right to copy and distribute the original document, and right to create and distribute derivative works. (2) If a document is GPL then text can be copied back and forth between source code and the document since the Maxima source code is GPL also. (3) GFDL has some wierd complications such as the invariant sections stuff. The Debian project has an analysis of the GFDL at their web site and their conclusion is that GFDL is not actually free by the Debian definition. (4) GFDL is very long and complex. GPL is long enough already, no need to go for something even longer and less well understood. I hope this clarifies the situation. Thanks a lot for all your work. All the best, Robert Dodier From fateman at cs.berkeley.edu Tue Jan 17 01:00:05 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Mon, 16 Jan 2006 23:00:05 -0800 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] References: <43CBE593.27994.98C0FA@localhost> <43CBE602.2010200@Web.de> <43CC1CB7.9330.17025C0@localhost> Message-ID: <06eb01c61b33$a583fb10$210110ac@windsor> My recommendation is to put a 5-line BSD style disclaimer on the document. Say you own it but anyone can use it. But I am not a lawyer either. RJF From raymond.toy at ericsson.com Tue Jan 17 07:45:09 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Tue, 17 Jan 2006 08:45:09 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: <8b356f880601161632w15d69734r61759245cbe6bb8b@mail.gmail.com> (Stavros Macrakis's message of "Mon, 16 Jan 2006 19:32:23 -0500") References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> <8b356f880601161632w15d69734r61759245cbe6bb8b@mail.gmail.com> Message-ID: >>>>> "Stavros" == Stavros Macrakis writes: Stavros> 1. (*) text/plain ( ) text/html Stavros> Interestingly, Polarform manages to block some other simplifications: Stavros> exp(%i*%pi) => -1 Stavros> but Stavros> polarform(-1) => exp(%i*%pi) Stavros> exp(%i*%pi/2) => %i Stavros> but Stavros> polarform(%i) => exp(%i*%pi/2) Could it be caused by %emode? polarform binds %emode to false when computing the polarform, and false implies no special simplification. Ray From raymond.toy at ericsson.com Tue Jan 17 08:26:28 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Tue, 17 Jan 2006 09:26:28 -0500 Subject: [Maxima] Re: share-subdirs-list too long In-Reply-To: <7775b21a0601161736o46b81840i@mail.gmail.com> (Andrej Vodopivec's message of "Mon, 16 Jan 2006 17:36:48 -0800") References: <7775b21a0601161519y7234003bo@mail.gmail.com> <7775b21a0601161736o46b81840i@mail.gmail.com> Message-ID: >>>>> "Andrej" == Andrej Vodopivec writes: Andrej> Attached is a patch which solves the problem. [snip] >> Andrej >> [snip] Andrej> - (share-subdirs-list '("affine" "algebra" "calculus" "combinatorics" "contrib" "contrib/nset" "contrib/pdiff" "contrib/numericalio" "contrib/descriptive" "contrib/distrib" "contrib/diffequations" "contrib/stringproc" "contrib/Zeilberger" "linearalgebra" "diffequations" "graphics" "integequations" "integration" "macro" "matrix" "misc" "numeric" "orthopoly" "physics" "simplification" "sym" "tensor" "trigonometry" "utils" "vector")) Andrej> + (share-subdirs-list '("affine" "algebra" "calculus" "combinatorics" "contrib" "contrib/solve_rec" "contrib/simplex" "contrib/nset" "contrib/pdiff" "contrib/numericalio" "contrib/descriptive" "contrib/distrib" "contrib/diffequations" "contrib/stringproc" "contrib/Zeilberger" "linearalgebra" "diffequations" "graphics" "integequations" "integration" "macro" "matrix" "misc" "numeric" "orthopoly" "physics" "simplification" "sym" "tensor" "trigonometry" "utils" "vector")) Andrej> ; Smash the list of share subdirs into a string of the form "{affine,algebra,...,vector}" . Andrej> - (L (eval `(concatenate 'list ,@(mapcar #'(lambda (x) `(list "," ,x)) (cdr share-subdirs-list))))) Andrej> - (share-subdirs (eval `(concatenate 'string "{" ,(car share-subdirs-list) , at L "}")))) Andrej> + (L (eval `(concatenate 'string ,@(mapcar #'(lambda (x) (concatenate 'string "," x)) (cdr share-subdirs-list))))) Andrej> + (share-subdirs (eval `(concatenate 'string "{" ,(car share-subdirs-list) ,L "}")))) If comment is correct and we want to basically convert the list in share-subdirs-list into a string, then I think the following should work well, and doesn't have to call eval: (let (... (share-subdirs (format nil "{~{~A~^,~}}" share-subdirs-list))) ...) Fortunately, even gcl 2.4 understands this format string. Warning: I didn't test this. Ray From fateman at cs.berkeley.edu Tue Jan 17 17:15:52 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Tue, 17 Jan 2006 15:15:52 -0800 Subject: [Fwd: Re: [Maxima] numerical evaluation of 2F1] from RW Gosper Message-ID: <43CD7AA8.4070108@cs.berkeley.edu> This is a multi-part message in MIME format. --------------080409060107020109050600 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -------- Original Message -------- Subject: Re: [Maxima] numerical evaluation of 2F1 Date: Tue, 17 Jan 2006 13:37:36 -0800 (PST) From: R. William Gosper To: fateman at cs.berkeley.edu ..... The full implementation of 2F1 numerics, sfloat, dfloat, and bfloat, including all screw cases, is something of a thesis project, at least how I did it. The following message to Frank Olver contains a sketch of the approach, plus my trick for doing the hardest part. Let me know if you get to the point of attacking Problem 2. Once completed, the whole shebang can be slightly tweaked to do 3F2[1], of which 2F1[z] is a limiting case. ..... -------------- Dear Professor Olver, Dick Askey told me you'd know who should get this. I'll be happy to provide clarifications, and even happier if I can provide more formal assistance at this late stage of the project. --Bill Gosper Methods for numerically difficult cases of 2F1(a,b;c|z) (Note: this message must be viewed with its original linebreaks using a fixed pitch font, e.g. Courier New, in a window at least 88 characters wide.) Problem 1: z near cis(+-pi/3). The linear transformations z <- 1 - z, z <- 1/z, z <- z/(z - 1), . . . (A&S 15.3.3, ..., 15.3.9) all leave z near cis(+-pi/3), where the series converge slowly, or not at all. If we were very lucky, c = 2 a or 2 b mod 1, and we could use the quadratic transformation z <- z^2/(4 z - 4), (A&s 15.3.15), but this is only applicable in a two-dimensional, measure zero subset of the three-dimensional parameter space. Here is how Macsyma (and Mathematica, at least as of a few years ago) handle this. Rejoice: we don't need to get lucky--we can have our z^2/(4 z - 4) convergence unconditionally if we switch from a series to a first order recurrence on three variables. Specifically, let [d , e , f ] = [0, 1, 0], 0 0 0 [ (k + c - b - a) d z ] [ k ] [ (k + a) (k + b) z (e - --------------------) ] [ k 1 - z ] [ --------------------------------------------- ] [ c c + 1 ] [ 4 (k + 1) (k + -) (k + -----) ] [ 2 2 ] [ d ] [ ] [ k + 1 ] [ a b d z ] [ ] [ k ] [ e ] = [ (k + a) (k + b) z (-------- + (k + c) e ) ] . [ k + 1 ] [ 1 - z k ] [ ] [ ----------------------------------------- ] [ f ] [ c c + 1 ] [ k + 1 ] [ 4 (k + 1) (k + -) (k + -----) ] [ 2 2 ] [ ] [ d (k ((c - b - a) z + k (z - 2) - c) - a b z) ] [ k ] [ f - ---------------------------------------------- + e ] [ k c k ] [ 2 (k + -) (1 - z) ] [ 2 ] Then d_k and e_k approach 0 like (z^2/(4z-4))^k, and the running sum f_k approaches 2F1(a,b;c|z). E.g., to numerically test Macsyma's valuation of 2F1(1/2,1/6;1/3|cis(pi/3)): %i %pi %i %pi ------ ------ 1/3 12 1 1 1 3 (2 + 1) %e (d200) hyper_2f1(-, -, -, %e ) = ------------------- 2 6 3 3/4 3 which Macsyma deems (c201) dfloat(%) (d201) 0.25659521709148d0 %i + 0.95762638716458d0 = 0.25659521709148d0 %i + 0.95762638716458d0 we implement the foregoing recurrence, (c202) olv(a,b,c,z):=block([d:0,e:1,f:0,n],for k from 0 unless f=last([d,e,f]:[(k+a)*(k+b)*z*(d*(k+c-b-a)*z/(z-1)+e)/(4*(k+1)*(k+c/2)*(k+(c+1)/2)), (k+a)*(k+b)*z*(e*(k+c)-a*b*d*z/(z-1))/(4*(k+1)*(k+c/2)*(k+(c+1)/2)), d*(k*((c-b-a)*z-c)-a*b*z+k^2*(z-2))/(2*(k+c/2)*(z-1))+f+e]) do n:k, [d,e,f,n])$ and then [d_n,e_n,f_n,n], where n:=max(k), are (c203) olv(1/2,1/6,1/3,cis(dfloat(%pi/3))) (d203) [2.47871813091201d-19 %i + 2.2745179020215d-21, - 2.56722341361481d-19 %i - 9.66582652669975d-19, 0.25659521709148d0 %i + 0.95762638716458d0, 25] I.e., about 18 decimals in 25 steps. (With only rational functions.) Incidentally, (d200) above is the special case a=1/2 of %i %pi ------ a 2 a 3 (d194) hyper_2f1(a, -, ---, %e ) = 3 3 %i %pi a -------- a 1 a/3 6 1 1 sqrt(%pi) Gamma(- + -) 4 %e (--------------------- + ---------------------) 3 2 1 a + 2 2 a + 1 Gamma(-) Gamma(-----) Gamma(-) Gamma(-----) 3 3 3 3 --------------------------------------------------------------------------------------, a + 1 ----- 2 3 a result that would be painful to derive from A&S 15.1.31 for lack of a contiguous companion. I hope DLMF provides contiguous pairs wherever possible to facilitate both numeric and symbolic computation of 2F1s. On that note, the accelerator recurrence above produces a b z 2F1(a+1,b+1;c+1|z)/c when given the alternative initialization [d , e , f ] = [1, 0, 0]. 0 0 0 Problem 2: To evaluate 2F1[z] when |z| > 1 - epsilon, one needs the (rational) linear transformations into a pair of 2F1[1-z] or 2F1[1/z] (A&S 15.3.6, 15.3.7). But when certain linear combinations of the parameters are integers, the transformations give (F - F)/0, and when you take a limit, you effectively differentiate the terms of the hypergeometric series wrt the summation index. (A&S 15.3.11, 15.3.12, 15.3.14). Since the general term is a product of four Gamma functions and z^n, this effectively multiplies the terms by a linear combination of four diGamma functions and log z. I can provide a completely rational recurrence (omitted for "brevity"), isomorphic to the acceleration above, which computes the requisite inf n ==== (a) (b) x (log(x) - psi (n + c) + psi (n + b) + psi (n + a) - psi (n + 1)) \ n n 0 0 0 0 > ----------------------------------------------------------------------------- / (c) n! ==== n n = 0 (and companion), circumventing all four digammas and the log. Please let me know if you find any of this of interest. --Bill Gosper PS, the Airy Functions section looks gorgeous. --------------080409060107020109050600 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit

-------- Original Message --------
Subject: Re: [Maxima] numerical evaluation of 2F1
Date: Tue, 17 Jan 2006 13:37:36 -0800 (PST)
From: R. William Gosper <rwg at osots.com>
To: fateman at cs.berkeley.edu
.....
The full implementation of 2F1 numerics, sfloat, dfloat, and bfloat,
including all screw cases, is something of a thesis project, at
least how I did it.  The following message to Frank Olver contains
a sketch of the approach, plus my trick for doing the hardest part.
Let me know if you get to the point of attacking Problem 2.
Once completed, the whole shebang can be slightly tweaked to do
3F2[1], of which 2F1[z] is a limiting case.
.....
--------------
Dear Professor Olver,
Dick Askey told me you'd know who should get this.  I'll be happy to provide
clarifications, and even happier if I can provide more formal assistance at
this late stage of the project.
--Bill Gosper

    Methods for numerically difficult cases of 2F1(a,b;c|z)

(Note:  this message must be viewed with its original linebreaks using a
 fixed pitch font, e.g. Courier New, in a window at least 88 characters
 wide.)

Problem 1:  z near cis(+-pi/3).  The linear transformations

  z  <-  1 - z,  z  <-  1/z,   z  <-  z/(z - 1), . . .

(A&S 15.3.3, ..., 15.3.9) all leave z near cis(+-pi/3), where the
series converge slowly, or not at all.  If we were very lucky,
c = 2 a  or 2 b  mod 1, and we could use the quadratic transformation

    z  <-  z^2/(4 z - 4),

(A&s 15.3.15), but this is only applicable in a two-dimensional,
measure zero subset of the three-dimensional parameter space.

Here is how Macsyma (and Mathematica, at least as of a few years ago)
handle this.  Rejoice:  we don't need to get lucky--we can have our
z^2/(4 z - 4) convergence unconditionally if we switch from a series
to a first order recurrence on three variables.  Specifically, let

                      [d , e , f ] = [0, 1, 0],
                        0   0   0

              [                              (k + c - b - a) d  z        ]
              [                                               k          ]
              [      (k + a) (k + b) z (e  - --------------------)       ]
              [                          k          1 - z                ]
              [      ---------------------------------------------       ]
              [                             c       c + 1                ]
              [              4 (k + 1) (k + -) (k + -----)               ]
              [                             2         2                  ]
 [ d      ]   [                                                          ]
 [  k + 1 ]   [                           a b d  z                       ]
 [        ]   [                                k                         ]
 [ e      ] = [        (k + a) (k + b) z (-------- + (k + c) e )         ] .
 [  k + 1 ]   [                            1 - z              k          ]
 [        ]   [        -----------------------------------------         ]
 [ f      ]   [                             c       c + 1                ]
 [  k + 1 ]   [              4 (k + 1) (k + -) (k + -----)               ]
              [                             2         2                  ]
              [                                                          ]
              [      d  (k ((c - b - a) z + k (z - 2) - c) - a b z)      ]
              [       k                                                  ]
              [ f  - ---------------------------------------------- + e  ]
              [  k                        c                            k ]
              [                    2 (k + -) (1 - z)                     ]
              [                           2                              ]

Then d_k and e_k approach 0 like (z^2/(4z-4))^k, and the running sum f_k
approaches 2F1(a,b;c|z).  E.g., to numerically test Macsyma's valuation
of 2F1(1/2,1/6;1/3|cis(pi/3)):
                                                               %i %pi
                                        %i %pi                 ------
                                        ------      1/3          12
                             1  1  1      3       (2    + 1) %e
(d200)             hyper_2f1(-, -, -, %e      ) = -------------------
                             2  6  3                      3/4
                                                         3

which Macsyma deems
(c201) dfloat(%)

(d201) 0.25659521709148d0 %i + 0.95762638716458d0 = 

                                   0.25659521709148d0 %i + 0.95762638716458d0

we implement the foregoing recurrence,
(c202) olv(a,b,c,z):=block([d:0,e:1,f:0,n],for k from 0 unless
 f=last([d,e,f]:[(k+a)*(k+b)*z*(d*(k+c-b-a)*z/(z-1)+e)/(4*(k+1)*(k+c/2)*(k+(c+1)/2)),
  (k+a)*(k+b)*z*(e*(k+c)-a*b*d*z/(z-1))/(4*(k+1)*(k+c/2)*(k+(c+1)/2)),
  d*(k*((c-b-a)*z-c)-a*b*z+k^2*(z-2))/(2*(k+c/2)*(z-1))+f+e]) do n:k,
[d,e,f,n])$

and then [d_n,e_n,f_n,n], where n:=max(k), are
(c203) olv(1/2,1/6,1/3,cis(dfloat(%pi/3)))

(d203) [2.47871813091201d-19 %i + 2.2745179020215d-21, 

  - 2.56722341361481d-19 %i - 9.66582652669975d-19, 

   0.25659521709148d0 %i + 0.95762638716458d0, 25]

I.e., about 18 decimals in 25 steps.  (With only rational functions.)

Incidentally, (d200) above is the special case a=1/2 of

                              %i %pi
                              ------
                    a  2 a      3
(d194) hyper_2f1(a, -, ---, %e      ) = 
                    3   3

                               %i %pi a
                               --------
                 a   1   a/3      6                1                       1
 sqrt(%pi) Gamma(- + -) 4    %e         (--------------------- + ---------------------)
                 3   2                         1        a + 2          2        a + 1
                                         Gamma(-) Gamma(-----)   Gamma(-) Gamma(-----)
                                               3          3            3          3
 --------------------------------------------------------------------------------------,
                                          a + 1
                                          -----
                                            2
                                         3
a result that would be painful to derive from A&S 15.1.31 for lack of a contiguous
companion.  I hope DLMF provides contiguous pairs wherever possible to facilitate
both numeric and symbolic computation of 2F1s.  On that note, the accelerator
recurrence above produces a b z 2F1(a+1,b+1;c+1|z)/c when given the alternative
initialization
                      [d , e , f ] = [1, 0, 0].
                        0   0   0
Problem 2:
To evaluate 2F1[z] when |z| > 1 - epsilon, one needs the (rational)
linear transformations into a pair of 2F1[1-z] or 2F1[1/z]
(A&S 15.3.6, 15.3.7).  But when certain linear combinations of the
parameters are integers, the transformations give (F - F)/0, and
when you take a limit, you effectively differentiate the terms of the
hypergeometric series wrt the summation index.  (A&S 15.3.11, 15.3.12,
 15.3.14).  Since the general term is a product of four Gamma functions
and z^n, this effectively multiplies the terms by a linear combination of four
diGamma functions and log z.

I can provide a completely rational recurrence (omitted for "brevity"), isomorphic
to the acceleration above, which computes the requisite

   inf              n
   ====  (a)  (b)  x  (log(x) - psi (n + c) + psi (n + b) + psi (n + a) - psi (n + 1))
   \        n    n                 0             0             0             0        
    >    -----------------------------------------------------------------------------
   /                                        (c)  n!
   ====                                        n
   n = 0

(and companion), circumventing all four digammas and the log.

Please let me know if you find any of this of interest.
--Bill Gosper
PS, the Airy Functions section looks gorgeous.
--------------080409060107020109050600-- From Robert.Gloeckner at Web.de Tue Jan 17 18:04:09 2006 From: Robert.Gloeckner at Web.de (Robert Gloeckner) Date: Wed, 18 Jan 2006 01:04:09 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: References: <43CBE593.27994.98C0FA@localhost> <43CBE602.2010200@Web.de> <43CC1CB7.9330.17025C0@localhost> Message-ID: <43CD85F9.2060500@Web.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Helllo Robert and Volker, Robert Dodier wrote: | Hello Robert and Volker, | (1) Make sure that all copyright holders agree to the license terms. | It seems best to put their written agreement somewhere in the | document file itself. Now, there is no other copyright holder except me. Everything is new. | (2) Release the document under the terms of GPL (instead of GFDL). Done. If people provide additional/better examples or give me notice of typos, I will add/correct them - otherwise I am done with this for the next time. Ciao, Robert - -- https://gna.org/projects/mipisti - (microscope) picture stitching ~ T_a_k_e__c_a_r_e__o_f__y_o_u_r__R_I_G_H_T_S. ~ P_r_e_v_e_n_t__L_O_G_I_C--P_A_T_E_N_T_S ~ http://www.ffii.org, http://www.nosoftwarepatents.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFDzYX5V8k0kPlGZngRAok9AJ9SPphXv16sQMrENL2Lr56nIDk1HACeL6At KvMgbluhArsBPJRwjwY5+ic= =+Dr2 -----END PGP SIGNATURE----- From dlakelan at street-artists.org Tue Jan 17 20:23:37 2006 From: dlakelan at street-artists.org (Daniel Lakeland) Date: Tue, 17 Jan 2006 18:23:37 -0800 Subject: [Maxima] optimization Message-ID: <20060118022336.GE18351@mooch> Teaching myself some Lagrangian mechanics has so far involved minimizing the action of a path by integrating taylor series representations of the paths and then finding stationary points of this integral with respect to the unknown coefficients. Pretty much the first time I tried this it came up with a spurious local minimum. Is there a way to make the routines in the "optmiz" library find an alternate point? Is there a canned numerical constrained optimizer routine? I recently used mnewton to do optimization with lagrange multipliers so I know it can be done that way. but I don't want to reinvent the wheel again if there's a better way. -- Daniel Lakeland dlakelan at street-artists.org http://www.street-artists.org/~dlakelan From robert.dodier at gmail.com Tue Jan 17 21:52:58 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Tue, 17 Jan 2006 20:52:58 -0700 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: <43CD85F9.2060500@Web.de> References: <43CBE593.27994.98C0FA@localhost> <43CBE602.2010200@Web.de> <43CC1CB7.9330.17025C0@localhost> <43CD85F9.2060500@Web.de> Message-ID: hello robert, > If people provide additional/better examples or give me notice of typos, > I will add/correct them - otherwise I am done with this for the next time. terrific, i have copied http://130.83.61.160/~robert/maxima-einfuehrung.pdf , which i guess is the latest version, to the maxima web site and put a link on the docs page http://maxima.sf.net/docs.shtml . if you make a new version let me know and i will update the web site. in the last year or so there has been a lot of work on documentation in various languages, and i think that is really exciting. many thanks to robert and all other authors and translators. best, robert dodier From caruso at posso.dm.unipi.it Wed Jan 18 09:20:14 2006 From: caruso at posso.dm.unipi.it (Fabrizio Caruso) Date: Wed, 18 Jan 2006 16:20:14 +0100 (CET) Subject: [Maxima] explicit list arguments? In-Reply-To: Message-ID: Hi! Is it possible to have explicit list arguments? In other words something like: foo([lhs,rhs]) := lhs+rhs; Or if not possible some macro (depending on the args) on the fly like: foo(lst) := with([lhs:lst[1],rhs:lst[2]], lhs+rhs); Or any other easy way (possibly no lambda expressions) to avoid storing the arguments? Regards Fabrizio From Robert.Gloeckner at Web.de Wed Jan 18 09:23:03 2006 From: Robert.Gloeckner at Web.de (Robert Gloeckner) Date: Wed, 18 Jan 2006 16:23:03 +0100 Subject: [Maxima] assume and solve? Message-ID: <43CE5D57.2080605@Web.de> Hello, which functions work together with assume (contexts?). I am not able to use solve and assume, what am I doing (thinking) wrong? (%i2) (%i2) assume(a>0); (%o2) [a > 0] (%i3) (%i3) solve( a^2 = 4, a); (%o3) [a = - 2, a = 2] Regards, Robert From macrakis at alum.mit.edu Wed Jan 18 10:11:53 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Wed, 18 Jan 2006 11:11:53 -0500 Subject: [Maxima] assume and solve? In-Reply-To: <43CE5D57.2080605@Web.de> References: <43CE5D57.2080605@Web.de> Message-ID: <8b356f880601180811u3e9d8345v6537fbfe1ab9371e@mail.gmail.com> ------=_Part_19461_21017431.1137600713051 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline I do not believe Solve uses the Assume database at all. If Assume has any effect on Solve, it would be through simplification, but = I can't think of any examples of this off the top of my head. assume(x>0)$ solve(abs(x)=3D2); works, but only because abs(x) simplifies to x before solve even sees it! ------=_Part_19461_21017431.1137600713051 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline I do not believe Solve uses the Assume database at all.

If Assume ha= s any effect on Solve, it would be through simplification, but I can't thin= k of any examples of this off the top of my head.

   =       assume(x>0)$
         solve(abs(x)=3D2);
=
works, but only because abs(x) simplifies to x before solve even sees i= t!
------=_Part_19461_21017431.1137600713051-- From fateman at cs.berkeley.edu Wed Jan 18 10:21:41 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 18 Jan 2006 08:21:41 -0800 Subject: [Maxima] explicit list arguments? References: Message-ID: <005a01c61c4b$44dbd3a0$210110ac@windsor> try foo([a]):= a[1]+a[2]; foo(r,s); ----- Original Message ----- From: "Fabrizio Caruso" To: Sent: Wednesday, January 18, 2006 7:20 AM Subject: [Maxima] explicit list arguments? > Hi! > > Is it possible to have explicit list > arguments? > > In other words something like: > > foo([lhs,rhs]) := lhs+rhs; > > Or if not possible some macro (depending on the args) on the fly like: > > foo(lst) := with([lhs:lst[1],rhs:lst[2]], lhs+rhs); > > Or any other easy way (possibly no lambda expressions) > to avoid storing the arguments? > > Regards > > Fabrizio > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From robert.dodier at gmail.com Wed Jan 18 10:48:15 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 18 Jan 2006 09:48:15 -0700 Subject: [Maxima] optimization In-Reply-To: <20060118022336.GE18351@mooch> References: <20060118022336.GE18351@mooch> Message-ID: On 1/17/06, Daniel Lakeland wrote: > Is there a way to make the routines in the "optmiz" library find an > alternate point? not so far as i know. if i understand optmiz correctly, it formulates an augmented lagrangian (to reduce the problem to an unconstrained optimization) and then it calls the built-in solve function. so if solve returns multiple solutions, i guess optmiz has the opportunity to choose among them. maybe it wouldn't be too hard to modify optmiz to do that; maybe optmiz is already doing that. > Is there a canned numerical constrained optimizer routine? the only one that i know of is augmented_lagrangian.mac (which i wrote), which you can find here -- http://cvs.sf.net/viewcvs.py/maxima/maxima/share/contrib/ that script, like optmiz, forms an augmented lagrangian, but then it uses a numerical method to solve it. (the numerical method is to apply mnewton to grad L = 0; that is very weak. however, maxima doesn't have a numerical method for unconstrained optimization, which is a great lack.) (i started to port a quasi-newton minimizer from fortran to lisp, but i got sidetracked ... i should get back to that.) > I recently used mnewton to do optimization with lagrange multipliers > so I know it can be done that way. but I don't want to reinvent the > wheel again if there's a better way. what did you do? it may well be an improvement over augmented_lagrangian. sorry i can't be more helpful. it is certainly possible i've overlooked something. robert dodier From macrakis at alum.mit.edu Wed Jan 18 11:52:04 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Wed, 18 Jan 2006 12:52:04 -0500 Subject: [Maxima] explicit list arguments? In-Reply-To: References: Message-ID: <8b356f880601180952l326c7266w761e26aee7089226@mail.gmail.com> ------=_Part_20565_21800877.1137606724758 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > Is it possible to have explicit list arguments? > foo([lhs,rhs]) :=3D lhs+rhs; I assume you want to call foo as foo([q,r]), not foo(q,r). Maxima does not currently support list destructuring like this (though it has been proposed), but your alternative is easy to express. Instead of > foo(lst) :=3D with([lhs:lst[1],rhs:lst[2]], lhs+rhs); write foo(list):=3D block([lhs:list[1],rhs:list[2]], lhs+rhs); Or any other easy way (possibly no lambda expressions) > to avoid storing the arguments? > I am not sure what you mean by "storing" the arguments. -s ------=_Part_20565_21800877.1137606724758 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
Is it possib= le to have explicit list arguments?
foo([lhs,rhs]) :=3D lhs+rhs;

I assume you want to call foo as foo([q,r]), not foo(q,r).  M= axima does not currently support list destructuring like this (though it ha= s been proposed), but your alternative is easy to express.

Instead o= f=20
foo(lst= ) :=3D with([lhs:lst[1],rhs:lst[2]], lhs+rhs);

write        foo(list):=3D block([lhs:list[1],rhs:l= ist[2]], lhs+rhs);

Or any other easy way (possibly no lambda expressions)
to avoid storing the arguments?

I am not sure= what you mean by "storing" the arguments.

  &nb= sp;     -s

------=_Part_20565_21800877.1137606724758-- From dan.stanger at ieee.org Wed Jan 18 19:19:31 2006 From: dan.stanger at ieee.org (Donna and Dan Stanger) Date: Wed, 18 Jan 2006 20:19:31 -0500 Subject: [Maxima] optimization In-Reply-To: References: <20060118022336.GE18351@mooch> Message-ID: <43CEE923.9030208@ieee.org> One way of solving these kinds of problems is the Raleigh-Ritz method. Robert Dodier wrote: >On 1/17/06, Daniel Lakeland wrote: > > > >>Is there a way to make the routines in the "optmiz" library find an >>alternate point? >> >> > >not so far as i know. > >if i understand optmiz correctly, it formulates an augmented lagrangian >(to reduce the problem to an unconstrained optimization) and then >it calls the built-in solve function. so if solve returns multiple solutions, >i guess optmiz has the opportunity to choose among them. >maybe it wouldn't be too hard to modify optmiz to do that; >maybe optmiz is already doing that. > > > >>Is there a canned numerical constrained optimizer routine? >> >> > >the only one that i know of is augmented_lagrangian.mac >(which i wrote), which you can find here -- >http://cvs.sf.net/viewcvs.py/maxima/maxima/share/contrib/ > >that script, like optmiz, forms an augmented lagrangian, but >then it uses a numerical method to solve it. >(the numerical method is to apply mnewton to grad L = 0; >that is very weak. however, maxima doesn't have a numerical >method for unconstrained optimization, which is a great lack.) > >(i started to port a quasi-newton minimizer from fortran to lisp, >but i got sidetracked ... i should get back to that.) > > > >>I recently used mnewton to do optimization with lagrange multipliers >>so I know it can be done that way. but I don't want to reinvent the >>wheel again if there's a better way. >> >> > >what did you do? it may well be an improvement over augmented_lagrangian. > >sorry i can't be more helpful. it is certainly possible i've >overlooked something. > >robert dodier > >_______________________________________________ >Maxima mailing list >Maxima at math.utexas.edu >http://www.math.utexas.edu/mailman/listinfo/maxima > > > > From jebyrnes at ucdavis.edu Wed Jan 18 21:26:27 2006 From: jebyrnes at ucdavis.edu (Jarrett Byrnes) Date: Wed, 18 Jan 2006 19:26:27 -0800 Subject: [Maxima] Question regarding loops and CAR: #:G18223 is not a list Message-ID: Hello, all. I'm somewhat new to maxima, although I used to work with scheme a long long time ago. I'm working on a program to brute force solve a system of equations for a variety of values in order to graph it later, but keep running into the error "CAR: #:G18223 is not a list" inside my for loops (I'm incrementing across two variables). Below is the offending code. What about loop structure am I fundamentally missing? -Jarrett /*constants*/ a:1; r:10; l:1; /*loop through each value of dmax */ for dmax in [1,0.5,0.01] do /*loop through each value of b we're using*/ ( for b: 0 thru 1 step .5 do (s: solve([d=dmax-dmax*a*((s-1)/r),sl=s-l*d*s,sr=sl+(r-sl)*d,s=sr- sr*b*((sr-1)/r)],[d,s,sl,sr]), /*print results */ /*I realize that I'm going to need to sort through the matrix s, but this is just a first version of the program */ print("s,") ) ); From macrakis at alum.mit.edu Wed Jan 18 21:50:56 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Wed, 18 Jan 2006 22:50:56 -0500 Subject: [Maxima] Question regarding loops and CAR: #:G18223 is not a list In-Reply-To: References: Message-ID: <8b356f880601181950mfca6d4fp4565dcda42f22837@mail.gmail.com> ------=_Part_27815_6651103.1137642656285 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > it later, but keep running into the error "CAR: #:G18223 is not a list" > inside my for loops (I'm incrementing across two variables). Below is > the offending code. What about loop structure am I fundamentally > missing? > There is nothing wrong with your loop structure, but you are using the variable 's' in two incompatible ways: one, you set s:solve(...); two, you use it as a symbolic variable 's' in solve(...,[...s...]). The value you set on one loop through still exists the next time through. Also, it is not clear to me why you are solving symbolically when you have approximate parameters like 0.5. -s ------=_Part_27815_6651103.1137642656285 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
it later, bu= t keep running into the error "CAR: #:G18223 is not a list"
in= side my for loops (I'm incrementing across two variables).  Below= is
the offending code.  What about loop structure am I fundament= ally
missing?

There is nothing wrong with your= loop structure, but you are using the variable 's' in two incompatible way= s: one, you set s:solve(...); two, you use it as a symbolic variable 's' in= solve(...,[...s...]).  The value you set on one loop through still ex= ists the next time through.

Also, it is not clear to me why you are solving symbolically when y= ou have approximate parameters like 0.5.

    &nb= sp;         -s


------=_Part_27815_6651103.1137642656285-- From jebyrnes at ucdavis.edu Wed Jan 18 22:05:54 2006 From: jebyrnes at ucdavis.edu (Jarrett Byrnes) Date: Wed, 18 Jan 2006 20:05:54 -0800 Subject: [Maxima] Question regarding loops and CAR: #:G18223 is not a list In-Reply-To: <8b356f880601181950mfca6d4fp4565dcda42f22837@mail.gmail.com> References: <8b356f880601181950mfca6d4fp4565dcda42f22837@mail.gmail.com> Message-ID: <87f935566345611e2333224ed876a073@ucdavis.edu> Ah, that did the trick, or so it seems. As for why I still "solve"ing, you're right, of course - I was working on this originally to NOT have to specify all of the parameters, but ALGSYS couldn't solve the system, so, it's just a legacy of the process. Thanks again - interesting lesson in terms of how maxima does scoping, as I would have thought that s would be redefined each time I entered the loop. On Jan 18, 2006, at 7:50 PM, Stavros Macrakis wrote: >> it later, but keep running into the error "CAR: #:G18223 is not a >> list" >> inside my for loops (I'm incrementing across two variables).??Below is >> the offending code.??What about loop structure am I fundamentally >> missing? > > There is nothing wrong with your loop structure, but you are using the > variable 's' in two incompatible ways: one, you set s:solve(...); two, > you use it as a symbolic variable 's' in solve(...,[...s...]).? The > value you set on one loop through still exists the next time through. > > Also, it is not clear to me why you are solving symbolically when you > have approximate parameters like 0.5. > > ????????????? -s > > From macrakis at alum.mit.edu Wed Jan 18 22:09:42 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Wed, 18 Jan 2006 23:09:42 -0500 Subject: [Maxima] Question regarding loops and CAR: #:G18223 is not a list In-Reply-To: <87f935566345611e2333224ed876a073@ucdavis.edu> References: <8b356f880601181950mfca6d4fp4565dcda42f22837@mail.gmail.com> <87f935566345611e2333224ed876a073@ucdavis.edu> Message-ID: <8b356f880601182009v24f54e50ke3222bce3a58c332@mail.gmail.com> ------=_Part_28043_24182281.1137643782393 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > Thanks again - interesting lesson in terms of how maxima does scoping, > as I would have thought that s would be redefined each time I entered > the loop. > To create a local scope, use 'block', e.g. block([s], ....) and remember that Maxima has dynamic, not lexical, scope. ------=_Part_28043_24182281.1137643782393 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
Thanks again= - interesting lesson in terms of how maxima does scoping,
as I would ha= ve thought that s would be redefined each time I entered
the loop.

To create a local scope, use 'block= ', e.g.

        block([s], ....)<= br>
and remember that Maxima has dynamic, not lexical, scope.

------=_Part_28043_24182281.1137643782393-- From caruso at posso.dm.unipi.it Thu Jan 19 03:39:07 2006 From: caruso at posso.dm.unipi.it (Fabrizio Caruso) Date: Thu, 19 Jan 2006 10:39:07 +0100 (CET) Subject: [Maxima] plot2d In-Reply-To: Message-ID: Hi again! I can't find a way to get rid of the legend when using on Maxima 5.9.2 "plot2d([[discrete,....],[discrete,...],...])" nor can I find a way to show a larger coordinate system (the coordinate system is just sized as the highest coordinate and points with such coordinates are covered by the border of the coordinate system). Could someone help me? Fabrizio From van.Nek at gmx.net Thu Jan 19 09:03:41 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Thu, 19 Jan 2006 16:03:41 +0100 Subject: [Maxima] plot2d In-Reply-To: References: Message-ID: <43CFB85D.2708.18F157F@localhost> --Alt-Boundary-19685.26154367 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body Am 19 Jan 2006 um 10:39 hat Fabrizio Caruso geschrieben: > I can't find a way to get rid of the legend > when using on Maxima 5.9.2 > "plot2d([[discrete,....],[discrete,...],...])" nor can > I find a way to show a larger coordinate system > (the coordinate system is just sized as the highest coordinate > and points with such coordinates are covered by the > border of the coordinate system). Hello Fabrizio, a lot of help do you get, if you ask for ? plot_options; I will give some examples. (%i1) xy:makelist([x,sqrt(25.0-x*x)],x,-5,5)$ (%i2) xy: append( xy, makelist([x,-sqrt(25.0-x*x)],x,-5,5) )$ points on a circle defined. (%i3) plot2d([discrete,xy], [gnuplot_curve_styles,["with points"]], [gnuplot_preamble,"set grid; set xtics 1; set size ratio -1; set xrange [-6:6]; set yrange [-6:6]; unset key"])$ essentially is the gnuplot_preamble. Syntax: [gnuplot_preamble,"cmd1;cmd2;cmd3;..."] try to vary and leave out the commands and see what happens. you can learn a lot about this commands by looking into the gnuplot help directly. this is quite easy to read. the plot command in gnuplot is simply 'plot'. ask for 'plot' and you get a lot of information. with 'unset key' you get rid of the legend. if you want another legend, do the following: (%i4) plot2d([discrete,xy], [gnuplot_curve_titles,["title 'circle'"]], [gnuplot_curve_styles,["with points"]], [gnuplot_preamble,"set grid; set xtics; set size ratio -1; set xrange [-6:6]; set yrange [-6:6]"])$ gnuplot is a wonderful programm (good choice, that maxima uses it). nearly everything is possible. formatting what you want. reading in files, recalculating data .... i think it is the best to learn about all the plotting options to do that in gnuplot directly. if you are able to read in german i can send you some more tutorial examples cheers Volker van Nek --Alt-Boundary-19685.26154367 Content-type: text/html; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body
Am 19 Jan 2006 um 10:39 hat Fabrizio Caruso geschrieben:

> I can't find a way to get rid of the legend
> when using on Maxima 5.9.2
> "plot2d([[discrete,....],[discrete,...],...])" nor can
> I find a way to show a larger coordinate system
> (the coordinate system is just sized as the highest coordinate
> and points with such coordinates are covered by the
> border of the coordinate system).

Hello Fabrizio,

a lot of help do you get, if you ask for

? plot_options;

I will give some examples.

(%i1) xy:makelist([x,sqrt(25.0-x*x)],x,-5,5)$
(%i2) xy: append( xy, makelist([x,-sqrt(25.0-x*x)],x,-5,5) )$

points on a circle defined.

(%i3) plot2d([discrete,xy],
[gnuplot_curve_styles,["with points"]],
[gnuplot_preamble,"set grid; set xtics 1; set size ratio -1; set xrange [-6:6]; set yrange [-6:6]; unset key"])$

essentially is the gnuplot_preamble. Syntax: [gnuplot_preamble,"cmd1;cmd2;cmd3;..."]
try to vary and leave out the commands and see what happens.

you can learn a lot about this commands by looking into the gnuplot help directly. this is quite easy to read. the plot command in gnuplot is simply 'plot'. ask for 'plot' and you get a lot of information.

with  'unset key'  you get rid of the legend. if you want another legend, do the following:  

(%i4) plot2d([discrete,xy],
[gnuplot_curve_titles,["title 'circle'"]],
[gnuplot_curve_styles,["with points"]],
[gnuplot_preamble,"set grid; set xtics; set size ratio -1; set xrange [-6:6]; set yrange [-6:6]"])$

gnuplot is a wonderful programm (good choice, that maxima uses it). nearly everything is possible. formatting what you want. reading in files, recalculating data ....

i think it is the best to learn about all the plotting options to do that in gnuplot directly.

if you are able to read in german i can send you some more tutorial examples

cheers

Volker van Nek


--Alt-Boundary-19685.26154367-- From robert.dodier at gmail.com Thu Jan 19 10:28:40 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 19 Jan 2006 09:28:40 -0700 Subject: [Maxima] Question regarding loops and CAR: #:G18223 is not a list In-Reply-To: References: Message-ID: On 1/18/06, Jarrett Byrnes wrote: > /*loop through each value of dmax */ > for dmax in [1,0.5,0.01] do > /*loop through each value of b we're using*/ > ( for b: 0 thru 1 step .5 do instead of nested loops, a somewhat more maxima-ish way to do this is to use outermap -- outermap (foo, [1, 2, 3], [a, b]); => [[foo(1, a), foo(1, b)], [foo(2, a), foo(2, b)], [foo(3, a), foo(3, b)]] if you're coming from scheme, maxima has functions apply, map, lambda, and a few others that might seem familiar. hth robert dodier From raymond.toy at ericsson.com Thu Jan 19 10:53:50 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Thu, 19 Jan 2006 11:53:50 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> (Stavros Macrakis's message of "Mon, 16 Jan 2006 17:20:14 -0500") References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> Message-ID: >>>>> "Stavros" == Stavros Macrakis writes: Stavros> Along these lines, what do we think polarform(1) should return? The Stavros> reasonable answers are: Stavros> -- 1 (current result) Stavros> -- %e^0 (simplify the 1* part) Stavros> -- 1*1 (no good argument for this case, I don't think...) Stavros> -- 1*%e^0 (no simplification at all to preserve the form) I think either the first or the last would be acceptable, with a slight preference to the first. If the latter were written 1*%e^(0*%i), it might be better than the first. I think the other two would just cause people to wonder why they weren't simplified. Ray From robert.dodier at gmail.com Thu Jan 19 11:13:46 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 19 Jan 2006 10:13:46 -0700 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> Message-ID: On 1/16/06, Stavros Macrakis wrote: > Along these lines, what do we think polarform(1) should return? The > reasonable answers are: > > -- 1 (current result) > -- %e^0 (simplify the 1* part) > -- 1*1 (no good argument for this case, I don't think...) > -- 1*%e^0 (no simplification at all to preserve the form) i'm inclined to say polarform(x) => x for positive real numbers (and abs(x) exp(%i %pi) for negative reals) ... the extra %e^0 seems like cruft in this case. best robert dodier From macrakis at alum.mit.edu Thu Jan 19 11:29:19 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Thu, 19 Jan 2006 12:29:19 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> Message-ID: <8b356f880601190929q47acb55cs73cade6157862a11@mail.gmail.com> ------=_Part_2243_14655938.1137691759585 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > the extra %e^0 seems like cruft in this case. So basically you like the current behavior. The argument for things like 1*%e^(0*%i) and for that matter 0*%e^(0*%i) is that the user can use 'part' on them and thus doesn't have to know about cabs and carg. ------=_Part_2243_14655938.1137691759585 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
the extra %e= ^0 seems like cruft in this case.

So basic= ally you like the current behavior.

The argument for things like 1*%e^(0*%i) and for that matter 0*%e^(= 0*%i) is that the user can use 'part' on them and thus doesn't have to know= about cabs and carg.
------=_Part_2243_14655938.1137691759585-- From fateman at cs.berkeley.edu Thu Jan 19 11:41:05 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Thu, 19 Jan 2006 09:41:05 -0800 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> Message-ID: <017c01c61d1f$86a882e0$210110ac@windsor> I think the correct answer is none of the above (or below) for polar. Polar form could be represented internally as a pair, say polar(a,b) for a*e^(%i*b) with suitable restrictions or assumptions on a, b.. e.g. a>=0, -pi To: Cc: "Maxima" Sent: Thursday, January 19, 2006 8:53 AM Subject: Re: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen >>>>>> "Stavros" == Stavros Macrakis writes: > > Stavros> Along these lines, what do we think polarform(1) should > return? The > Stavros> reasonable answers are: > > Stavros> -- 1 (current result) > Stavros> -- %e^0 (simplify the 1* part) > Stavros> -- 1*1 (no good argument for this case, I don't > think...) > Stavros> -- 1*%e^0 (no simplification at all to preserve the > form) > > I think either the first or the last would be acceptable, with a > slight preference to the first. If the latter were written > 1*%e^(0*%i), it might be better than the first. I think the other two > would just cause people to wonder why they weren't simplified. > > Ray > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From robert.dodier at gmail.com Thu Jan 19 11:56:56 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 19 Jan 2006 10:56:56 -0700 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: <8b356f880601190929q47acb55cs73cade6157862a11@mail.gmail.com> References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> <8b356f880601190929q47acb55cs73cade6157862a11@mail.gmail.com> Message-ID: On 1/19/06, Stavros Macrakis wrote: > The argument for things like 1*%e^(0*%i) and for that matter 0*%e^(0*%i) is > that the user can use 'part' on them and thus doesn't have to know about > cabs and carg. understood. i want to actively discourage part hacking. users should fall back on part hacking only when maxima doesn't supply a function corresponding to the algebraic concept they want, but in this case, maxima does supply cabs and carg. (although i wonder why cabs is not the same things as abs. not immediately relevant here.) part hacking is fragile, as it depends on expressions being simplified in a certain way. in the present context, we would have to forestall some obvious simplifications such as 0*exp(foo) => 0 and exp(0) => 1 in order to make part hacking work for the polarform return value. best, robert dodier From willisb at unk.edu Thu Jan 19 13:49:42 2006 From: willisb at unk.edu (Barton Willis) Date: Thu, 19 Jan 2006 13:49:42 -0600 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: <017c01c61d1f$86a882e0$210110ac@windsor> Message-ID: > Another example is how to deal with "real_interval" > objects, which I have been puzzling over. I wish somebody would re-write the simplification functions for the arithmetic operators so that they use object-oriented dispatch. Maybe I'm wrong, but I don't think tellsimpafter is sturdy enough for incorporating new objects, such as real intervals, into maxima. Oh sure--the effort for appending n new objects is O(n^2). So it goes. Barton From raymond.toy at ericsson.com Thu Jan 19 13:59:33 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Thu, 19 Jan 2006 14:59:33 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: <8b356f880601190929q47acb55cs73cade6157862a11@mail.gmail.com> (Stavros Macrakis's message of "Thu, 19 Jan 2006 12:29:19 -0500") References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> <8b356f880601190929q47acb55cs73cade6157862a11@mail.gmail.com> Message-ID: >>>>> "Stavros" == Stavros Macrakis writes: Stavros> 1. (*) text/plain ( ) text/html >> >> the extra %e^0 seems like cruft in this case. Stavros> So basically you like the current behavior. I think the following replacement for $polarform is a reasonable compromise. It leaves current behavior except that exp(num*%i) isn't expanded into rectangular form. All this replacement does is check to see if the phase is exactly zero, and deletes the exponential part. If the phase is non-zero, it sets the simp flag for mexpt so no simplification is done, which fixes the reported bug. I made some tests with 1 -> exp(%i*0), but multiplying two such polar forms gives things like 72*1 which is bad. Or things like exp(2*%i*0), which is weird too. Ray (defmfun $polarform (xx) (cond ((and (not (atom xx)) (memq (caar xx) '(mequal mlist $matrix))) (cons (car xx) (mapcar #'$polarform (cdr xx)))) (t ((lambda (aas $%emode) (let ((p (mul '$%i (cdr aas)))) (if (and (numberp p) (zerop p)) (car aas) (mul (car aas) `((mexpt simp) $%e ,p))))) (absarg xx) nil)))) From fateman at eecs.berkeley.edu Thu Jan 19 14:00:33 2006 From: fateman at eecs.berkeley.edu (Richard Fateman) Date: Thu, 19 Jan 2006 12:00:33 -0800 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: References: <017c01c61d1f$86a882e0$210110ac@windsor> Message-ID: The simplifiers DO use objected oriented dispatch. They look at the explicit type tag, e.g. msin, mcos, mplus, mtimes and use methods associated with each of them. In some cases the method is looked up on the property list of the type. For "efficiency" times plus expt are handled differently. The problem I see is that if you have written your programs assuming that 0*anything is 0, and then someone gives you an exception to that rule (like 0*infinity is 'undef') then object orientedness doesn't really help. On the other hand, I'm writing a bunch of programs using defmethod etc to change LISP so that it knows about things like GMP arithmetic, polynomials, intervals.... eventually the LISP may meet Maxima halfway. RJF ----- Original Message ----- From: Barton Willis Date: Thursday, January 19, 2006 11:49 am Subject: Re: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen > > Another example is how to deal with "real_interval" > > objects, which I have been puzzling over. > > I wish somebody would re-write the simplification functions > for the arithmetic operators so that they use object-oriented > dispatch. > > Maybe I'm wrong, but I don't think tellsimpafter > is sturdy enough for incorporating new objects, such as > real intervals, into maxima. > > Oh sure--the effort for appending n new objects is O(n^2). > So it goes. > > Barton > > From macrakis at alum.mit.edu Thu Jan 19 15:45:13 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Thu, 19 Jan 2006 16:45:13 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: References: <8b356f880601161143m4dc6846fs6e8a1de203314fd@mail.gmail.com> <8b356f880601161346j4ffe858fm6de7aa8883ad339c@mail.gmail.com> <8b356f880601161420y25caa566x3c754bf23f36fa14@mail.gmail.com> <8b356f880601190929q47acb55cs73cade6157862a11@mail.gmail.com> Message-ID: <8b356f880601191345odfc6f74y97e511830d6d959f@mail.gmail.com> ------=_Part_5595_22122919.1137707113972 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > (although i wonder why cabs is not the same things as abs. > not immediately relevant here.) Because abs is a mathematical function with simplification rules (like sin, etc.) and cabs is a formula-manipulation function which changes the form of its argument (like factor) and tries to give an explicit formula for the abs, avoiding abs/cabs in the result when possible. Also because abs assumes that not only are all variables real, but so are all function values. (These are standard Maxima assumptions.) Here are some examples of the difference: abs(asin(x)) =3D> abs(asin(x)) cabs(asin(x)) =3D> (questions about value of x p;n;) =3D> sqrt(log(sqrt(x^2-1)+x)^2+%pi^2/4) -------- declare(z,complex); abs(z) =3D> abs(z) cabs(z) =3D> sqrt(realpart(z)^2+imagpart(z)^2) -------- abs(sqrt(x)) =3D> sqrt(x) -- assumes result is real cabs(sqrt(x)) =3D> asksign x<0 =3D> sqrt(-x) You could of course provide this functionality in some other way, e.g. cabsexpand(abs(asin(x))) and abs(sqrt(x)), domain:complex =3D> asksign ------=_Part_5595_22122919.1137707113972 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
(although i = wonder why cabs is not the same things as abs.
not immediately relevant = here.)

Because abs is a mathematical function wi= th simplification rules (like sin, etc.) and cabs is a formula-manipulation= function which changes the form of its argument (like factor) and tries to= give an explicit formula for the abs, avoiding abs/cabs in the result when= possible.  Also because abs assumes that not only are all variables r= eal, but so are all function values.  (These are standard Maxima assum= ptions.)

Here are some examples of the difference:

   =    abs(asin(x)) =3D> abs(asin(x))

   &nb= sp;  cabs(asin(x)) =3D> (questions about value of x p;n;) =3D>              = ;  sqrt(log(sqrt(x^2-1)+x)^2+%pi^2/4)

--------

      declare(z,complex);<= br>      abs(z) =3D> abs(z)
  &nbs= p;   cabs(z) =3D> sqrt(realpart(z)^2+imagpart(z)^2)

---= -----

      abs(sqrt(x)) =3D> sqrt(x)&nb= sp;            =    -- assumes result is real
      cabs(sqrt(x)) =3D> asksign x<0 =3D= > sqrt(-x)

You could of course provide this functionality in some= other way, e.g.
      cabsexpand(abs(asin(x)))
and      abs(sqrt(x)), domain:complex  =3D> asksign

------=_Part_5595_22122919.1137707113972-- From robert.dodier at gmail.com Thu Jan 19 16:03:21 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 19 Jan 2006 15:03:21 -0700 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: References: <017c01c61d1f$86a882e0$210110ac@windsor> Message-ID: On 1/19/06, Barton Willis wrote: > > Another example is how to deal with "real_interval" > > objects, which I have been puzzling over. > > I wish somebody would re-write the simplification functions > for the arithmetic operators so that they use object-oriented > dispatch. > > Maybe I'm wrong, but I don't think tellsimpafter > is sturdy enough for incorporating new objects, such as > real intervals, into maxima. i'm not sure i know what you mean by object oriented here. maybe you can give some examples of operations on real_interval (for example) which can't be handled in the current tellsimpafter implementation. robert From willisb at unk.edu Thu Jan 19 17:27:25 2006 From: willisb at unk.edu (Barton Willis) Date: Thu, 19 Jan 2006 17:27:25 -0600 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen Message-ID: -----Robert Dodier wrote: ----- >i'm not sure i know what you mean by object >oriented here. I'd like for the function simplus, for example, to look at the property list of non-atom addends to see if there was a specific function for adding such objects. If there was such a function, simplus would ship the addition off to that function. That way simplus could be extended without hacking the simplus code. That's all. I don't think simplus, simptimes, and ... allow this. >maybe you can give some examples of operations on >real_interval (for example) which can't be >handled in the current tellsimpafter implementation. Tell me if I need to study the documentation, but I often run into trouble: (%i1) matchdeclare(x, lambda([s], mapatom(s) or op(s) # 'interval))$ (%i2) matchdeclare([a,b,c,d],true)$ The warning scares me: (%i3) tellsimp(x * interval(a,b), interval(min(x*a,x*b), max(x*a,x*b)))$ Warning: Putting rules on '+' or '*' is inefficient, and may not work. (%i4) tellsimp(interval(a,b) * interval(c,d), interval(min(a*c,a*d,b*c,b*d), max( a*c,a*d,b*c,b*d)))$ OK: (%i5) interval(5,6) * interval(9,12); (%o5) interval(45,72) Yeechs!: (%i6) interval(5,6) * interval(9,12) * p; (%o6) interval(5,6)*interval(9,12)*p OK: (%i7) interval(5,6) * p; (%o7) interval(MIN(6*p,5*p),MAX(6*p,5*p)) Maybe this can be done with tellsimp; to me, it seems to painful. Barton From t_lannen at hotmail.com Thu Jan 19 17:45:51 2006 From: t_lannen at hotmail.com (Tim Lannen) Date: Thu, 19 Jan 2006 18:45:51 -0500 Subject: [Maxima] help References: <200509190415.j8J4F5Y00474@dell3.ma.utexas.edu> Message-ID: please unsuscribe ----- Original Message ----- From: To: Sent: Sunday, September 18, 2005 11:15 PM Subject: Maxima digest, Vol 1 #964 - 14 msgs > Send Maxima mailing list submissions to > maxima at math.utexas.edu > > To subscribe or unsubscribe via the World Wide Web, visit > http://www.math.utexas.edu/mailman/listinfo/maxima > or, via email, send a message with subject or body 'help' to > maxima-request at math.utexas.edu > > You can reach the person managing the list at > maxima-admin at math.utexas.edu > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Maxima digest..." > > > Today's Topics: > > 1. Macsyma vs. Maxima, book (Fred J.) > 2. Re: Re: [Maxima-bugs] [ maxima-Bugs-1281737 ] > limit(atan(x)/(1/exp(1)-exp(-(1+x)^2)),x,inf,plus) - wrong (Milan Lukic) > 3. Re: Macsyma vs. Maxima, book (Milan Lukic) > 4. user difined functions and the init file (Fred J.) > 5. Ignore. Test (Raymond Toy) > 6. string functions (Robert Dodier) > 7. Re: Fwd: plot2d cannot create maxout.gnuplot (Robert Dodier) > 8. maxima / macsyma's language (Richard Fateman) > 9. Re: Re: Fwd: plot2d cannot create maxout.gnuplot (Mario) > 10. Re: [Maxima-bugs] [ maxima-Bugs-1281737 ] > limit(atan(x)/(1/exp(1)-exp(-(1+x)^2)),x,inf,plus) > - wrong (Raymond Toy) > 11. Maxima Archives partial download (Fred J.) > 12. Re: Maxima Archives partial download (Robert Dodier) > 13. in search of a userdir, was: plot2d cannot create maxout.gnuplot > (Robert Dodier) > > --__--__-- > > Message: 1 > Date: Fri, 16 Sep 2005 14:37:05 -0700 (PDT) > From: "Fred J." > To: Maxima > Subject: [Maxima] Macsyma vs. Maxima, book > > I am looking for a book on Calculus using Maxima. I > came across this link > http://www.math.utexas.edu/pipermail/maxima/2003/004000.html > which is 2 years old. it was helpful in suggesting 2 > books; > > Computer-Supported Calculus > by Robert P. Gilbert, Adi Ben-Israel > ISBN: 32118-2924-5 > > Macsyma Tutorial for Calculus, by Richard N. Fell, > Jones and Bartlett Publishers, Sudbury, Massachusetts, > 1998 > > 2 years have passed and before going and buy them I > wanted to drop a post asking for suggestions. > > thank you > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com > > > --__--__-- > > Message: 2 > Date: Fri, 16 Sep 2005 16:52:01 -0700 > From: Milan Lukic > To: Maxima List > Subject: Re: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1281737 ] > limit(atan(x)/(1/exp(1)-exp(-(1+x)^2)),x,inf,plus) - wrong > > * Raymond Toy <rtoy at earthlink.net> [2005-09-16 12:34:18 -0400]: > >> >> > >> > I am puzzled by the introduction of log(-1) in the result. The >> > problem in the bug is lim(f/g) type problem, where both lim(f) and >> > lim(g) are finite, lim(g) # 0. I am wondering if Maxima's limit >> > algorithm does include treating that kind of basic case, and if so, >> > does Maxima "know" that limit(atan(x),x,inf)=%pi/2, and that >> > limit(exp(-t),t,inf)=0? >> >> I thought the same, but for some reason, maxima didn't try f/g. But >> clearly maxima does know the limits for atan and exp. >> > How difficult would it be to modify the Limits package to make sure > that Maxima looks for the "easiest" possibilities first, such as > checking lim(f), lim(g) and if those exists, if lim(g)#0? > >> > >> > Back to the bug: For problems like one in the bug, I would like to >> > believe that Maxima ought to be able to handle those staying in the >> > domain of real numbers, and do "simple" evaluation lim(f)/lim(g). >> > Perhaps yours "add %log to one of the special cases in simplimit >> > (clause 3)." is going to do exactly that. I apologize if I missed that >> >> Unfortunately, no, that doesn't do that. What it does is prevent maxima >> from doing lim(f(x)) = f(lim x) for finite x. This is wrong of course >> if f(x) has discontinuities for finite values. I also don't understand >> why sin, cos, and others are listed here. >> > Thanks for the clarification. > >> There are probably other possible approaches for the issue in bug >> 1281737. The fix I made is really meant for the log bug, which >> concidentally fixes bug 1281737. >> > Nobody is going to complain for getting two birds by one stone :) > >> > However, if Maxima has to run into limit(log(w(z)),z,a) type of >> > thing, the it seems that the lim(log) =log(lim) does not hold if the >> > limit point happens to be in the negative real axis. Your approach to >> > evaluate limits of both real and imaginary part seem to be a good way >> > to go, with a proviso - the sign of the imaginary part should be kept >> > constant to ensure approach to the limit point either through the >> > second or the third quadrant. >> >> I believe it does preserve the sign. >> > > Are you sure about this? It seems to me that if Maxima says that > log(-1)=%i*%pi, and if it keeps the track of the sign of the imaginary > part in log(1-%i*x), then it should not return log(-1) for the > limit(log(-1-%i*x),x,0,plus). > > Milan > > > >> Ray >> >> _______________________________________________ >> Maxima mailing list >> Maxima at math.utexas.edu >> http://www.math.utexas.edu/mailman/listinfo/maxima > > -- > > > --__--__-- > > Message: 3 > Date: Fri, 16 Sep 2005 17:04:17 -0700 > From: Milan Lukic > To: Maxima > Subject: Re: [Maxima] Macsyma vs. Maxima, book > > I am not familiar with those books, but Google produced the following > link http://www.math.utexas.edu/pipermail/maxima/2003/004000.html that > might help you make your decision. > BTW, "Milan" mentinoned in that web page is not me. > Milan > > * Fred J. <phddas at yahoo.com> [2005-09-16 14:37:05 -0700]: > >> I am looking for a book on Calculus using Maxima. I >> came across this link >> http://www.math.utexas.edu/pipermail/maxima/2003/004000.html >> which is 2 years old. it was helpful in suggesting 2 >> books; >> >> Computer-Supported Calculus >> by Robert P. Gilbert, Adi Ben-Israel >> ISBN: 32118-2924-5 >> >> Macsyma Tutorial for Calculus, by Richard N. Fell, >> Jones and Bartlett Publishers, Sudbury, Massachusetts, >> 1998 >> >> 2 years have passed and before going and buy them I >> wanted to drop a post asking for suggestions. >> >> thank you >> >> __________________________________________________ >> Do You Yahoo!? >> Tired of spam? Yahoo! Mail has the best spam protection around >> http://mail.yahoo.com >> >> _______________________________________________ >> Maxima mailing list >> Maxima at math.utexas.edu >> http://www.math.utexas.edu/mailman/listinfo/maxima > > -- > > > --__--__-- > > Message: 4 > Date: Fri, 16 Sep 2005 17:31:42 -0700 (PDT) > From: "Fred J." > To: Maxima > Subject: [Maxima] user difined functions and the init file > > Hello > > using Maxima 5.9.1-9 under Debian with the emacs > maxima-mode > I want to define some user functions and make them > available to use > at the Maxima command line under Linux, emacs > Maxima-mode. > after reading some paragraphs from the ref. manual and > in the User > Guide second edition userg.pdf by Macsyma Inc from > this link > http://www.cs.berkeley.edu/~fateman/macsyma/docs/ > I could use some correction for what I did; > > *create the maxima initialization file to auto load > when maxima > starts. please comment on the content of the next 2 > files as I am very > new to maxima. > > ~/mac-init.mac > **************************************** > /* > Maxima commands which you place in this file will be > executed each > time you execute the command INITIALZIE_MAXIMA(); > which happens > automatically whenever you start maxima. > to load this file any other time, issue this at the > maxima command: > load("mac-init.mac")$ > */ > > file_search_usage:ture$ > file_search:cons("~/home/sam/maxima/",file_search)$ > showtime:true$ > load("~/maxima/myFun.mac")$ > ****************************************************** > > > *create the file with user defined functions > ~/maxima_fun/myFun.mac > *********************************** > /*written by "Barton Willis" on > maxima mailing list*/ > distance(p1,p2) := block([listarith : true], > if listp(p1) and listp(p2) and length(p1) = > length(p2) then ( > p1 : map('cabs, p1-p2), > sqrt(p1.p1)) > else error("The arguments to 'distance' must be > equal length > lists")) > ****************************************************** > > > the following might help > (%i20) describe(INITIALZIE_MAXIMA); > > (%o20) FALSE > (%i21) discribe(FILE_SEARCH); > > (%o21) discribe(FILE_SEARCH) > (%i22) discribe(FILE_SEARCH_USAGE); > > (%o22) > discribe([/usr/share/maxima/5.9.1/share/##.{usg,texi}, > /usr/share/maxim# > > a/5.9.1/share/{affine,algebra,calculus,combinatorics,contrib,contrib/nset,cont# > > rib/pdiff,diffequations,graphics,integequations,integration,macro,matrix,misc,# > > numeric,physics,simplification,specfunctions,sym,tensor,trigonometry,utils,vec# > > tor}/##.{usg,texi}, > /usr/share/maxima/5.9.1/doc/##.{usg,texi}]) > (%i23) > > > > __________________________________ > Yahoo! Mail - PC Magazine Editors' Choice 2005 > http://mail.yahoo.com > > > --__--__-- > > Message: 5 > Date: Sat, 17 Sep 2005 12:54:57 -0400 > From: Raymond Toy > To: Maxima List > Subject: [Maxima] Ignore. Test > > test to maxima at math.utexas.edu. > > Ray > > > --__--__-- > > Message: 6 > Date: Sat, 17 Sep 2005 13:28:17 -0600 > From: Robert Dodier > Reply-To: robert.dodier at gmail.com > To: "van.Nek at gmx.net" > Cc: maxima > Subject: [Maxima] string functions > > hi volker, you wrote in part: > >> My plans for the next future are to write a complete I/O and string >> processing for Maxima. > > i mentioned in my previous message about numericalio for file i/o. > i forgot to ask, what are the string operations you want? > > lisp provides some string operations. > i guess it would be straightforward to create a maxima function > for each lisp string function like this: > > (defun $upcase (s) (l2m-string (string-upcase (m2l-string s)))) > > it turns out maxima strings are lisp symbols (not lisp strings). > so it seems necessary to convert back and forth. > > (maxima strings are symbols because maclisp, the dialect in > which maxima was originally written, didn't have strings. > by chance or design, this is a useful feature, and i'm not concerned > at this time to argue for using lisp strings as maxima strings.) > > for what it's worth, > robert dodier > > > --__--__-- > > Message: 7 > Date: Sat, 17 Sep 2005 13:46:24 -0600 > From: Robert Dodier > Reply-To: robert.dodier at gmail.com > To: "van.Nek at gmx.net" > Cc: maxima > Subject: [Maxima] Re: Fwd: plot2d cannot create maxout.gnuplot > > hi volker, > > one more comment -- you wrote in part, > >> I discovered Maxima to be a wonderful way for teaching a first >> programming language combined with a CAS. To me and my >> students it is both easy and powerful. > > i find the maxima language to be rather pleasant for programming. > it is simple (which puts limits on what one can do, but for beginners > that is not a problem), and it inherits from lisp the "everything is an > expression" point of view. > > while we're on the topic, some language features which seem worth > considering are lexical scope, closures, and a package system. > > for what it's worth, > robert dodier > > > --__--__-- > > Message: 8 > Date: Sat, 17 Sep 2005 13:57:30 -0700 > From: Richard Fateman > Organization: University of California, Berkeley > To: robert.dodier at gmail.com > CC: "van.Nek at gmx.net" , maxima > Subject: [Maxima] maxima / macsyma's language > > What may be obvious to some people, but not all, is that Maxima's > language is one choice point, and there is nothing to > prevent someone from adding another front end language > that could, for example, be lisp syntax or Matlab syntax > or even Mathematica syntax. > > > The commercial macsyma can load and execute Matlab.m files, > as well as translate from matlab.m to macsyma functions. > > The current language was designed in about 1967, and > was influenced by Algol 60 and Lisp. It is also extensible > in some ways by adding new operators. > > RJF > > > > > Robert Dodier wrote: > >> hi volker, >> >> one more comment -- you wrote in part, >> >> >>>I discovered Maxima to be a wonderful way for teaching a first >>>programming language combined with a CAS. To me and my >>>students it is both easy and powerful. >> >> >> i find the maxima language to be rather pleasant for programming. >> it is simple (which puts limits on what one can do, but for beginners >> that is not a problem), and it inherits from lisp the "everything is an >> expression" point of view. >> >> while we're on the topic, some language features which seem worth >> considering are lexical scope, closures, and a package system. >> >> for what it's worth, >> robert dodier >> >> _______________________________________________ >> Maxima mailing list >> Maxima at math.utexas.edu >> http://www.math.utexas.edu/mailman/listinfo/maxima > > > --__--__-- > > Message: 9 > From: Mario > To: maxima at math.utexas.edu, robert.dodier at gmail.com > Subject: Re: [Maxima] Re: Fwd: plot2d cannot create maxout.gnuplot > Date: Sun, 18 Sep 2005 00:06:23 +0200 > Cc: "van.Nek at gmx.net" > > Greetings, > >> > I discovered Maxima to be a wonderful way for teaching a first >> > programming language combined with a CAS. To me and my >> > students it is both easy and powerful. >> >> i find the maxima language to be rather pleasant for programming. >> it is simple (which puts limits on what one can do, but for beginners >> that is not a problem), and it inherits from lisp the "everything is an >> expression" point of view. >> > > I recognize in these paragraphs my own experience with Maxima. > > I like to teach maths with the assistance of a computer, and I have been > an > intensive user of java applets and spreadsheets as pedagogical tools. > > When I discovered Maxima, about twelve months ago, I began to think about > the > advantages and possibilities of such a program. Besides maths, I also > teach > some basic computing, and when I had to choose the programming language, > my > vote was for Maxima: so, my (high school) students learned to use a CAS > and > to write simple functions (with for-loops, conditionals and all that) with > Maxima. > > Now, during this new academic year, some of those students will attend my > math > class, and they are already familiar with Maxima and how to program > functions! > > My project for this course is to use Maxima as a mathematical laboratory. > I'm > very excited waiting for the results of this experience. > > Mario > -- > -------------------------- > Mario Rodriguez Riotorto > www.biomates.net > > > --__--__-- > > Message: 10 > Date: Sat, 17 Sep 2005 22:34:11 -0400 > From: Raymond Toy > To: Milan Lukic , Maxima List > Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1281737 ] > limit(atan(x)/(1/exp(1)-exp(-(1+x)^2)),x,inf,plus) > - wrong > > Milan Lukic wrote: > >>* Raymond Toy; rtoy at earthlink.net> [2005-09-17 12:13:49 -0400]: >> >> >> >>>Milan Lukic wrote: >>> >>> >>>>* Raymond Toy <rtoy at earthlink.net> [2005-09-16 12:34:18 -0400]: >>>> >>>> >>>> >>>I was mistaken. It does try this first. However, it calls factor on >>>the expression first, which converts it to >>>atan(x)*exp((1+x)^2)/(exp(x^2+2*x)-1). >>> >>>But this is of the form inf/inf. At this point, I'm confused on exactly >>> it's trying to do. More study needed if we really want to figure this >>> out. >>> >>> >>> >>I tried to see what happens if L'Hospital's rule is used on >>atan(x)*exp((1+x)^2)/(exp(x^2+2*x)-1). After >>diff(numerator,x)/diff(denom,x),ratsimp; it is clear to the human eye >>that (replacing atan(x) by %pi/2) that the new problem is basically a >>quotient of two cubic polynomials, yet Maxima insists on log(-1). It >> >> > I'd have to study the code some more to figure out why it insist on > doing this. > >>>Perhaps log(-1) is intended to mean there's some ambiguity in the >>>result? With the patch, limit(log(-1-%i*x),x,0,plus) returns -%i*%pi/2, >>>preserving the appropriate sign and giving the expected answer. >>> >>> >>> >>This interpretation makes sense, at least for people who already know >>that Maxima's handling of branch cuts is not full proof, but I would >>be happier then if it would return Log(-1), and let the user figure >>out which one of the branches applies in the particular case. Ideally, >> >> > I think letting the user decide what log(-1) is is worse than not > returning an answer at all. Even if the user knows about branch cuts, > he'll end up having to do the derivation itself to figure out what > branch to use. And if you don't know what branch cuts are, you're > likely to choose the wrong answer. > > We should fix the deficiencies in maxima's understanding of branch cuts. > > But I agree, maxima probably should not have converted atan to log for > so quickly. > >>I would prefer that it would return a correct and fully reliable >>result - or, since at this stage of development, we cannot completely >>trust its handling of logs, print some kind of warning. >>BTW, did you mean -%i*%pi/2 or -%i*%pi above? I think that the later >>is correct. >> >> > Yes, that's my mistake. -%i*%pi/2 is for a different problem. > > Ray > > > --__--__-- > > Message: 11 > Date: Sun, 18 Sep 2005 13:47:47 -0700 (PDT) > From: "Fred J." > To: Maxima > Subject: [Maxima] Maxima Archives partial download > > Hello > > did any body tried to download the whole archive and > had the problem that it only downloads 19.0MB and > stops? > url: http://www.math.utexas.edu/pipermail/maxima/ > link tage: download the full raw archive > tabe url: > http://www.math.utexas.edu/pipermail/maxima.mbox/maxima.mbox > > regards. > Fred, J. > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com > > > --__--__-- > > Message: 12 > Date: Sun, 18 Sep 2005 19:37:49 -0600 > From: Robert Dodier > Reply-To: robert.dodier at gmail.com > To: "Fred J." > Subject: Re: [Maxima] Maxima Archives partial download > Cc: Maxima > > Hello Fred, > >> did any body tried to download the whole archive and >> had the problem that it only downloads 19.0MB and >> stops? > > You might have better luck by downloading the gzip-compressed > year-by-year archives. Those are a lot smaller, about 1 Mb per year. > I've downloaded the year-by-year archives without problems. > > hope this helps, > Robert Dodier > > > --__--__-- > > Message: 13 > Date: Sun, 18 Sep 2005 22:07:08 -0600 > From: Robert Dodier > Reply-To: robert.dodier at gmail.com > To: "Vadim V. Zhytnikov" > Cc: van.Nek at gmx.net, Maxima > Subject: [Maxima] in search of a userdir, was: plot2d cannot create > maxout.gnuplot > > hello vadim, you wrote: > >> Some write permission problem was my primary suspect. >> And as far as I understand this is the case. A bit >> strange that the problem shoved up only after some >> Windows patches but this doesn't matter. >> The fact that Plot2/3d damps data files in some quite >> random place is bad. And this is actually bad on both >> Windows and UNIX. Especially on Windows since >> maxout.gnuplot directory depends even on the xmaxima >> shortcut location. If xmaxima is invoked from >> menu - one place, the same shortcut copied on >> user desktop - another. So writing maxout.* >> files in some definite location in user's directory >> is definitely right idea. But I'm only not so sure >> that maxima-userdir >> >> $HOME/.maxima on UNIX >> %USERPROFILE%\maxima on Windows >> >> is the proper place. As Valker mention this directory >> may be not existent. What about user home directory? >> Just $HOME or %USERPROFILE% respectively. > > $HOME or %USERPROFILE% is OK by me. > so is /tmp or c:\temp; however that is problematic, as it is not > guaranteed that c:\temp exists, so far as i know. > > can someone make a patch to (1) assign a userdir variable if one > is not already assigned, and (2) modify plot2d/plot3d to write > the output file to the user directory (whatever is decided upon) ? > > when this problem is resolved, i want to go ahead with the 5.9.2 release. > conversely, if this problem is not resolved, i am inclined to go ahead > anyway -- a lot of stuff has changed since 5.9.1 and the benefit of > allowing users to access the new version outweighs the lack of a > fix for this particular problem. > > all the best, > robert dodier > > > > --__--__-- > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > > > End of Maxima Digest > From caruso at posso.dm.unipi.it Thu Jan 19 18:50:03 2006 From: caruso at posso.dm.unipi.it (Fabrizio Caruso) Date: Fri, 20 Jan 2006 01:50:03 +0100 (CET) Subject: [Maxima] topology of planar curves In-Reply-To: Message-ID: Hi In my new package for real algebraic geometry I have implemented an algorithm for the computation of the topology of planar curves, which for planar curves produces something equivalent to a cylindrical algebraic decomposition (c.a.d.) I wonder whether c.a.d. has already implemented in Maxima? If so, is it built-in? which Maxima commands? If it is in an external package? Where could I get it? Fabrizio From jebyrnes at ucdavis.edu Thu Jan 19 20:14:14 2006 From: jebyrnes at ucdavis.edu (Jarrett Byrnes) Date: Thu, 19 Jan 2006 18:14:14 -0800 Subject: [Maxima] width of output Message-ID: Another quick question regarding output. I am writing to a file using appendfile and print. However, some of my lines are rather long, and hence add extra line breaks. Is there any way to change the width of the output so that this does not happen, as it makes later analysis rather inconvenient. Indeed, is there a general way to change the width of a maxima session to accommodate a wider shell? From vttoth at vttoth.com Thu Jan 19 20:54:09 2006 From: vttoth at vttoth.com (Viktor T. Toth) Date: Thu, 19 Jan 2006 21:54:09 -0500 Subject: [Maxima] width of output In-Reply-To: Message-ID: <006501c61d6c$c9525f10$03fca6c7@VTT3> Set the variable linel to the desired value. E.g., linel:150; The default is 79. Viktor -----Original Message----- From: maxima-admin at math.utexas.edu [mailto:maxima-admin at math.utexas.edu] On Behalf Of Jarrett Byrnes Sent: Thursday, January 19, 2006 9:14 PM To: maxima at math.utexas.edu Subject: [Maxima] width of output Another quick question regarding output. I am writing to a file using appendfile and print. However, some of my lines are rather long, and hence add extra line breaks. Is there any way to change the width of the output so that this does not happen, as it makes later analysis rather inconvenient. Indeed, is there a general way to change the width of a maxima session to accommodate a wider shell? _______________________________________________ Maxima mailing list Maxima at math.utexas.edu http://www.math.utexas.edu/mailman/listinfo/maxima From fateman at cs.berkeley.edu Thu Jan 19 22:32:54 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Thu, 19 Jan 2006 20:32:54 -0800 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen References: Message-ID: <01ee01c61d7a$95882120$210110ac@windsor> ----- Original Message ----- From: "Barton Willis" To: "Robert Dodier" Cc: "Maxima" Sent: Thursday, January 19, 2006 3:27 PM Subject: Re: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen > -----Robert Dodier wrote: ----- > >>i'm not sure i know what you mean by object >>oriented here. > > I'd like for the function simplus, for example, to look > at the property list of non-atom addends to see if there > was a specific function for adding such objects. ... ordinarily, only atoms have property lists, and these are global, not lexically bound. If you are simplifying a+b, do you use the program for "a" or for "b"? > If there > was such a function, simplus would ship the addition > off to that function. That way simplus could be extended > without hacking the simplus code. That's all. I don't think > simplus, simptimes, and ... allow this. I think the problem is not so easily solved this way. As a simple example, consider the rule that the objects in a sum should be sorted lexicographically. That is, a+b+c is simplified but b+a+c is not. What property would you place on a, b, or c? It would be great if you can come up with a good solution that has eluded previous programmers attempting to write simplifiers! (The generic "+" I wrote changes all (+ a b c d ...) to (two-arg-+ a (two-arg-+ b ( .....))) and then does method dispatches e.g. for (defmethod two-arg-+ ((x number)(y number)) ....) (defmethod two-arg-+ ((x interval) (y interval)) ....) (defmethod two-arg-+ ((x interval) (y number)) ....) etc > >>maybe you can give some examples of operations on >>real_interval (for example) which can't be >>handled in the current tellsimpafter implementation. > > Tell me if I need to study the documentation, but I often > run into trouble: > > (%i1) matchdeclare(x, lambda([s], mapatom(s) or op(s) # 'interval))$ > (%i2) matchdeclare([a,b,c,d],true)$ > > The warning scares me: > > (%i3) tellsimp(x * interval(a,b), interval(min(x*a,x*b), max(x*a,x*b)))$ > Warning: Putting rules on '+' or '*' is inefficient, and may not work. > > (%i4) tellsimp(interval(a,b) * interval(c,d), > interval(min(a*c,a*d,b*c,b*d), max( > a*c,a*d,b*c,b*d)))$ > > OK: > > (%i5) interval(5,6) * interval(9,12); > (%o5) interval(45,72) > > Yeechs!: > > (%i6) interval(5,6) * interval(9,12) * p; > (%o6) interval(5,6)*interval(9,12)*p > > OK: > > (%i7) interval(5,6) * p; > (%o7) interval(MIN(6*p,5*p),MAX(6*p,5*p)) > > Maybe this can be done with tellsimp; to me, it seems to painful. > Barton > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From robert.dodier at gmail.com Fri Jan 20 00:09:06 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 19 Jan 2006 23:09:06 -0700 Subject: [Maxima] custom simplification, was: polarform returns a rectangular expression for float argumen Message-ID: On 1/19/06, Barton Willis wrote: > I'd like for the function simplus, for example, to look > at the property list of non-atom addends to see if there > was a specific function for adding such objects. If there > was such a function, simplus would ship the addition > off to that function. That way simplus could be extended > without hacking the simplus code. That's all. I don't think > simplus, simptimes, and ... allow this. well, the existing tellsimp / tellsimpafter code does something pretty much like this, except it associates rules with operators instead of operands. > (%i3) tellsimp(x * interval(a,b), interval(min(x*a,x*b), max(x*a,x*b)))$ it turns out that tellsimp and tellsimpafter construct different functions for identical rules -- they don't differ just in putting new rules before or after the built-in rules. maybe there's a reason for that. i like tellsimpafter's approach to + and * -- given a pattern stated as a two-operand addition, it sweeps up multiple operands which satisfy the same match predicates as each of the two operands. so i would get started on interval arithmetic like this: matchdeclare (ii, intervalp, nn, not_intervalp); intervalp (e) := not atom (e) and op (e) = 'interval; not_intervalp (e) := not intervalp (e); tellsimpafter (ii + nn, FOO (ii, nn)); a + 1; => a + 1 a + interval (3, 7); => FOO(interval(3, 7), a) a + interval (3, 7) + b + interval (9, 12) + c; => FOO(interval(9, 12) + interval(3, 7), c + b + a) interval (3, 7) + interval (9, 12); => FOO(interval(9, 12) + interval(3, 7), 0) at this point it's easy to write FOO, since it is known the first argument is a sum of intervals and the second is a sum of stuff that isn't intervals. FOO presumably constructs and returns a new interval. rules for other operators can be defined similarly. only rules for + and * make use of the sweep-up matching, although it makes sense for any n-ary commutative operator. a slightly burdensome aspect of the rule definition stuff is that a rule has to be declared for each operator, so a single rule can't cover all the built-in trig functions, for example. maybe the notation could be less obscure -- i'd like to see ii + nn --> FOO (ii, nn) assuming intervalp (ii), not_intervalp (nn); but that's easy to arrange with macros. here is a link to the reference manual, http://maxima.sourceforge.net/docs/manual/en/maxima_38.html and some additional verbiage. http://maxima.sourceforge.net/wiki/index.php/User-defined%20simplification http://maxima.sourceforge.net/wiki/index.php/tellsimpafter%20worked%20example%20%28base%2060%20arithmetic%29 sorry to run on so long -- hth, robert From willisb at unk.edu Fri Jan 20 10:16:25 2006 From: willisb at unk.edu (Barton Willis) Date: Fri, 20 Jan 2006 10:16:25 -0600 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1407378 ] polarform returns a rectangular expression for float argumen In-Reply-To: <01ee01c61d7a$95882120$210110ac@windsor> Message-ID: "Richard Fateman" wrote on 01/19/2006 10:32:54 PM: > > I'd like for the function simplus, for example, to look > > at the property list of non-atom addends to see if there > > was a specific function for adding such objects. > > ... ordinarily, only atoms have property lists, and these are global, not > lexically bound. Let me correct myself: "...property list of the _operator_ of a non-atom" > If you are simplifying a+b, do you use the > program for "a" or for "b"? You have to look at both "a" and "b." If the operator of "a" is "interval," the addition would get sent to "add-interval." The "add-interval" function would need to know how to do interval + interval, interval + non interval term, and interval + anything else. So "add-interval" has to look at "b." I suppose the interval + anything else case is the tricky part. > I think the problem is not so easily solved this way. > As a simple example, consider the rule that the objects in > a sum should be sorted lexicographically. That is, > a+b+c is simplified but b+a+c is not. What property > would you place on a, b, or c? Some things would have to be done with some other scheme. Getting this right could be tricky. > It would be great if you can come up with a good solution > that has eluded previous programmers attempting to write > simplifiers! I don't plan on trying to do anything like this. I doubt that I could do a good job of such a project. I'd guess that 95% of such a project would be easy; getting the remaining 5% correct would be beyond me. Apparently, I should study the user documentation and code for tellsimpafter. I didn't even know that tellsimpafter and tellsimp are algorithmically distinct. Barton From fateman at cs.berkeley.edu Fri Jan 20 11:34:27 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Fri, 20 Jan 2006 09:34:27 -0800 Subject: [Maxima] tellsimp, tellsimpafter References: Message-ID: <027a01c61de7$c5e221a0$210110ac@windsor> They are similar. They differ in the ordering of rule application, but there is also an issue of re-simplification. That is, you don't want to get into a recursion because the argument to a rule is first simplified. (calling the rule ... etc). The situation with tellsimpafter requires a different trick. But otherwise I think the code generated is the same. (At least that is what I recall from when I wrote this stuff in 1969 or so...) RJF From robert.dodier at gmail.com Fri Jan 20 12:07:31 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 20 Jan 2006 11:07:31 -0700 Subject: [Maxima] Re: tellsimp, tellsimpafter In-Reply-To: <027a01c61de7$c5e221a0$210110ac@windsor> References: <027a01c61de7$c5e221a0$210110ac@windsor> Message-ID: On 1/20/06, Richard Fateman wrote: > They are similar. They differ in the ordering of rule application, but > there is also an issue of re-simplification. That is, you don't want > to get into a recursion because the argument to a rule is first > simplified. (calling the rule ... etc). The situation with tellsimpafter > requires a different trick. But otherwise I think the code generated > is the same. (At least that is what I recall from when I wrote this > stuff in 1969 or so...) well, something that's relevant to the example involving interval objects is that tellsimpafter generates code to call PART+ and PART* which carry out the argument sweep-up matching for + and *. tellsimp doesn't; the effect is that tellsimp matches a substantially smaller set of patterns for + and * than tellsimpafter. it's not clear to me what is the reason for the difference in matching logic between tellsimp and tellsimpafter. i wonder if we should try to unify the two. the preamble for the matching functions probably needs to be different, but the matching logic itself could be the same, i'm guessing. matchdeclare (aa, integerp, bb, symbolp); tellsimp (aa + bb, FOO (aa, bb)); tellsimpafter (aa + bb, BAR (aa, bb)); :lisp (symbol-function '&+rule1) :lisp (symbol-function '&+rule2) sheds some light on this topic. fwiw robert dodier From fateman at cs.berkeley.edu Fri Jan 20 12:26:24 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Fri, 20 Jan 2006 10:26:24 -0800 Subject: [Maxima] Re: tellsimp, tellsimpafter References: <027a01c61de7$c5e221a0$210110ac@windsor> Message-ID: <000c01c61def$06247680$11d09888@windsor> I assume the difference was dictated by the need to avoid the recursive simplification of arguments problem, but I don't recall this decision at all. It was written a while ago.. An alternative pattern matcher, e.g. a mockup of Mathematica's matcher, might be useful as an alternative. Especially since I wrote one in Lisp a few years ago :) ----- Original Message ----- From: "Robert Dodier" To: "Richard Fateman" Cc: "Barton Willis" ; "Maxima" Sent: Friday, January 20, 2006 10:07 AM Subject: [Maxima] Re: tellsimp, tellsimpafter > On 1/20/06, Richard Fateman wrote: > >> They are similar. They differ in the ordering of rule application, but >> there is also an issue of re-simplification. That is, you don't want >> to get into a recursion because the argument to a rule is first >> simplified. (calling the rule ... etc). The situation with >> tellsimpafter >> requires a different trick. But otherwise I think the code generated >> is the same. (At least that is what I recall from when I wrote this >> stuff in 1969 or so...) > > well, something that's relevant to the example involving interval > objects is that tellsimpafter generates code to call PART+ and PART* > which carry out the argument sweep-up matching for + and *. > tellsimp doesn't; the effect is that tellsimp matches a substantially > smaller set of patterns for + and * than tellsimpafter. > > it's not clear to me what is the reason for the difference in matching > logic between tellsimp and tellsimpafter. i wonder if we should try > to unify the two. the preamble for the matching functions probably > needs to be different, but the matching logic itself could be the same, > i'm guessing. > > matchdeclare (aa, integerp, bb, symbolp); > tellsimp (aa + bb, FOO (aa, bb)); > tellsimpafter (aa + bb, BAR (aa, bb)); > :lisp (symbol-function '&+rule1) > :lisp (symbol-function '&+rule2) > > sheds some light on this topic. > > fwiw > robert dodier > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From Nel Sat Jan 21 10:37:27 2006 From: Nel (Nel) Date: Sat, 21 Jan 2006 08:37:27 -0800 (PST) Subject: [Maxima] geometry sketch pad Message-ID: <2509378.post@talk.nabble.com> ------=_Part_1164_13891052.1137861447106 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit hi-i was just wondering if anyone knows where i can download this tool called 'geometry sketch pad'-it's a tool that can help draw graphs, sketch polygons, 2D and 3D objects. thank you God Bless -- View this message in context: http://www.nabble.com/geometry-sketch-pad-t968544.html#a2509378 Sent from the Maxima forum at Nabble.com. ------=_Part_1164_13891052.1137861447106 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit hi-i was just wondering if anyone knows where i can download this tool called 'geometry sketch pad'-it's a tool that can help draw graphs, sketch polygons, 2D and 3D objects.
thank you
God Bless

View this message in context: geometry sketch pad
Sent from the Maxima forum at Nabble.com. ------=_Part_1164_13891052.1137861447106-- From fateman at cs.berkeley.edu Sat Jan 21 11:13:13 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sat, 21 Jan 2006 09:13:13 -0800 Subject: [Maxima] geometry sketch pad References: <2509378.post@talk.nabble.com> Message-ID: <007301c61ead$f9347d20$210110ac@windsor> This is a multi-part message in MIME format. ------=_NextPart_000_0070_01C61E6A.E84AA310 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable google knows. http://www.keypress.com/sketchpad/ ----- Original Message -----=20 From: Nel N. (sent by Nabble.com)=20 To: maxima at math.utexas.edu=20 Sent: Saturday, January 21, 2006 8:37 AM Subject: [Maxima] geometry sketch pad hi-i was just wondering if anyone knows where i can download this tool = called 'geometry sketch pad'-it's a tool that can help draw graphs, = sketch polygons, 2D and 3D objects.=20 thank you=20 God Bless=20 -------------------------------------------------------------------------= ----- View this message in context: geometry sketch pad Sent from the Maxima forum at Nabble.com. ------=_NextPart_000_0070_01C61E6A.E84AA310 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
google knows.
http://www.keypress.com/sketc= hpad/
 
----- Original Message -----
From:=20 Nel N. = (sent by=20 Nabble.com)
Sent: Saturday, January 21, = 2006 8:37=20 AM
Subject: [Maxima] geometry = sketch=20 pad

hi-i was just wondering if anyone knows where i can = download=20 this tool called 'geometry sketch pad'-it's a tool that can help draw = graphs,=20 sketch polygons, 2D and 3D objects.
thank you
God Bless

View this message in context: = geometry=20 sketch pad
Sent from the Maxima forum at=20 Nabble.com. ------=_NextPart_000_0070_01C61E6A.E84AA310-- From willisb at unk.edu Sun Jan 22 09:29:22 2006 From: willisb at unk.edu (Barton Willis) Date: Sun, 22 Jan 2006 09:29:22 -0600 Subject: [Maxima] speeding up linear algebra Message-ID: I was thinking about how to speed up some code in /share/linearalgebra. If I could figure out how to make the function 'sumit' (see below) faster, I could use the same ideas to speed up linearalgebra. My experiments show that 'sumit' runs no faster when it uses doubles than when it doesn't. (The function 'sumit' imitates things that need to be done in linearalgebra--the function 'sumit' is just a simplified 'toy' function.) (%i2) load("sumit.o")$ (%i3) showtime : all$ Evaluation took 0.00 seconds (0.00 elapsed) (%i4) lst : makelist(1.0/k,k,1,10^4)$ (%i5) sumit('double,lst); Evaluation took 3.70 seconds (3.70 elapsed) (%o5) 9.7876060360443446 (%i6) sumit('abc,lst); Evaluation took 3.77 seconds (3.77 elapsed) (%o6) 9.7876060360443446 ---file sumit.lisp------- (defun $sumit (typ lst) (let* ((n ($length lst)) (acc 0) (a (if (eq typ '$double) (make-array n :element-type 'double-float :initial-contents (cdr lst)) (make-array n :initial-contents (cdr lst))))) (flet ((fadd (x y) (if (eq typ '$double) (+ x y) (add x y)))) (decf n) (loop for i from 0 to n do (setq acc (fadd acc (aref a i))))) acc)) ------------------------ Barton From fateman at cs.berkeley.edu Sun Jan 22 10:13:33 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sun, 22 Jan 2006 08:13:33 -0800 Subject: [Maxima] speeding up linear algebra References: Message-ID: <00df01c61f6e$cb577d50$210110ac@windsor> I'm not sure what you are really trying to do, but this has a much better chance of running fast. Generalizations for other types should be simple to figure out. I could run this program, sumit2 taking about 1/3 of the cpu time, and half the GC time as your original. Also the total times is more than 100X shorter on my 933 mHz pentium 3 than the times you give. That is, I could do 10^6 elements in 0.32 sec + 1.6sec GC. for a total of 2 sec I hope this helps with your linear algebra. (defun sumit2(typ lst) (if (eq typ 'double) (sumit2d lst))) (defun sumit2d (lst) (let ((s 0.0d0)) (declare (double-float s)(optimize(speed 3)(safety 0)(debug 0))) (dolist (j lst s) (declare (double-float j)) (incf s j)))) (defun makeabc(N)(setf abc (loop for i from 1 to (expt 10 N) collect (/ 1.0d0 i)))) ----- Original Message ----- From: "Barton Willis" To: Sent: Sunday, January 22, 2006 7:29 AM Subject: [Maxima] speeding up linear algebra > > I was thinking about how to speed up some code in /share/linearalgebra. > If I could figure out how to make the function 'sumit' (see below) > faster, I could use the same ideas to speed up linearalgebra. > My experiments show that 'sumit' runs no faster when it uses doubles > than when it doesn't. > > (The function 'sumit' imitates things that need to be done in > linearalgebra--the function 'sumit' is just a simplified 'toy' > function.) > > (%i2) load("sumit.o")$ > (%i3) showtime : all$ > Evaluation took 0.00 seconds (0.00 elapsed) > (%i4) lst : makelist(1.0/k,k,1,10^4)$ > > (%i5) sumit('double,lst); > Evaluation took 3.70 seconds (3.70 elapsed) > > (%o5) 9.7876060360443446 > (%i6) sumit('abc,lst); > Evaluation took 3.77 seconds (3.77 elapsed) > (%o6) 9.7876060360443446 > > ---file sumit.lisp------- > (defun $sumit (typ lst) > (let* ((n ($length lst)) (acc 0) > (a (if (eq typ '$double) > (make-array n :element-type 'double-float :initial-contents (cdr lst)) > (make-array n :initial-contents (cdr lst))))) > (flet ((fadd (x y) (if (eq typ '$double) (+ x y) (add x y)))) > (decf n) > (loop for i from 0 to n do > (setq acc (fadd acc (aref a i))))) > acc)) > ------------------------ > Barton > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From willisb at unk.edu Sun Jan 22 11:14:38 2006 From: willisb at unk.edu (Barton Willis) Date: Sun, 22 Jan 2006 11:14:38 -0600 Subject: [Maxima] speeding up linear algebra Message-ID: The LU code in linearalgebra works for double floats, bigfloats, and .... Actually, by defining a new 'mring' structure, it's possible to get LU, Cholesky, and eigens_by_jacobi to work for data types that are unknown to Maxima. The same LU function (and Cholesky,...) works for all data types. It seems that if I followed your suggestions, I'd need to write a separate LU function for doubles, one for complex doubles, and one for any other type I'd like to speed up. I was trying to avoid doing that (and I doubt that I would try to do that). I could extract the spendy parts of the LU function and specialize that code for a few different types. Maybe there is no simple solution. Barton From fateman at cs.berkeley.edu Sun Jan 22 12:11:14 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sun, 22 Jan 2006 10:11:14 -0800 Subject: [Maxima] speeding up linear algebra References: Message-ID: <00ef01c61f7f$3d5ed2d0$210110ac@windsor> ----- Original Message ----- From: "Barton Willis" To: "Richard Fateman" Cc: Sent: Sunday, January 22, 2006 9:14 AM Subject: Re: [Maxima] speeding up linear algebra > It seems that if I followed your suggestions, I'd need to write > a separate LU function for doubles, one for complex doubles, and one for > any other > type I'd like to speed up. Not really. All other types would not be sped up by special code; the compiler can only do a good job for a subset of the built-in numeric types. So it might pay to do single-float double-float and complex versions of that. Total of 4 versions here I doubt that it would pay to do bignums, bigfloats, rationals, etc specially... they could be done by the same generic code. Writing better code would be only 10% faster if that.. So, One more version here. The right division of responsibility may be already figured out by the BLAS. I'm not sure why lists should be converted to arrays: the right thing might be to convert to arrays way earlier. I do not know how much benefit you get from compiling with declarations in GCL or CLISP. I assume that SBCL makes good use of declarations, as does Allegro CL, which is what I tested. I was trying to avoid doing that > (and I doubt that I would try to do that). I could extract the spendy > parts of the LU function and specialize that code for a few different > types. > Maybe there is no simple solution. > > Barton > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From robert.dodier at gmail.com Sun Jan 22 13:30:00 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 22 Jan 2006 12:30:00 -0700 Subject: [Maxima] tex output strangeness? suggested revisions Message-ID: Hello, At present tex ('(not a)) => $$\not a$$ tex ('(a and b)) => $$a(\and)b$$ tex ('(a or b)) => $$a(\or)b$$ tex ("Hello, World!") => $$&Hello, World!$$ tex ('(foo(x) := x^2)) => |foo(x):=x^2;| tex ('foo_bar) => $$foo\_bar$$ These are problematic: \not is recognized by tex and latex but it is rendered as a forward slash. \and and \or are not recognized by tex or latex (and the parentheses are spurious). "Hello, World!" is printed with a leading & which confuses tex and latex, and the words are typeset as sequences of single-letter variables. Tex and latex both complain about |foo(x) := x^2| because the ^ isn't in a math environment. Also, function definitions commonly take up multiple lines. Tex and latex typeset foo_bar as single-letter variables. I propose these outputs instead. tex ('(not a)) => $$\neg a$$ tex ('(a and b)) => $$a \wedge b$$ tex ('(a or b)) => $$a \vee b$$ tex ("Hello, World!") => $$\mathrm{Hello, World!}$$ tex ('(foo(x) := x)) => \begin{verbatim} foo(x):=x^2; \end{verbatim} tex ('foo_bar) => $$\mathit{foo\_bar}$$ tex and latex both seem happy with \neg, \wedge, and \vee. verbatim, \mathrm, and \mathit are latex-specific, if I'm not mistaken, so we probably will have to find plain tex equivalents. Can we have yet another global variable to tell the tex flavor? ('tex, 'latex, or 'amslatex, perhaps?) Since latex and amslatex are widely used, perhaps more so than plain tex, I think we really should have built-in support for those kinds of tex. For the record, my tex command claims it is TeX, Version 3.14159 (Web2C 7.4.5). Latex is LaTeX 2e. tex and latex belong to a package tetex-2.0.2. Robert Dodier From fateman at cs.berkeley.edu Sun Jan 22 17:54:20 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sun, 22 Jan 2006 15:54:20 -0800 Subject: [Maxima] tex output strangeness? suggested revisions References: Message-ID: <000801c61faf$2bae9f40$04d09888@windsor> My understanding is that all these extra TeX packages allow, as a special case, ordinary TeX. That is you could use {{a} \over{b}} in LaTeX, even if you can also do \fraction{a}{b}. So one solution might be to just produce plain TeX. Or am I mistaken? Macsyma uses \land and \lor for logical and/or. It also does this.. % FOO(X,Y) := X^Y $$ {\rm foo}\left(x,y\right) := x^{y} $$ ----- Original Message ----- From: "Robert Dodier" To: "Maxima" Sent: Sunday, January 22, 2006 11:30 AM Subject: [Maxima] tex output strangeness? suggested revisions > Hello, > > At present > > tex ('(not a)) => $$\not a$$ > > tex ('(a and b)) => $$a(\and)b$$ > > tex ('(a or b)) => $$a(\or)b$$ > > tex ("Hello, World!") => $$&Hello, World!$$ > > tex ('(foo(x) := x^2)) => |foo(x):=x^2;| > > tex ('foo_bar) => $$foo\_bar$$ > > > These are problematic: \not is recognized by tex and > latex but it is rendered as a forward slash. > \and and \or are not recognized by tex or latex > (and the parentheses are spurious). > "Hello, World!" is printed with a leading & which > confuses tex and latex, and the words are typeset > as sequences of single-letter variables. > Tex and latex both complain about |foo(x) := x^2| > because the ^ isn't in a math environment. > Also, function definitions commonly take up multiple lines. > Tex and latex typeset foo_bar as single-letter variables. > > I propose these outputs instead. > > tex ('(not a)) => $$\neg a$$ > > tex ('(a and b)) => $$a \wedge b$$ > > tex ('(a or b)) => $$a \vee b$$ > > tex ("Hello, World!") => $$\mathrm{Hello, World!}$$ > > tex ('(foo(x) := x)) => > \begin{verbatim} > foo(x):=x^2; > \end{verbatim} > > tex ('foo_bar) => $$\mathit{foo\_bar}$$ > > tex and latex both seem happy with \neg, \wedge, > and \vee. > verbatim, \mathrm, and \mathit are latex-specific, > if I'm not mistaken, so we probably will have to > find plain tex equivalents. > > Can we have yet another global variable to tell > the tex flavor? ('tex, 'latex, or 'amslatex, perhaps?) > > Since latex and amslatex are widely used, perhaps > more so than plain tex, I think we really should have > built-in support for those kinds of tex. > > For the record, my tex command claims it > is TeX, Version 3.14159 (Web2C 7.4.5). > Latex is LaTeX 2e. tex and latex belong to > a package tetex-2.0.2. > > Robert Dodier > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From raymond.toy at ericsson.com Mon Jan 23 07:55:27 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 23 Jan 2006 08:55:27 -0500 Subject: [Maxima] speeding up linear algebra In-Reply-To: <00ef01c61f7f$3d5ed2d0$210110ac@windsor> (Richard Fateman's message of "Sun, 22 Jan 2006 10:11:14 -0800") References: <00ef01c61f7f$3d5ed2d0$210110ac@windsor> Message-ID: >>>>> "Richard" == Richard Fateman writes: Richard> Not really. All other types would not be sped up by special code; the Richard> compiler can only do a good job for a subset of the built-in numeric Richard> types. So it might pay to do Richard> single-float Richard> double-float Richard> and complex versions of that. Total of 4 versions here As far as I know, only CMUCL and SBCL have non-consing complex single-float's and complex double-float's. So there would be an advantage there for CMUCL and SBCL to have special code, but probably less so for the others. Richard> I do not know how much benefit you get from compiling with Richard> declarations in GCL or CLISP. I assume that SBCL makes Richard> good use of declarations, as does Allegro CL, which is Richard> what I tested. CMUCL and SBCL make good use of declarations. I think Clisp basically ignores declarations (except for special, of course). I think gcl supports declarations, but does not have the type-derivation machinery of CMUCL/SBCL, so you may need more declarations than CMUCL/SBCL would need. One way of writing less code, would be to create a macro that generates the desired code. Then you only have to maintain the macro. I think this is similar to C++'s template stuff. Ray From 99LSharkey at ormskirk.lancs.sch.uk Mon Jan 23 09:51:58 2006 From: 99LSharkey at ormskirk.lancs.sch.uk (Luke Sharkey) Date: Mon, 23 Jan 2006 15:51:58 +0000 Subject: [Maxima] Solving logarithmic equations?? Message-ID: <3E783573F8C838449803D19EAFEEA835014DE5AD@orm-ex-001.ormskirk.internal> Hello. I've been trying out Maxima, with the WxMaxima interface. Although I have found Maxima to be very good for all manner of things, I would like to be able to use it to solve non purely polynomial equations (e.g. equations involving logarithms). I know that for this purpose the equations can be plotted with graph software, they only provide roots to a few significant places, which is why I would like to use maxima to find roots to the precision I need. Endlessly zooming into graphs to see where they cross the x axis is also rather tedious. Although I know for a polynomial the command allroots(%); or realroots(%); can be used to get a numerical output for an equation, e.g. for realroots(x^2-1=0) would output x=1 or x=-1, these commands it seems can only be used for pure polynomials: I've not been able to do the same for any e.g. logarithmic equation. When I request Maxima to solve equations which include logarithms, such as 1) below, which has solutions for f(x)=0 at x= -2.838... and +2.838..., I get the following output: Entering 10-x^2-log(11x^2)=0 generates the answers: [x=-sqrt(10-log(11*x^2)), x=sqrt(10-log(11*x^2))] ...not the [x=-2.838...] or [x=2.838...] I was looking for! Even when I choose to solve the equation using the 'numer' command for numerical output, it generates: Even "Numerical toggle": `rat' replaced 6.283185307179586 by 103993//16551 = 6.283185306023805 `rat' replaced 0.5 by 1//2 = 0.5 `rat' replaced 6.283185306023805 by 103283//16438 = 6.283185302348217 `rat' replaced 0.5 by 1//2 = 0.5 `rat' replaced 6.283185306023805 by 103283//16438 = 6.283185302348217 `rat' replaced 0.5 by 1//2 = 0.5 `rat' replaced 3.141592653589793 by 103993//33102 = 3.141592653011903 'rat' replaced 0.5 by 1//2 = 0.5 `rat' replaced 3.141592653011903 by 103638//32989 = 3.141592652096153 `rat' replaced 0.5 by 1//2 = 0.5 `rat' replaced 3.141592653011903 by 103638//32989 = 3.141592652096153 `rat' replaced 0.5 by 1//2 = 0.5 (%o16) [x=%e^(3.1415926520961532*%i)*(10-log(11*x^2))^0.5,x=%e^(6.2831853023482 171*%i)*(10-log(11*x^2))^0.5] ...once more, not the [x=-2.838...] or [x=2.838...] I was looking for. Is Maxima not able to provide solutions in the forms I'd like? x=123.456789... instead of =%e^(3.1415926520961532*%i)*(10-log(11*x^2))^0.5? If so, how? If not, then will this ever be included? If maxima can handle complex numbers, or integrate logarithms etc., I don't see why it shouldn't be able to solve logarithmic equations for x=0 in numerical form. Does anyone have any ideas??? Basically, I'd just like to find, to a few s.f., for what values of x that f(x) will equal zero, e.g. [x=1.23456...] or [x=-1.23456...], when f(x) equals something like log(x)-x^2=0 (in the same way that it can be done with polynomials, using realroots(%)) Any feedback appreciated. Thanks. L. Sharkey FURTHER EXAMPLES: 2) inputting 5*x^5-log(16*x^2)+2-x=0 when selected 'solve', merely outputted 5*x^5-log(16*x^2)+2-x=0 again as the solution! (%o27) -log(16*x^2)+5*x^5-x+2=0 (%i28) solve([%], [x]); (%o28) [0=-log(16*x^2)+5*x^5-x+2] !! *************************************************************************** This e-mail is confidential and privileged. If you are not the intended recipient do not disclose, copy or distribute information in this e-mail or take any action in reliance on its content. *************************************************************************** *************************************************************************** This email has been checked for known viruses. *************************************************************************** From fateman at cs.berkeley.edu Mon Jan 23 10:27:28 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Mon, 23 Jan 2006 08:27:28 -0800 Subject: [Maxima] Solving logarithmic equations?? References: <3E783573F8C838449803D19EAFEEA835014DE5AD@orm-ex-001.ormskirk.internal> Message-ID: <00be01c62039$ef2aebb0$04d09888@windsor> If you know how to solve such equations to get exact answers, you can write an algorithm in Maxima to do so. Generally there are no algorithms known, and consequently, they are not part of Maxima. Some special cases may be solvable right now; with some work some additional special cases may be solved. RJF From robert.dodier at gmail.com Mon Jan 23 10:40:49 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 23 Jan 2006 09:40:49 -0700 Subject: [Maxima] Solving logarithmic equations?? In-Reply-To: <3E783573F8C838449803D19EAFEEA835014DE5AD@orm-ex-001.ormskirk.internal> References: <3E783573F8C838449803D19EAFEEA835014DE5AD@orm-ex-001.ormskirk.internal> Message-ID: hi luke, it sounds like what you want is a 1-d numerical root finder. the "interpolate" function (unfortunate name -- renamed since the most recent release to "find_root") does that. there may also be some functions in maxima/share/ which do that too. hth robert dodier From raymond.toy at ericsson.com Mon Jan 23 11:35:12 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 23 Jan 2006 12:35:12 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1363421 ] nusum (1/k, k, 1, n) => Argument to concat not an atom In-Reply-To: (SourceForge net's message of "Sun, 22 Jan 2006 08:13:10 -0800") References: Message-ID: >>>>> "Robert" == SourceForge net writes: Robert> I've moved src/nusum.lisp to archive/src/ and arranged for Robert> nusum, unsum, and funcsolve to autoload. Now nusum (1/k, k, Robert> 1, n) yields a sum noun instead of an error. Closing this Robert> report as fixed. Ok. FWIW, changing the translator to use $lmin/$lmax instead of minumum/maximum solves this particular bug. From my limited understand of the new maxmin code, this seems to be the correct solution. But if we're going to move nusum.lisp somewhere else, shouldn't we move ALL of the translated code? Or fix the translator so that it works? Ray From waterskikid at yahoo.com Tue Jan 24 03:01:46 2006 From: waterskikid at yahoo.com (Pete Gustafson) Date: Tue, 24 Jan 2006 01:01:46 -0800 (PST) Subject: [Maxima] Intermediate values. Message-ID: <20060124090146.49729.qmail@web30204.mail.mud.yahoo.com> Hi all, I'm trying to use isolate() and disolate() in a batch file, and would like to be able to assign the use the intermediate values later in the file. However, I can't figure out how to do so without knowing the exact number of the input line, which will constantly be changing. labels() doesn't seem to work for my intent, it reminds me which are available but doesn't allow me to reference them. Please help, Thanks! __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com From mmarco at unizar.es Tue Jan 24 07:32:54 2006 From: mmarco at unizar.es (Miguel Marco) Date: Tue, 24 Jan 2006 14:32:54 +0100 Subject: [Maxima] Paralelized computations Message-ID: <200601241432.54407.mmarco@unizar.es> Just as some other CAS'es include pakages or external programas that allows the possibility of making parallel computations, is there any way to do so in maxima? Miguel Angel Marco Buzunariz Departamento de Matematicas Universidad de Zaragoza From fateman at cs.berkeley.edu Tue Jan 24 08:58:59 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Tue, 24 Jan 2006 06:58:59 -0800 Subject: [Maxima] Intermediate values. References: <20060124090146.49729.qmail@web30204.mail.mud.yahoo.com> Message-ID: <010801c620f6$b564e5d0$04d09888@windsor> try concat(inchar,linenum); etc. or maybe what you want is ev(part(labels,2)); etc. ----- Original Message ----- From: "Pete Gustafson" .... labels() doesn't seem to work for my > intent, it reminds me which are available but doesn't > allow me to reference them. Please help, Thanks! > > From RGloeckner at dki.tu-darmstadt.de Tue Jan 24 11:16:37 2006 From: RGloeckner at dki.tu-darmstadt.de (Gloeckner, Robert) Date: Tue, 24 Jan 2006 18:16:37 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] Message-ID: Hello all, This is the very last piece of the permission puzzle. I do not need it anymore, but at least we know now, that we can use R. Rands introduction legally now. Springer says, that they do not have rights on this article and that the author is the only one who has rights on the article. So after R. Rand has already given his permission .... For the sake of completeness .... Regards, Robert /**********************************************/ /****** evil quoted email from springer *******/ /**********************************************/ Betreff: AW: Uebersetzung eines Online-Artikels Von: "Sturm, Rosita, Springer DE" ins Adressbuch An: Robert.Gloeckner at web.de Datum: 24.01.06 13:52:54 Received: from [192.129.25.3] (helo=mail.springer-sbm.com) by mx33.web.de with esmtp (WEB.DE 4.105 #340) id 1F1NfC-0006a9-00 for Robert.Gloeckner at web.de; Tue, 24 Jan 2006 13:52:46 +0100 Received: from conversion-daemon.spm2.springer-sbm.com by spm2.springer-sbm.com (Sun Java System Messaging Server 6.2-3.03 (built Jun 27 2005)) id <0ITL00F01K1HDW00 at spm2.springer-sbm.com> (original mail from Rosita.Sturm at springer.com) for Robert.Gloeckner at web.de; Tue, 24 Jan 2006 13:52:46 +0100 (MET) Received: from HDEXS1.springer-sbm.com ([172.20.10.121]) by spm2.springer-sbm.com (Sun Java System Messaging Server 6.2-3.03 (built Jun 27 2005)) with ESMTP id <0ITL00HXWL3XBF60 at spm2.springer-sbm.com> for Robert.Gloeckner at web.de; Tue, 24 Jan 2006 13:52:46 +0100 (MET) Date: Tue, 24 Jan 2006 13:52:45 +0100 From: "Sturm, Rosita, Springer DE" Subject: AW: Uebersetzung eines Online-Artikels To: Robert.Gloeckner at web.de Message-id: <64D2232CB4F16F469AA6AF4D65B5746005B7DD2E at HDEXS1.springer-sbm.com> MIME-version: 1.0 X-MIMEOLE: Produced By Microsoft Exchange V6.5.7226.0 Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: QUOTED-PRINTABLE Content-class: urn:content-classes:message Thread-topic: Uebersetzung eines Online-Artikels Thread-index: AcYait4ABA0d/UqHRvumsLqctxMmUAAsKKwAAAGcDOABaMCC4A== X-MS-Has-Attach: X-MS-TNEF-Correlator: Sender: Rosita.Sturm at springer.com Betreff: AW: Uebersetzung eines Online-Artikels Von: "Sturm, Rosita, Springer DE" ins Adressbuch 24.01.06 13:52 Sehr geehrter Herr Dr. Gl?ckner, vielen Dank f?r Ihre e-mail vom 16. Januar 2006. Der Springer-Verlag hat nicht die elektronischen Rechte an diesem Werk. Diese Rechte liegen beim Autor. Mit freundlichen Gr??en Rosita Sturm (Ms.) Springer Rights & Permissions Tiergartenstrasse 17 69121 Heidelberg e-mail: Rosita.Sturm at springer.com Tel.: ++49 (0)6221-487 8228 Fax: ++49 (0)6221-487 8223 www.springeronline.com -----Urspr?ngliche Nachricht----- Von: Hanich, Magdalena, Springer DE Gesendet: Dienstag, 17. Januar 2006 09:45 An: Sturm, Rosita, Springer DE Betreff: WG: Uebersetzung eines Online-Artikels -----Urspr?ngliche Nachricht----- Von: Eichhorn, Katja, Springer DE Gesendet: Dienstag, 17. Januar 2006 08:58 An: Hanich, Magdalena, Springer DE Betreff: FW: Uebersetzung eines Online-Artikels -----Original Message----- From: Robert.Gloeckner at Web.de [mailto:Robert.Gloeckner at Web.de] Sent: Monday, January 16, 2006 12:02 PM To: Eichhorn, Katja, Springer DE Subject: Uebersetzung eines Online-Artikels Sehr geehrte Frau Eichhorn, ich wuerde gerne einen Teil eines von R. H. Rand veroeffentlichten Artikels: "Introduction to Maxima", welcher unter http://maxima.sourceforge.net/docs/intromax/intromax.html online verfuegbar ist, ins Deutsche uebersetzen und ebenfalls online stellen. Der Artikel hat eine Fussnote, welche auf Ihren Verlag hinweist: "Adapted from "Perturbation Methods, Bifurcation Theory and Computer Algebra" by Rand and Armbruster, Springer, 1987. Adapted to LATEX and HTML by Nelson L. Dias (nldias at simepar.br), SIMEPAR Technological Institute and Federal University of Paran?, Brazil. Updated by Robert Dodier, August 2005. " Es handelt sich hierbei um eine ca. 14 seitige Einfuehrung in das freie, d.h. Open-Source Programm Maxima (ein Computer-Algebra-System). Ich habe die ersten Kapitel neu geschrieben und wuerde gerne die Beispiele aus Kapitel 5, 6 und 7, sowie die Auswahl der Befehle in Kapitel 8 uebernehmen. Ich habe Ihnen den vorlaeufigen Text als .pdf in den Anhang gelegt. Mit der geplanten Veroeffentlichung dieser Uebersetzung im Internet verfolge ich keinerlei finanzielle Interessen. Es soll lediglich eine frei verfuegbare Einfuehrung in deutscher Sprache fuer das ebenfalls frei verfuegbare Programm Maxima zur Verfuegung gestellt werden. Ich wuerde mich freuen, von Ihnen eine entsprechende Genehmigung zu erhalten. Mit freundlichen Gruessen, Robert Gloeckner -- Dipl.-Phys. Robert Gloeckner Research Assistant Deutsches Kunststoff-Institut DKI German Institute for Polymers Department of Technology Schlossgartenstr. 6 D-64289 Darmstadt, Germany phone +49(0)6151 - 16 6516 fax +49(0)6151 - 29 2855 http://www.DKI-online.de GnuPG-Key: 1024D/9A0A2D72 From paul.rivier at eleve.emn.fr Tue Jan 24 16:34:31 2006 From: paul.rivier at eleve.emn.fr (Paul RIVIER) Date: Tue, 24 Jan 2006 22:34:31 +0000 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: References: Message-ID: <43D6AB77.3060901@eleve.emn.fr> great job, well done. Thank you Robert Gloeckner, Robert wrote: >Hello all, > >This is the very last piece of the permission puzzle. >I do not need it anymore, but at least we know now, >that we can use R. Rands introduction legally now. >Springer says, that they do not have rights on this >article and that the author is the only one who has >rights on the article. So after R. Rand has already >given his permission .... > > >For the sake of completeness .... > > >Regards, >Robert > >/**********************************************/ >/****** evil quoted email from springer *******/ >/**********************************************/ >Betreff: AW: Uebersetzung eines Online-Artikels >Von: "Sturm, Rosita, Springer DE" ins Adressbuch >An: Robert.Gloeckner at web.de >Datum: 24.01.06 13:52:54 > > >Received: from [192.129.25.3] (helo=mail.springer-sbm.com) >by mx33.web.de with esmtp (WEB.DE 4.105 #340) >id 1F1NfC-0006a9-00 >for Robert.Gloeckner at web.de; Tue, 24 Jan 2006 13:52:46 +0100 >Received: from conversion-daemon.spm2.springer-sbm.com by spm2.springer-sbm.com >(Sun Java System Messaging Server 6.2-3.03 (built Jun 27 2005)) >id <0ITL00F01K1HDW00 at spm2.springer-sbm.com> >(original mail from Rosita.Sturm at springer.com) for Robert.Gloeckner at web.de; >Tue, 24 Jan 2006 13:52:46 +0100 (MET) >Received: from HDEXS1.springer-sbm.com ([172.20.10.121]) >by spm2.springer-sbm.com >(Sun Java System Messaging Server 6.2-3.03 (built Jun 27 2005)) >with ESMTP id <0ITL00HXWL3XBF60 at spm2.springer-sbm.com> for >Robert.Gloeckner at web.de; Tue, 24 Jan 2006 13:52:46 +0100 (MET) >Date: Tue, 24 Jan 2006 13:52:45 +0100 >From: "Sturm, Rosita, Springer DE" >Subject: AW: Uebersetzung eines Online-Artikels >To: Robert.Gloeckner at web.de >Message-id: <64D2232CB4F16F469AA6AF4D65B5746005B7DD2E at HDEXS1.springer-sbm.com> >MIME-version: 1.0 >X-MIMEOLE: Produced By Microsoft Exchange V6.5.7226.0 >Content-type: text/plain; charset=iso-8859-1 >Content-transfer-encoding: QUOTED-PRINTABLE >Content-class: urn:content-classes:message >Thread-topic: Uebersetzung eines Online-Artikels >Thread-index: AcYait4ABA0d/UqHRvumsLqctxMmUAAsKKwAAAGcDOABaMCC4A== >X-MS-Has-Attach: >X-MS-TNEF-Correlator: >Sender: Rosita.Sturm at springer.com > > >Betreff: AW: Uebersetzung eines Online-Artikels >Von: "Sturm, Rosita, Springer DE" ins Adressbuch > >24.01.06 13:52 > >Sehr geehrter Herr Dr. Gl?ckner, >vielen Dank f?r Ihre e-mail vom 16. Januar 2006. >Der Springer-Verlag hat nicht die elektronischen Rechte an diesem Werk. Diese Rechte liegen beim Autor. > >Mit freundlichen Gr??en >Rosita Sturm (Ms.) >Springer >Rights & Permissions >Tiergartenstrasse 17 >69121 Heidelberg > >e-mail: Rosita.Sturm at springer.com >Tel.: ++49 (0)6221-487 8228 >Fax: ++49 (0)6221-487 8223 >www.springeronline.com > > >-----Urspr?ngliche Nachricht----- >Von: Hanich, Magdalena, Springer DE >Gesendet: Dienstag, 17. Januar 2006 09:45 >An: Sturm, Rosita, Springer DE >Betreff: WG: Uebersetzung eines Online-Artikels > >-----Urspr?ngliche Nachricht----- >Von: Eichhorn, Katja, Springer DE >Gesendet: Dienstag, 17. Januar 2006 08:58 >An: Hanich, Magdalena, Springer DE >Betreff: FW: Uebersetzung eines Online-Artikels > >-----Original Message----- >From: Robert.Gloeckner at Web.de [mailto:Robert.Gloeckner at Web.de] >Sent: Monday, January 16, 2006 12:02 PM >To: Eichhorn, Katja, Springer DE >Subject: Uebersetzung eines Online-Artikels > >Sehr geehrte Frau Eichhorn, > >ich wuerde gerne einen Teil eines von R. H. Rand veroeffentlichten >Artikels: "Introduction to Maxima", welcher unter > >http://maxima.sourceforge.net/docs/intromax/intromax.html online > >verfuegbar ist, ins Deutsche uebersetzen und ebenfalls online stellen. >Der Artikel hat eine Fussnote, welche auf Ihren Verlag hinweist: > >"Adapted from "Perturbation Methods, Bifurcation Theory and Computer Algebra" by Rand and Armbruster, Springer, 1987. Adapted to LATEX and HTML by Nelson L. Dias (nldias at simepar.br), SIMEPAR Technological Institute and Federal University of Paran?, Brazil. Updated by Robert Dodier, August 2005. " > >Es handelt sich hierbei um eine ca. 14 seitige Einfuehrung in das freie, d.h. Open-Source Programm Maxima (ein Computer-Algebra-System). >Ich habe die ersten Kapitel neu geschrieben und wuerde gerne die Beispiele aus Kapitel 5, 6 und 7, sowie die Auswahl der Befehle in Kapitel 8 uebernehmen. Ich habe Ihnen den vorlaeufigen Text als .pdf in den Anhang gelegt. > >Mit der geplanten Veroeffentlichung dieser Uebersetzung im Internet verfolge ich keinerlei finanzielle Interessen. Es soll lediglich eine frei verfuegbare Einfuehrung in deutscher Sprache fuer das ebenfalls frei verfuegbare Programm Maxima zur Verfuegung gestellt werden. > >Ich wuerde mich freuen, von Ihnen eine entsprechende Genehmigung zu erhalten. > > > >Mit freundlichen Gruessen, >Robert Gloeckner > > > > From ryanlists at gmail.com Wed Jan 25 10:17:23 2006 From: ryanlists at gmail.com (Ryan Krauss) Date: Wed, 25 Jan 2006 11:17:23 -0500 Subject: [Maxima] ratmx problem Message-ID: I have 5-10 matrices I multiply together to form a system model. I then need to take a submatrix from the system matrix and invert. I use that result to find a transfer function that I need to find the denominator of. All of this was working well thanks to help from this list. Last night I need to add 2 more matrices to the model and now when it gets to the inversion step I get messages like: Error in CATCH [or a callee]: The storage for CO5NS is exhausted. Currently, 117758 pages are allocated. Use ALLOCATE to expand the space. The same is true if I try to use echelon. One interesting thing is that the inversion and all calculations before that go very smoothly if I set ratmx:false. But then trying to call ratdenom causes the same error message as above (so does trying to call expand or rat on the result). Is there an efficient way to move between a result calculated with ratmx:false and a CRE or is rat the best/only way to do that? Is there any other way to calculate the denominator of an expression than with ratdenom? Any other thoughts on how to approach this? I am also using this function submitted by Robert: fortran_optimize (e) := block ([o : optimize (e)], if atom (o) or op (o) # 'block then fortran (apply ("=", ['RESULT, e])) else block ([a : args (o)], for x in rest(a) do if atom (x) then print ("Hey, whence this atom", x, "??") else if op (x )= ":" then fortran (apply ("=", args(x))) else fortran (apply ("=", ['RESULT, x])))); This works great if ratmx:true, but takes a very long time or crashes otherwise. Thanks, Ryan From raymond.toy at ericsson.com Wed Jan 25 13:02:36 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Wed, 25 Jan 2006 14:02:36 -0500 Subject: [Maxima] maxima version and cvs labels Message-ID: I noticed that configure.in has a version number that is updated once in a while and is now 5.2.9.19cvs. That's nice. However, there are no corresponding tags in cvs. Is that how this is supposed to work? If I wanted to get 5.2.9.15cvs, say, to see why something changed, how am I supposed to do that? Since there's now tag, I can't use a tag. Do I go find out when configure.in was updated to this version, and do a checkout based on the date? I'm just curious. I think it makes sense that if you're updating the version number, you should add a tag to cvs corresponding to the version. Ray From petegus at spaceshipone.engin.umich.edu Wed Jan 25 10:00:16 2006 From: petegus at spaceshipone.engin.umich.edu (Peter Gustafson) Date: Wed, 25 Jan 2006 11:00:16 -0500 Subject: [Maxima] Intermediate values. In-Reply-To: <010801c620f6$b564e5d0$04d09888@windsor> References: <20060124090146.49729.qmail@web30204.mail.mud.yahoo.com> <010801c620f6$b564e5d0$04d09888@windsor> Message-ID: <1138204816.2839.1.camel@spaceshipone.engin.umich.edu> Thanks Richard, the second solution is what I wanted, and works well. On Tue, 2006-01-24 at 06:58 -0800, Richard Fateman wrote: > try concat(inchar,linenum); > etc. > or maybe what you want is ev(part(labels,2)); etc. > > > ----- Original Message ----- > From: "Pete Gustafson" > .... > > labels() doesn't seem to work for my > > intent, it reminds me which are available but doesn't > > allow me to reference them. Please help, Thanks! > > > > > > > From Robert.Gloeckner at Web.de Wed Jan 25 18:14:14 2006 From: Robert.Gloeckner at Web.de (Robert Gloeckner) Date: Thu, 26 Jan 2006 01:14:14 +0100 Subject: [Maxima] Export to OpenOffice.org Message-ID: <43D81456.8060509@Web.de> Hello, One of the math-students, Dieter Schuster, which I infected with Lisp [1] modified mactex.lisp sources, so that there is a new function ooo() which does export OpenOffice.org-math-code exactly like tex() does. The code works pretty well for all the formulas i used so far. But as we are absolute Lisp-beginners, we have no clue, how to make those changes in a way that they do not harm tex() functionality. In fact, after loading our mac2ooo.lisp, tex() is broken. I do not mind for me now, because reloading mactex.lisp brings back tex() (which I do not need). After all this is not intended. Whom should i send the code to, in order to check and give advices on this? Regards, Robert [1] I admit, I was so enthusiastic as I discovered Lisp, that I infected Dieter, but I had not so much time to learn Lisp properly. So I thought about learning on a task - but he took over it ... -- T_a_k_e__c_a_r_e__o_f__y_o_u_r__R_I_G_H_T_S. P_r_e_v_e_n_t__L_O_G_I_C--P_A_T_E_N_T_S http://www.ffii.org, http://www.nosoftwarepatents.org From fateman at cs.berkeley.edu Wed Jan 25 22:08:24 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 25 Jan 2006 20:08:24 -0800 Subject: [Maxima] Export to OpenOffice.org References: <43D81456.8060509@Web.de> Message-ID: <001401c6222e$27a71860$11d09888@windsor> Perhaps you are over-writing the properties used by TeX on operators like mplus and mtimes. You can use different property names for OpenOffice properties. The names of functions should be different, or could be put in a separate lisp package... e.g. (defpackage :oomath .....) (in-package :oomath) put your functions here. you must export at least one of them, e.g. $ooo to the :maxima package. RJF ----- Original Message ----- From: "Robert Gloeckner" To: "Maxima List" ; "Robert Dodier" Sent: Wednesday, January 25, 2006 4:14 PM Subject: [Maxima] Export to OpenOffice.org > Hello, > > One of the math-students, Dieter Schuster, which I infected with Lisp > [1] modified mactex.lisp sources, so that there is a new function ooo() > which does export OpenOffice.org-math-code exactly like tex() does. > > The code works pretty well for all the formulas i used so far. > > But as we are absolute Lisp-beginners, we have no clue, how to make > those changes in a way that they do not harm tex() functionality. > In fact, after loading our mac2ooo.lisp, tex() is broken. I do not mind > for me now, because reloading mactex.lisp brings back tex() (which I do > not need). After all this is not intended. > > Whom should i send the code to, in order to check and give advices on > this? > > > > > Regards, > Robert > > > > [1] I admit, I was so enthusiastic as I discovered Lisp, that I infected > Dieter, but I had not so much time to learn Lisp properly. So I thought > about learning on a task - but he took over it ... > > > -- > T_a_k_e__c_a_r_e__o_f__y_o_u_r__R_I_G_H_T_S. > P_r_e_v_e_n_t__L_O_G_I_C--P_A_T_E_N_T_S > http://www.ffii.org, http://www.nosoftwarepatents.org > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From robert.dodier at gmail.com Thu Jan 26 00:43:38 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 25 Jan 2006 23:43:38 -0700 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1363421 ] nusum (1/k, k, 1, n) => Argument to concat not an atom In-Reply-To: References: Message-ID: On 1/23/06, Raymond Toy wrote: > But if we're going to move nusum.lisp somewhere else, shouldn't we > move ALL of the translated code? Or fix the translator so that it > works? well, i'm not opposed to either of those ideas, although the second one sounds like a lot of work. best, robert From robert.dodier at gmail.com Thu Jan 26 00:52:44 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 25 Jan 2006 23:52:44 -0700 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: References: Message-ID: On 1/24/06, Gloeckner, Robert wrote: > This is the very last piece of the permission puzzle. > I do not need it anymore, but at least we know now, > that we can use R. Rands introduction legally now. > Springer says, that they do not have rights on this > article and that the author is the only one who has > rights on the article. So after R. Rand has already > given his permission .... thanks a lot for investigating. that clarifies the status of the article by richard rand. i'm glad that everything turned out well. i will probably copy the correspondence from rand and from springer into the intromax.ltx file (at least as a %-comment) in the near future. best, robert dodier From raymond.toy at ericsson.com Thu Jan 26 07:46:19 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Thu, 26 Jan 2006 08:46:19 -0500 Subject: [Maxima] Re: [Maxima-bugs] [ maxima-Bugs-1363421 ] nusum (1/k, k, 1, n) => Argument to concat not an atom In-Reply-To: (Robert Dodier's message of "Wed, 25 Jan 2006 23:43:38 -0700") References: Message-ID: >>>>> "Robert" == Robert Dodier writes: Robert> On 1/23/06, Raymond Toy wrote: >> But if we're going to move nusum.lisp somewhere else, shouldn't we >> move ALL of the translated code? Or fix the translator so that it >> works? Robert> well, i'm not opposed to either of those ideas, Robert> although the second one sounds like a lot of work. Well, I didn't mean fix every single bug in the translator right now. :-) The fix for the nusum bug is easy, and I have that in my tree right now. Ray From RGloeckner at dki.tu-darmstadt.de Thu Jan 26 08:56:01 2006 From: RGloeckner at dki.tu-darmstadt.de (Gloeckner, Robert) Date: Thu, 26 Jan 2006 15:56:01 +0100 Subject: [Maxima] Export to OpenOffice.org[Scanned] Message-ID: Oh, I forgotten to mention, that the Lisp code is available at http://130.83.61.160/~robert/mactex2ooo.lisp Robert From robert.dodier at gmail.com Thu Jan 26 10:09:42 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 26 Jan 2006 09:09:42 -0700 Subject: [Maxima] Export to OpenOffice.org[Scanned] In-Reply-To: References: Message-ID: Hello Robert, > Oh, I forgotten to mention, that > the Lisp code is available at > http://130.83.61.160/~robert/mactex2ooo.lisp I have looked at the lisp code -- it appears that it was constructed by cloning mactex.lisp and doing a global search & replace tex -> ooo, and changing the output strings accordingly. That has the desired effect, but I consider it generally inadvisable to maintain parallel versions of functions; if there are changes to mactex.lisp it would be necessary to review the ooo code and propagate the changes through it. The mactex code is complex enough that maintaining two versions of it would be painful and error-prone. I believe the best way to implement OpenOffice output is for mactex2ooo.lisp to only reassign the tex properties and maybe reimplement a function or two. Instead of creating new ooo properties, I would suggest modifying the tex properties (i.e. write (defprop %erf " erf " texword) instead of (defprop %erf " erf " oooword)). mactex2ooo.lisp can be a share file and then a user could say load ("mactex2ooo"); if they want to get OpenOffice output. (If there were a way to select a TeX flavor, we could make OpenOffice one of the choices. I think clobbering the tex properties is the most workable solution at present. If/when we devise a flavor system, OO can have its own set of properties.) I'll take a look at mactex2ooo.lisp and see if I can extract the parts that are necessary to enable OpenOffice output and put them in a separate file. I believe that file would be a lot shorter and simpler than mactex2ooo.lisp. Thanks a lot for your interest in Maxima! Hope this helps, Robert Dodier From fateman at cs.berkeley.edu Thu Jan 26 10:09:50 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Thu, 26 Jan 2006 08:09:50 -0800 Subject: [Maxima] Export to OpenOffice.org[Scanned] References: Message-ID: <007c01c62292$f0408e50$11d09888@windsor> I glanced at the code -- all the programs and properties seem to be distinguished by an extra "oo", except for myprinc and myterpri. If they are different from ones in mactex, then that might cause a problem. otherwise it looks good. (The suggestion that it could be done with a separate package is still relevant -- Macsyma was written before common lisp and its packages, and so does not use them appropriately. ) RJF ----- Original Message ----- From: "Gloeckner, Robert" To: "Maxima List" Sent: Thursday, January 26, 2006 6:56 AM Subject: RE: [Maxima] Export to OpenOffice.org[Scanned] > Oh, I forgotten to mention, that > the Lisp code is available at > http://130.83.61.160/~robert/mactex2ooo.lisp > > > Robert > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From macrakis at alum.mit.edu Thu Jan 26 10:27:13 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Thu, 26 Jan 2006 08:27:13 -0800 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: References: Message-ID: <8b356f880601260827t76b4121cp3290594f1472f791@mail.gmail.com> ------=_Part_2205_30273795.1138292833201 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Note that the Springer letter addresses only electronic reproduction. The fact that it reserves print rights makes it incompatible with the GPL/LGPL/GFDL. In particular, if at some point someone wants to use Maxima documentation to produce a printed Maxima book, that would be a problem. ------=_Part_2205_30273795.1138292833201 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Note that the Springer letter addresses only electronic reproduction. = The fact that it reserves print rights makes it incompatible with the GPL/= LGPL/GFDL.  In particular, if at some point someone wants to use Maxim= a documentation to produce a printed Maxima book, that would be a problem.
------=_Part_2205_30273795.1138292833201-- From jpromerobx at linuxmail.org Thu Jan 26 13:11:17 2006 From: jpromerobx at linuxmail.org (Juan Pablo Romero Bernal) Date: Fri, 27 Jan 2006 03:11:17 +0800 Subject: [Maxima] This is a test (Don't read) Message-ID: <20060126191117.22E2523D1C@ws5-3.us4.outblaze.com> Juan Pablo Romero Bernal "jpromerobx" http://www.el-directorio.org ------ "La pol?tica es por el momento, una ecuaci?n es para la eternidad". Albert Einstein -- _______________________________________________ Check out the latest SMS services @ http://www.linuxmail.org This allows you to send and receive SMS through your mailbox. Powered by Outblaze From Robert.Gloeckner at Web.de Thu Jan 26 15:01:42 2006 From: Robert.Gloeckner at Web.de (Robert Gloeckner) Date: Thu, 26 Jan 2006 22:01:42 +0100 Subject: [Maxima] Export to OpenOffice.org[Scanned] In-Reply-To: References: Message-ID: <43D938B6.608@Web.de> Hello Robert, On 26.01.2006 17:09, Robert Dodier wrote: > On 26.01.2006 15:56, Gloeckner, Robert wrote: >> http://130.83.61.160/~robert/mactex2ooo.lisp > I have looked at the lisp code -- it appears that it was constructed > by cloning mactex.lisp and doing a global search & replace tex -> ooo, > and changing the output strings accordingly. Yes, the name is mactex2ooo.lisp for a reason ;) Some functions are changed a little bit, too, but you are right, this is more or less a work around. > That has the desired effect, but I consider it generally inadvisable > to maintain parallel versions of functions; if there are changes > to mactex.lisp it would be necessary to review the ooo code and > propagate the changes through it. The mactex code is complex > enough that maintaining two versions of it would be painful > and error-prone. Sorry. As I said, I am a very beginner of Lisp. I just had to restart reading PAIP (p. 137 -> 50 ;/), because of a lack of time for learning it continuously. On the other hand, I just needed this export-function. There had been too many functions/macros/... which I did not know about and asking via this mailing list took too much time (and could not be effective due to my lack of Lisp-knowledge). But I am keen on learning Lisp and maybe some day I can contribute to maxima. > I believe the best way to implement OpenOffice output is for > mactex2ooo.lisp to only reassign the tex properties and > maybe reimplement a function or two. Instead of creating > new ooo properties, I would suggest modifying the tex properties > (i.e. write (defprop %erf " erf " texword) instead of (defprop %erf " > erf " oooword)). Yes, Norvig is talking about data-reusing and data-driven programming ;) By the way, chapter 8 "Symbolic Mathematics: A Simplification Program", paragraph 9.6 "A Case Study in Efficiency: The Simplify Program" and chapter 15 "Symbolic Mathematics with Canonical Forms" will connect to Maxima again. > (If there were a way to select a TeX flavor, we could make > OpenOffice one of the choices. I think clobbering the tex > properties is the most workable solution at present. > If/when we devise a flavor system, OO can have its > own set of properties.) I do not know how fast this will be done, but even if I will not be able to help - I can watch and learn. > I'll take a look at mactex2ooo.lisp and see if I can extract > the parts that are necessary to enable OpenOffice output > and put them in a separate file. I believe that file would be a > lot shorter and simpler than mactex2ooo.lisp. Yes, sure. Maybe I can do export-improvements in your file, instead of mactex2ooo then - and send them to you, because ooo() is only tested with the formulas /I/ use so far. Regards, Robert -- T_a_k_e__c_a_r_e__o_f__y_o_u_r__R_I_G_H_T_S. P_r_e_v_e_n_t__L_O_G_I_C--P_A_T_E_N_T_S http://www.ffii.org, http://www.nosoftwarepatents.org From Robert.Gloeckner at Web.de Thu Jan 26 15:09:46 2006 From: Robert.Gloeckner at Web.de (Robert Gloeckner) Date: Thu, 26 Jan 2006 22:09:46 +0100 Subject: [Maxima] FW: R. H. Rand's permission: german translation of your "introduction to maxima"[Scanned] In-Reply-To: <8b356f880601260827t76b4121cp3290594f1472f791@mail.gmail.com> References: <8b356f880601260827t76b4121cp3290594f1472f791@mail.gmail.com> Message-ID: <43D93A9A.4000104@Web.de> On 26.01.2006 17:27, Stavros Macrakis wrote: > Note that the Springer letter addresses only electronic reproduction. The > fact that it reserves print rights makes it incompatible with the > GPL/LGPL/GFDL. In particular, if at some point someone wants to use Maxima > documentation to produce a printed Maxima book, that would be a problem. This is right. I forgot to write that. "Der Springer-Verlag hat nicht die elektronischen Rechte an diesem Werk. Diese Rechte liegen beim Autor." Springer states that they do not have the "electronical (copy)right", those are owned by the author. After all, Maxima does not have a lack of english manuals, but there should be a note on that. Regards, Robert -- T_a_k_e__c_a_r_e__o_f__y_o_u_r__R_I_G_H_T_S. P_r_e_v_e_n_t__L_O_G_I_C--P_A_T_E_N_T_S http://www.ffii.org, http://www.nosoftwarepatents.org From andrej.vodopivec at gmail.com Thu Jan 26 18:52:02 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Thu, 26 Jan 2006 16:52:02 -0800 Subject: [Maxima] Problems with cvs maxima on windows Message-ID: <7775b21a0601261652y72c8b0d0i@mail.gmail.com> Hi, some tests fail with current cvs maxima on windows + gcl. Also the determinant function does not work. The output is from binaries provided by Vadim, but the same thing running the current cvs version. Is this a known problem? Andrej (tests before are ok) Running tests in rtest_allnummod: Nonorderable argument(s) in 'max' or 'min.' Returning a noun form. Nonorderable argument(s) in 'max' or 'min.' Returning a noun form. Nonorderable argument(s) in 'max' or 'min.' Returning a noun form. 473/473 tests passed. Running tests in rtestconjugate: 83/83 tests passed. Running tests in rtestsum: 223/223 tests passed. Running tests in rtest_trig: Caused an error break: rtest_trig Running tests in rtest_zeta: Caused an error break: rtest_zeta Running tests in rtest_diff_invtrig: Caused an error break: rtest_diff_invtrig Error summary: Error found in rtest_trig, problem: (error break) Error found in rtest_zeta, problem: (error break) Error found in rtest_diff_invtrig, problem: (error break) real time : 14.780 secs run-gbc time : 13.540 secs child run time : 0.000 secs gbc time : 1.240 secs (%o0) done (%i1) determinant(matrix([1,2],[2,1])); [ 1 2 ] (%o1) [ ] [ 2 1 ] (%i2) build_info(); Maxima version: 5.9.2.15cvs Maxima build date: 17:32 1/15/2006 host type: i686-pc-mingw32 lisp-implementation-type: GNU Common Lisp (GCL) lisp-implementation-version: GCL 2.6.8 From robert.dodier at gmail.com Thu Jan 26 19:10:13 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 26 Jan 2006 18:10:13 -0700 Subject: [Maxima] Problems with cvs maxima on windows In-Reply-To: <7775b21a0601261652y72c8b0d0i@mail.gmail.com> References: <7775b21a0601261652y72c8b0d0i@mail.gmail.com> Message-ID: On 1/26/06, Andrej Vodopivec wrote: > Running tests in rtest_allnummod: Nonorderable argument(s) in 'max' or > 'min.' Returning a noun form. > Nonorderable argument(s) in 'max' or 'min.' Returning a noun form. > Nonorderable argument(s) in 'max' or 'min.' Returning a noun form. that is OK, not an error. > Running tests in rtest_trig: > Caused an error break: rtest_trig > Running tests in rtest_zeta: > Caused an error break: rtest_zeta > Running tests in rtest_diff_invtrig: > Caused an error break: rtest_diff_invtrig i've seen errors in rtest_trig, rtest_zeta, and rtest_diff_invtrig sometimes; one cause is that some of these tests bind global flags and if the tests are re-run with the non-default values, the tests fail. i tried to fix that (by restoring default values) some weeks ago but maybe some other flags have been changed. one of those tests fails (i forget which one) every time with a mismatch between expected and observed results (i.e., an ordinary failure, not an error break). > (%i1) determinant(matrix([1,2],[2,1])); > [ 1 2 ] > (%o1) [ ] > [ 2 1 ] hmm, that's interesting. it is present in 5.9.2.10cvs (2006/01/04) for windows but not in 5.9.2 (2005/10/12). hth, robert dodier From robert.dodier at gmail.com Thu Jan 26 21:23:55 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 26 Jan 2006 20:23:55 -0700 Subject: [Maxima] Problems with cvs maxima on windows In-Reply-To: <7775b21a0601261652y72c8b0d0i@mail.gmail.com> References: <7775b21a0601261652y72c8b0d0i@mail.gmail.com> Message-ID: > (%i1) determinant(matrix([1,2],[2,1])); > [ 1 2 ] > (%o1) [ ] > [ 2 1 ] OK, this appears to be due to r1.9 of src/matrix.lisp (diff below); $DETERMINANT now returns its argument if $CONSTANTP is T. $CONSTANTP returns T for nonscalar constant objects, which seems appropriate, so maybe $DETERMINANT needs to test for "constant and scalar" or something. hth Robert Dodier PS. log message: revision 1.9 date: 2005/12/19 19:18:09; author: willisbl; state: Exp; lines: +2 -1 Before, determinant returned a noun form for atoms, but signaled an error for other non-matrix inputs. Determinant now returns a noun form for expressions that are not non-mbags and not matrices. For constant inputs, determinant returns its argument. Thus det(a+b) -> det(a+b), det(%pi) --> %pi, and det([a,b]) --> error. As before, det([a]) --> a. Index: matrix.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/matrix.lisp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- matrix.lisp 7 Nov 2005 17:37:11 -0000 1.8 +++ matrix.lisp 19 Dec 2005 19:18:09 -0000 1.9 @@ -155,7 +155,8 @@ (t (mapcar #'ratplus a b)))) (defmfun $determinant (mat) - (cond ((atom mat) (list '(%determinant) mat)) + (cond (($constantp mat) mat) + ((not (or (mbagp mat) ($matrixp mat))) (list '(%determinant) mat)) (t (setq mat (check mat)) (if (not (= (length mat) (length (cadr mat)))) (merror "`determinant' called on a non-square matrix.")) From willisb at unk.edu Thu Jan 26 22:12:26 2006 From: willisb at unk.edu (Barton Willis) Date: Thu, 26 Jan 2006 22:12:26 -0600 Subject: [Maxima] Problems with cvs maxima on windows Message-ID: ----Robert Dodier wrote: ----- > so maybe $DETERMINANT needs to test for "constant and scalar" or > something. Maybe a simple fix like the following is OK. Or revert to r1.8 (defmfun $determinant (mat) (cond ((not (or (mbagp mat) ($matrixp mat))) (if ($scalarp mat) mat (list '(%determinant) mat))) (t (setq mat (check mat)) (if (not (= (length mat) (length (cadr mat)))) (merror "`determinant' called on a non-square matrix.")) (cond ((not $ratmx) (det1 (mcx (cdr mat)))) (t (newvarmat1 mat) (determinant1 (mcx (cdr mat)))))))) (%i76) determinant(x); (%o76) determinant(x) (%i78) declare(x,scalar); (%o78) DONE (%i79) determinant(x); (%o79) x (%i80) determinant(x + %pi); (%o80) x+%pi (%i81) determinant(x + y); (%o81) determinant(y+x) (%i82) declare(y,scalar); (%o82) DONE (%i83) determinant(x + y); (%o83) y+x From robert.dodier at gmail.com Fri Jan 27 10:02:21 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 27 Jan 2006 09:02:21 -0700 Subject: [Maxima] maxima version and cvs labels In-Reply-To: References: Message-ID: On 1/25/06, Raymond Toy wrote: > I'm just curious. I think it makes sense that if you're updating the > version number, you should add a tag to cvs corresponding to the > version. I guess so. I'm inclined to avoid putting in a lot of tags which have only temporary usefulness. That might be resolved in a couple of ways -- (1) avoid tags by never incrementing the subminor number, (2) increment the number, put in the tags, but remove them after the next release, (3) increment the number, don't make a tag, use timestamps to get files corresponding to a subminor revision number. (4) increment the number, make a tag, just live with lots of tags. At this point I don't have a strong preference. (1) is/was the status quo ante, which I'm not entirely happy about, but as you've pointed out (3) has problems. Comments? Robert Dodier From raymond.toy at ericsson.com Fri Jan 27 10:37:28 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Fri, 27 Jan 2006 11:37:28 -0500 Subject: [Maxima] maxima version and cvs labels In-Reply-To: (Robert Dodier's message of "Fri, 27 Jan 2006 09:02:21 -0700") References: Message-ID: >>>>> "Robert" == Robert Dodier writes: Robert> I guess so. I'm inclined to avoid putting in a lot of tags Robert> which have only temporary usefulness. That might be Robert> resolved in a couple of ways -- Robert> (1) avoid tags by never incrementing the subminor number, Robert> (2) increment the number, put in the tags, Robert> but remove them after the next release, Robert> (3) increment the number, don't make a tag, use timestamps Robert> to get files corresponding to a subminor revision number. Robert> (4) increment the number, make a tag, just live with lots of tags. Robert> At this point I don't have a strong preference. Robert> (1) is/was the status quo ante, which I'm not entirely Robert> happy about, but as you've pointed out (3) has problems. If, in (2), "remove them" means remove the tags, then I would say that's a very bad idea. Once tags go in, they should stay there (barring stupid mistakes, of course). Given the current rate of development (3) isn't so bad because there's a good chance that when the version is updated, it's probably the only change (or related set of small changes) for that day. So using dates is a little troublesome but not bad. My problem is that I can't ever remember what the date is, and how the date I pick relates to what the date is on the server, especially if the date is near midnight local time. I can live with lots of tags, if we make all of the tags have the same prefix or something so it's easy to tell. Option (1) has it's own problems too if the releases are far apart but we ask people to build and use cvs versions. It becomes a pain to figure out what version they're using. So, I think I'd prefer (4), but (3) is ok. Ray From willisb at unk.edu Fri Jan 27 11:26:26 2006 From: willisb at unk.edu (Barton Willis) Date: Fri, 27 Jan 2006 11:26:26 -0600 Subject: [Maxima] regression test files Message-ID: I think it would be a good idea to prepend reset() to each regression test. Right now, reset() spews information that I doubt we want. Either: (1) make reset() silent (easy) (2) introduce an icky option variable to control the output of reset(), or (3) invent a uniform mechanism for controlling warnings and other messages. For (3), there is a an experimental function in linearalgebra. This function should be improved (I think it is confusing), but maybe it's a start: (defun $inform (level pck msg &rest arg) (if (member level (member ($get '$INFOLEVEL pck) `($debug $verbose $silent))) (apply 'mtell `(,msg , at arg)))) (%i2) qput(infolevel, verbose, system)$ Since verbose = verbose, print the message: (%i3) inform('verbose, system, "We're pumping mud"); &We're pumping mud (%o3) false Since verbose > silent, print the message: (%i4) inform('silent, system, "We're pumping mud"); &We're pumping mud (%o4) false Because verbose < debug, don't print the message: (%i5) inform('debug, system, "We're pumping mud"); (%o5) false This might not be what we want; maybe silent should always suppress output: (%i3) qput(infolevel, silent, system)$ (%i5) inform('silent, system, "We're pumping mud"); &We're pumping mud Barton PS With (%i9) build_info(); Maxima version: 5.9.2.19cvs Maxima build date: 9:47 1/26/2006 host type: i686-pc-mingw32 lisp-implementation-type: GNU Common Lisp (GCL) lisp-implementation-version: GCL 2.6.7 I only get the one known rtest_trig #68 bug. I can run the testsuite multiple times and I still only get this one bug. From robert.dodier at gmail.com Fri Jan 27 13:07:08 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 27 Jan 2006 12:07:08 -0700 Subject: [Maxima] Export to OpenOffice.org[Scanned] In-Reply-To: References: Message-ID: robert, about oo output, i have pulled out the actually modified bits of mactex2ooo.lisp and put them in another file (http://cvs.sf.net/viewcvs.py/maxima/maxima/share/contrib/tex2ooo.lisp). this version redefines the tex properties. tex (x + y*z / a); => $${{y\,z}\over{a}}+x$$ load (tex2ooo); tex (x + y*z / a); => {alignc {y cdot z} over {a}} + x clobbering the tex properties is unfortunate but it seems the lesser of two evils (the other evil being to maintain a very similar output system in parallel to tex). a flavor system would solve both problems, i guess. hope this helps, robert dodier From paul.rivier at eleve.emn.fr Fri Jan 27 17:15:07 2006 From: paul.rivier at eleve.emn.fr (Paul RIVIER) Date: Fri, 27 Jan 2006 23:15:07 +0000 Subject: [Maxima] Export to OpenOffice.org[Scanned] In-Reply-To: References: Message-ID: <43DAA97B.6070304@eleve.emn.fr> >clobbering the tex properties is unfortunate but it seems the lesser >of two evils (the other evil being to maintain a very similar output >system in parallel to tex). a flavor system would solve both problems, >i guess. > > > hi, or maybe a 2 parameters output function, like : formated-output( x +y*z / a, [ tex | latex | Ooo ]); It is much like a flavor, but just maybe more explicit. paul >hope this helps, >robert dodier > >_______________________________________________ >Maxima mailing list >Maxima at math.utexas.edu >http://www.math.utexas.edu/mailman/listinfo/maxima > > > From robert.dodier at gmail.com Fri Jan 27 19:08:45 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 27 Jan 2006 18:08:45 -0700 Subject: [Maxima] regression test files In-Reply-To: References: Message-ID: hi barton, context -- DEFMVAR puts symbol/value pairs into a table. reset runs through the symbols and binds them to their values. reset is strange. some DEFMVAR variables are assigned values which aren't maxima expressions, so reset has to print values as lisp objects. some interesting global variables aren't declared w/ DEFMVAR. some items which probably shouldn't be susceptible to rebinding are on the list, e.g. a list of small primes. reset is all or nothing, i.e., can't reset a subset of variables. after calling reset, run_testsuite fails (due to a problem with declare (foo, antisymmetric), other declarations are still OK). about modifying reset, how about this. (1) reset prints a message about X only if reset actually modifies X, or maybe not at all. (2) reset accepts arguments to tell it what to reset. probably reset should work like kill. (3) reset prints stuff as maxima expressions instead of lisp expressions. (4) review DEFMVAR declarations and change lisp-only objects to DEFVAR instead (to enable item 3). (5) make an attempt to find global variables which are not DEFMVAR-declared and change them to DEFMVAR so that reset (and potentially other functions) knows about them. the declare (foo, antisymmetric) bug would have to be investigated, i guess. > (3) invent a uniform mechanism for controlling warnings and other > messages. well, we should try to merge such a mechanism into existing output functions. can we set the verbosity level by verbosity : instead of using the property system? i find the lack of distinction among the arguments of "put" confusing. how about this: foo () := (print_debug ("factoid"), print_info ("advisory"), print_error ("oops")); print_output_level : 'print_error; foo (); => oops print_output_level : 'print_info; foo (); => advisory oops print_output_level : 'print_debug; foo (); => factoid advisory oops in this scheme, print_debug, print_info, and print_error all take the same arguments as print. it's likely that other debug / logging schemes have been invented for lisp, maybe we should try to find one. comments? robert From robert.dodier at gmail.com Sat Jan 28 17:39:22 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sat, 28 Jan 2006 16:39:22 -0700 Subject: [Maxima] unevaluated boolean and conditional expressions (take 1) Message-ID: Hello, I've put together some code to equip Maxima to handle unevaluated boolean and conditional expressions. (http://cvs.sf.net/viewcvs.py/maxima/maxima/share/contrib/boolsimp/) It's not finished, but I think it is well on its way. When it is completed (maybe another month or so) I want to merge it into maxima/src/. >From the comment header --- ; The functions in this file are an attempt to make Boolean (and, or, not) ; and conditional (if -- then -- else/elseif) expressions work more like ; arithmetic expressions in the treatment of predicates which are ; undecidable at the time the expression is evaluated, ; by allowing undecided predicates in simplified and evaluated ; expressions, instead of complaining or returning 'unknown. Examples: assume (a > 1); a > 1 and b < 0 => b < 0 c > 1 and b < 0 => c > 1 and b < 0 not b < 0 => b >= 0 if c then d => if c then d plot2d (if x > 0 then x else -x, [x, -1, 1]) => nice plot quad_qags (if x > 0 then x else -x, x, -1 ,1) => [1.0, 1.1107651257113993E-14, 63, 0] Comments? Robert Dodier From fateman at cs.berkeley.edu Sat Jan 28 18:32:22 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sat, 28 Jan 2006 16:32:22 -0800 Subject: [Maxima] unevaluated boolean and conditional expressions (take 1) References: Message-ID: <068c01c6246b$7a965150$11d09888@windsor> Seems useful in some context, but... not(c<1) does not mean c>=1 for all c in Maxima. For example, c=3+4*%i. or c= undefined or c= NaN So there is an implicit assumption that a,b,c are from an ordered field, or perhaps from the real numbers. Maybe this should be explicit. e.g. have your simplifications within a context of some sort.. (with realvars(a,b,c) .... simplify ) How far are you going with geometric inequalities? Linear, e.g. a*x+b*y+c*z where a,b,c must be explicit numbers? Or more interesting stuff, say polynomial systems? RJF ----- Original Message ----- From: "Robert Dodier" To: "Maxima List" Sent: Saturday, January 28, 2006 3:39 PM Subject: [Maxima] unevaluated boolean and conditional expressions (take 1) > Hello, > > I've put together some code to equip Maxima to handle unevaluated > boolean and conditional expressions. > (http://cvs.sf.net/viewcvs.py/maxima/maxima/share/contrib/boolsimp/) > It's not finished, but I think it is well on its way. > When it is completed (maybe another month or so) I want to merge it > into maxima/src/. > > From the comment header --- > > ; The functions in this file are an attempt to make Boolean (and, or, not) > ; and conditional (if -- then -- else/elseif) expressions work more like > ; arithmetic expressions in the treatment of predicates which are > ; undecidable at the time the expression is evaluated, > ; by allowing undecided predicates in simplified and evaluated > ; expressions, instead of complaining or returning 'unknown. > > Examples: > > assume (a > 1); > > a > 1 and b < 0 => b < 0 > > c > 1 and b < 0 => c > 1 and b < 0 > > not b < 0 => b >= 0 > > if c then d => if c then d > > plot2d (if x > 0 then x else -x, [x, -1, 1]) => nice plot > > quad_qags (if x > 0 then x else -x, x, -1 ,1) => [1.0, > 1.1107651257113993E-14, 63, 0] > > Comments? > > Robert Dodier > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From robert.dodier at gmail.com Sat Jan 28 19:43:21 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sat, 28 Jan 2006 18:43:21 -0700 Subject: [Maxima] unevaluated boolean and conditional expressions (take 1) In-Reply-To: <068c01c6246b$7a965150$11d09888@windsor> References: <068c01c6246b$7a965150$11d09888@windsor> Message-ID: Richard, Thanks for your comments. > Seems useful in some context, but... I claim these changes are generally useful. At present undecidable predicates yield an error or unknown (depending on the prederror flag). The revised code makes simplification and evaluation of predicates analogous to that of arithmetic expressions: work towards a definite result, but return a partially evaluated expression if you don't get there. The weight of history aside, I don't see any reason to banish unevaluated boolean and conditional expressions, when we allow unevaluated arithmetic expressions. > not(c<1) does not mean c>=1 for all c in Maxima. > For example, c=3+4*%i. At present, not c < 1 => "unable to evaluate the predicate" when c is bound to itself. The point of the current proposal is to get an interesting / useful result in that case, and analogous cases involving and, or, and if. not 3+4*%i < 1 yields an error at present, and also with the revised code. Changing that is not within the scope of the current proposal. The examples are literal, not general; I didn't mean to imply that they hold for all values of a, b, c, and d. I guess prefacing the examples with kill (a, b, c, d) would clarify that point. > So there is an implicit assumption that a,b,c are from an ordered > field, or perhaps from the real numbers. Maybe this should be > explicit. e.g. have your simplifications within a context of some sort.. The revised code isn't making any assumptions not already implicit in the input. E.g. if you write c < 1, it is implied that c would be comparable to 1, if ever it were assigned a value, therefore not c < 1 => c >= 1 is not any less jusified than c < 1. > How far are you going with geometric inequalities? I'm not sure what you're getting at here. Here are some more examples. kill (a, b,c, d, e); ev (a and b or c and d, a=true, c=false) => error or unknown a > 1 and a > 1 => error or unknown a > 1 and 2 > 1 => error or unknown a > 1 or 2 > 1 => error or unknown ev (if a then b elseif c then d else e, a=false) => error or if unknown ... and / or don't commute in obvious cases at present: a > 1 or 2 > 1 => error or unknown, 2 > 1 or a > 1 => true Here are the results returned by the revised code for the above examples. In each case, I claim the result returned by the revised code is more generally useful than the result returned at present. ev (a and b or c and d, a=true, c=false) => b a > 1 and a > 1 => a > 1 and a > 1 (yes, more simplification is possible here ...) a > 1 and 2 > 1 => a > 1 a > 1 or 2 > 1 => true 2 > 1 or a > 1 => true ev (if a then b elseif c then d else e, a=false) => if c then d else e Hope this helps, Robert Dodier From fateman at cs.berkeley.edu Sat Jan 28 20:09:57 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sat, 28 Jan 2006 18:09:57 -0800 Subject: [Maxima] unevaluated boolean and conditional expressions (take 1) References: <068c01c6246b$7a965150$11d09888@windsor> Message-ID: <069501c62479$1bd16bb0$11d09888@windsor> (OK, I don't see any damage compared to current situation :) As for more elaborate deductions, consider assume(x>=0 and y>=0) is (x^2+y^2>0) --> is (not (x=0 and y=0)) is(x*y>=0) --> true assume(z^2<1) is ( -1 true ......... There is a literature on "cylindrical algebraic decomposition" for solving such questions. RJF From awolven at yahoo.com Sun Jan 29 10:31:06 2006 From: awolven at yahoo.com (Andrew K. Wolven) Date: Sun, 29 Jan 2006 10:31:06 -0600 Subject: [Maxima] lisp and maxima intertwined Message-ID: <002501c624f1$679e8c80$0d00a8c0@Schmazelshmox> I've written a Knowledge Based [Engineering] extension to common lisp. It is for internal research use only being based in part on Genworks' GDL. However, my target market (nice people -- for the next generation version) think in infix and MATLAB. I think it would be unfair to them to expose them right away to s-exprs. The defobject macro itself can be their first level of s-exprs, unless they need to embed lisp in infix. I would like to interweave lisp and maxima. (In a better way than the documentation shows now with #$ and ? and :lisp) Problem is, I've written a lot of junk, but maxima is implementing a custom reader and REPL afaik (plz correct me if I'm wrong), and I've only once messed with readers. How can I just sandwich lisp in maxima like "1+f(10) + lisp((+ 1 2 (the :three) 4)) + 2"? (where "lisp" is a maxima macro and "the" is a shadowed symbol which is now a lisp macro) Then it might be easier to implement a KBE thing using maxima. We could also plot to Autocad (and CL-PDF, if someone is willing to figure these out!) Oh yeah, I know this is GPL and not LPGL or LLGPL, does that mean I should go with Macsyma? I just want to create. :exit Andrew Wolven From fateman at cs.berkeley.edu Sun Jan 29 10:59:00 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sun, 29 Jan 2006 08:59:00 -0800 Subject: [Maxima] lisp and maxima intertwined References: <002501c624f1$679e8c80$0d00a8c0@Schmazelshmox> Message-ID: <071501c624f5$4e8d7a40$11d09888@windsor> ----- Original Message ----- From: "Andrew K. Wolven" To: Sent: Sunday, January 29, 2006 8:31 AM Subject: [Maxima] lisp and maxima intertwined > Problem is, I've written a lot of junk, but maxima is implementing a > custom reader and REPL afaik (plz correct me if I'm wrong), and I've only > once messed with readers. This is kind of true, but it is not hacking the lisp read table. It just reads characters from the user's input. How can I just sandwich lisp in maxima like "1+f(10) + > lisp((+ 1 2 (the :three) 4)) + 2"? (where "lisp" is a maxima macro and > "the" is a shadowed symbol which is now a lisp macro) Then it might be > easier to implement a KBE thing using maxima. You could do this: LISP("(+ 1 2 (the :three) 4)") +2 without too much trouble. Then you could have the LISP function do something like (defun $LISP(x)(read-from-string x)) However, the internal maxima form for (+ x y) is likely to look more like ((mplus simp) $y $x), if you want to mix them together. > We could also plot to Autocad (and CL-PDF, if someone is willing to figure > these out!) > Oh yeah, I know this is GPL and not LPGL or LLGPL, does that mean I should > go with Macsyma? At the moment it seems that the commercial Macsyma is unsupported and almost unavailable. Good luck contacting the current owner. You can get a copy of DOE Macsyma that is essentially unrestricted, and use that, if you want to sell what you've done. If you don't want to sell what you've done, GPL, LGPL, etc. doesn't matter much. RJF From robert.dodier at gmail.com Sun Jan 29 12:07:15 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 29 Jan 2006 11:07:15 -0700 Subject: [Maxima] lisp and maxima intertwined In-Reply-To: <002501c624f1$679e8c80$0d00a8c0@Schmazelshmox> References: <002501c624f1$679e8c80$0d00a8c0@Schmazelshmox> Message-ID: Hello Andrew, > How can I just sandwich lisp in maxima like "1+f(10) + > lisp((+ 1 2 (the :three) 4)) + 2"? (where "lisp" is a > maxima macro and "the" is a shadowed symbol which > is now a lisp macro). I wouldn't try too hard to wedge Lisp input into Maxima. It can be done, but the result will be clumsy; I doubt if it will be popular with your users. Better for your users to adapt the Lisp objects in question to something Maxima is comfortable with. It is really quite simple: Maxima prefers user-visible symbols to begin with $ or %, and requires every nonatomic expression to have a car which is a list; the caar is the name of the operator. For example, I'll guess that rule objects look something like ( ) at present. Maxima parses 'if then into ((%mcond) t nil). If that's not convenient we can talk about user-defined operators. In any event, the goal is to get Maxima to do the parsing. > Oh yeah, I know this is GPL and not LPGL or LLGPL, > does that mean I should go with Macsyma? I just want to create. The relevant question, I believe, is whether your creation constitutes a "derived work" of Maxima. If it is not a derived work, you (or your employer or whoever is the copyright holder) get to choose any license terms you please. But if you have a commercial interest in your project, you'd better talk to a lawyer. Disclaimer: I am not a lawyer. A business model for a rule system might be to give away the software and charge for consulting. Dunno if that works for you. Robert Dodier From robert.dodier at gmail.com Sun Jan 29 13:35:03 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 29 Jan 2006 12:35:03 -0700 Subject: [Maxima] unevaluated boolean and conditional expressions (take 1) In-Reply-To: <069501c62479$1bd16bb0$11d09888@windsor> References: <068c01c6246b$7a965150$11d09888@windsor> <069501c62479$1bd16bb0$11d09888@windsor> Message-ID: On 1/28/06, Richard Fateman wrote: > (OK, I don't see any damage compared to current situation :) Terrific, glad to hear it. > There is a literature on "cylindrical algebraic decomposition" > for solving such questions. Well, I haven't attempted any assume-like functionality in the current revision, although increasing the power of assume would be very useful. I might come back to this topic at some point. best, Robert Dodier From macrakis at alum.mit.edu Sun Jan 29 14:10:26 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Sun, 29 Jan 2006 15:10:26 -0500 Subject: [Maxima] unevaluated boolean and conditional expressions (take 1) In-Reply-To: References: Message-ID: <8b356f880601291210j2acff21fg7f0d63bc2ffedfd6@mail.gmail.com> > I've put together some code to equip Maxima to handle unevaluated > boolean and conditional expressions. That's great! Something we've been wanting to do for a long time! But doesn't this present some problems in programming with imperative constructs? Previously, in programming constructs, an unevaluable conditional would cause an error, which was often the right thing. Now it does nothing, silently. So for example: if x>0 then print(1) else print(2) previously would print either 1 or 2, or cause an error. Now it can silently do nothing. I presume you haven't modified "for" and "while", though.... Another problem is with variable scope: f(x,y) := if y=0 then 0 else 1/x; What is the value of f(0,n)? It had better not be if y=0 then 0 else 1/x You could return a block, e.g. block([x:0,y:n],if y=0 then 0 else 1/x) If you try to substitute the variables, you get a different problem -- Maxima has no way of deferring an error.... if n=0 then 0 else 1/0 which will cause a simplification error (division by zero). I have not looked at your module, so perhaps you have already resolved all these issues.... -s From robert.dodier at gmail.com Sun Jan 29 16:08:58 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 29 Jan 2006 15:08:58 -0700 Subject: [Maxima] unevaluated boolean and conditional expressions (take 1) In-Reply-To: <8b356f880601291210j2acff21fg7f0d63bc2ffedfd6@mail.gmail.com> References: <8b356f880601291210j2acff21fg7f0d63bc2ffedfd6@mail.gmail.com> Message-ID: On 1/29/06, Stavros Macrakis wrote: > Previously, in programming constructs, an unevaluable conditional > would cause an error, which was often the right thing. Now it does > nothing, silently. The prederror flag is still observed in the code, so the previous mode is still available. Setting prederror : true banishes unevaluated conditionals. > So for example: > > if x>0 then print(1) else print(2) > > previously would print either 1 or 2, or cause an error. Now it can > silently do nothing. "If" evaluates its arguments, so evaluating the above expression actually causes both 1 and 2 to be printed (when prederror = false). But that's life with side effects. Alternatives here would be to call MEVALATOMS on the arguments or to quote them verbatim. There is some potential, in the current version, for confusion and anguish involving side effects, but I see greater potential due to evaluating arguments less. > I presume you haven't modified "for" and "while", though.... That is correct. > Another problem is with variable scope: > > f(x,y) := if y=0 then 0 else 1/x; I think you must have meant equal (y, 0) here; is(y = 0) always has a definite value, so if y = 0 ... won't yield an unevaluated conditional. > What is the value of f(0,n)? It had better not be > > if y=0 then 0 else 1/x No, it's not. It wants to be "if equal (n, 0) then 0 else 1/0" but simplification of 1/0 triggers an error. > You could return a block, e.g. > > block([x:0,y:n],if y=0 then 0 else 1/x) > > If you try to substitute the variables, you get a different problem -- > Maxima has no way of deferring an error.... > > if n=0 then 0 else 1/0 > > which will cause a simplification error (division by zero). I'm not convinced that we should try to avoid side effects (such as printing stuff and errors triggered from simplification). My primary consideration here is that the current policy (evalute the condition and arguments and paste them into another "if" expression) is easy to describe, and therefore more comprehensible. In the presence of side effects, I can see that MEVALATOMS could be useful, but I am wondering how to explain that. Thanks for your comments, Robert From yigal.weinstein at gmail.com Sun Jan 29 16:31:12 2006 From: yigal.weinstein at gmail.com (yigal) Date: Sun, 29 Jan 2006 14:31:12 -0800 Subject: [Maxima] continued fractions Message-ID: <1138573872.8821.15.camel@localhost.localdomain> In the many manuals that exist for Maxima the function CF is the only use of continued fractions that Maxima intrinsically supports. This function operator does not seem to allow creating continued fractions only to interpret numbers as continued fractions. I want to compute the incomplete gamma function, gamma(x,z) via a continued fraction. Is there an easy or at least straightforward way in Maxima to do this? The sequences for numerators and denominators are simple: num = (1,(a-1)*1,(a-2)*2,...) den = (x+1-a, x+3-a, x+5-a,...) Thank you, Yigal Weinstein From robert.dodier at gmail.com Sun Jan 29 23:21:13 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 29 Jan 2006 22:21:13 -0700 Subject: [Maxima] continued fractions In-Reply-To: <1138573872.8821.15.camel@localhost.localdomain> References: <1138573872.8821.15.camel@localhost.localdomain> Message-ID: On 1/29/06, yigal wrote: > I want to compute the incomplete gamma function, gamma(x,z) via a > continued fraction. Is there an easy or at least straightforward way in > Maxima to do this? The sequences for numerators and denominators are > simple: > > num = (1,(a-1)*1,(a-2)*2,...) > den = (x+1-a, x+3-a, x+5-a,...) Well, here is a simple-minded approach. Maybe this is enough. gcf (cf_num, cf_denom,n) := block ([s : 0], for k from n - 1 step -1 thru 0 do s : ev(cf_num) / (ev(cf_denom) + s), s); cf_num is an expression to give the numerators. cf_denom is an expression to give the denominators. n is the number of terms you want, counting from 0 to n - 1. gcf just builds up a nested quotient of the specified depth. gcf ('(if k=0 then z^a*exp(-z) else k*(a - k)), z - a + 2*k + 1, 5); => (nested quotients expression) gammainc_approx (a, z) := '' %; gammainc_approx (3/4, 1/2); => (some stuff) '' %, numer; => 0.5753834162127 Another program (Octave) seems to think that's correct to about 2 decimal places. I didn't try any other examples. Note that '' in the stuff above is two single quotes, not a double quote. '' % means re-evaluate the preceding output. I looked to see if the maxima/share directory has any CF stuff, but I didn't find any. I also looked for a built-in incomplete gamma function, but didn't find one. Hope this helps, Robert Dodier From biomates at telefonica.net Mon Jan 30 10:23:12 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Mon, 30 Jan 2006 17:23:12 +0100 Subject: [Maxima] continued fractions In-Reply-To: References: <1138573872.8821.15.camel@localhost.localdomain> Message-ID: <1138638193.8375.41.camel@localhost.localdomain> Some weeks ago I commited to the repository the last version of the 'distrib' package. http://cvs.sourceforge.net/viewcvs.py/maxima/maxima/share/contrib/distrib/ In this new version I wrote the numerical algorithms in lisp, which are now in 'numdistrib.lisp'. Among others, you can find here 'igamma', and 'ibeta', the incomplete gamma and beta functions, since they are necessary to compute some distribution functions and random variates. The algorithm for the 'igamma' is number 239 of Applied Statistics, the same used by the statistical R program (but now they are using another one). Here are some comparisons Maxima vs. R (Version 2.1.1 - 2005-06-20, with their new version of the incomplete gamma) calculating values of the gamma distribution function : (%i1) load(distrib)$ (%i2) disgamma(2.3,2,5); /* R gives => 0.07832588 */ (%o2) .07832587755988804 (%i3) disgamma(0.2,32,0.01); /* R gives => 0.008091755 */ (%o3) .008091754669835248 (%i4) disgamma(568,3.2,425); /* R gives => 0.1218213 */ (%o4) .1218213135071108 For more info about this function, do 'describe(disgamma);' > > gammainc_approx (3/4, 1/2); => (some stuff) > > '' %, numer; => 0.5753834162127 > (%i5) ?igamma(0.5,0.75); /* yes, reversed order ! */ (%o5) 0.527937109834672 'igamma' is written at lisp level and it is not intended to be called directly from Maxima (it was conceived as an auxiliary function for the distributions package); it only works with floating point numbers and does not accept symbolic expressions. Best wishes. -- Mario Rodriguez Riotorto www.biomates.net From alexandre at emc.ufsc.br Mon Jan 30 10:39:31 2006 From: alexandre at emc.ufsc.br (Alexandre Campos) Date: Mon, 30 Jan 2006 17:39:31 +0100 Subject: [Maxima] function bibliorgraphic reference Message-ID: <43DE4143.4050003@emc.ufsc.br> Hello! I'm writing a paper in which I use the integer_partitions function of macsyma-module nset: ;; Copyright 2002-2003 by ;; Stavros Macrakis (macrakis at alum.mit.edu) and ;; Barton Willis (willisb at unk.edu) ;; Maxima nset is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License, ;; http://www.gnu.org/copyleft/gpl.html. ;; Maxima nset has NO WARRANTY, not even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ;; A Maxima set package (in-package "MAXIMA") (macsyma-module nset) I'd like to know how to reference this in my paper, i.e. the right bibliography!! Regards, alexandre -- "For I am convinced that neither death, nor life, nor angels, nor principalities, nor things present, nor things to come, nor powers, nor height, nor depth, nor any other created thing, shall be able to separate us from the love of God, which is in Christ Jesus our Lord." Romans 8:38,39 From awolven at yahoo.com Mon Jan 30 12:33:37 2006 From: awolven at yahoo.com (Andrew Wolven) Date: Mon, 30 Jan 2006 10:33:37 -0800 (PST) Subject: [Maxima] lisp and maxima intertwined In-Reply-To: <071501c624f5$4e8d7a40$11d09888@windsor> Message-ID: <20060130183337.91716.qmail@web60017.mail.yahoo.com> --- Richard Fateman wrote: > > At the moment it seems that the commercial Macsyma > is unsupported and almost > unavailable. Good luck contacting the current > owner. > Why is it difficult to contact the current owner? > You can get a copy of DOE Macsyma that is > essentially unrestricted, > and use that, if you want to sell what you've done. > If you don't want to > sell what > you've done, GPL, LGPL, etc. doesn't matter much. maybe that's all I need, but it is too bad there are so many forks to essentially the same program. AKW > RJF > > > From awolven at yahoo.com Mon Jan 30 12:50:42 2006 From: awolven at yahoo.com (Andrew Wolven) Date: Mon, 30 Jan 2006 10:50:42 -0800 (PST) Subject: [Maxima] lisp and maxima intertwined In-Reply-To: Message-ID: <20060130185042.90303.qmail@web60019.mail.yahoo.com> --- Robert Dodier wrote: > Hello Andrew, > > > How can I just sandwich lisp in maxima like > "1+f(10) + > > lisp((+ 1 2 (the :three) 4)) + 2"? (where "lisp" > is a > > maxima macro and "the" is a shadowed symbol which > > is now a lisp macro). > > I wouldn't try too hard to wedge Lisp input into > Maxima. > It can be done, but the result will be clumsy; I > doubt if > it will be popular with your users. > > Better for your users to adapt the Lisp objects in > question > to something Maxima is comfortable with. > It is really quite simple: Maxima prefers > user-visible symbols > to begin with $ or %, and requires every nonatomic > expression > to have a car which is a list; the caar is the name > of the operator. > > For example, I'll guess that rule objects look > something like > ( ) at present. > Maxima parses 'if then > into ((%mcond) t nil). > If that's not convenient we can talk about > user-defined operators. > In any event, the goal is to get Maxima to do the > parsing. I think it would end up being hybrid parsing. What I would like to do is something like: (defobject car () :attributes ((velocity :modifiable 10) (mass 1000) (kinetic-energy :math 1/2*(the mass)*(the velocity)^2))) This is just like my current defobject macro, but when it would see the declaration ":math" it would take everything before the closing paren to be infix or maxima notation. All the kids at my school have been taught either MATLAB or FORTRAN to do their engineering problems, and I would not want a KBE system to be backwards seeming to them. I guess I need to write a parser to do this. AKW From fateman at cs.berkeley.edu Mon Jan 30 13:20:07 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Mon, 30 Jan 2006 11:20:07 -0800 Subject: [Maxima] lisp and maxima intertwined In-Reply-To: <20060130185042.90303.qmail@web60019.mail.yahoo.com> References: <20060130185042.90303.qmail@web60019.mail.yahoo.com> Message-ID: <43DE66E7.4080704@cs.berkeley.edu> If you are willing to parse in :math mode until the end of the line, then there is an example of an infix-parser that can be used to embed math into ordinary lisp in among other things in http://www.cs.berkeley.edu/~fateman/generic/ RJF Andrew Wolven wrote: > >I think it would end up being hybrid parsing. What I >would like to do is something like: > >(defobject car () > >:attributes >((velocity :modifiable 10) > (mass 1000) > (kinetic-energy :math 1/2*(the mass)*(the >velocity)^2))) > >This is just like my current defobject macro, but when >it would see the declaration ":math" it would take >everything before the closing paren to be infix or >maxima notation. > >All the kids at my school have been taught either >MATLAB or FORTRAN to do their engineering problems, >and I would not want a KBE system to be backwards >seeming to them. > >I guess I need to write a parser to do this. > >AKW > >_______________________________________________ >Maxima mailing list >Maxima at math.utexas.edu >http://www.math.utexas.edu/mailman/listinfo/maxima > > From willisb at unk.edu Tue Jan 31 06:08:23 2006 From: willisb at unk.edu (Barton Willis) Date: Tue, 31 Jan 2006 06:08:23 -0600 Subject: [Maxima] advice on using packages Message-ID: I was thinking about how I might use the package system in linalg. So, I tried the experiment: MAXIMA> (defpackage :my (:use :common-lisp :maxima) (:import-from :maxima #:add :maxima :mplus :maxima :simp)) MY> (add '$a '$b); ((MPLUS SIMP) $A $B) (Q1) Is all this :import stuff really needed? (Q2) Switching back to the 'maxima' package seems like it will cause trouble: MY> (setf q (add '$a '$b)); ((MPLUS SIMP) $A $B) MY> (in-package :maxima); #<"MAXIMA" package> MAXIMA> q Maxima encountered a Lisp error: Error in EVAL [or a callee]: The variable Q is unbound. MAXIMA> my::q ((MPLUS SIMP) MY::$A MY::$B) How could this be done? (A general scheme to change my:: --> .) (Q3) Other advice -- perhaps a pointer to a good tutorial on packages in CL? Barton From raymond.toy at ericsson.com Tue Jan 31 07:51:47 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Tue, 31 Jan 2006 08:51:47 -0500 Subject: [Maxima] advice on using packages In-Reply-To: (Barton Willis's message of "Tue, 31 Jan 2006 06:08:23 -0600") References: Message-ID: >>>>> "Barton" == Barton Willis writes: Barton> I was thinking about how I might use the package system in linalg. Barton> So, I tried the experiment: MAXIMA> (defpackage :my (:use :common-lisp :maxima) Barton> (:import-from :maxima #:add :maxima :mplus :maxima :simp)) MY> (add '$a '$b); Barton> ((MPLUS SIMP) $A $B) Barton> (Q1) Is all this :import stuff really needed? I think it would work without the :import-from, since you're :use'ing :maxima already. That is, no package qualifiers needed to refer to a symbol in the maxima package. Barton> (Q2) Switching back to the 'maxima' package seems Barton> like it will cause trouble: MY> (setf q (add '$a '$b)); Barton> ((MPLUS SIMP) $A $B) MY> (in-package :maxima); Barton> #<"MAXIMA" package> MAXIMA> q Barton> Maxima encountered a Lisp error: Barton> Error in EVAL [or a callee]: The variable Q is unbound. MAXIMA> my::q Barton> ((MPLUS SIMP) MY::$A MY::$B) Barton> How could this be done? (A general scheme to change Barton> my:: --> .) You would have to programmatically import my::q to maxima. But I think this is not the typical way to use the MY package. I think you would typically be in the maxima package and access stuff from your MY package. Of course, you'd have to use package qualifiers (my::foo) to access them, unless you tell maxima to :use your package. It would be a bit unusual to have maxima :use MY, though, but not always. Barton> (Q3) Other advice -- perhaps a pointer to a good Barton> tutorial on packages in CL? I believe Practical Common Lisp (available on the web) has a good section on packages. Ray From willisb at unk.edu Tue Jan 31 08:24:51 2006 From: willisb at unk.edu (Barton Willis) Date: Tue, 31 Jan 2006 08:24:51 -0600 Subject: [Maxima] advice on using packages Message-ID: -----Raymond Toy wrote: ----- > Barton> (Q1) Is all this :import stuff really >needed? > >I think it would work without the :import-from, >since you're :use'ing :maxima already. That is, > no package qualifiers needed to refer to a >symbol in the maxima package. In GCL, it doesn't seem to work that way: MAXIMA> (defpackage :my (:use :common-lisp :maxima)) #<"MY" package> MAXIMA> (in-package :my) #<"MY" package> MY> (add 5 6); Maxima encountered a Lisp error: Error in EVAL [or a callee]: The function ADD is undefined. Automatically continuing. To reenable the Lisp debugger set *debugger-hook* to nil. MY> (maxima:add 5 6); Maxima encountered a Lisp error: Error in READ [or a callee]: Cannot find the external symbol ADD in #<"MAXIMA" package>. Automatically continuing. To reenable the Lisp debugger set *debugger-hook* to nil. MY> 5 MY> 6 MY> (maxima::add 5 6); 11 >I think you would typically be in the maxima >package and access stuff >from your MY package. Of course, you'd have to >use package qualifiers >(my::foo) to access them, unless you tell maxima >to :use your package. Oh--I understand. Thanks. Barton From 99LSharkey at ormskirk.lancs.sch.uk Tue Jan 31 09:11:18 2006 From: 99LSharkey at ormskirk.lancs.sch.uk (Luke Sharkey) Date: Tue, 31 Jan 2006 15:11:18 +0000 Subject: [Maxima] plotting graphs Message-ID: <3E783573F8C838449803D19EAFEEA835014DE5B6@orm-ex-001.ormskirk.internal> This is a multi-part message in MIME format. --Boundary_(ID_QJjO4+somw7qr0D1qpkAsw) Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7BIT One last thing: Does the "plot" function generally work for other people out there? On Linux, though Maxima outputs the file, it is always blank no matter what the function is or with what range of x and y values it is supposed to be plotted between (I do have the Gnuplot rpm installed by the way. I'm using Suse 10.0) On Windows, Maxima doesn't output any files at all! Thanks. Luke Sharkey *************************************************************************** This e-mail is confidential and privileged. If you are not the intended recipient do not disclose, copy or distribute information in this e-mail or take any action in reliance on its content. *************************************************************************** *************************************************************************** This email has been checked for known viruses. *************************************************************************** --Boundary_(ID_QJjO4+somw7qr0D1qpkAsw) Content-type: text/html; charset=us-ascii Content-transfer-encoding: 7BIT

One last thing:

 

Does the “plot” function generally work for other people out there?

 

 

On Linux, though Maxima outputs the file, it is always blank no matter what the function is or with what range of x and y values it is supposed to be plotted between (I do have the Gnuplot rpm installed by the way.  I’m using Suse 10.0)

 

On Windows, Maxima doesn’t output any files at all!

 

 

Thanks.

Luke Sharkey

***************************************************************************
This e-mail is confidential and privileged. If you are not the intended
recipient do not disclose, copy or distribute information in this e-mail
or take any action in reliance on its content.
***************************************************************************

***************************************************************************
This email has been checked for known viruses.
***************************************************************************

--Boundary_(ID_QJjO4+somw7qr0D1qpkAsw)-- From raymond.toy at ericsson.com Tue Jan 31 09:30:11 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Tue, 31 Jan 2006 10:30:11 -0500 Subject: [Maxima] advice on using packages In-Reply-To: (Barton Willis's message of "Tue, 31 Jan 2006 08:24:51 -0600") References: Message-ID: >>>>> "Barton" == Barton Willis writes: Barton> -----Raymond Toy wrote: ----- Barton> (Q1) Is all this :import stuff really >> needed? >> >> I think it would work without the :import-from, >> since you're :use'ing :maxima already. That is, >> no package qualifiers needed to refer to a >> symbol in the maxima package. Barton> In GCL, it doesn't seem to work that way: MAXIMA> (defpackage :my (:use :common-lisp :maxima)) Barton> #<"MY" package> MAXIMA> (in-package :my) Barton> #<"MY" package> MY> (add 5 6); Oops. That's because ADD is not an external symbol of the maxima package. In fact, I'm pretty sure maxima doesn't export ANY symbols, so my suggestion here doesn't really work the way you want. But it does suggest that you really want to be in the maxima package when doing your stuff with your MY package. :-) >> I think you would typically be in the maxima >> package and access stuff >> from your MY package. Of course, you'd have to >> use package qualifiers >> (my::foo) to access them, unless you tell maxima >> to :use your package. Barton> Oh--I understand. Thanks. One other thing. The MY package should decide what to export as it's public interface to maxima. Then you can use either my:foo or just foo if maxima :uses your package. Ray From raymond.toy at ericsson.com Tue Jan 31 09:39:13 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Tue, 31 Jan 2006 10:39:13 -0500 Subject: [Maxima] plotting graphs In-Reply-To: <3E783573F8C838449803D19EAFEEA835014DE5B6@orm-ex-001.ormskirk.internal> (Luke Sharkey's message of "Tue, 31 Jan 2006 15:11:18 +0000") References: <3E783573F8C838449803D19EAFEEA835014DE5B6@orm-ex-001.ormskirk.internal> Message-ID: >>>>> "Luke" == Luke Sharkey <99LSharkey at ormskirk.lancs.sch.uk> writes: Luke> Does the "plot" function generally work for other people out there? Luke> On Linux, though Maxima outputs the file, it is always blank no matter Luke> what the function is or with what range of x and y values it is supposed Luke> to be plotted between (I do have the Gnuplot rpm installed by the way. Luke> I'm using Suse 10.0) What "plot" function? Do you meant plot2d? Please give an example of what you did and what did (or did not) happen. Ray From robert.dodier at gmail.com Tue Jan 31 09:57:45 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Tue, 31 Jan 2006 08:57:45 -0700 Subject: [Maxima] plotting graphs In-Reply-To: References: <3E783573F8C838449803D19EAFEEA835014DE5B6@orm-ex-001.ormskirk.internal> Message-ID: On 1/31/06, Raymond Toy wrote: > What "plot" function? Do you meant plot2d? I wonder if anyone is opposed to something like this: (defmspec $plot (foo) (format t "There is no function named `plot'. Perhaps you meant to say `plot2d'.~%")) I've made the mistake of writing plot instead of plot2d more than once myself ... Robert Dodier From fateman at cs.berkeley.edu Tue Jan 31 10:01:33 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Tue, 31 Jan 2006 08:01:33 -0800 Subject: [Maxima] advice on using packages References: Message-ID: <011301c6267f$9f191100$07d09888@windsor> I'm not an expert in packages, and use them only when it seems there is no other way... But when I use them it is in order to shadow names. If you want to over-ride or shadow an operation, say $integrate from :maxima, you could do (defpackage :my (:shadowing-import-from :maxima $integrate) and do computations in the :my package. see, e.g. http://www.cs.berkeley.edu/~fateman/generic for lisp package setup for generic arithmetic, overloaded +, *, etc. This works, but may not be the best use. RJF ----- Original Message ----- From: "Raymond Toy" To: "Barton Willis" Cc: "Maxima List" Sent: Tuesday, January 31, 2006 7:30 AM Subject: Re: [Maxima] advice on using packages >>>>>> "Barton" == Barton Willis writes: > > Barton> -----Raymond Toy wrote: ----- > Barton> (Q1) Is all this :import stuff really > >> needed? > >> > >> I think it would work without the :import-from, > >> since you're :use'ing :maxima already. That is, > >> no package qualifiers needed to refer to a > >> symbol in the maxima package. > > Barton> In GCL, it doesn't seem to work that way: > > MAXIMA> (defpackage :my (:use :common-lisp :maxima)) > Barton> #<"MY" package> > MAXIMA> (in-package :my) > Barton> #<"MY" package> > MY> (add 5 6); > > Oops. That's because ADD is not an external symbol of the maxima > package. In fact, I'm pretty sure maxima doesn't export ANY symbols, > so my suggestion here doesn't really work the way you want. > > But it does suggest that you really want to be in the maxima package > when doing your stuff with your MY package. :-) > > >> I think you would typically be in the maxima > >> package and access stuff > >> from your MY package. Of course, you'd have to > >> use package qualifiers > >> (my::foo) to access them, unless you tell maxima > >> to :use your package. > > Barton> Oh--I understand. Thanks. > > One other thing. The MY package should decide what to export as it's > public interface to maxima. Then you can use either my:foo or just > foo if maxima :uses your package. > > Ray > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From areiner at tph.tuwien.ac.at Tue Jan 31 10:35:55 2006 From: areiner at tph.tuwien.ac.at (Albert Reiner) Date: 31 Jan 2006 17:35:55 +0100 Subject: [Maxima] advice on using packages In-Reply-To: References: Message-ID: [Barton Willis , Tue, 31 Jan 2006 06:08:23 -0600]: > (Q3) Other advice -- perhaps a pointer to a good > tutorial on packages in CL? I found Ron Garret: The Idiot's Guide to Common Lisp Packages very readable Albert. From HerbM at learnquick.com Tue Jan 31 10:31:25 2006 From: HerbM at learnquick.com (Herb Martin) Date: Tue, 31 Jan 2006 10:31:25 -0600 Subject: [Maxima] Maxima tutorials for specific math subjects Differential Equations & Linear Algebra Message-ID: I would appreciate hearing of any links to tutorials for (especially) Differential Equations or Linear Algebra that use Maxima, or any other math subjects. [I have (the) one tutorial on maxima4calculus. http://www.math.psu.edu/glasner/] Currently I am working on both of these subjects in specific, and reading through "The Road to Reality:..." by Penrose, while also trying to learn Maxima or Axiom. Maxima tutorials are a bit difficult to search since the term is so prevalent on Calculus and Analysis pages.... There are lots of such things for Maple and for Mathematica but I don't (yet?) have much idea of how to convert or use those with Maxima (or Axiom.) FYI: I am using Maxima on Windows, including all of the command line, xmaxima, and TexMacs interfaces. Thank you, -- Herb Martin From robert.dodier at gmail.com Tue Jan 31 12:25:56 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Tue, 31 Jan 2006 11:25:56 -0700 Subject: [Maxima] Maxima tutorials for specific math subjects Differential Equations & Linear Algebra In-Reply-To: References: Message-ID: hello herb, > I would appreciate hearing of any links to > tutorials for (especially) Differential Equations > or Linear Algebra that use Maxima, or any other > math subjects. a couple of ideas -- take a look at the tutorial by Boris Gaertner, http://maxima.sf.net/docs/tutorial/en/gaertner-tutorial-revision/Contents.htm which has several sections on specific topics. the directory maxima/share/contrib/rand/ (should be in your installation) contains a lot of scripts and other files for solving specific problems. (btw rand = Richard Rand, not rand as in "random".) hth, robert dodier From HerbM at learnquick.com Tue Jan 31 13:37:59 2006 From: HerbM at learnquick.com (Herb Martin) Date: Tue, 31 Jan 2006 13:37:59 -0600 Subject: [Maxima] Maxima tutorials for specific math subjects Differential Equations & Linear Algebra In-Reply-To: Message-ID: > From: Robert Dodier > a couple of ideas -- Thank you for taking the time to offer help. > the directory maxima/share/contrib/rand/ (should be in your > installation) > contains a lot of scripts and other files for solving > specific problems. > (btw rand = Richard Rand, not rand as in "random".) Great tip! I might never (or for indeterminate time not) have found those modules. Also, the BK1 files do NOT show up by default when maxima is told to load a batch file so it helps to go to the actual directories and list them. A minor problem on Windows, which might save someone else a headache, is that the files have some (probably a Ctrl-D) unreadable character at the end. The Windows version reports a "Lisp error" (for some of the BK1 files at least.) It's easy to avoid by removing the character using a text editor. > take a look at the tutorial by Boris Gaertner, > http://maxima.sf.net/docs/tutorial/en/gaertner-tutorial-revisi > on/Contents.htm > which has several sections on specific topics. This I have seen (thanks seriously though), and perhaps I wasn't clear: What I am really hoping to find are tutorials on the MATH subjects, that reference Maxima for help is learning the subject and solving that class of problems. There is quite a bit on using Maxima, but not much (that I have found) on learning mathematics BY using Maxima. -- Herb Martin From petegus at spaceshipone.engin.umich.edu Tue Jan 31 15:30:55 2006 From: petegus at spaceshipone.engin.umich.edu (Peter Gustafson) Date: Tue, 31 Jan 2006 16:30:55 -0500 Subject: [Maxima] Plotting questions: changes in plotting between 5.9.1 and 5.9.2 Message-ID: <1138743055.11403.6.camel@spaceshipone.engin.umich.edu> Hi, I've recently upgraded from 5.9.1 to 5.9.2 and noticed several changes in running a solution I've been developing. Having to rewrite my batch files slightly caused me to learn some new functionality I didn't know before!!! (Good) However, I've also found that plotting no longer produces a maxima.gnuplot file in the working directory. I used to use this file to save my plot data, and then plot in another package, however without the file I'm a little stuck. Is this file saved elsewhere in 5.9.2? Is this option available? Incidently, how do I plot two vectors against each other using maxima and gnuplot interface? I've never figured this out. For example, I'd like the functionality of octave's plot(x,y) for two vectors. Thanks, Pete From biomates at telefonica.net Tue Jan 31 16:21:17 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Tue, 31 Jan 2006 23:21:17 +0100 Subject: [Maxima] Plotting questions: changes in plotting between 5.9.1 and 5.9.2 In-Reply-To: <1138743055.11403.6.camel@spaceshipone.engin.umich.edu> References: <1138743055.11403.6.camel@spaceshipone.engin.umich.edu> Message-ID: <1138746077.12185.6.camel@localhost.localdomain> > I've recently upgraded from 5.9.1 to 5.9.2 and noticed several changes > in running a solution I've been developing. Having to rewrite my batch > files slightly caused me to learn some new functionality I didn't know > before!!! (Good) However, I've also found that plotting no longer > produces a maxima.gnuplot file in the working directory. > Really? I don't have any problems with that. > I used to use this file to save my plot data, and then plot in another > package, however without the file I'm a little stuck. Is this file > saved elsewhere in 5.9.2? Is this option available? > > Incidently, how do I plot two vectors against each other using maxima > and gnuplot interface? I've never figured this out. For example, I'd > like the functionality of octave's plot(x,y) for two vectors. I hope the following Maxima session will help you: /******************* begin Maxima ********************/ (%i1) edge1:[[2,4],[0,1]]$ (%i2) edge2: [[3,5],[2,7]]$ (%i3) plot2d([[discrete, edge1],[discrete, edge2]], [gnuplot_curve_styles, "with points 3 7"], [gnuplot_preamble, "set xrange [-3:5]; set yrange [0:10]; set pointsize 3; set nokey; set noxtics; set noytics; set label 1 'Madrid' at -0.5, 1 center; set label 2 'Paris' at 2, 4.5 center; set arrow 1 from 2, 4 to 0, 1 size 0.5, 30 filled heads; set arrow 2 from 3, 5 to 2, 7 size 0.3, 10 filled"])$ /******************* end Maxima ********************/ This is the maxima.output file I get in my working directory ~/ /******************* begin maxima.output ********************/ set xrange [-3:5]; set yrange [0:10]; set pointsize 3; set nokey; set noxtics; set noytics; set label 1 'Madrid' at -0.5, 1 center; set label 2 'Paris' at 2, 4.5 center; set arrow 1 from 2, 4 to 0, 1 size 0.5, 30 filled heads; set arrow 2 from 3, 5 to 2, 7 size 0.3, 10 filled plot '-' title 'discrete1' with points 3 7, '-' title 'discrete2' with points 3 7 2. 4. 0. 1. e 3. 5. 2. 7. /******************* end maxima.output ********************/ Best wishes -- Mario Rodriguez Riotorto www.biomates.net From petegus at spaceshipone.engin.umich.edu Tue Jan 31 17:32:18 2006 From: petegus at spaceshipone.engin.umich.edu (Peter Gustafson) Date: Tue, 31 Jan 2006 18:32:18 -0500 Subject: [Maxima] Plotting questions: changes in plotting between 5.9.1 and 5.9.2 In-Reply-To: <1138746077.12185.6.camel@localhost.localdomain> References: <1138743055.11403.6.camel@spaceshipone.engin.umich.edu> <1138746077.12185.6.camel@localhost.localdomain> Message-ID: <1138750338.11413.11.camel@spaceshipone.engin.umich.edu> Hi Mario, Thanks for your quick response and the demo. It seems to work well, I expect I will now be able to do everything I want to do. By the way, after reading your message I've found that the maxout.gnuplot file is now ending up in my home directory ~ instead of my working directory, as it has in 5.9.1. Cheers, Pete From biomates at telefonica.net Wed Feb 1 07:34:04 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Wed, 01 Feb 2006 14:34:04 +0100 Subject: [Maxima] Plotting questions: changes in plotting between 5.9.1 and 5.9.2 In-Reply-To: <1138750338.11413.11.camel@spaceshipone.engin.umich.edu> References: <1138743055.11403.6.camel@spaceshipone.engin.umich.edu> <1138746077.12185.6.camel@localhost.localdomain> <1138750338.11413.11.camel@spaceshipone.engin.umich.edu> Message-ID: <1138800844.9215.9.camel@localhost.localdomain> El mar, 31-01-2006 a las 18:32 -0500, Peter Gustafson escribi??: > Hi Mario, > > Thanks for your quick response and the demo. It seems to work well, I > expect I will now be able to do everything I want to do. > Good news ! > By the way, after reading your message I've found that the > maxout.gnuplot file is now ending up in my home directory ~ instead of > my working directory, as it has in 5.9.1. It depends on the value of lisp global variable *maxima-tempdir*. For example, in my case: (%i1) :lisp *maxima-tempdir* /home/pepito But you can change this directory, like in (%i1) :lisp (setf *maxima-tempdir* "/home/pepito/proyectos") /home/pepito/proyectos (%i1) plot2d(cos(x),[x,0,10]); Now I have maxima.gnuplot in "/home/pepito/proyectos", not in pepito's home directory as before. Best wishes. -- Mario Rodriguez Riotorto www.biomates.net From robert.dodier at gmail.com Wed Feb 1 11:17:39 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 1 Feb 2006 10:17:39 -0700 Subject: [Maxima] Factoring large integers Message-ID: Hello all, Here is a message from Hans Joksch about factoring large integers with Maxima. Maybe someone can comment on this topic. I've mentioned to Hans the Miller-Rabin code. (http://cvs.sf.net/viewcvs.py/*checkout*/maxima/maxima/share/contrib/ifactor.lisp) Maybe factor should call ifactor in some circumstances? Just a thought. all the best, Robert Dodier ------------------------- begin forwarded message from Hans Joksch ------------------------- Comparing factoring numbers by Maxima 5.9.2 and Derive 4. I have Maxima 5.9.2 on an Aurox 9.2 (clone of Red Hat 9) Linux partition, and Derive 4 on a PC-DOS 7 Partition on the same computer with an Athlon 2200 CPU and 512MB RAM. To test the factoring algorithms, I used numbers consisting entirely of the digit "1"; let's define 1(n) as a number consisting of n times the "1". For n=1 ... 40, Derive factored (it also "factored" the prime numbers 1(19) and 1(23)) most numbers "instantaneously", as indicated by observation, and its own clock which shows computation time in 0.1 sec. Exceptions were: 1(17), 0.1 sec, a product of a 7- and a 10-digit number 1(34), 0.6 sec, containing a 7-, a 10-, and an 11-digit factor 1(37), 0.2 sec, a product of a 7-, a 9-, and a 22 digit number 1(39), 0.4 sec, containing a 9- and a 24-digit factor 1(40), 0.2 sec, containing a 7- and a 10-digit factor. 1(38) was a remarkable exception: the program ran 4h 25min until I interrupted it. It is obvious that 11111111111111111111111111111111111111 =1111111111111111111*10000000000000000001. Derive found instantaneously that the first factor, 1(19) is prime, and it also found instantaneously that 10000000000000000001=11*909090909090909091. It is surprising that it would have taken over 4h 25min to combine the two. Even instructing the program to factor the expression 1111111111111111111*10000000000000000001 did not give a faster result. Incidentally, many of the factors with an even numer of digits had the property that the first and the second half added gave a power of 10: 37, 73, 9091, 333667, 909091, 99990001, 999999000001, 909090909090909091, 900900900900990990990991. Up to 1(16), Maxima also factored practically instantaneously. Thereafter, the following differences appeared: 1(17), just less than 1 sec, much more than 0.1 sec, a product of a 7- and a 10-digit number 1(19), a prime number: I interrupted after 2 min calculation 1(23), a prime number: I interrupted after 2 min calculation 1(26), 130 sec, contains a 10- and a 19-digit factor 1(27), 11 sec, contains a 15-digit factor 1(31), I interrupted after 15 min, contains a 20-didgit factor 1(33), I interrupted after 9 min, a 19-digit factor 1(34), I interrupted after 2.5 min, contains a 7-, a 10-, and an 11-digit factor 1(35), I interrupted after 2 min, contains an 18-digit factor 1(36), <1 sec, but not "instantaneously", the largest factor has 12 digits 1(37), I interrupted after 3 hours, contains a 7-, a 9-, and a 22-digit factor - Derive factored this in 0.2 sec! 1(38), I interrupted after 10 min 1(39), I interrupted after 4 min, contains a 24-digit factor 1(40), <1 sec, but not instantaneously, the largest factor has 10 digits. It appears that Maxima and Derive both factor practically instantaneously if the largest factor has fewer than 10-12 digits (except if there are more than one "large" factor). With a factor with more than 12 digits, Maxima is much slower. I also tried to factor 2^(2^n)+1. Here are the results n Derive Maxima 5 <0.1 sec instantaneous 6 <0.1 sec 4 sec 7 I interrupted after 15 min 5 min The value for n=7 is the product of a 17- and a 22-digit prime. I suspect that these differences were known to the author of the "Micro introduction into Maxima" (Computing%20Harvard%20Math%). There, "factor(2^(2^5)+1);" is given as an example of Number theory, "factor(2^(2^7)+1); c" as an example for Interrupting computation. In the 1990s, I considered buying Macsyma. I compared a demo version with Derive 4 and Mathcad 4. Mathcad was slightly slower than Derive, but Macsyma was dramatically slower - I don't recall exactly, but on the average it was about 3-10 times. Macsyma support staff explained that they were aware that they had a slow algorithm, but hoped to have a better one in a later version. Of course, the ideal would be to have in Maxima an algorithm as fast as in Derive. More modest but still useful would be an algorithm which shows the factors one by one as they are being calculated. That way, one might have at least some factors when one has to interrupt the calculation, and could continue at another occasion. I would also be very useful if there were an indication that the argument is a prime. Currently it seems to be that one can not distinguish between a prime number, and a number which has been partially factored, when one interrupts the process. Hans Joksch From fateman at cs.berkeley.edu Wed Feb 1 11:56:18 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 01 Feb 2006 09:56:18 -0800 Subject: [Maxima] Factoring large integers In-Reply-To: References: Message-ID: <43E0F642.5060200@cs.berkeley.edu> My comments: 1. Anyone who is making a decision among Macsyma, MathCad, Derive based on which is fastest on factoring integers should re-examine his/her assumptions. a. If factoring integers is really important, there are much better (free?) standalone programs. b. If factoring is not important, why use it as a measurement? It is certainly NOT the case that a fast integer factoring algorithm means that other algorithms are proportionally faster. 2. Factoring algorithms written in C or assembler can ordinarily be hooked into a lisp system, if for some reason one needs to both factor integers and ALSO do (say) polynomial arithmetic. As an example, I am using a lisp that I read GMP into. (GCL, sometime, may have GMP in it. Mathematica has GMP in it now. does CLISP use GMP?) Then see.. http://www.frenchfries.net/paul/factoring/source.html I suspect that the original Macsyma system had a factoring algorithm partly written in assembler for the PDP-6 computer. 3. Systems that have the rudiments of a CAS and also do factoring are available (free) like NTL. They might be of interest too. 4. If Maxima was slower than Derive, your test might run differently if you used a different version of Maxima, namely compiled for a different Lisp. CMU-CL vs GCL vs CLISP vs Allegro vs SBCL ... And the performance on numerical code varies substantially. From raymond.toy at ericsson.com Wed Feb 1 12:07:03 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Wed, 01 Feb 2006 13:07:03 -0500 Subject: [Maxima] Factoring large integers In-Reply-To: (Robert Dodier's message of "Wed, 1 Feb 2006 10:17:39 -0700") References: Message-ID: >>>>> "Robert" == Robert Dodier writes: Robert> Hello all, Robert> Here is a message from Hans Joksch about factoring large integers with Maxima. Robert> Maybe someone can comment on this topic. Robert> I've mentioned to Hans the Miller-Rabin code. Robert> (http://cvs.sf.net/viewcvs.py/*checkout*/maxima/maxima/share/contrib/ifactor.lisp) Robert> Maybe factor should call ifactor in some circumstances? Just a thought. That's not a bad idea. Or just replace factor with ifactor? Robert> 1(38) was a remarkable exception: the program ran 4h 25min until I Robert> interrupted it. It is obvious that FWIW, ifactor on 1 GHz sparc with cmucl found that 1(38) has 3 factors in 98 sec. (I compiled ifactor first. This probably helps quite a bit with cmucl.) Robert> Up to 1(16), Maxima also factored practically instantaneously. Robert> Thereafter, the following differences appeared: Robert> 1(17), just less than 1 sec, much more than 0.1 sec, a product of a 7- Robert> and a 10-digit number Robert> 1(31), I interrupted after 15 min, contains a 20-didgit factor 0.1 sec. Robert> 1(33), I interrupted after 9 min, a 19-digit factor 0.08 sec Robert> 1(34), I interrupted after 2.5 min, contains a 7-, a 10-, and an 11-digit factor 2.68 sec Robert> 1(37), I interrupted after 3 hours, contains a 7-, a 9-, and a Robert> 22-digit factor - Derive factored this in 0.2 sec! 1.52 sec. Slow compared to Derive, but not 3 hours. :-) Robert> I also tried to factor 2^(2^n)+1. Here are the results Robert> n Derive Maxima Robert> 5 <0.1 sec instantaneous Robert> 6 <0.1 sec 4 sec Robert> 7 I interrupted after 15 min 5 min n=7 took 58 sec. ifactor seems quite nice. Ray From rcrummett at uidaho.edu Wed Feb 1 12:29:51 2006 From: rcrummett at uidaho.edu (Ronald Crummett) Date: Wed, 01 Feb 2006 10:29:51 -0800 Subject: [Maxima] using units in Maxima? Message-ID: Hi - I have a project in a communication circuits class, in which our instructor wants us to use a program (he suggested Mathcad and Matlab but I want to try to do it in Maxima) to calculate several values for a transistor. In his example, done in Mathcad, he includes units with his value assignments and calculations. It it possible to do such a thing in Maxima? If so, how? Thanks. -Ron Crummett From willisb at unk.edu Wed Feb 1 12:49:01 2006 From: willisb at unk.edu (Barton Willis) Date: Wed, 1 Feb 2006 12:49:01 -0600 Subject: [Maxima] using units in Maxima? In-Reply-To: Message-ID: > In his example, done in Mathcad, he includes units with > his value assignments and calculations. It it possible to do such a > thing in Maxima? If so, how? Thanks. > > -Ron Crummett Maybe something simple will work for you: (%i1) l : 6.23 * 'feet$ (%i2) w : 5.89 * 'feet$ (%i3) area = l * w; (%o3) area=36.694699999999997*feet^2 (%i4) subst(feet = mile / 5280,%); (%o4) area=1.3162412477043157*10^-6*mile^2 Alternatively, there is a 'units' package (try load(units)). But I don't know how to use the package or if it works. Barton From smustudent1 at yahoo.com Wed Feb 1 13:13:15 2006 From: smustudent1 at yahoo.com (C Y) Date: Wed, 1 Feb 2006 11:13:15 -0800 (PST) Subject: [Maxima] using units in Maxima? In-Reply-To: Message-ID: <20060201191315.73520.qmail@web31704.mail.mud.yahoo.com> --- Barton Willis wrote: > > In his example, done in Mathcad, he includes units with > > his value assignments and calculations. It it possible to do such > > a thing in Maxima? If so, how? Thanks. > > > > -Ron Crummett > > Maybe something simple will work for you: > > (%i1) l : 6.23 * 'feet$ > (%i2) w : 5.89 * 'feet$ > (%i3) area = l * w; > (%o3) area=36.694699999999997*feet^2 > (%i4) subst(feet = mile / 5280,%); > (%o4) area=1.3162412477043157*10^-6*mile^2 Definitely the simplest option. > Alternatively, there is a 'units' package (try load(units)). > But I don't know how to use the package or if it works. There are two other "unit" packages in the contrib directory - Robert's might be the better bet, since he is active in Maxima and could help you debug it. The other one I wrote (with a lot of help from Barton et. al.) but while it is close to being at least functional in the programming sense (there are some bugs I never did get ironed out) it would take some polishing and is rather short on unit definitions and advanced features. There is quite a lot of email concerning both options in the archives if you are inclined toward development :-). I've switched focus and am currently trying to get a Units package defined for the Axiom computer algebra system, but that project is rather more long term and won't produce anything practical for a while. :-/. Cheers, CY __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com From andrej.vodopivec at gmail.com Wed Feb 1 14:18:04 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Wed, 1 Feb 2006 12:18:04 -0800 Subject: [Maxima] Factoring large integers In-Reply-To: References: Message-ID: <7775b21a0602011218y60652cd5w@mail.gmail.com> The default integer factoring algorithm in maxima is just trial divisions. This works for factors up to about 10 digits. The ifactor package also implements pollard's rho method and elliptic curve method. It finds factors up to about 20 digits in reasonable time. Factoring methods use random variables, so you should really be timing how much it takes to factor some number on avarage, not just in one run. If you set ifactor_verbose variable to true, the algorithm will display the factors as it finds them (and tell if they are prime). Andrej 2006/2/1, Robert Dodier : > Hello all, > > Here is a message from Hans Joksch about factoring large integers with Maxima. > Maybe someone can comment on this topic. > I've mentioned to Hans the Miller-Rabin code. > (http://cvs.sf.net/viewcvs.py/*checkout*/maxima/maxima/share/contrib/ifactor.lisp) > Maybe factor should call ifactor in some circumstances? Just a thought. > > all the best, > Robert Dodier > > ------------------------- begin forwarded message from Hans Joksch > ------------------------- > Comparing factoring numbers by Maxima 5.9.2 and Derive 4. > > I have Maxima 5.9.2 on an Aurox 9.2 (clone of Red Hat 9) Linux > partition, and Derive 4 on a PC-DOS 7 Partition on the same computer > with an Athlon 2200 CPU and 512MB RAM. > > To test the factoring algorithms, I used numbers consisting entirely > of the digit "1"; let's define 1(n) as a number consisting of n times > the "1". > > For n=1 ... 40, Derive factored (it also "factored" the prime numbers > 1(19) and 1(23)) most numbers "instantaneously", as indicated by > observation, and its own clock which shows computation time in 0.1 > sec. Exceptions were: > 1(17), 0.1 sec, a product of a 7- and a 10-digit number > 1(34), 0.6 sec, containing a 7-, a 10-, and an 11-digit factor > 1(37), 0.2 sec, a product of a 7-, a 9-, and a 22 digit number > 1(39), 0.4 sec, containing a 9- and a 24-digit factor > 1(40), 0.2 sec, containing a 7- and a 10-digit factor. > > 1(38) was a remarkable exception: the program ran 4h 25min until I > interrupted it. It is obvious that > 11111111111111111111111111111111111111 > =1111111111111111111*10000000000000000001. > Derive found instantaneously that the first factor, 1(19) is prime, > and it also found instantaneously that > 10000000000000000001=11*909090909090909091. It is surprising that it > would have taken over 4h 25min to combine the two. Even instructing > the program to factor the expression > 1111111111111111111*10000000000000000001 did not give a faster result. > > Incidentally, many of the factors with an even numer of digits had the > property that the first and the second half added gave a power of 10: > 37, 73, 9091, 333667, 909091, 99990001, 999999000001, > 909090909090909091, 900900900900990990990991. > > Up to 1(16), Maxima also factored practically instantaneously. > Thereafter, the following differences appeared: > 1(17), just less than 1 sec, much more than 0.1 sec, a product of a 7- > and a 10-digit number > 1(19), a prime number: I interrupted after 2 min calculation > 1(23), a prime number: I interrupted after 2 min calculation > 1(26), 130 sec, contains a 10- and a 19-digit factor > 1(27), 11 sec, contains a 15-digit factor > 1(31), I interrupted after 15 min, contains a 20-didgit factor > 1(33), I interrupted after 9 min, a 19-digit factor > 1(34), I interrupted after 2.5 min, contains a 7-, a 10-, and an 11-digit factor > 1(35), I interrupted after 2 min, contains an 18-digit factor > 1(36), <1 sec, but not "instantaneously", the largest factor has 12 digits > 1(37), I interrupted after 3 hours, contains a 7-, a 9-, and a > 22-digit factor - Derive factored this in 0.2 sec! > 1(38), I interrupted after 10 min > 1(39), I interrupted after 4 min, contains a 24-digit factor > 1(40), <1 sec, but not instantaneously, the largest factor has 10 digits. > > It appears that Maxima and Derive both factor practically > instantaneously if the largest factor has fewer than 10-12 digits > (except if there are more than one "large" factor). With a factor > with more than 12 digits, Maxima is much slower. > > I also tried to factor 2^(2^n)+1. Here are the results > n Derive Maxima > > 5 <0.1 sec instantaneous > 6 <0.1 sec 4 sec > 7 I interrupted after 15 min 5 min > > The value for n=7 is the product of a 17- and a 22-digit prime. > > I suspect that these differences were known to the author of the > "Micro introduction into Maxima" (Computing%20Harvard%20Math%). > There, "factor(2^(2^5)+1);" is given as an example of Number theory, > "factor(2^(2^7)+1); c" as an example for Interrupting computation. > > In the 1990s, I considered buying Macsyma. I compared a demo version > with Derive 4 and Mathcad 4. Mathcad was slightly slower than Derive, > but Macsyma was dramatically slower - I don't recall exactly, but on > the average it was about 3-10 times. Macsyma support staff explained > that they were aware that they had a slow algorithm, but hoped to have > a better one in a later version. > > Of course, the ideal would be to have in Maxima an algorithm as fast > as in Derive. More modest but still useful would be an algorithm > which shows the factors one by one as they are being calculated. That > way, one might have at least some factors when one has to interrupt > the calculation, and could continue at another occasion. I would also > be very useful if there were an indication that the argument is a > prime. Currently it seems to be that one can not distinguish between > a prime number, and a number which has been partially factored, when > one interrupts the process. > > Hans Joksch > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From robert.dodier at gmail.com Wed Feb 1 15:50:00 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 1 Feb 2006 14:50:00 -0700 Subject: [Maxima] Maxima 5.9.3 release schedule Message-ID: Hello, I would like to put the wheels in motion for a 5.9.3 release. There have been many bug fixes and enhancements since the last release, and I want to make them available to users. So far as I know, the most important problem to solve at the moment is to get the texinfo help system working. I am also aware that there is work in progress on the linear algebra code, and there is a persistent bug in one of the test suite files. What is the status of the help system? If it is not working at the moment, what can we do to bring it to a working state? Thanks to everyone for their contributions. Robert Dodier From willisb at unk.edu Wed Feb 1 17:17:03 2006 From: willisb at unk.edu (Barton Willis) Date: Wed, 1 Feb 2006 17:17:03 -0600 Subject: [Maxima] Maxima 5.9.3 release schedule Message-ID: -----Robert Dodier wrote: ----- >I am also aware that there is work in progress on >the linear algebra code, and there is a persistent >bug in one of the test suite files. Before the next release, the only thing I want to do to linalg is complete the user documentation. Yes, I've been thinking about restructuring some linalg code. But (1) linalg is in /share, many users will be able to download a new version of linalg and use it without much hassle (2) I don't anticipate changing the user interface to any linalg functions (3) linalg passes its test suite (4) it's unlikely that I'll want or need to change something in /src to make linalg happy. In short, let me complete the user documentation for linalg (add missing functions -- not much else). After that, if everything else is ready for a release, I say let's do it --- I agree there have been lots of changes since the last release. Regards, Barton From vvzhy at mail.ru Wed Feb 1 22:29:35 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Thu, 02 Feb 2006 07:29:35 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: References: Message-ID: <43E18AAF.7000605@mail.ru> Robert Dodier writes: > > What is the status of the help system? If it is not working > at the moment, what can we do to bring it to a working state? > describe is broken on clisp but works perfectly well on gcl, sbcl and cmucl. I was diverted from Maxima last two weeks and plan dive into the problem once again this weekend. I'll report results shortly. -- Vadim V. Zhytnikov From raymond.toy at ericsson.com Thu Feb 2 08:22:06 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Thu, 02 Feb 2006 09:22:06 -0500 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: (Robert Dodier's message of "Wed, 1 Feb 2006 14:50:00 -0700") References: Message-ID: >>>>> "Robert" == Robert Dodier writes: Robert> linear algebra code, and there is a persistent bug in one Robert> of the test suite files. Are you're talking about problem 65 and 68 in rtest_trig? These failures are caused by differing ideas on where the branch cuts for the special functions are. I think we agreed a little while ago that we should use CL special functions as much as possible, which Barton implemented. If we use the branch cuts as defined in CL [1], then our rectform doesn't get them right. For example, we fail the test (with cmucl) for atanh(-2). According to ANSI CL, atanh has a branch cut for on the real axis for x < -1 which is continuous with quadrant III. Thus, atanh(-2) should be -log(3)/2 - %i*%pi/2. CMUCL gets this right. Clisp produces -log(3)/2 + %i*%pi/2. rectform(atanh(-2)) produces the same as Clisp. (I think Clisp is buggy here.) Problem 68 is the bigfloat equivalent to problems 65. I think there are some bugs here that I need to fix. I'll do that asap. Robert> What is the status of the help system? If it is not working Robert> at the moment, what can we do to bring it to a working state? It seems to work for me, using maxima-local. (I rarely install the cvs versions.) Is there something in particular you would like to see tested? Ray Footnotes: [1] (see http://www.lispworks.com/documentation/HyperSpec/Body/f_asin_.htm and http://www.lispworks.com/documentation/HyperSpec/Body/f_sinh_.htm) From robert.dodier at gmail.com Thu Feb 2 09:08:30 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 2 Feb 2006 08:08:30 -0700 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: References: Message-ID: On 2/2/06, Raymond Toy wrote: > Are you're talking about problem 65 and 68 in rtest_trig? These > failures are caused by differing ideas on where the branch cuts for > the special functions are. OK, for the record, here are the results that I get for different Lisp versions on my desktop box (linux). GCL, Clisp, SBCL all report failure on rtest_trig # 68. SBCL reports 2 other failures in rtest_trig. No other test suite failures are reported. GCL: rtest_trig problem # 68 => [[atanh(x),-%i/2-1/2],[atanh(x),%i/2-1/2],[atanh(x),%i/2+1/2], [atanh(x),-%i-2],[atanh(x),%i-2],[atanh(x),-2],[atanh(x),2-%i], [atanh(x),%i+2],[atanh(x),2],[acot(x),1/2-%i/2],[acot(x),2-%i], [acot(x),%i+2],[atan(x),1/2-%i/2],[atan(x),%i/2+1/2], [atan(x),%i+2],[asin(x),-1/2]] Clisp: rtest_trig problem # 68 => [[atanh(x),-%i/2-1/2],[atanh(x),%i/2-1/2],[atanh(x),%i/2+1/2], [atanh(x),-%i-2],[atanh(x),%i-2],[atanh(x),-2],[atanh(x),2-%i], [atanh(x),%i+2],[atanh(x),2],[acot(x),1/2-%i/2],[acot(x),2-%i], [acot(x),%i+2],[atan(x),1/2-%i/2],[atan(x),%i/2+1/2], [atan(x),%i+2],[asin(x),-1/2]] SBCL: rtest_trig problem # 56 => false # 65 => [[acoth(x),1/2],[atanh(x),2],[asec(x),1/2],[acsc(x),1/2], [asin(x),2],[acos(x),2]] # 68 => [[atanh(x),-%i/2-1/2],[atanh(x),%i/2-1/2],[atanh(x),%i/2+1/2], [atanh(x),-%i-2],[atanh(x),%i-2],[atanh(x),-2],[atanh(x),2-%i], [atanh(x),%i+2],[atanh(x),2],[acot(x),1/2-%i/2],[acot(x),2-%i], [acot(x),%i+2],[atan(x),1/2-%i/2],[atan(x),%i/2+1/2], [atan(x),%i+2],[asin(x),-1/2]] > Robert> What is the status of the help system? If it is not working > Robert> at the moment, what can we do to bring it to a working state? > > It seems to work for me, using maxima-local. (I rarely install the > cvs versions.) Is there something in particular you would like to see > tested? Well, recent development of src/cl-info.lisp has been focused on getting cl-info to recognize the locale, and also to bring info files from share/ into the help system. So tests of those features would be helpful. At present the help system does not find share info files unless "make install" is executed (which copies the share info files to /usr/local/info/). Just a heads up. best, Robert Dodier From robert.dodier at gmail.com Thu Feb 2 09:31:46 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 2 Feb 2006 08:31:46 -0700 Subject: [Maxima] using units in Maxima? In-Reply-To: References: Message-ID: On 2/1/06, Ronald Crummett wrote: > I have a project in a communication circuits class, in which our > instructor wants us to use a program (he suggested Mathcad and Matlab > but I want to try to do it in Maxima) to calculate several values for > a transistor. In his example, done in Mathcad, he includes units with > his value assignments and calculations. It it possible to do such a > thing in Maxima? If so, how? Thanks. There are several units packages for Maxima. You can see my attempt here: http://cvs.sf.net/viewcvs.py/maxima/maxima/share/contrib/ezunits/ Quantities with units are indicated with a backtick ` : [ x : 100 ` N, y : foo ` m, z : 3 ` m^2 ]; The units aren't declared; it is understood that the stuff on the right of backtick is the unit, and on the left is the quantity. Units are carried through arithmetic operations: x * y; => 100*foo ` m*N x / z; => 100/3 ` N/m^2 y^3; => foo^3 ` m^3 There's more -- see the test script rtestezunits.mac for examples. This package doesn't know what to do with functions such as integrate or diff. At some point I'll figure out what to do with those. Maybe you can let me know what kinds of operations are needed for your assignment. hth Robert Dodier From robert.dodier at gmail.com Thu Feb 2 09:46:14 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 2 Feb 2006 08:46:14 -0700 Subject: [Maxima] proposal to bring ifactor into src/, was: Factoring large integers Message-ID: On 2/1/06, Raymond Toy wrote: > That's not a bad idea. Or just replace factor with ifactor? That is OK by me --- Andrej, do you want to work on that? The Maxima function "factor" does more than just factoring integers, so it is necessary to identify which Lisp function actually does the integer factoring. I don't know which one it is. I am aware that the Miller-Rabin test is a probabilistic test so there is a nonzero chance that a number reported to be prime might not be. However, if I'm not mistaken the probability of a spurious answer is much lower than that of a bug in the existing factor code, so I am willing to live with it. Of course, we should advertise the methods used in the help text for factor. best Robert Dodier From raymond.toy at ericsson.com Thu Feb 2 09:47:15 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Thu, 02 Feb 2006 10:47:15 -0500 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: (Robert Dodier's message of "Thu, 2 Feb 2006 08:08:30 -0700") References: Message-ID: >>>>> "Robert" == Robert Dodier writes: Robert> OK, for the record, here are the results that I get for Robert> different Lisp versions on my desktop box (linux). Robert> GCL, Clisp, SBCL all report failure on rtest_trig # 68. Robert> SBCL reports 2 other failures in rtest_trig. Robert> No other test suite failures are reported. Robert> GCL: rtest_trig problem # 68 => Robert> [[atanh(x),-%i/2-1/2],[atanh(x),%i/2-1/2],[atanh(x),%i/2+1/2], Robert> [atanh(x),-%i-2],[atanh(x),%i-2],[atanh(x),-2],[atanh(x),2-%i], Robert> [atanh(x),%i+2],[atanh(x),2],[acot(x),1/2-%i/2],[acot(x),2-%i], Robert> [acot(x),%i+2],[atan(x),1/2-%i/2],[atan(x),%i/2+1/2], Robert> [atan(x),%i+2],[asin(x),-1/2]] I believe I have found the problem for this test. It's a long standing bug, I think, in fpatan2 in float.lisp. There is a clause there that says ((signp g (car x)) (cond ((signp g (car y)) (fpatan (fpquotient y x))) (t (fpminus (fpatan (fpquotient y x)))))) This computes atan2(y,x) for x > 0. The last line handles the case of y <= 0. fpatan returns a negative number and we negate it again, so atan2(y,x) > 0 for y < 0 and x > 0. This is wrong. I think this also explains why simpatan2 in comm2.lisp had this bit of weird code: (if (mminusp* y) (neg (*fpatan (neg y) (list x))) (*fpatan y (list x))) There was also a bug in complex-atanh in float.lisp, which is fixed. With these changes clisp and cmucl fails problem 68 with result [[atanh(x), - 2], [atanh(x), 2]]. This is expected, I think because rectform disagrees on the branch cut here. (Cmucl still fails 65, in the same way as before.) Ray From HerbM at learnquick.com Thu Feb 2 08:40:22 2006 From: HerbM at learnquick.com (Herb Martin) Date: Thu, 2 Feb 2006 08:40:22 -0600 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: Message-ID: The following is merely a question and probably should NOT affect any release date but before submitting any kind of bug report I wanted to get an idea if this is experienced by others: Maxima 5.9.2 on Windows (XP) TK XMaxima Issue: while sitting IDLE this process runs at (near) 100% interferring with other programs being actively used. Work-around: Use Task Manager to reduce process priority base to "below normal". (Still runs near 100% but doesn't interfere much.) Do others (on Windows) experience this with this version? BTW: I love this program; thanks to everyone who works on it. -- Herb Martin > -----Original Message----- > From: maxima-admin at math.utexas.edu > [mailto:maxima-admin at math.utexas.edu] On Behalf Of Raymond Toy > Sent: Thursday, February 02, 2006 8:22 AM > To: Robert Dodier > Cc: Maxima List > Subject: Re: [Maxima] Maxima 5.9.3 release schedule > > >>>>> "Robert" == Robert Dodier writes: > > Robert> linear algebra code, and there is a persistent bug in one > Robert> of the test suite files. > > Are you're talking about problem 65 and 68 in rtest_trig? These > failures are caused by differing ideas on where the branch cuts for > the special functions are. I think we agreed a little while ago that > we should use CL special functions as much as possible, which Barton > implemented. > > If we use the branch cuts as defined in CL [1], then our rectform > doesn't get them right. > > For example, we fail the test (with cmucl) for atanh(-2). According > to ANSI CL, atanh has a branch cut for on the real axis for x < -1 > which is continuous with quadrant III. Thus, atanh(-2) should be > -log(3)/2 - %i*%pi/2. CMUCL gets this right. Clisp produces > -log(3)/2 + %i*%pi/2. rectform(atanh(-2)) produces the same as Clisp. > (I think Clisp is buggy here.) > > Problem 68 is the bigfloat equivalent to problems 65. I think there > are some bugs here that I need to fix. I'll do that asap. > > Robert> What is the status of the help system? If it is > not working > Robert> at the moment, what can we do to bring it to a > working state? > > It seems to work for me, using maxima-local. (I rarely install the > cvs versions.) Is there something in particular you would like to see > tested? > > Ray > > Footnotes: > [1] (see > http://www.lispworks.com/documentation/HyperSpec/Body/f_asin_.htm and > http://www.lispworks.com/documentation/HyperSpec/Body/f_sinh_.htm) > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From sigoldberg1 at yahoo.com Thu Feb 2 10:40:17 2006 From: sigoldberg1 at yahoo.com (Seth Goldberg) Date: Thu, 2 Feb 2006 08:40:17 -0800 (PST) Subject: [Maxima] How to plot2d bfzeta Message-ID: <20060202164017.48819.qmail@web31712.mail.mud.yahoo.com> Dear listreaders, load ("bffac"); float(bfzeta(3,25)); (%o14) 1.202056903159594 OK so far. Then (%i18) plot2d(float(bfzeta(3,25)),[x,1,4]); works fine But (%i20) plot2d(float(bfzeta(x,25)),[x,2,4]); yields only Maxima was unable to evaluate the predicate: x > 0 #0: bfzeta(s=x,fpp=25)(bffac.mac line 139) -- an error. Quitting. To debug this try debugmode(true); Any ideas? Thanks, Seth Goldberg __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com From andrej.vodopivec at gmail.com Thu Feb 2 11:29:36 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Thu, 2 Feb 2006 09:29:36 -0800 Subject: [Maxima] Re: proposal to bring ifactor into src/, was: Factoring large integers In-Reply-To: References: Message-ID: <7775b21a0602020929u45dad2fdr@mail.gmail.com> 2006/2/2, Robert Dodier : > On 2/1/06, Raymond Toy wrote: > > > That's not a bad idea. Or just replace factor with ifactor? > > That is OK by me --- Andrej, do you want to work on that? > > The Maxima function "factor" does more than just factoring > integers, so it is necessary to identify which Lisp function > actually does the integer factoring. I don't know which one it is. I can look into moving ifacor to src/. I wouldn't mind having different functions for factoring polynomials and factoring integers. Maple has them (factor(14) -> 14, ifactor(14) -> (2) (7)) and Mathematica also has Factor and FactorInteger functions, but I don't know what Factor does for integer arguments. Entering '? factor' into maxima will also show that ifactor exists so users can find it. > I am aware that the Miller-Rabin test is a probabilistic test > so there is a nonzero chance that a number reported to be > prime might not be. However, if I'm not mistaken the > probability of a spurious answer is much lower than that > of a bug in the existing factor code, so I am willing to live > with it. Of course, we should advertise the methods used > in the help text for factor. Both isprime in Maple and PrimeQ in Mathematica are probabilistic tests. The probability that n passes one Miller-Rabin test and is not prime is 1/4. We run 25 tests. If n passes all 25 tests, we run one Lucas test. So chance that n passes all tests and is not prime is much smaller that (1/4)^25. HTH, Andrej From robert.dodier at gmail.com Thu Feb 2 14:31:46 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 2 Feb 2006 13:31:46 -0700 Subject: [Maxima] How to plot2d bfzeta In-Reply-To: <20060202164017.48819.qmail@web31712.mail.mud.yahoo.com> References: <20060202164017.48819.qmail@web31712.mail.mud.yahoo.com> Message-ID: On 2/2/06, Seth Goldberg wrote: > (%i20) plot2d(float(bfzeta(x,25)),[x,2,4]); yields only > Maxima was unable to evaluate the predicate: plot2d ( ' (), [x, 2, 4]); is a workaround that often succeeds. for this particular case, let's avoid the adaptive plotter (seems to go nuts for some reason) by asking Maxima to plot a list of points. (this feature is in maxima 5.9.2.) x : makelist (2 + i/100, i, 1, 200); y : map (lambda ([xx], float (bfzeta (xx, 25))), x); plot2d ([discrete, x, y]); hth, robert dodier From robert.dodier at gmail.com Thu Feb 2 19:32:57 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 2 Feb 2006 18:32:57 -0700 Subject: [Maxima] Re: proposal to bring ifactor into src/, was: Factoring large integers In-Reply-To: <7775b21a0602020929u45dad2fdr@mail.gmail.com> References: <7775b21a0602020929u45dad2fdr@mail.gmail.com> Message-ID: On 2/2/06, Andrej Vodopivec wrote: > I can look into moving ifacor to src/. I wouldn't mind having > different functions for factoring polynomials and factoring integers. I guess factor(1234) is ambiguous since there's no way to tell whether you mean to treat 1234 as a polynomial or an integer, so it seems like it would be more correct to have two functions. It's going to be a little surprising to users who enter factor(1234) and get 1234 as the result, expecting 2 * 617 instead. I don't know how to help those people find ifactor; I don't really like warning messages. best, Robert Dodier From andrej.vodopivec at gmail.com Thu Feb 2 22:16:55 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Thu, 2 Feb 2006 20:16:55 -0800 Subject: [Maxima] Re: proposal to bring ifactor into src/, was: Factoring large integers In-Reply-To: References: <7775b21a0602020929u45dad2fdr@mail.gmail.com> Message-ID: <7775b21a0602022016w1f152f82v@mail.gmail.com> maxima uses cfactor function in rat3c.lisp to factor integers. If we want all functions which need integer factorization to benifit from ifactor, we should redefine cfactor so that it uses ifactor package. This changes primep to become probabilistic primality test - so we should also replace primep with primep_pr. Some documentation would need to be updated. Do we want this changes in the next release? Andrej 2006/2/2, Robert Dodier : > On 2/2/06, Andrej Vodopivec wrote: > > > I can look into moving ifacor to src/. I wouldn't mind having > > different functions for factoring polynomials and factoring integers. > > I guess factor(1234) is ambiguous since there's no way to tell > whether you mean to treat 1234 as a polynomial or an integer, > so it seems like it would be more correct to have two functions. > It's going to be a little surprising to users who enter factor(1234) > and get 1234 as the result, expecting 2 * 617 instead. I don't > know how to help those people find ifactor; I don't really like > warning messages. > > best, > Robert Dodier > From robert.dodier at gmail.com Fri Feb 3 00:05:37 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 2 Feb 2006 23:05:37 -0700 Subject: [Maxima] Re: proposal to bring ifactor into src/, was: Factoring large integers In-Reply-To: <7775b21a0602022016w1f152f82v@mail.gmail.com> References: <7775b21a0602020929u45dad2fdr@mail.gmail.com> <7775b21a0602022016w1f152f82v@mail.gmail.com> Message-ID: On 2/2/06, Andrej Vodopivec wrote: > maxima uses cfactor function in rat3c.lisp to factor integers. If we > want all functions which need integer factorization to benifit from > ifactor, we should redefine cfactor so that it uses ifactor package. > This changes primep to become probabilistic primality test - so we > should also replace primep with primep_pr. Some documentation would > need to be updated. Do we want this changes in the next release? Well, I don't think so -- it seems like a fairly big change and I think we can take our time about it. ifactor, etc, will be available in the share directory, in any case. So I am inclined to target 5.9.4. But if the work is easy, and you complete it before the 5.9.3 branch is tagged, well, I certainly wouldn't cut it out. best, Robert Dodier From van.Nek at gmx.net Fri Feb 3 13:02:20 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Fri, 03 Feb 2006 20:02:20 +0100 Subject: [Maxima] Re: proposal to bring ifactor into src/, was: Factoring large integers In-Reply-To: References: <7775b21a0602020929u45dad2fdr@mail.gmail.com> Message-ID: <43E3B6CC.31600.12F2C6B@localhost> Am 2 Feb 2006 um 18:32 hat Robert Dodier geschrieben: > I guess factor(1234) is ambiguous since there's no way to tell > whether you mean to treat 1234 as a polynomial or an integer, > so it seems like it would be more correct to have two functions. > It's going to be a little surprising to users who enter factor(1234) > and get 1234 as the result, expecting 2 * 617 instead. I don't > know how to help those people find ifactor; I don't really like > warning messages. Hello Robert, sorry, I cant follow this discussion. Maxima 5.9.2 http://maxima.sourceforge.net Using Lisp GNU Common Lisp (GCL) GCL 2.6.7 (aka GCL) etc (%i1) factor(1234); (%o1) 2*617 Do you really get 1234? Greetings Volker From fateman at cs.berkeley.edu Fri Feb 3 13:20:08 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Fri, 03 Feb 2006 11:20:08 -0800 Subject: [Maxima] Re: proposal to bring ifactor into src/, was: Factoring large integers In-Reply-To: <43E3B6CC.31600.12F2C6B@localhost> References: <7775b21a0602020929u45dad2fdr@mail.gmail.com> <43E3B6CC.31600.12F2C6B@localhost> Message-ID: <43E3ACE8.90601@cs.berkeley.edu> In commercial macsyma, factor_number returns a list of factors of an integer. 1234 is an integer, not a polynomial. so factor(1234)-> 2*617. factor(1234*x) -> 1234 * x My expectation is that any "serious" use of factors would benefit from getting a list of rather than the hackish unsimplified form that has to be painstakingly decomposed to find the actual factors. I think the current factor program mostly makes sense for one application, namely to answer the question "Does this expression simplify to something interesting if I factor it?" RJF From robert.dodier at gmail.com Tue Jan 31 09:44:57 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Tue, 31 Jan 2006 08:44:57 -0700 Subject: [Maxima] Fwd: bug report, or am I doing something wrong? In-Reply-To: <3E783573F8C838449803D19EAFEEA835014DE5B3@orm-ex-001.ormskirk.internal> References: <3E783573F8C838449803D19EAFEEA835014DE5B3@orm-ex-001.ormskirk.internal> Message-ID: ------=_Part_7966_13882056.1138722297359 Content-Type: multipart/alternative; boundary="----=_Part_7965_12364876.1138722297359" ------=_Part_7965_12364876.1138722297359 Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: base64 Content-Disposition: inline SGVsbG8gYWxsIC0tIGEgbWVzc2FnZSBmcm9tIEx1a2UgU2hhcmtleSwgd2hpY2ggd2FzIGludGVu ZGVkIGZvciB0aGUgbWFpbGluZwpsaXN0LgoKQSBxdWljayBsb29rIHN1Z2dlc3RzIHRoZSByZXN1 bHRzIGJlbG93IHN0ZW0gZnJvbSBNYXhpbWEncwpjaG9pY2Ugb2YgYnJhbmNoZXMgZm9yIG11bHRp LXZhbHVlZCBmdW5jdGlvbnMuCgpSb2JlcnQgRG9kaWVyCgotLS0tLS0tLS0tIEZvcndhcmRlZCBt ZXNzYWdlIC0tLS0tLS0tLS0KRnJvbTogTHVrZSBTaGFya2V5IDw5OUxTaGFya2V5QG9ybXNraXJr LmxhbmNzLnNjaC51ayA+CkRhdGU6IEphbiAzMSwgMjAwNiA3OjU5IEFNClN1YmplY3Q6IGJ1ZyBy ZXBvcnQsIG9yIGFtIEkgZG9pbmcgc29tZXRoaW5nIHdyb25nPwpUbzogUm9iZXJ0IERvZGllciA8 cm9iZXJ0LmRvZGllckBnbWFpbC5jb20+CgogKmJ1ZyAxOiAgICoKCiogbWludXMgc3ltYm9sIGxv c3QgYWxvbmcgdGhlIHdheSBzb21ld2hlcmUuICBXaGF0J3MgZ29uZSB3cm9uZyBiZWxvdz8qCgpb aW1hZ2U6IFJlc3VsdF0KCjMuMzU5IGlzIGEgcmFuZG9tIG51bWJlciBJIHBpY2tlZCBmb3Igd2hp Y2ggSSBrbm93IHRoaXMgZnVuY3Rpb24gaGFzIG5vIHJlYWwKc29sdXRpb25zLiAgSGVuY2UgdGhl IG5lZ2F0aXZlIG51bWJlciB0byBhIHBvd2VyIG9mIHNvbWV0aGluZyBuYXN0eToKCiglaTcpIHN1 YnN0KDMuMzU5LCB4LCAlKTsKCltpbWFnZTogUmVzdWx0XQoKKCVpOCkgZmFjdG9yKCUpOwoKW2lt YWdlOiBSZXN1bHRdCgogKCVpMTApIGlmIG51bWVyI2ZhbHNlIHRoZW4gbnVtZXI6ZmFsc2UgZWxz ZSBudW1lcjp0cnVlOwoKW2ltYWdlOiBSZXN1bHRdCgpCdXQgYWZ0ZXIgSSBmYWN0b3Jpc2UgdGhl IGltYWdpbmFyeSBudW1iZXIgb3V0cHV0IG9mICAoJW83KSByZXN1bHRpbmcgaW4KKCVvOCksIHRo ZW4gY29weSB0aGUgb3V0cHV0IGludG8gdGhlIElOUFVUIGJveCBhbmQgZW50ZXIsIGl0IGdlbmVy YXRlczoKKCVvMTQpLiAgSXMgdGhpcyB0aGUgcmVzdWx0IG9mIGEgcm91bmRpbmcgZXJyb3I/ICBJ dCBpcyBub3cgZ2l2aW5nIGEKc29sdXRpb24gdG8gYW4gZXF1YXRpb24gd2hpY2ggaXMgYWN0dWFs bHkgaW1hZ2luYXJ5CgogKCVpMTQpICgwLjk0MTA1MzI4ODkzMzk5MTIxKigtNDgwMi40NTkxNzI5 NTU2NTQxKV4wLjAyNjM4NTc4MzEyNDU5NjcxOCk7CgpbaW1hZ2U6IFJlc3VsdF0KCkV2ZW4gdGhv dWdoIGluIHVuZmFjdG9yaXNlZCBmb3JtIHRoZSBiZWxvdyBpcyBnZW5lcmF0ZWQsIHdoaWNoIGRv ZXNuJ3QgaGF2ZQphIHJlYWwgc29sdXRpb24sIGFuZCBpZiB5b3UgdHJ5IGFuZCBzb2x2ZSAoJW83 KSBpdCB3aWxsIG9ubHkgb3V0cHV0ICglbzcpCmFnYWluhQoKCgoKCgoKCgpBbnkgaWRlYXM/CgpU aGFua3MKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgpUaGlzIGUtbWFpbCBpcyBjb25maWRlbnRpYWwgYW5k IHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZApyZWNpcGllbnQgZG8gbm90 IGRpc2Nsb3NlLCBjb3B5IG9yIGRpc3RyaWJ1dGUgaW5mb3JtYXRpb24gaW4gdGhpcyBlLW1haWwK b3IgdGFrZSBhbnkgYWN0aW9uIGluIHJlbGlhbmNlIG9uIGl0cyBjb250ZW50LgoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgpUaGlzIGVtYWlsIGhhcyBiZWVuIGNoZWNrZWQg Zm9yIGtub3duIHZpcnVzZXMuCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo= ------=_Part_7965_12364876.1138722297359 Content-Type: text/html; charset=WINDOWS-1252 Content-Transfer-Encoding: base64 Content-Disposition: inline SGVsbG8gYWxsIC0tIGEgbWVzc2FnZSBmcm9tIEx1a2UgU2hhcmtleSwgd2hpY2ggd2FzIGludGVu ZGVkIGZvciB0aGUgbWFpbGluZyBsaXN0Ljxicj4KPGJyPgpBIHF1aWNrIGxvb2sgc3VnZ2VzdHMg dGhlIHJlc3VsdHMgYmVsb3cgc3RlbSBmcm9tIE1heGltYSdzPGJyPgpjaG9pY2Ugb2YgYnJhbmNo ZXMgZm9yIG11bHRpLXZhbHVlZCBmdW5jdGlvbnMuIDxicj4KPGJyPgpSb2JlcnQgRG9kaWVyPGJy Pjxicj4tLS0tLS0tLS0tIEZvcndhcmRlZCBtZXNzYWdlIC0tLS0tLS0tLS08YnI+PHNwYW4gY2xh c3M9ImdtYWlsX3F1b3RlIj5Gcm9tOiA8YiBjbGFzcz0iZ21haWxfc2VuZGVybmFtZSI+THVrZSBT aGFya2V5PC9iPiAmbHQ7PGEgaHJlZj0ibWFpbHRvOjk5TFNoYXJrZXlAb3Jtc2tpcmsubGFuY3Mu c2NoLnVrIiB0YXJnZXQ9Il9ibGFuayIgb25jbGljaz0icmV0dXJuIHRvcC5qcy5PcGVuRXh0TGlu ayh3aW5kb3csZXZlbnQsdGhpcykiPgo5OUxTaGFya2V5QG9ybXNraXJrLmxhbmNzLnNjaC51awo8 L2E+Jmd0Ozxicj5EYXRlOiBKYW4gMzEsIDIwMDYgNzo1OSBBTTxicj5TdWJqZWN0OiBidWcgcmVw b3J0LCBvciBhbSBJIGRvaW5nIHNvbWV0aGluZyB3cm9uZz88YnI+VG86IFJvYmVydCBEb2RpZXIg Jmx0OzxhIGhyZWY9Im1haWx0bzpyb2JlcnQuZG9kaWVyQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxh bmsiIG9uY2xpY2s9InJldHVybiB0b3AuanMuT3BlbkV4dExpbmsod2luZG93LGV2ZW50LHRoaXMp Ij4Kcm9iZXJ0LmRvZGllckBnbWFpbC5jb208L2E+Jmd0Ozxicj48YnI+PC9zcGFuPgoKCgoKCgoK CgoKCjxkaXY+Cgo8cD48Yj48Zm9udCBzaXplPSIyIiBmYWNlPSJDb3VyaWVyIE5ldyI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij5idWcgMTombmJzcDsm bmJzcDsgPC9zcGFuPjwvZm9udD48L2I+PC9wPgoKPHA+PGI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0i Q291cmllciBOZXciPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtd2VpZ2h0OiBi b2xkOyI+Jm5ic3A7bWludXMgc3ltYm9sIGxvc3QgYWxvbmcgdGhlIHdheQpzb21ld2hlcmUuJm5i c3A7IFdoYXQncyBnb25lIHdyb25nIGJlbG93Pzwvc3Bhbj48L2ZvbnQ+PC9iPjwvcD4KCjxwPjxm b250IHNpemU9IjMiIGNvbG9yPSJibGFjayIgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48c3BhbiBz dHlsZT0iZm9udC1zaXplOiAxMnB0OyBjb2xvcjogYmxhY2s7Ij48aW1nIHdpZHRoPSI0NjYiIGhl aWdodD0iMTMzIiBzcmM9ImNpZDppbWFnZTAwMS5qcGdAMDFDNjI2NzYuRUJBQ0UxRDAiIGFsdD0i UmVzdWx0Ij48L3NwYW4+PC9mb250PjwvcD4KCjxwPjxzcGFuPjxmb250IHNpemU9IjMiIGNvbG9y PSJibGFjayIgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAx MnB0OyBjb2xvcjogd2luZG93dGV4dDsiPjMuMzU5IGlzIGEKcmFuZG9tIG51bWJlciBJIHBpY2tl ZCBmb3Igd2hpY2ggSSBrbm93IHRoaXMgZnVuY3Rpb24gaGFzIG5vIHJlYWwgc29sdXRpb25zLiZu YnNwOwpIZW5jZSB0aGUgbmVnYXRpdmUgbnVtYmVyIHRvIGEgcG93ZXIgb2Ygc29tZXRoaW5nIG5h c3R5Ojwvc3Bhbj48L2ZvbnQ+PC9zcGFuPjwvcD4KCjxwPjxzcGFuPjxmb250IHNpemU9IjMiIGNv bG9yPSJyZWQiIGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTog MTJwdDsiPiglaTcpIDwvc3Bhbj48L2ZvbnQ+PC9zcGFuPjxzcGFuPjxmb250IGNvbG9yPSJibHVl Ij5zdWJzdCgzLjM1OSwgeCwgJSk7IDwvZm9udD48L3NwYW4+PGZvbnQgY29sb3I9ImJsdWUiPjxz cGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPgoKPGJyPgo8L3NwYW4+PC9mb250Pjxmb250IGNvbG9y PSJibGFjayI+PHNwYW4gc3R5bGU9ImNvbG9yOiBibGFjazsiPjxicj4KPGltZyB3aWR0aD0iMzY0 IiBoZWlnaHQ9IjYyIiBzcmM9ImNpZDppbWFnZTAwMi5qcGdAMDFDNjI2NzYuRUJBQ0UxRDAiIGFs dD0iUmVzdWx0Ij48L3NwYW4+PC9mb250PjwvcD4KCjxwPjxzcGFuPjxmb250IHNpemU9IjMiIGNv bG9yPSJyZWQiIGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTog MTJwdDsiPiglaTgpIDwvc3Bhbj48L2ZvbnQ+PC9zcGFuPjxzcGFuPjxmb250IGNvbG9yPSJibHVl Ij5mYWN0b3IoJSk7IDwvZm9udD48L3NwYW4+PGZvbnQgY29sb3I9ImJsdWUiPjxzcGFuIHN0eWxl PSJjb2xvcjogYmx1ZTsiPjxicj4KPC9zcGFuPjwvZm9udD48Zm9udCBjb2xvcj0iYmxhY2siPjxz cGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48YnI+CjxpbWcgd2lkdGg9IjY4NCIgaGVpZ2h0PSIx NzYiIHNyYz0iY2lkOmltYWdlMDAzLmpwZ0AwMUM2MjY3Ni5FQkFDRTFEMCIgYWx0PSJSZXN1bHQi Pjwvc3Bhbj48L2ZvbnQ+PC9wPgoKPHA+PHNwYW4+PGZvbnQgc2l6ZT0iMyIgY29sb3I9InJlZCIg ZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyI+Jm5i c3A7KCVpMTApIDwvc3Bhbj48L2ZvbnQ+PC9zcGFuPjxzcGFuPjxmb250IGNvbG9yPSJibHVlIj5p ZiBudW1lciNmYWxzZSB0aGVuIG51bWVyOmZhbHNlIGVsc2UgbnVtZXI6dHJ1ZTsgPC9mb250Pjwv c3Bhbj48Zm9udCBjb2xvcj0iYmx1ZSI+Cgo8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij48YnI+ Cjwvc3Bhbj48L2ZvbnQ+PGZvbnQgY29sb3I9ImJsYWNrIj48c3BhbiBzdHlsZT0iY29sb3I6IGJs YWNrOyI+PGJyPgo8aW1nIHdpZHRoPSIxMjkiIGhlaWdodD0iMjciIHNyYz0iY2lkOmltYWdlMDA0 LmpwZ0AwMUM2MjY3Ni5FQkFDRTFEMCIgYWx0PSJSZXN1bHQiPjwvc3Bhbj48L2ZvbnQ+PC9wPgoK PHA+PGZvbnQgc2l6ZT0iMyIgY29sb3I9ImJsYWNrIiBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjxz cGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGNvbG9yOiBibGFjazsiPkJ1dCBhZnRlciBJIGZh Y3RvcmlzZSB0aGUgaW1hZ2luYXJ5IG51bWJlciBvdXRwdXQgb2YgJm5ic3A7KCVvNykgcmVzdWx0 aW5nCmluICglbzgpLCB0aGVuIGNvcHkgdGhlIG91dHB1dCBpbnRvIHRoZSBJTlBVVCBib3ggYW5k IGVudGVyLCBpdCBnZW5lcmF0ZXM6CiglbzE0KS4mbmJzcDsgSXMgdGhpcyB0aGUgcmVzdWx0IG9m IGEgcm91bmRpbmcgZXJyb3I/Jm5ic3A7IEl0IGlzIG5vdyBnaXZpbmcgYQpzb2x1dGlvbiB0byBh biBlcXVhdGlvbiB3aGljaCBpcyBhY3R1YWxseSBpbWFnaW5hcnk8L3NwYW4+PC9mb250PjwvcD4K CjxwPjxzcGFuPjxmb250IHNpemU9IjMiIGNvbG9yPSJyZWQiIGZhY2U9IlRpbWVzIE5ldyBSb21h biI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsiPiZuYnNwOyglaTE0KSA8L3NwYW4+PC9m b250Pjwvc3Bhbj48c3Bhbj48Zm9udCBjb2xvcj0iYmx1ZSI+KDAuOTQxMDUzMjg4OTMzOTkxMjEq KC00ODAyLjQ1OTE3Mjk1NTY1NDEpXjAuMDI2Mzg1NzgzMTI0NTk2NzE4KTsKPC9mb250Pjwvc3Bh bj48Zm9udCBjb2xvcj0iYmx1ZSI+PHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+PGJyPgo8L3Nw YW4+PC9mb250Pjxmb250IGNvbG9yPSJibGFjayI+PHNwYW4gc3R5bGU9ImNvbG9yOiBibGFjazsi Pjxicj4KPGltZyB3aWR0aD0iMjg1IiBoZWlnaHQ9IjI3IiBzcmM9ImNpZDppbWFnZTAwNS5qcGdA MDFDNjI2NzYuRUJBQ0UxRDAiIGFsdD0iUmVzdWx0Ij48L3NwYW4+PC9mb250PjwvcD4KCjxwPjxm b250IHNpemU9IjMiIGNvbG9yPSJibGFjayIgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48c3BhbiBz dHlsZT0iZm9udC1zaXplOiAxMnB0OyBjb2xvcjogYmxhY2s7Ij5FdmVuIHRob3VnaCBpbiB1bmZh Y3RvcmlzZWQgZm9ybSB0aGUgYmVsb3cgaXMgZ2VuZXJhdGVkLCB3aGljaApkb2Vzbid0IGhhdmUg YSByZWFsIHNvbHV0aW9uLCBhbmQgaWYgeW91IHRyeSBhbmQgc29sdmUgKCVvNykgaXQgd2lsbCBv bmx5Cm91dHB1dCAoJW83KSBhZ2FpboU8L3NwYW4+PC9mb250PjwvcD4KCjxwPjxmb250IHNpemU9 IjIiIGZhY2U9IkNvdXJpZXIgTmV3Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+Jm5i c3A7PC9zcGFuPjwvZm9udD48L3A+CgoKCjxwPjxmb250IHNpemU9IjIiIGZhY2U9IkNvdXJpZXIg TmV3Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+Jm5ic3A7PC9zcGFuPjwvZm9udD48 L3A+Cgo8cD48Zm9udCBzaXplPSIyIiBmYWNlPSJDb3VyaWVyIE5ldyI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZTogMTBwdDsiPiZuYnNwOzwvc3Bhbj48L2ZvbnQ+PC9wPgoKPHA+PGZvbnQgc2l6ZT0i MiIgZmFjZT0iQ291cmllciBOZXciPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij4mbmJz cDs8L3NwYW4+PC9mb250PjwvcD4KCjxwPjxmb250IHNpemU9IjIiIGZhY2U9IkNvdXJpZXIgTmV3 Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+QW55IGlkZWFzPzwvc3Bhbj48L2ZvbnQ+ PC9wPgoKPHA+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ291cmllciBOZXciPjxzcGFuIHN0eWxlPSJm b250LXNpemU6IDEwcHQ7Ij5UaGFua3M8L3NwYW4+PC9mb250PjwvcD4KCjwvZGl2PgoKCgoKCjxw PgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKio8YnI+ClRoaXMgZS1tYWlsIGlzIGNvbmZpZGVudGlhbCBhbmQg cHJpdmlsZWdlZC4gIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZDxicj4KcmVjaXBpZW50IGRv IG5vdCBkaXNjbG9zZSwgY29weSBvciBkaXN0cmlidXRlIGluZm9ybWF0aW9uIGluIHRoaXMgZS1t YWlsPGJyPgpvciB0YWtlIGFueSBhY3Rpb24gaW4gcmVsaWFuY2Ugb24gaXRzIGNvbnRlbnQuPGJy PgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKio8YnI+Cjxicj4KKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqPGJyPgpUaGlz IGVtYWlsIGhhcyBiZWVuIGNoZWNrZWQgZm9yIGtub3duIHZpcnVzZXMuPGJyPgoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKio8YnI+CjwvcD4K ------=_Part_7965_12364876.1138722297359-- ------=_Part_7966_13882056.1138722297359 Content-Type: image/jpeg; name=image002.jpg Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="image002.jpg" /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAA+AWwDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2aq39 oWv2H7b5ubc/dcKfn5wNoxlsnG3Gd2RjORUWt+f/AGFqH2XzPtH2WTyvKzv3bTjbjnOemKLi1ivd HFvZNbrE6J5LBC0aqMFSoVl6AAqQRg4I6Umy0lZN9yzb3EV1As0L7kbPYggg4IIPIIIIIPIIINS1 zGg3N5/ZN+trunuIot8MTldiyEMdjcBlk3ffV2YjIy5JJqzYzwHUIF0y/mvWdj9uWWZnMY2khmU/ 6p9+BsAXq3y/L8qUi5UrNrsWZfEemwrM7m68uBnWSRbKZkUoSG+YJjAIPOe1aD3EUU8ULvtebPl5 BwxAyRnpnGTjqQCexxS1X/SZ7PTOq3Ll519YUGW9iCxjUjnKueOpBrn/AB72uz/XfbYPKx97/WDf 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 qrgKdpIyAM5Pqa16KAKsmnWs1lDZzK8sULROm+VmbdGyshLE5YhlU5JOcc55pmp6TZ6vHCl2Jv3E vmxNDcSQujbWXIZGB+6zDr3q7RQBn6bodjpU889t9paWdUSSS4u5Z2KqWKjMjNgAu3A9afp2k2el +YbYTM8uN8txcSTyEDOBvkYttGSQM4BYnHJq7RQBkTeGNKuJ5JZI7nbKxaSBbyZYHJOW3QhwhDEk sCuGJOc5NT3+h2OpTrPN9pjlC7DJa3ctuzKCSAxjZdwBJwDnG44xk50KKAKX9kWH9l/2b5H+jdcb 23bt27fvzu37vm353bvmznmoLbw7plt5uYprnzojC/225luvkb7yjzWbCtgZA4OBnOBWpRQBl2fh 7T7K6S5Q3k0sefLN1fT3AQkYJUSOwDYJGRzgkZwTUmraHY62kSX32krEwdVhu5YRuBDAnYwyQVBB OcEcYrQooAz9X0Ox1yDyL/7S0W1kaOK7lhV1YYIYIw3DHY57+pp9taW2jWMvlteSRLmVvNmmupOn IXcWY9OFHfoMmrtFAGX4ds57LRo1uo/KuJ5ZbmWLIbymlkaUx5HDbS+3I64zxnFalFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//ZCioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpUaGlz IGUtbWFpbCBpcyBjb25maWRlbnRpYWwgYW5kIHByaXZpbGVnZWQuICBJZiB5b3UgYXJlIG5vdCB0 aGUgaW50ZW5kZWQKcmVjaXBpZW50IGRvIG5vdCBkaXNjbG9zZSwgY29weSBvciBkaXN0cmlidXRl IGluZm9ybWF0aW9uIGluIHRoaXMgZS1tYWlsCm9yIHRha2UgYW55IGFjdGlvbiBpbiByZWxpYW5j ZSBvbiBpdHMgY29udGVudC4KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK VGhpcyBlbWFpbCBoYXMgYmVlbiBjaGVja2VkIGZvciBrbm93biB2aXJ1c2VzLiAKKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCg== ------=_Part_7966_13882056.1138722297359 Content-Type: image/jpeg; name=image001.jpg Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="image001.jpg" /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCACFAdIDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2aiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCqdRtV1 VNMLOLp4GnVTE21kDBSQ+NpILLkZzyDjmrVYV1a60/i20v4bSxayt4JLcs926ylZGiZm2CIjK+UQ Bu5yORW7QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR 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 AMX/AISvTv8An21f/wAE13/8ao/4SvTv+fbV/wDwTXf/AMaraooAxf8AhK9O/wCfbV//AATXf/xq mReJdJgQpDZapGpZnKpol2AWYlmPEXUkkk9yTW7RQBi/8JXp3/Ptq/8A4Jrv/wCNUf8ACV6d/wA+ 2r/+Ca7/APjVbVFAGL/wlenf8+2r/wDgmu//AI1R/wAJXp3/AD7av/4Jrv8A+NVtUUAYv/CV6d/z 7av/AOCa7/8AjVH/AAlenf8APtq//gmu/wD41W1RQBi/8JXp3/Ptq/8A4Jrv/wCNUf8ACV6d/wA+ 2r/+Ca7/APjVbVFAGL/wlenf8+2r/wDgmu//AI1UNnr+jWFqltbWerpEmcA6PeMSSckkmPLMSSST kkkkkk10FFAGL/wlenf8+2r/APgmu/8A41T4fEthPPHClvqgaRgoL6TdIoJOOWaMAD3JwK16KACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiisu8uNfS6dbLTNOmtxjZJNqEkTnjnKiFgOc9z/SgCta2utJ4tu7+a0sV sriCO3DJdu0oWNpWVthiAy3mgEbuMHk1u1i/avFX/QG0j/way/8AyPU1nca+90i3umadDbnO+SHU JJXHHGFMKg847j+lAGpRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUVVvtRtdNSF7pnRZ50gRliZxvc7VB2g7QSQMnAyRzzQA+8lnhtXe1tvtM3A SMuEBJOMlj0UZySATgHAJwDS0HWP7asXuPLhHlymPzLabzoJeAd0cmBvXnaTgYZWHbJkhuLXxFok dzZXNzHBdKJIZ0VoXGDlWAYDjIBwQVYdQVPL9M0xNNjm/fzXM1xL5s8823fK21VBIUKowqKOAPu+ uSQC7RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWL4 ludSs4LO4sbqGGL7dbRXCvBveRZJ40IVtwC8M2cq3XjB5rarP1bQ7HW0iS++0lYmDqsN3LCNwIYE 7GGSCoIJzgjjFAFK6N9qPiO406HVLnT4rS0gnDWqRFpGkeVSG8xH4AiGMY6nOeMFpG3ivwlpVxez PALuCC5uYrcAJMCoZomDBv3bE4IzkjgnBObNz4e0+68oubxHiiEQlhvp4pHUdA7o4Z8ZJG4nBZj3 OdCGGK2gjggiSKKJQkcaKFVFAwAAOgA7UAQ6bZNp2nQWb3lzemFdvn3TBpXHbcQBk44zjJxzk5NW qKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9kK KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqClRoaXMgZS1tYWlsIGlzIGNvbmZpZGVudGlhbCBhbmQgcHJpdmls ZWdlZC4gIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZApyZWNpcGllbnQgZG8gbm90IGRpc2Ns b3NlLCBjb3B5IG9yIGRpc3RyaWJ1dGUgaW5mb3JtYXRpb24gaW4gdGhpcyBlLW1haWwKb3IgdGFr ZSBhbnkgYWN0aW9uIGluIHJlbGlhbmNlIG9uIGl0cyBjb250ZW50LgoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgpUaGlzIGVtYWlsIGhhcyBiZWVuIGNoZWNrZWQgZm9yIGtu b3duIHZpcnVzZXMuIAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK ------=_Part_7966_13882056.1138722297359 Content-Type: image/jpeg; name=image003.jpg Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="image003.jpg" /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCACwAqwDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1+5vI LPyvtEnliaURIxB27j90E9Bk8DOMkgdSAZ6jmhiuYJIJ4klilUpJG6hldSMEEHqCO1Y3jedbXwTr Fwbp7RorSRopknMLLIB8mGBByW2jGec45zigDdorn9Nl02Kxu9asdWvPEDwxOJHgu/P8wqA2xYkI iD4CgbVBOefvEnmNM14Q+I9IVdUs51vLloLqaDXpb5HJikKqyGNYomaRV27dpOCqjbuAAPQ45opX kSOVHaFtkiqwJRsBsH0OGBx6EetZ+v8AiPSfDFil7rN39lt5JREr+W75YgkDCgnop/KuZsrfQND1 /VV1DVLy2uPt0ctpBLqtwZLlfIhwVj8zM2XDqOGyV284xXYahYRalbJBMzqqTwzgoQDujkWRRz2y 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 8N3V42pwQahDDY6xn7bG9sXl5iWJvLcOAvyIuMq2GyeRwLmuaHa61ahZrPTp7iP/AFMl/ZC5SPJG 75cg8gdiO3XGKAMyPV79vh5pmqNP/pdzbWbTTBF3DzDGJGRcYL4ZiqgHLYAVs7TP4bv57m+vbZry 8vLeGKKRJL+2FvcBmMgYFNkZ2YRcNt5JcbjghSx8LfY/B1noAuYQ9l5TRzxW+xGeKQSIzJuOcsoL fMC2WwVzxc0zTLq3vrnUNQu4bm7uIo4SbeAwxhIy5X5S7ndmR8ndjGOBgkgHOaN4immvtFWTW3u7 zUWKX+nmOPZYP5DyMnyIGjYOm0LIxJAfglSRd1iTVbFJJv7eddTmaU6dpUKwmK4Kk+WmGj8wgjYZ CGAXLHKqMjWs9MujdJeavdw3lxDkW4hgMMUWRgsFLuS5BI3E8LwAMtuoNofiFJ7+W012xikvGbE8 mmNJNGmT5ag+cFwgPA24JySCWYkA6OiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoqlqmpppUME0kE0qTXMVuTFt/dmRwis2SPl3M oOMnnp1ovNTSy1DT7R4Jm+3yvEkqbdiMqNJhsnPKo2MA9OccUAXaKy7nXEtdUisnsbwpLKIRchF8 vzCu4KAW3vxySqsoGSSNrbZ4NTSfWLzTPImjltIopS77dkiybwCuCTwY2ByB07jmgC7RRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVBeJdPautlNDDcHGySaIyo OecqGUnjPcf0oAz/ABDpeoatbQQWV9bWixzxzuZrVpizRyJIgGJFwMpz1yDxiodU0jWr650yeHVb GFrBvOIewdxJKY3jY8TDC4kOF5IIHzGn/ZfFX/QZ0j/wVS//ACRR9l8Vf9BnSP8AwVS//JFAA2k6 qPEUmpx6lZtC21FimsmeSKL5d6I4lAG5gWJ2k5253BVALbSdVh8TXGqy6lZvb3ESQtbrZMrhEMjJ 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 VpxIEQsdrBVTcFA6Akc5q7/wmfhX/oZdI/8AA6L/AOKo/wCEz8K/9DLpH/gdF/8AFUAbVFZ9h4g0 XVZ2g07V7G9lVd5jt7lJGC5AzhSeMkc+9aFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRWXfa0bW+Nla6ZeajcJEssqWxiXylYsFJMjoDko/TP3TnGRkA1KKxZvE0P/Eu/s+wvNT/tG2a6 g+zeWn7pdnzHzXTGfNTjr1p97rz2k9lbJo99c3V3A8/kRNCGiVCgYMWkC5BkUfKT3oA16Ky7/XoN Mhsnu7W8R72WKJY1hL+WzuqAO65RcFx1bnB27qu3t5Bp9jcXt1J5dvbRNLK+CdqqMk4HJ4HagCei sUeJoYfP/tSwvNK8m2kuv9J8t98UePMYeU7/AHdy8HBO4Yzg4msdaN1fCyutMvNOuHiaWJLkxN5q qVDEGN3AwXTrj7wxnBwAaBmiWdIDKgldWdYyw3MoIBIHcAsuT7j1qG11PT76e4gs762uJbVtk8cU qu0TZIwwB+U5B4Poa5mDRtbtPiJDqUmy8tJYLhJbsQKrRo7K0cRJmyQvlgAqmOSSCzsyzaPbalcQ TibSbnRr5rRobadhbyQWK4AWOJEkOQDtJJUbynO0BEUA6N721jjuJHuYVS1z9oYyACHChjuP8Pyk HnsQah/tnSv7L/tT+07P7B/z9+evlfe2/fzj73HXrxXH6Z4f1u207X7OWzQB9QgurV40VDMU8vfI pM0mZCYtw83guQXJDMq3f7J1KTQLwT2t881zqEV0Sstut7+7EexyOYCweJRtGF8sAnL5BAOps721 1C1S6srmG6t5M7JYZA6Ng4OCODyCPwqeqWkfb/7Lh/tL/j5+bOdu7buOzft+Xft27tvy7s7eMVdo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5/X9HvNRvke0tYUzEEa7Gp3FtIvJxlIQPN VckgFxyzAFcknoKKAOYvfDWyx07T4dF0jWrSwtlghGqttki2gDIYRuG3ALkBVwV75wpe+H7qSx06 1udN0jxF9ktliMuqkpJvAAZwSkud+ASOCCvVs/L09FAHOanpOtHw/pmmWbW1/LatbPPdXly8TSND JG+cBHyXKHJJ4zn5q2Zo5bnSpI57S2lllgKyWzyFoXYryhYrypPGdvTt2q1RQByVr4TvH+2XMt1N p93LYzWduY9TuL3yfM2ky7pSpDAomAoX7pyTkbbWhaDLp+qm8Gk6Xo0QgaNrfTXLLcMzKQ7/ALuP lArAcN/rG6d+jooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKAP/ZCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpUaGlzIGUtbWFpbCBp cyBjb25maWRlbnRpYWwgYW5kIHByaXZpbGVnZWQuICBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5k ZWQKcmVjaXBpZW50IGRvIG5vdCBkaXNjbG9zZSwgY29weSBvciBkaXN0cmlidXRlIGluZm9ybWF0 aW9uIGluIHRoaXMgZS1tYWlsCm9yIHRha2UgYW55IGFjdGlvbiBpbiByZWxpYW5jZSBvbiBpdHMg Y29udGVudC4KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKVGhpcyBlbWFp bCBoYXMgYmVlbiBjaGVja2VkIGZvciBrbm93biB2aXJ1c2VzLiAKKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Cg== ------=_Part_7966_13882056.1138722297359 Content-Type: image/jpeg; name=image005.jpg Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="image005.jpg" /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAAbAR0DASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2aq39 oWv2H7b5ubc/dcKfn5wNoxlsnG3Gd2RjORUWt+f/AGFqH2XzPtH2WTyvKzv3bTjbjnOemKLi1ivd HFvZNbrE6J5LBC0aqMFSoVl6AAqQRg4I6Umy0lZN9yzb3EV1As0L7kbPYggg4IIPIIIIIPIIINS1 zGg3N5/ZN+trunuIot8MTldiyEMdjcBlk3ffV2YjIy5JJqzYzwHUIF0y/mvWdj9uWWZnMY2khmU/ 6p9+BsAXq3y/L8qUi5UrNrsaT6rYpqCWBuFNy7bfLUFip2lsNjhSVBIzjODjOKsySRwxPLK6xxop ZnY4CgdST2FYmtatptvqulxT6jaxSQ3ZaVHmUGMGCXBYE8D5h19R61LrMsjRWd9DLYvYRN5ztcXX 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 oooAKKKKACiiigAooooAKKKKAP/ZCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpUaGlzIGUtbWFpbCBpcyBj b25maWRlbnRpYWwgYW5kIHByaXZpbGVnZWQuICBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQK cmVjaXBpZW50IGRvIG5vdCBkaXNjbG9zZSwgY29weSBvciBkaXN0cmlidXRlIGluZm9ybWF0aW9u IGluIHRoaXMgZS1tYWlsCm9yIHRha2UgYW55IGFjdGlvbiBpbiByZWxpYW5jZSBvbiBpdHMgY29u dGVudC4KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKVGhpcyBlbWFpbCBo YXMgYmVlbiBjaGVja2VkIGZvciBrbm93biB2aXJ1c2VzLiAKKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCg== ------=_Part_7966_13882056.1138722297359 Content-Type: image/jpeg; name=image004.jpg Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="image004.jpg" /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAAbAIEDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2aq39 oWv2H7b5ubc/dcKfn5wNoxlsnG3Gd2RjORUWt+f/AGFqH2XzPtH2WTyvKzv3bTjbjnOemKLi1ivd HFvZNbrE6J5LBC0aqMFSoVl6AAqQRg4I6Umy0lZN9yzb3EV1As0L7kbPYggg4IIPIIIIIPIIINS1 zGg3N5/ZN+trunuIot8MTldiyEMdjcBlk3ffV2YjIy5JJqzYzwHUIF0y/mvWdj9uWWZnMY2khmU/ 6p9+BsAXq3y/L8qUi5UrNrsaT6rYpqCWBuFNy7bfLUFip2lsNjhSVBIzjODjOKfeahb2OwTGQs+d qRRPK5A6nagJwMjJxgZHqKyta1bTbfVdLin1G1ikhuy0qPMoMYMEuCwJ4HzDr6j1qW9vbS31nT7+ a6hjs2tJ1W4eQCMlmhKgMeMkKxHqAfSjm3D2e2j1X+Zof2ha/Yftvm4tx95yp+TnB3DGVwc7s424 OcYNWayNJ8g6FO9z5ZtZJrqRmkxsaJpZGDHPBUqc56EGrOief/YWn/avM+0fZY/N83O/dtGd2ec5 65oTJlFK9ujL1FFFUZkcs0UCB5pUjUsqBnYAFmIVRz3JIAHckVJXOeN9PhvNHhnme5Rba7tndorm SJUj+0RmR22MBhVBbcfu4LAjGaueH7jR5YJotG1B7+JGDPMbyS6UMR90SMzc4GSoPGQSBuBIBr0V xHg99L1bcB4nudRntru5eC1XVCxiiW4cISEYPIpXZzKXGCMYBwYfEGqQ6XpHi+yuNUuYLtmkuNPi F1J5+Ps8bBogDv8ALEokzt+QBXBwoOADvaK4zxPqkxvrdmuLNNFltllguX1iSwjmlJOR5satuwm0 qu5QQzHD7cpv+HLm6vNCtp72aGeZtw82EkpIoYhWBKruyoB3BQrZyo2kUAalFFFABUVvbxWkCwQJ siTO1ckhRnoPQDsOgGAOBUtFABRRRQAUUUUARXFvFdwNBOm+J8blyQGGeh9Qe46EZB4NS0UUAFFF FABRRRQAUUUUAFFFFABRRRQB/9kKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqClRoaXMgZS1tYWlsIGlzIGNv bmZpZGVudGlhbCBhbmQgcHJpdmlsZWdlZC4gIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZApy ZWNpcGllbnQgZG8gbm90IGRpc2Nsb3NlLCBjb3B5IG9yIGRpc3RyaWJ1dGUgaW5mb3JtYXRpb24g aW4gdGhpcyBlLW1haWwKb3IgdGFrZSBhbnkgYWN0aW9uIGluIHJlbGlhbmNlIG9uIGl0cyBjb250 ZW50LgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpUaGlzIGVtYWlsIGhh cyBiZWVuIGNoZWNrZWQgZm9yIGtub3duIHZpcnVzZXMuIAoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK ------=_Part_7966_13882056.1138722297359-- From robert_dodier at yahoo.com Thu Feb 2 15:38:44 2006 From: robert_dodier at yahoo.com (Robert Dodier) Date: Thu, 2 Feb 2006 13:38:44 -0800 (PST) Subject: [Maxima] Fwd: [maxima - Help] memory allocation problem Message-ID: <20060202213844.37850.qmail@web32106.mail.mud.yahoo.com> hello all -- i am forwarding to the mailing list this message which was posted via the SF help system. the original poster's email address appears to be laplace_friend at users.sourceforge.net. just glancing at the problem, i wonder if maxima knows how to solve equations which contain an absolute value. hth robert dodier --- "SourceForge.net" wrote: > To: noreply at sourceforge.net > From: "SourceForge.net" > Subject: [maxima - Help] memory allocation problem > Date: Thu, 02 Feb 2006 13:22:15 -0800 > > > Read and respond to this message at: > https://sourceforge.net/forum/message.php?msg_id=3555741 > By: laplace_friend > > I have been experiencing an error with Maxima version 5.9.2 > (development version), > which I run on a Windows XP pro SP1 w/ AMD athlon64 3000+ processor. > The commands which can trigger it are the following: > > s1:-1/2*(sqrt(4*(tzyp+a*tzyx+b*tzyy+c*tzyz)**2+4*(tzxp+a*tzxx+b*tzxy+c*tzxz)**2+ > (szp+a*szx+b*szy+c*szz)**2)-(szp+a*szx+b*szy+c*szz)); > H1: abs(s1)+l*(a**2+b**2+c**2-1); > solve([diff(H1,a)=0,diff(H1,b)=0,diff(H1,c)=0,diff(H1,l)=0],[a,b,c,l]); > > The error message I get is the following: > > Maxima encountered a Lisp error: > > Error in PROGN [or a callee]: The storage for CONS is exhausted. > Currently, 92537 pages are allocated. > Use ALLOCATE to expand the space. > > Automatically continuing. > To reenable the Lisp debugger set *debugger-hook* to nil. > > I think it's related to maxima memory allocation and not to memory > allocation > in a Windows o.s. > When the error happens, the task manager gives the following info: > > 438 Mb of mem used by maxima.exe > 622 Mb of total used memory > > The physical memory is about 780 Mb, the paging file has constant > dimesion and > is 1152 Mb. > > I already noticed that this is not o.s.-dependant (trying to add Win > SP2 had > no effect, win 2000 still gives the same error) nor depends on maxima > versions > (maxima 5.9.0 (for windows) gives the same output). > > Can anybody give hints? Besides, 1 page = approximately 5 kB, right? > I'm sorry > I'm quite new to this program...thank you for your attention. > > ______________________________________________________________________ > You are receiving this email because you elected to monitor this > forum. > To stop monitoring this forum, login to SourceForge.net and visit: > https://sourceforge.net/forum/unmonitor.php?forum_id=15104 > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com From cave_mar at mail.com Fri Feb 3 11:40:38 2006 From: cave_mar at mail.com (Marco Cavedoni) Date: Fri, 03 Feb 2006 18:40:38 +0100 Subject: [Maxima] memory allocation problem with maxima Message-ID: <20060203174038.10F221F50B2@ws1-2.us4.outblaze.com> I have been experiencing an error with Maxima version 5.9.2 (development version), which I run on a Windows XP pro SP1 w/ AMD athlon64 3000+ processor. The commands which can trigger it are the following: s1:-1/2*(sqrt(4*(tzyp+a*tzyx+b*tzyy+c*tzyz)**2+4*(tzxp+a*tzxx+b*tzxy+c*tzxz)**2+(szp+a*szx+b*szy+c*szz)**2)-(szp+a*szx+b*szy+c*szz)); H1: abs(s1)+l*(a**2+b**2+c**2-1); solve([diff(H1,a)=0,diff(H1,b)=0,diff(H1,c)=0,diff(H1,l)=0],[a,b,c,l]); The error message I get is the following: Maxima encountered a Lisp error: Error in PROGN [or a callee]: The storage for CONS is exhausted. Currently, 92537 pages are allocated. Use ALLOCATE to expand the space. Automatically continuing. To reenable the Lisp debugger set *debugger-hook* to nil. I think it's related to maxima memory allocation and not to memory allocation in a Windows o.s. When the error happens, the task manager gives the following info: 438 Mb of mem used by maxima.exe 622 Mb of total used memory The physical memory is about 780 Mb, the paging file has constant dimesion and is 1152 Mb. I already noticed that this is not o.s.-dependant (trying to add Win SP2 had no effect, win 2000 still gives the same error) nor depends on maxima versions (maxima 5.9.0 (for windows) gives the same output). Can anybody give hints? Besides, 1 page = approximately 5 kB, right? I'm sorry I'm quite new to this program...thank you for your attention. -- ___________________________________________________ Play 100s of games for FREE! http://games.mail.com/ From macrakis at alum.mit.edu Fri Feb 3 14:54:29 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Fri, 3 Feb 2006 15:54:29 -0500 Subject: [Maxima] memory allocation problem with maxima In-Reply-To: <20060203174038.10F221F50B2@ws1-2.us4.outblaze.com> References: <20060203174038.10F221F50B2@ws1-2.us4.outblaze.com> Message-ID: <8b356f880602031254l713398ealaf7a3fa0d1302dff@mail.gmail.com> ------=_Part_8828_30417966.1139000069825 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline If Maxima needs that much storage, the intermediate results are huge. Occasionally, huge intermediate results boil down to compact final results, but usually they are a bad sign, and it is best to try to reformulate the problem. In this particular case, you are solving for a,b,c in equations involving abs(xxx). In general, Maxima cannot solve equations involving abs of the principal variables. One thing to try is Assume'ing that xxx>0 and then that xxx<0. Your expressions are still very large, but at least that will give Maxima some chance of being able to solve. -s ------=_Part_8828_30417966.1139000069825 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline If Maxima needs that much storage, the intermediate results are huge. = Occasionally, huge intermediate results boil down to compact final results= , but usually they are a bad sign, and it is best to try to reformulate the= problem.

In this particular case, you are solving for a,b,c in equations inv= olving abs(xxx).  In general, Maxima cannot solve equations involving = abs of the principal variables.  One thing to try is Assume'ing that x= xx>0 and then that xxx<0.  Your expressions are still very large= , but at least that will give Maxima some chance of being able to solve.

           &= nbsp;  -s
------=_Part_8828_30417966.1139000069825-- From devrim.erdem at gmail.com Fri Feb 3 15:02:12 2006 From: devrim.erdem at gmail.com (Devrim Erdem) Date: Fri, 3 Feb 2006 22:02:12 +0100 Subject: [Maxima] Solving a Transformation Matrix Message-ID: ------=_Part_9047_23259120.1139000532562 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hello, I am to trying to learn Maxima and want to solve a transformation matrix from the following eq: Rdx =3D T.Rrl Rdx and Rrl are defined like : Rdx=3Dmatrix([sh*sp*sr+ch*cr,cp*sr,ch*sp*sr-cr*sh],[cr*sh*sp-ch*sr,cp*cr,sh= *sr+ch*cr*sp],[cp*sh,-sp,ch*cp]) sh and sp are not defined.(I assume maxima will keep them symbols.) I want to get T solved. 1. Is there a direct way of getting Maxima solve T ? 2. I thought I could also do T =3D Rrl.Rdx_inverse but invert(Rdx) gives me the error: `length' called on atomic symbol Rdx. Could anybody explain me what this means ? Thank you, Dev. ------=_Part_9047_23259120.1139000532562 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hello,

I am to trying to learn Maxima and want to solve a transforma= tion matrix from the following eq:

Rdx =3D T.Rrl

Rdx and Rrl = are defined like :

Rdx=3Dmatrix([sh*sp*sr+ch*cr,cp*sr,ch*sp*sr-cr*sh= ],[cr*sh*sp-ch*sr,cp*cr,sh*sr+ch*cr*sp],[cp*sh,-sp,ch*cp])

sh and sp are not defined.(I assume maxima will keep them symbols.)=

I want to get T solved.

1. Is there a direct way of getting = Maxima solve T ?

2. I thought I could also do

T =3D Rrl.Rdx_i= nverse

but

invert(Rdx) gives me the error:

`length' called o= n atomic symbol Rdx.

Could anybody explain me what this means ?
<= br>Thank you,

Dev.
------=_Part_9047_23259120.1139000532562-- From biomates at telefonica.net Fri Feb 3 16:08:32 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Fri, 03 Feb 2006 23:08:32 +0100 Subject: [Maxima] Solving a Transformation Matrix In-Reply-To: References: Message-ID: <1139004512.14221.6.camel@localhost.localdomain> > I am to trying to learn Maxima and want to solve a transformation > matrix from the following eq: > > Rdx = T.Rrl > > Rdx and Rrl are defined like : > > Rdx=matrix([sh*sp*sr > +ch*cr,cp*sr,ch*sp*sr-cr*sh],[cr*sh*sp-ch*sr,cp*cr,sh*sr > +ch*cr*sp],[cp*sh,-sp,ch*cp]) > Write Rdx:matrix(...) instead of Rdx=matrix(...) then inverse(Rdx) reports no problem: /************* begin Maxima session ****************/ (%i11) Rdx:matrix([sh*sp*sr +ch*cr,cp*sr,ch*sp*sr-cr*sh],[cr*sh*sp-ch*sr,cp*cr,sh*sr +ch*cr*sp],[cp*sh,-sp,ch*cp]); [ sh sp sr + ch cr cp sr ch sp sr - cr sh ] [ ] (%o11) [ cr sh sp - ch sr cp cr sh sr + ch cr sp ] [ ] [ cp sh - sp ch cp ] (%i12) invert(Rdx).Rdx, factor; [ 1 0 0 ] [ ] (%o12) [ 0 1 0 ] [ ] [ 0 0 1 ] /************* end Maxima session ****************/ -- Mario Rodriguez Riotorto www.biomates.net From robert.dodier at gmail.com Fri Feb 3 16:29:11 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 3 Feb 2006 15:29:11 -0700 Subject: [Maxima] Solving a Transformation Matrix In-Reply-To: References: Message-ID: Hello Devim, > Rdx=matrix([sh*sp*sr+ch*cr,cp*sr,ch*sp*sr-cr*sh],[cr*sh*sp-ch*sr,cp*cr,sh*sr+ch*cr*sp],[cp*sh,-sp,ch*cp]) > > sh and sp are not defined.(I assume maxima will keep them symbols.) Two quick comments --- (1) You want to write "Rdx : matrix (...)" i.e. with a colon instead of an equal sign. Colon is the assignment operator. (2) If sh, ch, etc are sin and cos terms, your matrix Rdx is orthonormal and its inverse is its transpose. I find trigsimp (Rdx . transpose (Rdx)); => identity matrix after assigning sh : sin(h); ch : cos(h); etc and reevaluating Rdx. hth Robert Dodier From amca01 at gmail.com Fri Feb 3 18:28:21 2006 From: amca01 at gmail.com (Alasdair McAndrew) Date: Sat, 4 Feb 2006 11:28:21 +1100 Subject: [Maxima] Re: proposal to bring ifactor into src/, was: Factoring large integers In-Reply-To: <43E3ACE8.90601@cs.berkeley.edu> References: <7775b21a0602020929u45dad2fdr@mail.gmail.com> <43E3B6CC.31600.12F2C6B@localhost> <43E3ACE8.90601@cs.berkeley.edu> Message-ID: <1d67a53c0602031628t25a76b14u37723f89860a49b6@mail.gmail.com> ------=_Part_16838_2895553.1139012901229 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline What I'd certainly like to see in Maxima is a number theory package: factoring, Euler's phi function, Moebius function, prime testing, primitive roots, chinese remainder theorem, modular equations, modular square roots, quadratic residue testing, Jacobi and Legendre symbols, ... -Alasdair On 2/4/06, Richard Fateman wrote: > > In commercial macsyma, > factor_number returns a list of factors of an integer. > 1234 is an integer, not a polynomial. > so factor(1234)-> 2*617. > factor(1234*x) -> 1234 * x > > My expectation is that any "serious" use of factors > would benefit from getting a list of > rather than the hackish unsimplified form that has to > be painstakingly decomposed to find the actual factors. > > I think the current factor program mostly makes sense for one > application, namely to answer the question "Does this > expression simplify to something interesting if I > factor it?" > > RJF > > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > ------=_Part_16838_2895553.1139012901229 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline What I'd certainly like to see in Maxima is a number theory package: factoring, Euler's phi function, Moebius function, prime testing, primitive roots, chinese remainder theorem, modular equations, modular square roots, quadratic residue testing, Jacobi and Legendre symbols, ...

-Alasdair

On 2/4/06, Richard Fateman <fateman at cs.berkeley.edu> wrote:
In commercial macsyma,
factor_number  returns a list of factor= s of an integer.
1234 is an integer, not a polynomial.
so factor(1234= )->  2*617.
factor(1234*x) -> 1234 * x

My expecta= tion is that any "serious" use of factors
would benefit from getting a list of <factor,multiplicity>
rat= her than the hackish unsimplified form that has to
be painstakingly deco= mposed to find the actual factors.

I think the current factor progra= m mostly makes sense for one
application, namely to answer the question "Does this
expressio= n simplify to something interesting if I
factor it?"

RJF
=

_______________________________________________
Maxima mailing l= ist
Maxima at math.utexas.eduhttp://www.= math.utexas.edu/mailman/listinfo/maxima

------=_Part_16838_2895553.1139012901229-- From fateman at cs.berkeley.edu Fri Feb 3 19:30:21 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Fri, 3 Feb 2006 17:30:21 -0800 Subject: [Maxima] Re: proposal to bring ifactor into src/, was: Factoring large integers References: <7775b21a0602020929u45dad2fdr@mail.gmail.com> <43E3B6CC.31600.12F2C6B@localhost> <43E3ACE8.90601@cs.berkeley.edu> <1d67a53c0602031628t25a76b14u37723f89860a49b6@mail.gmail.com> Message-ID: <001e01c6292a$931092e0$15d09888@windsor> This is a multi-part message in MIME format. ------=_NextPart_000_001B_01C628E7.8277E610 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Why not look at Shoup's NTL. If you like it, why not do what I did, and just load it into your lisp and call it. RJF ----- Original Message -----=20 From: Alasdair McAndrew=20 To: maxima list=20 Sent: Friday, February 03, 2006 4:28 PM Subject: Re: [Maxima] Re: proposal to bring ifactor into src/, was: = Factoring large integers What I'd certainly like to see in Maxima is a number theory package: = factoring, Euler's phi function, Moebius function, prime testing, = primitive roots, chinese remainder theorem, modular equations, modular = square roots, quadratic residue testing, Jacobi and Legendre symbols, = ... -Alasdair On 2/4/06, Richard Fateman wrote: In commercial macsyma, factor_number returns a list of factors of an integer. 1234 is an integer, not a polynomial. so factor(1234)-> 2*617. factor(1234*x) -> 1234 * x My expectation is that any "serious" use of factors=20 would benefit from getting a list of rather than the hackish unsimplified form that has to be painstakingly decomposed to find the actual factors. I think the current factor program mostly makes sense for one=20 application, namely to answer the question "Does this expression simplify to something interesting if I factor it?" RJF _______________________________________________ Maxima mailing list=20 Maxima at math.utexas.edu http://www.math.utexas.edu/mailman/listinfo/maxima ------=_NextPart_000_001B_01C628E7.8277E610 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Why not look at Shoup's = NTL.  If you=20 like it, why not do
what I did, and just load it = into your lisp=20 and call it.
RJF
 
----- Original Message -----
From:=20 Alasdair = McAndrew=20
Sent: Friday, February 03, 2006 = 4:28=20 PM
Subject: Re: [Maxima] Re: = proposal to=20 bring ifactor into src/, was: Factoring large integers

What I'd certainly like to see in Maxima is a number = theory=20 package: factoring, Euler's phi function, Moebius function, prime = testing,=20 primitive roots, chinese remainder theorem, modular equations, modular = square=20 roots, quadratic residue testing, Jacobi and Legendre symbols,=20 ...

-Alasdair

On 2/4/06, Richard=20 Fateman <fateman at cs.berkeley.edu>=20 wrote:
In=20 commercial macsyma,
factor_number  returns a list of = factors of=20 an integer.
1234 is an integer, not a polynomial.
so=20 factor(1234)->  2*617.
factor(1234*x) -> 1234 *=20 x

My expectation is that any "serious" use of factors =
would=20 benefit from getting a list of <factor,multiplicity>
rather = than=20 the hackish unsimplified form that has to
be painstakingly = decomposed to=20 find the actual factors.

I think the current factor program = mostly=20 makes sense for one
application, namely to answer the question = "Does=20 this
expression simplify to something interesting if I
factor=20 = it?"

RJF


______________________________________________= _
Maxima=20 mailing list
Maxima at math.utexas.edu
http://www.ma= th.utexas.edu/mailman/listinfo/maxima

------=_NextPart_000_001B_01C628E7.8277E610-- From dp2 at cise.ufl.edu Fri Feb 3 22:31:40 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Fri, 3 Feb 2006 23:31:40 -0500 (EST) Subject: [Maxima] How to extract polynomial from the sum(polynomial,x,1,n) Message-ID: <60205.70.171.54.119.1139027500.squirrel@webmail.cise.ufl.edu> Hi all, I am new to Maxima. Please tell me how to extract any function/polynomial enclosed inside sum and store it in a variable. I tried to use pattern matching using defmatch but couldnt get through. e.g. sum(f(x,i)*(f(y)*x+f(z)),i,1,n) I want f(x,i)*(f(y)*x+f(z)) from the above expression. Regards Dileep From robert.dodier at gmail.com Fri Feb 3 23:11:45 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 3 Feb 2006 22:11:45 -0700 Subject: [Maxima] How to extract polynomial from the sum(polynomial,x,1,n) In-Reply-To: <60205.70.171.54.119.1139027500.squirrel@webmail.cise.ufl.edu> References: <60205.70.171.54.119.1139027500.squirrel@webmail.cise.ufl.edu> Message-ID: hi dileep, > e.g. sum(f(x,i)*(f(y)*x+f(z)),i,1,n) > I want f(x,i)*(f(y)*x+f(z)) from the above expression. args (expr); => arguments of expression args (sum (, i, 1, n)); => however, maxima notices (f(y)*x+f(z)) doesn't depend on i so it moves that outside the summation. so args (sum(f(x,i)*(f(y)*x+f(z)),i,1,n)); doesn't yield the summand as you have entered it. related function op returns the operator, e.g. op (sum ()); => sum op and args work on any kind of expression, e.g. op (a + b + c); => "+", args (a + b + c); => [a, b, c] hth robert dodier From milan at eskimo.com Fri Feb 3 23:24:42 2006 From: milan at eskimo.com (Milan Lukic) Date: Fri, 3 Feb 2006 21:24:42 -0800 Subject: [Maxima] How to extract polynomial from the sum(polynomial,x,1,n) In-Reply-To: <60205.70.171.54.119.1139027500.squirrel@webmail.cise.ufl.edu>; from dp2@cise.ufl.edu on Fri, Feb 03, 2006 at 11:31:40PM -0500 References: <60205.70.171.54.119.1139027500.squirrel@webmail.cise.ufl.edu> Message-ID: <20060203212442.A23150@eskimo.com> Hi Dileep, Welcome to Maxima! You may want to try the "part" function. For example, (%i1) a:sum(f(x,i),i,1,n)$ (%i2) part(a,1); (%o2) f(x, i) In the case of yours example, Maxima is likely to factor out the (f(y)*x+f(z)) part, so if you do (%i3) b: sum(f(x,i)*(f(y)*x+f(z)),i,1,n); then use part(part(b,1),1)*part(b,2); Hope this helps. Milan * dp2 at cise.ufl.edu <dp2 at cise.ufl.edu> [2006-02-03 23:31:40 -0500]: > Hi all, > > I am new to Maxima. Please tell me how to extract any function/polynomial > enclosed inside sum and store it in a variable. I tried to use pattern > matching using defmatch but couldnt get through. > e.g. sum(f(x,i)*(f(y)*x+f(z)),i,1,n) > I want f(x,i)*(f(y)*x+f(z)) from the above expression. > > Regards > Dileep > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima -- From yhonda at mac.com Sat Feb 4 07:14:24 2006 From: yhonda at mac.com (Yasuaki Honda) Date: Sat, 4 Feb 2006 22:14:24 +0900 Subject: [Maxima] Imaxima website is updated Message-ID: <1294CB63-2A14-4DCB-AA7F-BB84AC06E227@mac.com> Dear maxima users, I have updated imaxima website. This is basically a cosmetic change and imaxima.el it self is not updated at this moment. It is still 0.92. If you take a look and have any issues, drop me an email. http://members3.jcom.home.ne.jp/imaxima/ Yasuaki Honda imaxima at mac.com From L.Isella at myrealbox.com Sat Feb 4 09:03:10 2006 From: L.Isella at myrealbox.com (L.Isella) Date: Sat, 04 Feb 2006 15:03:10 +0000 Subject: [Maxima] Maxima and Stochastic Calculus Message-ID: <1139065390.c7c44cbcL.Isella@myrealbox.com> Dear All, I have not been active on the Maxima mailing list for a long time. I am interested in stochastic calculus for financial applications and I recall some discussion about an implementation of the Ito stochastic calculus for Maxima. I wonder if Maxima can do anything like deriving the distribution of a random variable following a certain stochastic process, at least in some cases. For example, consider a stock S whose evolution is described by the geometric Brownian motion (BM) leading to Black and Scholes (BS) equation. A European option is defined by a certain payoff function depending on the underlying S and can be exercised only at a specific time, called maturity. As a consequence of the BM, stock returns are lognormally distributed. In the case of a complicated payoff, for which no analytical formula is available, one can still price the option e.g. by Monte Carlo simulating many lognormally distributed returns and take the option's expectation value. Depending on the process the stocks are expected to follow, their distribution will be different, but knowing it amounts to being able to price at least certain kinds of options. Many thanks Lorenzo Best regards Lorenzo From dp2 at cise.ufl.edu Sat Feb 4 12:18:05 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Sat, 4 Feb 2006 13:18:05 -0500 (EST) Subject: [Maxima] How to extract polynomial from the In-Reply-To: <200602040520.k145K3D12591@dell3.ma.utexas.edu> References: <200602040520.k145K3D12591@dell3.ma.utexas.edu> Message-ID: <60176.70.171.54.119.1139077085.squirrel@webmail.cise.ufl.edu> Thanks Robert, But it returns all the arguments and I just need the first argument. Dileep args (sum (f(i), i, 1, n)); (%o26) [f(i), i, 1, n] > --__--__-- > > > Message: 10 > Date: Fri, 3 Feb 2006 22:11:45 -0700 > From: Robert Dodier > To: "dp2 at cise.ufl.edu" > Subject: Re: [Maxima] How to extract polynomial from the > sum(polynomial,x,1,n) Cc: Maxima at math.utexas.edu > > > hi dileep, > >> e.g. sum(f(x,i)*(f(y)*x+f(z)),i,1,n) I want f(x,i)*(f(y)*x+f(z)) from >> the above expression. > > args (expr); => arguments of expression > > args (sum (, i, 1, n)); => > > however, maxima notices (f(y)*x+f(z)) doesn't depend on i so it moves that > outside the summation. so args (sum(f(x,i)*(f(y)*x+f(z)),i,1,n)); doesn't > yield the summand as you have entered it. > > related function op returns the operator, e.g. op (sum ()); => sum > > op and args work on any kind of expression, e.g. op (a + b + c); => "+", > args (a + b + c); => [a, b, c] > > hth robert dodier > > > > --__--__-- > > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > > > > End of Maxima Digest > > > From robert.dodier at gmail.com Sat Feb 4 12:51:28 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sat, 4 Feb 2006 11:51:28 -0700 Subject: [Maxima] How to extract polynomial from the In-Reply-To: <60176.70.171.54.119.1139077085.squirrel@webmail.cise.ufl.edu> References: <200602040520.k145K3D12591@dell3.ma.utexas.edu> <60176.70.171.54.119.1139077085.squirrel@webmail.cise.ufl.edu> Message-ID: hi dileep, > But it returns all the arguments and I just need the first argument. > Dileep > > args (sum (f(i), i, 1, n)); > (%o26) [f(i), i, 1, n] when L is a list, L[n] returns the n'th element (counting from 1). so you can write foo : args (sum (f(i), i, 1, n)); foo[1]; there are other, slightly different, ways to accomplish this same task. one way that is generally very useful is args (sum (f(i), i, 1, n)); %[1]; % = most recent %o expression. hth robert dodier From vvzhy at mail.ru Sat Feb 4 14:31:36 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Sat, 04 Feb 2006 23:31:36 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: References: Message-ID: <43E50F28.4080409@mail.ru> Robert Dodier writes: > What is the status of the help system? If it is not working > at the moment, what can we do to bring it to a working state? Hi! To begin with let me once aagin summarize current state of Maxima .info help system (describe command): 1. Recently it was made locale aware and now it understand English, Spanish and Portuguese .info documentation. It works as expected with gcl, cmucl and sbcl. 2. Unfortunately it doesn't work with clisp. It appears to be broken on clisp even with standard English info. Investigating 2 I presumed that the problem is caused by i18n modifications. But this is not the case! Now I'm perfectly confident that recent describe changes have nothing to do with describe misbehavior under clisp. It appears that some clisp/describe problems exist for a long time but were revealed only by new pieces of documentation. Here are the facts: a. describe problem with English is caused by contrib.info. This info file confuses all versions of clisp/describe command (it complains that "Function and Variable Index" can't be found). contrib.info breaks both current Maxima CVS and old Maxima 5.9.2 describe commands. b. Removing contrib.info from Maxima's /info directory magically cures clisp/describe. It works well with English and Portuguese .infos but still have some troubles with Spanish ones. With Spanish docs describe is able to find all relevant nodes but when I select one to see it fails to display the node. As in the case with "Function and Variable Index" it fails to locate the position of the node's body. It appears that something is wrong with regexp string matcher. I don't have a fix yet and any help is greatly appreciated. Best wishes, Vadim -- Vadim V. Zhytnikov From robert.dodier at gmail.com Sat Feb 4 15:02:01 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sat, 4 Feb 2006 14:02:01 -0700 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <43E50F28.4080409@mail.ru> References: <43E50F28.4080409@mail.ru> Message-ID: hi vadim, thanks for working on this problem. i spent some time a couple of days ago trying to figure out what is wrong, and i agree the problem seems to be that "Function and variable index" is not located. however, i was unable to determine why that is. the regex looks OK and the file data looks OK. i guess that suggests there is a bug in the way clisp compiles the pattern matcher. maybe we should look for a shorter example which shows the failure to match? (e.g. edit contrib.info to contain just a few lines) maybe there is a test suite for the regex code? i'm sorry that i'm not more helpful -- at this point all i can say is, yes, i've seen the same problem .... best, robert From biomates at telefonica.net Sat Feb 4 16:54:18 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Sat, 04 Feb 2006 23:54:18 +0100 Subject: [Maxima] Maxima and Stochastic Calculus In-Reply-To: <1139065390.c7c44cbcL.Isella@myrealbox.com> References: <1139065390.c7c44cbcL.Isella@myrealbox.com> Message-ID: <1139093658.8354.26.camel@localhost.localdomain> Ciao Lorenzo, As far as I know, the only package dealing with probabilistic models is the 'distrib' one: http://cvs.sourceforge.net/viewcvs.py/maxima/maxima/share/contrib/distrib/ which includes basic stuff for discrete and continuous distributions. You can calculate densities, cumulative probabilities, first and second moments and random simulation. In particular, the lognormal distribution is also implemented; here is an example: /************ begin Maxima ***************/ (%i3) load(distrib)$ (%i5) /* density function */ assume(x>0,s>0)$ denlogn(x,m,s); 2 (log(x) - m) - ------------- 2 2 s %e (%o6) --------------------- sqrt(2) sqrt(%pi) s x (%i7) /* distribution function */ dislogn(x,m,s); log(x) - m erf(----------) sqrt(2) s 1 (%o7) --------------- + - 2 2 (%i8) /* kurtosis coefficient */ kurlogn(m,s); 2 2 2 4 s 3 s 2 s (%o8) %e + 2 %e + 3 %e - 3 (%i9) /* random sample of size 7 for m=2 and s=1*/ rlogn(2,1,7); (%o9) [6.7102640819652, 15.81413232484992, 2.648651971238268, 28.90109420904617, 44.80131546192278, 1.558728229609015, 17.29526928162041] /************ end Maxima ***************/ Densities are defined explicitly, not as derivatives of the distribution functions. Please, try it and give me your opinion; the package is still under development and I accept suggestions (in particular those which are not difficult to implement :-) Best wishes. El s??b, 04-02-2006 a las 15:03 +0000, L.Isella escribi??: > Dear All, > I have not been active on the Maxima mailing list for a long time. > I am interested in stochastic calculus for financial applications and I recall some discussion about an implementation of the Ito stochastic calculus for Maxima. > I wonder if Maxima can do anything like deriving the distribution of a random variable following a certain stochastic process, at least in some cases. > For example, consider a stock S whose evolution is described by the geometric Brownian motion (BM) leading to Black and Scholes (BS) equation. > A European option is defined by a certain payoff function depending on the underlying S and can be exercised only at a specific time, called maturity. > As a consequence of the BM, stock returns are lognormally distributed. > In the case of a complicated payoff, for which no analytical formula is available, one can still price the option e.g. by Monte Carlo simulating many lognormally distributed returns and take the option's expectation value. > Depending on the process the stocks are expected to follow, their distribution will be different, but knowing it amounts to being able to price at least certain kinds of options. > Many thanks > > Lorenzo > > Best regards > > Lorenzo > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima -- Mario Rodriguez Riotorto www.biomates.net From milan at eskimo.com Sat Feb 4 17:48:58 2006 From: milan at eskimo.com (Milan Lukic) Date: Sat, 4 Feb 2006 15:48:58 -0800 Subject: [Maxima] Maxima and Stochastic Calculus In-Reply-To: <1139065390.c7c44cbcL.Isella@myrealbox.com>; from L.Isella@myrealbox.com on Sat, Feb 04, 2006 at 03:03:10PM +0000 References: <1139065390.c7c44cbcL.Isella@myrealbox.com> Message-ID: <20060204154858.A17609@eskimo.com> * L.Isella <L.Isella at myrealbox.com> [2006-02-04 15:03:10 +0000]: > Dear All, > I have not been active on the Maxima mailing list for a long time. > I am interested in stochastic calculus for financial applications and I recall some discussion about an implementation of the Ito stochastic calculus for Maxima. > I wonder if Maxima can do anything like deriving the distribution of a random variable following a certain stochastic process, at least in some cases. Hi Lorenzo, Check Andrei Zorin's Stochastic Calculus package for Maxima at http://www.uic.nnov.ru/~zoav1/mac/sde-0.9.tar.gz Hope this helps. Milan > For example, consider a stock S whose evolution is described by the geometric Brownian motion (BM) leading to Black and Scholes (BS) equation. > A European option is defined by a certain payoff function depending on the underlying S and can be exercised only at a specific time, called maturity. > As a consequence of the BM, stock returns are lognormally distributed. > In the case of a complicated payoff, for which no analytical formula is available, one can still price the option e.g. by Monte Carlo simulating many lognormally distributed returns and take the option's expectation value. > Depending on the process the stocks are expected to follow, their distribution will be different, but knowing it amounts to being able to price at least certain kinds of options. > Many thanks > > Lorenzo > > Best regards > > Lorenzo > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima -- From biomates at telefonica.net Sat Feb 4 19:46:57 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Sun, 05 Feb 2006 02:46:57 +0100 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <43E50F28.4080409@mail.ru> References: <43E50F28.4080409@mail.ru> Message-ID: <1139104017.8059.34.camel@localhost.localdomain> I don't get any response from 'describe' with clisp, both building with ./configure --enable-clisp --enable-lang-es and ./configure --enable-clisp in my Ubuntu-Linux. For example, /***************/ Maxima 5.9.2.19cvs http://maxima.sourceforge.net Using Lisp CLISP () Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. This is a development version of Maxima. The function bug_report() provides bug reporting information. (%i1) ? solve Maxima encountered a Lisp error: invalid byte sequence #xF3 #x6E #x20 #x54 in CHARSET:UTF-8 conversion Automatically continuing. To reenable the Lisp debugger set *debugger-hook* to nil. /**************/ Ubuntu uses UTF-8 encoding by default; I don't know if this fact is related to this error. On the other hand, building Maxima with cmucl: ./configure --enable-cmucl --enable-lang-es I see rectangles instead accented vowels. Thank you both, Robert and Vadim, for working on this. Best wishes. P.D. If someone else is interested, I came to the idea of writing in maxima-init.mac the function sos():=system("mozilla /usr/local/share/maxima/5.9.2.19cvs/doc/html/es/maxima.html")$ and call the Spanish help html system by writing 'sos()$'. It looks very nice. -- Mario Rodriguez Riotorto www.biomates.net From robert.dodier at gmail.com Sat Feb 4 20:05:10 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sat, 4 Feb 2006 19:05:10 -0700 Subject: [Maxima] unevaluated boolean and conditional expressions, take 2 Message-ID: Hello all, I've made some changes to the code for handling unevaluated boolean and conditional expressions, so that the branches of unevaluated conditionals are evaluated less aggressively. See: http://cvs.sf.net/viewcvs.py/maxima/maxima/share/contrib/boolsimp/ Specifically, atoms are evaluated but functions are not called. This addresses some problematic cases mentioned by Stavros. pp: if x > 0 then print(1) else print(2); => if x > 0 then print(1) else print(2) /* nothing printed here */ ''pp, x = 1; /* now 1 is printed */ ''pp, x = -1; /* now 2 is printed */ f(x) := if x <= 0 then 1 else x*f(x - 1); fy : f(y); => if y <= 0 then 1 else y f(y - 1) ''fy, y = 8; => 40320 f(8); => 40320 if not equal (x, 0) then 1/x else 0, x=0; => 0 /* no 1/0 error triggered */ The examples I mentioned last time also still work. The file rtest_boolsimp.mac contains a lot of examples. Avoiding function evaluations means that unevaluated conditionals might contain "obvious" unsimplified boolean expressions. e.g. x : 100; if y > x then if x > 0 then aa else bb else cc; => if y > 100 then if 100 > 0 then aa else bb else cc; Maxima doesn't simplify constant relational expressions e.g. 100 > 0 above, probably because expressions involving = are ambiguous. The code that I've written doesn't touch that problem at all; I've left it for the next go-around. Also, errors which arise from simplification of branch expressions (e.g. 1/0, 0^0) can still cause problems. I'm not convinced there should be any errors in simplification, so I'm not inclined to try to work around it. I see resolution of this as another problem for the next go-around. Thanks for any comments you might have. Robert Dodier From fateman at cs.berkeley.edu Sat Feb 4 10:25:17 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sat, 4 Feb 2006 08:25:17 -0800 Subject: [Maxima] Re: proposal to bring ifactor into src/, was: Factoring large integers References: <7775b21a0602020929u45dad2fdr@mail.gmail.com> <43E3B6CC.31600.12F2C6B@localhost> <43E3ACE8.90601@cs.berkeley.edu> <1d67a53c0602031628t25a76b14u37723f89860a49b6@mail.gmail.com> <001e01c6292a$931092e0$15d09888@windsor> <1d67a53c0602031843o4b5060dsb4d69c9c56edfea2@mail.gmail.com> Message-ID: <000001c62a18$eb03e300$15d09888@windsor> This is a multi-part message in MIME format. ------=_NextPart_000_0033_01C62964.87AEDC10 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable It depends to some extent on which lisp is used. I used Allegro Common Lisp, but I haven't looked at loading libraries into others. There is a "universal" foreign function package that supposedly works for most lisps, so it might not be hard. Your job is to see if NTL does the job, and perhaps if you really want to do something that can only be done by combining NTL and Maxima. Next is to find someone who knows about GCL (the usual Maxima lisp) and foreign functions. I can provide the sample linkages (in C) between Lisp and the C++ library. RJF ------=_NextPart_000_0033_01C62964.87AEDC10 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
It depends to some extent on = which lisp is=20 used.  I used
Allegro Common Lisp, but I = haven't looked=20 at loading libraries
into others. There is a = "universal" foreign=20 function
package that supposedly works = for most=20 lisps, so it might
not be hard.  Your job is = to see if=20 NTL does the job, and perhaps
if you really want to do = something that can=20 only be done
by combining NTL and = Maxima.  Next is=20 to find someone who
knows about GCL (the usual = Maxima lisp) and=20 foreign functions.
I can provide the sample = linkages (in C)=20 between Lisp and the
C++ library.
RJF
  ------=_NextPart_000_0033_01C62964.87AEDC10-- From fateman at cs.berkeley.edu Sat Feb 4 10:32:25 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sat, 4 Feb 2006 08:32:25 -0800 Subject: [Maxima] Maxima and Stochastic Calculus References: <1139065390.c7c44cbcL.Isella@myrealbox.com> Message-ID: <000101c62a18$eb62a4d0$15d09888@windsor> This sounds like a numerical computation. If so, perhaps a program has already been written to solve it in C, or Fortran, or Matlab, .. in which case it might be possible to call it from Maxima, or translate it into Lisp, or rewrite it in Maxima's language, or hire someone to do one of these tasks. RJF ----- Original Message ----- From: "L.Isella" To: Sent: Saturday, February 04, 2006 7:03 AM Subject: [Maxima] Maxima and Stochastic Calculus > Dear All, > I have not been active on the Maxima mailing list for a long time. > I am interested in stochastic calculus for financial applications and I > recall some discussion about an implementation of the Ito stochastic > calculus for Maxima. > I wonder if Maxima can do anything like deriving the distribution of a > random variable following a certain stochastic process, at least in some > cases. > For example, consider a stock S whose evolution is described by the > geometric Brownian motion (BM) leading to Black and Scholes (BS) equation. > A European option is defined by a certain payoff function depending on the > underlying S and can be exercised only at a specific time, called > maturity. > As a consequence of the BM, stock returns are lognormally distributed. > In the case of a complicated payoff, for which no analytical formula is > available, one can still price the option e.g. by Monte Carlo simulating > many lognormally distributed returns and take the option's expectation > value. > Depending on the process the stocks are expected to follow, their > distribution will be different, but knowing it amounts to being able to > price at least certain kinds of options. > Many thanks > > Lorenzo > > Best regards > > Lorenzo > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From vvzhy at mail.ru Sun Feb 5 05:52:32 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Sun, 05 Feb 2006 14:52:32 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <1139104017.8059.34.camel@localhost.localdomain> References: <43E50F28.4080409@mail.ru> <1139104017.8059.34.camel@localhost.localdomain> Message-ID: <43E5E700.7030207@mail.ru> Hi Mario! Thank you for your bug report! It reveals one important point which must be fixed before release. Working with Portuguese and Spanish info I didn't tested describe on UTF-8 locale. Both languages under consideration are Latin-1 ones. Thus source .texi files are the same in ISO-8859-1 and UTF-8 encodings. And in my naivete I decided that resulting maxima.info will be good for both pt_PT and pt_PT.UTF-8. But this is not the case. The point this both UTF-aware lisps (clisp and sbcl) are quite scrupulous about characters they read. If maxima.info contains characters in wrong encoding they complain: > > invalid byte sequence #xF3 #x6E #x20 #x54 in CHARSET:UTF-8 conversion > As a quick fix you can do one of the following: 1. Run maxima in non UTF-8 locale: LANG=pt_PT ./maxima -l clisp You must have this locale installed somewhere in /usr/lib/locale/pt_PT ( not /usr/lib/locale/pt_PT.utf8). 2. Convert all /pt/maxima.info* files into UTF-8 using iconv command: iconv -f ISO-8859-1 -t UTF-8 maxima.info > foo mv -f foo maxima.info As a real fix we have to add two more configure options --enable-lang-pt-utf8 --enable-lang-es-utf8 and and create two corresponding language packs. I'll do this soon. Best wishes, Vadim -- Vadim V. Zhytnikov From devrim.erdem at gmail.com Sun Feb 5 11:12:39 2006 From: devrim.erdem at gmail.com (Devrim Erdem) Date: Sun, 5 Feb 2006 18:12:39 +0100 Subject: [Maxima] Simplification Message-ID: ------=_Part_21812_30006130.1139159559253 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hello, I am new to maxima and managed to get a transformation matrix with trigonometric terms (sin,cos) symbolically computed. The resulting T matrix is however too huge. One of the elements of this 3x3 matrix contains looks like : (cos(h)*cos(r)-sin(h)*sin(p)*sin(r))*(sin(h)*sin(p)*sin(r)+cos(h)*cos(r))+c= os(p)*sin(r)*(cos(h)*sin(p)*sin(r)+sin(h)*cos(r))-cos(p)*sin(r)*(cos(h)*sin= (p)*sin(r)-sin(h)*cos(r)), I need to get this transformation in a C application and so I would prefer to simplify it as much as possible. Would it reasable to expect Maxima to further simplify such a matrix ? If so, do you have any tips for me ? Thanks in advance, Devrim. ------=_Part_21812_30006130.1139159559253 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hello,

I am new to maxima and managed to get a transformation matrix= with trigonometric terms (sin,cos) symbolically computed.

The resul= ting T matrix is however too huge. One of the elements of this 3x3 matrix c= ontains looks like :

(cos(h)*cos(r)-sin(h)*sin(p)*sin(r))*(sin(h)*sin(p)*sin(r)+cos(h)*c= os(r))+cos(p)*sin(r)*(cos(h)*sin(p)*sin(r)+sin(h)*cos(r))-cos(p)*sin(r)*(co= s(h)*sin(p)*sin(r)-sin(h)*cos(r)),

I need to get this transformation= in a C application and so I would prefer to simplify it as much as possibl= e. Would it reasable to expect Maxima to further simplify such a matrix ? I= f so, do you have any tips for me ?

Thanks in advance,

Devrim.
------=_Part_21812_30006130.1139159559253-- From robert.dodier at gmail.com Sun Feb 5 11:27:56 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 5 Feb 2006 10:27:56 -0700 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <43E50F28.4080409@mail.ru> References: <43E50F28.4080409@mail.ru> Message-ID: Hi Vadim, Another minor datum -- the file contrib.texi had some lines which had control-M at the end of them (maybe about 10 lines altogether). I find that if I erase the control-M's and make; make install , then it appears Maxima / Clisp (English) can find the contrib.info text (and all the others as well). I have committed contrib.texi sans control-M. I find that many of the files in doc/info/es/ also contain control-M, and none of the .texi files outside that directory contain it. I didn't try to modify anything in doc/info/es/. hth Robert Dodier From willisb at unk.edu Sun Feb 5 11:46:03 2006 From: willisb at unk.edu (Barton Willis) Date: Sun, 5 Feb 2006 11:46:03 -0600 Subject: [Maxima] Simplification Message-ID: -----Devrim Erdem wrote: ----- >I am new to maxima and managed to get a >transformation matrix with trigonometric terms >(sin,cos) symbolically computed. > > >The resulting T matrix is however too huge. One >of the elements of this 3x3 matrix contains looks >like : > > >(cos(h)*cos(r)-sin(h)*sin(p)*sin(r))*(sin(h)*sin( >p)*sin(r)+cos(h)*cos(r))+cos(p)*sin(r)*(cos(h)*si >n(p)*sin(r)+sin(h)*cos(r))-cos(p)*sin(r)*(cos(h)* >sin(p)*sin(r)-sin(h)*cos(r)), > > >I need to get this transformation in a C >application and so I would prefer to simplify it >as much as possible. Try the functions trigsimp, trigreduce, and trigexpand; to read the user documentation for trigreduce, use: (%i2) ? trigreduce; Barton From robert.dodier at gmail.com Sun Feb 5 11:56:32 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 5 Feb 2006 10:56:32 -0700 Subject: [Maxima] Simplification In-Reply-To: References: Message-ID: Hello Devrim, > I am new to maxima and managed to get a transformation matrix with > trigonometric terms (sin,cos) symbolically computed. Great, glad to hear it. > The resulting T matrix is however too huge. Not sure what you mean here. If it is just clumsy, the Maxima-to-Fortran business below should work OK. > I need to get this transformation in a C application and so I would prefer > to simplify it as much as possible. Would it reasable to expect Maxima to > further simplify such a matrix ? If so, do you have any tips for me ? ? trig at the input prompt lists several functions which can apply trigonometric identities. I find trigsimp applied to the expression you wrote yields a slightly shorter expression in terms of sin^2 and cos^2. That's not too helpful, I guess, since C doesn't have a built-in integer exponent and it's not much shorter, anyway. trigreduce yields a different but still messy expression. trigsimp followed by trigreduce yields a mess too. I didn't try anything else. By the way, the fortran function prints a Maxima expression as a Fortran statement, e.g., T : matrix ([a, b], [c, d]); fortran (T); => T(1,1) = a T(1,2) = b T(2,1) = c T(2,2) = d where a, b, c, d represent your trig expressions. You could massage that into C, either by hand or via the f2c program, or compile it with a Fortran compiler and link it to your C program. I'll recommend f2c here; automatically generated programs invariably want to be regenerated sooner or later. hth Robert Dodier From fateman at cs.berkeley.edu Sun Feb 5 12:10:02 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sun, 5 Feb 2006 10:10:02 -0800 Subject: [Maxima] Simplification References: Message-ID: <00be01c62a7f$63e17150$15d09888@windsor> try ratsimp(%); optimize(%); fortran(%); From vvzhy at mail.ru Sun Feb 5 13:22:22 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Sun, 05 Feb 2006 22:22:22 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <43E5E700.7030207@mail.ru> References: <43E50F28.4080409@mail.ru> <1139104017.8059.34.camel@localhost.localdomain> <43E5E700.7030207@mail.ru> Message-ID: <43E6506E.6030900@mail.ru> > As a real fix we have to add two more configure options > > --enable-lang-pt-utf8 > --enable-lang-es-utf8 > Done. Two new options added to configure --enable-lang-pt-utf8 --enable-lang-es-utf8 They must be used with clisp and sbcl on UTF locales es_XX.UTF-8 and pt_XX.UTF-8. Please, test. -- Vadim V. Zhytnikov From vvzhy at mail.ru Sun Feb 5 13:27:29 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Sun, 05 Feb 2006 22:27:29 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: References: <43E50F28.4080409@mail.ru> Message-ID: <43E651A1.2020406@mail.ru> Robert Dodier writes: > Another minor datum -- the file contrib.texi had some lines which > had control-M at the end of them (maybe about 10 lines altogether). > I find that if I erase the control-M's and make; make install , then > it appears Maxima / Clisp (English) can find the contrib.info text > (and all the others as well). I have committed contrib.texi sans control-M. > > I find that many of the files in doc/info/es/ also contain control-M, > and none of the .texi files outside that directory contain it. > I didn't try to modify anything in doc/info/es/. Great! Important observation. Maybe these ^M make trouble with Spanish info? Let's see ... -- Vadim V. Zhytnikov From biomates at telefonica.net Sun Feb 5 13:27:35 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Sun, 05 Feb 2006 20:27:35 +0100 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <43E5E700.7030207@mail.ru> References: <43E50F28.4080409@mail.ru> <1139104017.8059.34.camel@localhost.localdomain> <43E5E700.7030207@mail.ru> Message-ID: <1139167656.8324.2.camel@localhost.localdomain> Hello Vadim, > As a real fix we have to add two more configure options > > --enable-lang-pt-utf8 > --enable-lang-es-utf8 > > and and create two corresponding language packs. > I'll do this soon. Do you think this is necessary? I mean, I could commit again the texi files in ISO-8859-1 encoding instead of UTF-8. Wouln't that solve the problem? In fact, in the es/maxima.texi file there is a line with the following contents: @documentencoding ISO-8859-1 -- Mario Rodriguez Riotorto www.biomates.net From biomates at telefonica.net Sun Feb 5 14:07:30 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Sun, 05 Feb 2006 21:07:30 +0100 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: References: <43E50F28.4080409@mail.ru> Message-ID: <1139170050.8324.9.camel@localhost.localdomain> > Another minor datum -- the file contrib.texi had some lines which > had control-M at the end of them (maybe about 10 lines altogether). > I find that if I erase the control-M's and make; make install , then > it appears Maxima / Clisp (English) can find the contrib.info text > (and all the others as well). I have committed contrib.texi sans control-M. I see. I commited these files about 7 weeks ago. I don't know how the ^M character was introduced. > I find that many of the files in doc/info/es/ also contain control-M, > and none of the .texi files outside that directory contain it. > I didn't try to modify anything in doc/info/es/. I'll clean the files and commit them to cvs as soon as possible. Mario -- Mario Rodriguez Riotorto www.biomates.net From vvzhy at mail.ru Sun Feb 5 14:40:42 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Sun, 05 Feb 2006 23:40:42 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <1139170050.8324.9.camel@localhost.localdomain> References: <43E50F28.4080409@mail.ru> <1139170050.8324.9.camel@localhost.localdomain> Message-ID: <43E662CA.6010809@mail.ru> Mario Rodriguez writes: > > I see. I commited these files about 7 weeks ago. I don't know how the ^M character was introduced. > >> I find that many of the files in doc/info/es/ also contain control-M, >> and none of the .texi files outside that directory contain it. >> I didn't try to modify anything in doc/info/es/. > > I'll clean the files and commit them to cvs as soon as possible. > Done. And it resolves all problems with describe. Best wishes, Vadim -- Vadim V. Zhytnikov From dp2 at cise.ufl.edu Sun Feb 5 14:49:14 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Sun, 5 Feb 2006 15:49:14 -0500 (EST) Subject: [Maxima] How to convert list into polynomial? reverse of args() Message-ID: <61286.70.171.54.119.1139172554.squirrel@webmail.cise.ufl.edu> Hi all, Thanks for the last answer. I need to convert a list into the polynomial. Basically I need to revert the operation of args() e.g. [f(x),f(y),f(z),....] convert to f(x)*f(y)*f(z)*... and the operator can be anything e.g. +,-,etc. Regards Dileep From vvzhy at mail.ru Sun Feb 5 15:02:16 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Mon, 06 Feb 2006 00:02:16 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <1139167656.8324.2.camel@localhost.localdomain> References: <43E50F28.4080409@mail.ru> <1139104017.8059.34.camel@localhost.localdomain> <43E5E700.7030207@mail.ru> <1139167656.8324.2.camel@localhost.localdomain> Message-ID: <43E667D8.1060000@mail.ru> Mario Rodriguez writes: Hi Mario! >> As a real fix we have to add two more configure options >> >> --enable-lang-pt-utf8 >> --enable-lang-es-utf8 >> >> and and create two corresponding language packs. >> I'll do this soon. > > Do you think this is necessary? I mean, I could commit again the texi > files in ISO-8859-1 encoding instead of UTF-8. The problem is not with source *.texi files. All *.texi in ISO-8859-1 and UTF-8 are identical (except for a few characters, what are these?). This is property of all Latin-1 aka ISO-8859-1 languages (almost all European languages). This is how UTF-8 is designed - text files in ISO-8859-1 and UTF-8 should coincide. Try converting with iconv and see for yourself. > Wouln't that solve the > problem? No. Unlike source *.texi files resulting *.info files in ISO-8859-1 and UTF-8 differ. Notice that newly created /info/es.utf8 directory doesn't contain a copy of all *.texi files from /info/es -- just one header file maxima.texi modified to grab all other *.texi files from ../es instead of current directory. The only inconvenience is that /info/es/maxima.info and /info/es.utf8/maxima.info should be maintained separately. > In fact, in the es/maxima.texi file there is a line with the > following contents: > > @documentencoding ISO-8859-1 To be honest I don't know what is the result of this declaration. -- Vadim V. Zhytnikov From macrakis at alum.mit.edu Sun Feb 5 15:25:28 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Sun, 5 Feb 2006 16:25:28 -0500 Subject: [Maxima] How to convert list into polynomial? reverse of args() In-Reply-To: <61286.70.171.54.119.1139172554.squirrel@webmail.cise.ufl.edu> References: <61286.70.171.54.119.1139172554.squirrel@webmail.cise.ufl.edu> Message-ID: <8b356f880602051325l5d7f7dc2p95527f322d5fb492@mail.gmail.com> ------=_Part_19305_2715223.1139174728370 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > Thanks for the last answer. I need to convert a list into the polynomial. > Basically I need to revert the operation of args() e.g. > [f(x),f(y),f(z),....] convert to f(x)*f(y)*f(z)*... and the operator can > be anything e.g. +,-,etc. > To convert a list of *coefficients* to a polynomial: coeff: [3,4,5]$ sum(coeff[i+1]*x^i,i,0,length(coeff)-1); =3D> 5*x^2+4*x+3 To convert a list of *terms* to a polynomial: terms: [3, 4*x, 5*x^2 ]$ apply("+", terms) or sum(terms[i],i,1,length(terms)) To convert a list of *factors* to a polynomial: factors: [(x-1), (x-3) ]$ apply("*", factors); or product(factors[i],i,1,length(factors)) You can expand the product with rat(...) or expand(...). ------=_Part_19305_2715223.1139174728370 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline

Thanks f= or the last answer. I need to convert a list into the polynomial.
Basica= lly I need to revert the operation of args()=20 e.g.
[f(x),f(y),f(z),....] convert to f(x)*f(y)*f(z)*... and the operato= r can
be anything e.g. +,-,etc.

To convert a l= ist of *coefficients* to a polynomial:

     = ;     coeff: [3,4,5]$
          sum(coeff[i+1]*x= ^i,i,0,length(coeff)-1);
        = ;      =3D> 5*x^2+4*x+3

To convert a lis= t of *terms* to a polynomial:

      &n= bsp;  terms: [3, 4*x, 5*x^2 ]$
      =    apply("+", terms)=20
or
         sum(terms[i],i,1= ,length(terms))

To convert a list of *factors* to a polynomial:
<= br>          factors: [(x-1), (x-3) ]$<= br>          apply("*", facto= rs);
or
         product(factors[i],i,1,len= gth(factors))

You can expand the product with rat(...) or expand(...= ).



------=_Part_19305_2715223.1139174728370-- From robert.dodier at gmail.com Sun Feb 5 16:43:58 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 5 Feb 2006 15:43:58 -0700 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <1139167656.8324.2.camel@localhost.localdomain> References: <43E50F28.4080409@mail.ru> <1139104017.8059.34.camel@localhost.localdomain> <43E5E700.7030207@mail.ru> <1139167656.8324.2.camel@localhost.localdomain> Message-ID: > In fact, in the es/maxima.texi file there is a line with the > following contents: > > @documentencoding ISO-8859-1 I put that into the Spanish and Portuguese texinfo files a long time ago because it seemed necessary to get diacriticals to appear correctly. Perhaps I was mistaken about that. I don't really know much about character encoding. Robert From biomates at telefonica.net Sun Feb 5 16:53:25 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Sun, 05 Feb 2006 23:53:25 +0100 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <43E662CA.6010809@mail.ru> References: <43E50F28.4080409@mail.ru> <1139170050.8324.9.camel@localhost.localdomain> <43E662CA.6010809@mail.ru> Message-ID: <1139180006.10777.27.camel@localhost.localdomain> > > Done. And it resolves all problems with describe. > > Best wishes, > Vadim > > Thanks! I re-built Maxima with clisp and cmucl. With clisp 'describe' only gives the English help (I tried both --enable-lang-es and --enable-lang-es-utf8) With cmucl (also with --enable-lang-es and --enable-lang-es-utf8), the info given by 'describe' is incomplete; for example: (%i1) ? cos /* see: no description for trigonometric cos */ 0: (maxima.info)Gr??ficos. 1: Definiciones para Gr??ficos. 2: M??todos num??ricos. 3: Introducci??n a los m??todos num??ricos. 4: Definiciones para los m??todos num??ricos. (%i2) ? algsys (%o2) false At least now the accents can be seen. Mario. -- Mario Rodriguez Riotorto www.biomates.net From willisb at unk.edu Sun Feb 5 19:02:53 2006 From: willisb at unk.edu (Barton Willis) Date: Sun, 5 Feb 2006 19:02:53 -0600 Subject: [Maxima] linalg Message-ID: A few moments ago, I checked in some changes to linalg. I hope that these are the last major changes to the linalg code before Maxima 5.9.3. It would be a big help to me if those of you that can build maxima on Monday or later with something other than GCL would try running the following script. By the way, my code will not work under 5.9.2 -- lots of things have changed since October. ------------------------ load(linalg); mytest(file_search("test-linalg")); mytest(file_search("test-lu")); mytest(file_search("test-cholesky")); mytest(file_search("test-eigens-by-jacobi")); mytest(file_search("test-polynomialp")); compile_file(file_search("linalg")); compile_file(file_search("linalg-utilities")); compile_file(file_search("lu")); compile_file(file_search("linalgcholesky")); compile_file(file_search("eigens-by-jacobi")); ------------------------------- The output of the tests should look like: (%i8) batch("C:/maximacvs/maxima/share/linearalgebra/test.mac"); batching #pC:/maximacvs/maxima/share/linearalgebra/test.mac (%i9) load(linalg) (%o9) c:/maximacvs/maxima/share/linearalgebra/linalg.mac (%i10) mytest(file_search(test-linalg)) 189/189 tests passed. (%o10) [] (%i11) mytest(file_search(test-lu)) 48/48 tests passed. (%o11) [] (%i12) mytest(file_search(test-cholesky)) 34/34 tests passed. (%o12) [] (%i13) mytest(file_search(test-eigens-by-jacobi)) 24/24 tests passed. (%o13) [] (%i14) mytest(file_search(test-polynomialp)) 16/16 tests passed. (%o14) [] Let me know if the compiler finds any problems (most likely, the compiler will complain that listp and matrixp have too many arguments). Barton From dp2 at cise.ufl.edu Sun Feb 5 19:25:44 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Sun, 5 Feb 2006 20:25:44 -0500 (EST) Subject: [Maxima] How to do defmatch without using matchdeclare? defmatch(anyname, x(i, l)*x(j, k))$ anyname(x(a,b)*x(c,d)) returns false always Message-ID: <61743.70.171.54.119.1139189144.squirrel@webmail.cise.ufl.edu> Hi all, Thanks for the previous answers. I am stuck into the following: I ran: defmatch(anyname,x(i, l)*x(j, k))$ anyname(x(a,b)*x(c,d)); but it always return false unless I do: matchdeclare(i,freeof(x),j,freeof(x),k,freeof(x),l,freeof(x)); Any suggestions for using defmatch without going into the hassle of matchdeclare. Or any short cut for doing the following scenario: Lets say given: x(i, l)*x(j, k) = r(l)s(k) I want to replace x(a,b)*x(c,d) in a equation with r(b)s(d) by substituting l=b and k=d. Dileep From vvzhy at mail.ru Sun Feb 5 22:48:44 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Mon, 06 Feb 2006 07:48:44 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <1139180006.10777.27.camel@localhost.localdomain> References: <43E50F28.4080409@mail.ru> <1139170050.8324.9.camel@localhost.localdomain> <43E662CA.6010809@mail.ru> <1139180006.10777.27.camel@localhost.localdomain> Message-ID: <43E6D52C.9090207@mail.ru> Mario Rodriguez writes: > > I re-built Maxima with clisp and cmucl. With clisp 'describe' only gives > the English help (I tried both --enable-lang-es and > --enable-lang-es-utf8) > > With cmucl (also with --enable-lang-es and --enable-lang-es-utf8), the > info given by 'describe' is incomplete; for example: > > > > (%i1) ? cos /* see: no description for trigonometric cos */ > 0: (maxima.info)Gr??ficos. > 1: Definiciones para Gr??ficos. > 2: M??todos num??ricos. > 3: Introducci??n a los m??todos num??ricos. > 4: Definiciones para los m??todos num??ricos. > > > (%i2) ? algsys > (%o2) false > Please try the following ./configure --enable-lang-es --enable-lang-es-utf8 LANG=C make LANG=C make install What is your locale? What is the output of > locale command ? Please check value of lisp variable *maxima-lang-subdir* right after Maxima start: (%i1) :lisp *maxima-lang-subdir* Make sure that *.info get installed correctly. What is the contents of installation /info/es and /info/es.utf8 directories -- Vadim V. Zhytnikov From robert.dodier at gmail.com Sun Feb 5 23:30:25 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 5 Feb 2006 22:30:25 -0700 Subject: [Maxima] How to do defmatch without using matchdeclare? defmatch(anyname, x(i, l)*x(j, k))$ anyname(x(a,b)*x(c,d)) returns false always In-Reply-To: <61743.70.171.54.119.1139189144.squirrel@webmail.cise.ufl.edu> References: <61743.70.171.54.119.1139189144.squirrel@webmail.cise.ufl.edu> Message-ID: Hi Dileep, >From what you describe here, it sounds like what you want is defrule and not defmatch. > Lets say given: x(i, l)*x(j, k) = r(l)s(k) > I want to replace x(a,b)*x(c,d) in a equation with r(b)s(d) by > substituting l=b and k=d. Here's what I get. I'm assuming x is literally the name of the function in question. matchdeclare ([a, b, c, d, e], all); defrule (myrule, x(a,b)*x(c,d)*e, r(b)*s(d)*e); apply1 (x(i, l)*x(j, k), myrule); => r(k)*s(l) apply1 (23*x(i+1,j-1)*x(m/2, n/2)/%pi, myrule); => 23*s(j-1)*r(n/2)/%pi apply1 (sin (x(i,3)*y(i,3)*x(7,j)), myrule); => sin(r(3)*y(i,3)*s(j)) There seems to be ambiguity in the way you've stated the substitution --- x(a,b)*x(c,d) goes to r(b)s(d), so x(c,d)*x(a,b) goes to r(d)s(b) -- can we be sure r(d)s(b) is the same as r(b)s(d) ? hth Robert Dodier From fateman at cs.berkeley.edu Sun Feb 5 23:32:10 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sun, 5 Feb 2006 21:32:10 -0800 Subject: [Maxima] Factoring large integers References: <020520062209.2878.43E6779500024F6F00000B3E2160376316080C9C05010608@att.net> Message-ID: <00db01c62ade$ae757f40$15d09888@windsor> ----- Original Message ----- From: > What is wrong with pointing out > that a certain function in package A is slower than in package B? There is nothing wrong with this; however, there is nothing wrong with saying "It is probably not relevant" :) Usually, the programmers of package A would like to find out how B does it better, and try to improve their program if that can be done without other disadvantages. Only if the programmers consider it worth their time. > >> > > Derive 4 is a very old package, written primarily for pedagogical > purposes. I would have expected the much more sophisticated Maxima to be > simply more efficient. This would seem to make sense, except that Derive and Macsyma also have different objectives. Sometimes Deriv is faster, and even gets "more correct" answers. Sometimes it is quite unable to do something that Macsyma can do. It depends on what the Derive authors had in mind to include and to exclude from that package. That its performance should be critically dependent on the Lisp dialect used surprises me very much; after all, some running times differed dramatically between the Maxima and Derive. The times between Lisp implementations can vary dramatically; even the same "brand" can become twice as fast from one version to another, depending on how much effort was spent in improving some part of the compiler. > > If that is indeed the case, including some specifics about which Lisp > dialect does what better > in a README for Maxima file would be worthwhile. This would be difficult to predict, though my guess is ... generally CMU-CL and its descendants are faster for numerical computation, and CLISP is smaller but perhaps somewhat slower. Perhaps others on this mailing list have experience to offer. RJF From robert.dodier at gmail.com Mon Feb 6 00:30:38 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 5 Feb 2006 23:30:38 -0700 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <43E6D52C.9090207@mail.ru> References: <43E50F28.4080409@mail.ru> <1139170050.8324.9.camel@localhost.localdomain> <43E662CA.6010809@mail.ru> <1139180006.10777.27.camel@localhost.localdomain> <43E6D52C.9090207@mail.ru> Message-ID: Hi Vadim, > Please try the following > ./configure --enable-lang-es --enable-lang-es-utf8 > LANG=C make > LANG=C make install I find that make is successful. make install appears to get most of the way through the installation and then fails with this: /usr/bin/install -c -m 644 ./maxima_toc.html /usr/local/share/maxima/5.9.2.24cvs/doc/html/es/maxima_toc.html test -z "/usr/local/info/es" || "/usr/local/info/es" /bin/sh: line 1: /usr/local/info/es: No such file or directory make[4]: *** [install-info-am] Error 127 If I do sudo mkdir /usr/local/info/es and run make install again, it fails with /usr/bin/install -c -m 644 ./maxima_toc.html /usr/local/share/maxima/5.9.2.24cvs/doc/html/es/maxima_toc.html test -z "/usr/local/info/es" || "/usr/local/info/es" /bin/sh: line 1: /usr/local/info/es: is a directory make[4]: *** [install-info-am] Error 126 Sorry I can't be more helpful, Robert From robert.dodier at gmail.com Mon Feb 6 10:11:53 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 6 Feb 2006 09:11:53 -0700 Subject: [Maxima] linalg In-Reply-To: References: Message-ID: hi barton, thanks for working on the linear algebra code. i think it is very valuable. with gcl and clisp, i find that load(linalg) succeeds and the test scripts report no errors. sbcl barfs when attempting to load lu.lisp. dunno what the story is there. with gcl and clisp, compile_file succeeds although there are warnings about wrong number of arguments for listp and matrixp. when the test scripts are then executed, there are 12 errors in the test-linalg script. although no errors are reported by the other test scripts. hth robert dodier From sangwinc at for.mat.bham.ac.uk Mon Feb 6 10:19:01 2006 From: sangwinc at for.mat.bham.ac.uk (Chris Sangwin) Date: Mon, 6 Feb 2006 16:19:01 +0000 (GMT) Subject: [Maxima] nset: setequality Message-ID: Dear list, I think I have found a bug in the nset package. For example, kill("all"); load("nset"); a:set(1,2)$ b:set(2,1)$ setequality(a,b); returns unevaluated. This last function is documented, but is not defined. I think this is a bug. A work-around is to define setequality(a,b):= (subsetp(a,b) and subsetp(b,a)); but this has no error trapping. Chris From David.Ronis at mcgill.ca Mon Feb 6 10:20:59 2006 From: David.Ronis at mcgill.ca (David Ronis) Date: Mon, 06 Feb 2006 11:20:59 -0500 Subject: [Maxima] Is something broken? Message-ID: <1139242859.7986.4.camel@montroll.chem.mcgill.ca> I'm using the CVS version of maxima on an i686-linux-gnu box. I run the script: trigexpandplus:true,expand,all; trigexpandtimes:true,expand,all; trigexpand:true,expand,all; g(x,t,x0):=sqrt(w/(2*%pi*sinh(w*t))) *exp(-w/(2*sinh(w*t))*((x**2+x0**2)*cosh(w*t)-2*x*x0)); a:integrate(g(x1,t,x0)*x1**2*g(x0,b-t,x1),x1,minf,inf); b:integrate(g(x1,t,x0)*g(x0,b-t,x1),x1,minf,inf); c:trigsimp(a/b); ev(%,x0=0); Everything looks like it works, however, x0 remains in the final expression, even though the ev should have made it zero. In addition I still see sinh's of additive arguments, e.g., sinh((b-t)w). David From fateman at cs.berkeley.edu Mon Feb 6 10:31:19 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Mon, 6 Feb 2006 08:31:19 -0800 Subject: quad double arithmetic; was Re: [Maxima] linalg References: Message-ID: <015b01c62b3a$c441ec30$15d09888@windsor> I have now working, in a fairly direct fashion, arithmetic for dd and qd float formats. dd = double double, twice the fraction size qd = quad double 4 times the fraction size (approx. 64 decimal digits) It might be neat to make this part of maxima, and show some demos where extra-length accumulation makes a difference. There is software under development to do this using C++, Fortran, etc, but this is for lisp. The source code is open, and compiles under linux etc. I compiled it under Windows (visual studio), for a windows dll, which is on my directory under www.cs.berkeley.edu/~fateman/generic along with other code. (In addition to arithmetic, there's also sin/cos/log/etc) If anyone out there is interested, contact me. I have one student here at Berkeley looking at a term project; his part would probably not involve Maxima per se, just some lisp interface, perfected. I wrote the interface in ff for Allegro, but uffi should work for any other lisp. For more info on qd, look at the home page of Yozo Hida. Please do keep in touch though! Oh, why qd and dd when bigfloat or gmpf or gmpfr does it too? Speed. Quad double is, when you think about it, lots of bits: far more than you usually have any justification for thinking are correct in any physical measurement situation. RJF From willisb at unk.edu Mon Feb 6 10:46:06 2006 From: willisb at unk.edu (Barton Willis) Date: Mon, 6 Feb 2006 10:46:06 -0600 Subject: [Maxima] nset: setequality In-Reply-To: Message-ID: > I think I have found a bug in the nset package. For example, > > kill("all"); > load("nset"); > a:set(1,2)$ > b:set(2,1)$ > setequality(a,b); > > returns unevaluated. This last function is documented, but is not > defined. I think this is a bug. A work-around is to define I think the function 'setequality' was removed from nset some time ago. It also seems that user documentation for 'setequality' has been removed. What is your build_info()? And whence your nset? To test the equality of sets, do it just as you would test the equality of any other maxima object: (%i10) a : set(1,2); (%o10) {1,2} (%i11) b : set(2,1); (%o11) {1,2} (%i12) is(a=b); (%o12) true (%i13) b : set(2,1,2,1,2,2); (%o13) {1,2} (%i14) is(a=b); (%o14) true (%i15) b : set(2,1,2,1,2,2,z); (%o15) {1,2,z} (%i16) is(a=b); (%o16) false Barton From macrakis at alum.mit.edu Mon Feb 6 10:52:47 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Mon, 6 Feb 2006 11:52:47 -0500 Subject: [Maxima] nset: setequality In-Reply-To: References: Message-ID: <8b356f880602060852g6c28c163sff5e4b1521e75d19@mail.gmail.com> ------=_Part_2505_21055958.1139244767179 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > setequality(a,b); > This must be a documentation bug somewhere (where?). The nset function is setequalp. -s ------=_Part_2505_21055958.1139244767179 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
setequality(= a,b);

This must be a documentation bug somewhere = (where?).  The nset function is setequalp.

           -s
=
------=_Part_2505_21055958.1139244767179-- From macrakis at alum.mit.edu Mon Feb 6 11:03:46 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Mon, 6 Feb 2006 12:03:46 -0500 Subject: [Maxima] Is something broken? In-Reply-To: <1139242859.7986.4.camel@montroll.chem.mcgill.ca> References: <1139242859.7986.4.camel@montroll.chem.mcgill.ca> Message-ID: <8b356f880602060903x2aead7bet667ddcbfdaa24f8a@mail.gmail.com> ------=_Part_2601_28411338.1139245426949 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Without looking at your problem closely, I see a couple of superficial problems: > trigexpandplus:true,expand,all; > trigexpandtimes:true,expand,all; > trigexpand:true,expand,all; What are you trying to do here? These have the same effect as trigexpandplus:true; trigexpandtimes:true; trigexpand:true; The "expand,all" part has no effect. g(x,t,x0):=3Dsqrt(w/(2*%pi*sinh(w*t))) > *exp(-w/(2*sinh(w*t))*((x**2+x0**2)*cosh(w*t)-2*x*x0)); > > a:integrate(g(x1,t,x0)*x1**2*g(x0,b-t,x1),x1,minf,inf); > b:integrate(g(x1,t,x0)*g(x0,b-t,x1),x1,minf,inf); > c:trigsimp(a/b); > ev(%,x0=3D0); > You seem to be using "b" both as the name of a parameter and as an intermediate result in your calculation. I doubt that this is what you intend. In particular, it has the effect in the ev(...) expression of RE-EVALUATING b and substituting it back into the expression. Try the same thing with inta: integrate... intb: integrate... quo: trigsimp(inta/intb); and instead of ev, it is generally a better idea to use subst: subst(0,x0,quo); ------=_Part_2601_28411338.1139245426949 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Without looking at your problem closely, I see a couple of superficial prob= lems:
tri= gexpandplus:true,expand,all;
trigexpandtimes:true,expand,all;
trigexpand:true,expand,all;

What are you trying to do here?  These have the same eff= ect as

       trigexpandplus:true;
=        trigexpandtimes:true;
       trigexpand:true;

The "expa= nd,all" part has no effect.

g(x,t,x0):=3Dsqrt(w/(2*%pi*sinh(w*t)))
          *exp(-w/(2*= sinh(w*t))*((x**2+x0**2)*cosh(w*t)-2*x*x0));

a:integrate(g(x1,t,x0)*= x1**2*g(x0,b-t,x1),x1,minf,inf);
b:integrate(g(x1,t,x0)*g(x0,b-t,x1),x1,= minf,inf);
c:trigsimp(a/b);
ev(%,x0=3D0);

You seem to be using "b" both as the name = of a parameter and as an intermediate result in your calculation.  I d= oubt that this is what you intend.

In particular, it has the effect = in the ev(...) expression of RE-EVALUATING b and substituting it back into = the expression.

Try the same thing with

inta: integrate...
intb: integrat= e...
quo: trigsimp(inta/intb);

and instead of ev, it is generally= a better idea to use subst:

subst(0,x0,quo);

------=_Part_2601_28411338.1139245426949-- From fateman at cs.berkeley.edu Mon Feb 6 11:29:34 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Mon, 06 Feb 2006 09:29:34 -0800 Subject: [Maxima] Solving a Transformation Matrix In-Reply-To: References: Message-ID: <43E7877E.7040402@cs.berkeley.edu> From the Macsyma manual... Is this related? USAGE FILE FOR PACKAGE `TRAN_MAT' TRAN_MAT is a MACSYMA file which implements an algorithm for the determination of the transfer function matrix (TFM) of a linear multivariable time-independent system described by state-space equations. Consult the reference at the end of this file for a description of the algorithm, and consult the demo file for some examples. .... snip..... REFERENCE R.J. Perry, H.H. Sun, and W.A. Berger, "Determination of a Transfer Function Matrix in Multivariable Systems", IEEE Transactions on Automatic Control, Vol. 33, No. 3, March 1988. From dp2 at cise.ufl.edu Mon Feb 6 12:27:42 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Mon, 6 Feb 2006 13:27:42 -0500 (EST) Subject: [Maxima] How to do defmatch without using matchdeclare? defmatch(anyname, x(i, l)*x(j, k))$ anyname(x(a,b)*x(c, d)) returns false always In-Reply-To: References: <61743.70.171.54.119.1139189144.squirrel@webmail.cise.ufl.edu> Message-ID: <7114.10.228.8.88.1139250462.squirrel@webmail.cise.ufl.edu> Thanks Robert, There is small glitch I am facing. If I am passing a variable containing list to the matchdeclare, the rule doesnt work. e.g. tmplist: [a, b, c, d, e]; matchdeclare (tmplist, all); ..... Please tell me any way to pass the list to matchdeclare, as the list is dynamic in the program. regards Dileep > Hi Dileep, > > > From what you describe here, it sounds like what you > want is defrule and not defmatch. > >> Lets say given: x(i, l)*x(j, k) = r(l)s(k) >> I want to replace x(a,b)*x(c,d) in a equation with r(b)s(d) by >> substituting l=b and k=d. > > Here's what I get. I'm assuming x is literally the name of > the function in question. > > matchdeclare ([a, b, c, d, e], all); defrule (myrule, x(a,b)*x(c,d)*e, > r(b)*s(d)*e); > > apply1 (x(i, l)*x(j, k), myrule); => r(k)*s(l) apply1 > (23*x(i+1,j-1)*x(m/2, n/2)/%pi, myrule); => 23*s(j-1)*r(n/2)/%pi > apply1 (sin (x(i,3)*y(i,3)*x(7,j)), myrule); => sin(r(3)*y(i,3)*s(j)) > > There seems to be ambiguity in the way you've stated the > substitution --- x(a,b)*x(c,d) goes to r(b)s(d), so x(c,d)*x(a,b) goes to > r(d)s(b) -- can we be sure r(d)s(b) is the same as r(b)s(d) ? > > hth Robert Dodier > > > From robert.dodier at gmail.com Mon Feb 6 12:38:48 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 6 Feb 2006 11:38:48 -0700 Subject: [Maxima] How to do defmatch without using matchdeclare? defmatch(anyname, x(i, l)*x(j, k))$ anyname(x(a,b)*x(c, d)) returns false always In-Reply-To: <7114.10.228.8.88.1139250462.squirrel@webmail.cise.ufl.edu> References: <61743.70.171.54.119.1139189144.squirrel@webmail.cise.ufl.edu> <7114.10.228.8.88.1139250462.squirrel@webmail.cise.ufl.edu> Message-ID: On 2/6/06, dp2 at cise.ufl.edu wrote: > There is small glitch I am facing. If I am passing a variable containing > list to the matchdeclare, the rule doesnt work. > e.g. > tmplist: [a, b, c, d, e]; > matchdeclare (tmplist, all); there is a way to make that happen, but from what i can tell it would not actually help, so i'll leave it aside. maybe you can explain a little more about what you're trying to do and what you've already tried that doesn't work. best, robert From fateman at cs.berkeley.edu Mon Feb 6 12:45:41 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Mon, 06 Feb 2006 10:45:41 -0800 Subject: [Maxima] How to do defmatch without using matchdeclare? defmatch(anyname, x(i, l)*x(j, k))$ anyname(x(a,b)*x(c, d)) returns false always In-Reply-To: <7114.10.228.8.88.1139250462.squirrel@webmail.cise.ufl.edu> References: <61743.70.171.54.119.1139189144.squirrel@webmail.cise.ufl.edu> <7114.10.228.8.88.1139250462.squirrel@webmail.cise.ufl.edu> Message-ID: <43E79955.7060309@cs.berkeley.edu> try apply(matchdeclare, [tmplist,all] ); be sure to have the [] there. dp2 at cise.ufl.edu wrote: >Thanks Robert, >There is small glitch I am facing. If I am passing a variable containing >list to the matchdeclare, the rule doesnt work. >e.g. >tmplist: [a, b, c, d, e]; >matchdeclare (tmplist, all); >..... > > > > From David.Ronis at mcgill.ca Mon Feb 6 12:57:37 2006 From: David.Ronis at mcgill.ca (David Ronis) Date: Mon, 06 Feb 2006 13:57:37 -0500 Subject: [Maxima] Is something broken? In-Reply-To: <8b356f880602060903x2aead7bet667ddcbfdaa24f8a@mail.gmail.com> References: <1139242859.7986.4.camel@montroll.chem.mcgill.ca> <8b356f880602060903x2aead7bet667ddcbfdaa24f8a@mail.gmail.com> Message-ID: <1139252257.8949.7.camel@montroll.chem.mcgill.ca> Thanks for the reply. I've replied in context below. On Mon, 2006-02-06 at 12:03 -0500, Stavros Macrakis wrote: > Without looking at your problem closely, I see a couple of superficial > problems: > trigexpandplus:true,expand,all; > trigexpandtimes:true,expand,all; > trigexpand:true,expand,all; > > What are you trying to do here? These have the same effect as > > trigexpandplus:true; > trigexpandtimes:true; > trigexpand:true; > > The "expand,all" part has no effect. I'd seen some of these in the info documentation examples; as you say they have no effect (and AFAIK "true" is the default for some of these anyhow). I've removed the extra stuff. > > g(x,t,x0):=sqrt(w/(2*%pi*sinh(w*t))) > *exp(-w/(2*sinh(w*t))*((x**2 > +x0**2)*cosh(w*t)-2*x*x0)); > > a:integrate(g(x1,t,x0)*x1**2*g(x0,b-t,x1),x1,minf,inf); > b:integrate(g(x1,t,x0)*g(x0,b-t,x1),x1,minf,inf); > c:trigsimp(a/b); > ev(%,x0=0); > > You seem to be using "b" both as the name of a parameter and as an > intermediate result in your calculation. I doubt that this is what > you intend. > > In particular, it has the effect in the ev(...) expression of > RE-EVALUATING b and substituting it back into the expression. > Oops. You're quite right. I have changed the b:integrate... as you suggested and now I get: trigsimp(%o11); sinh((b - t) w) sinh(t w) (%o13) --------------------------------------------------------- w cosh((b - t) w) sinh(t w) + w sinh((b - t) w) cosh(t w) The numerator is what I want; however, the denomenator will simplify to w sinh (b w) if the cosh((b - t)w) and sinh((b -t)w) factors are expanded. David From biomates at telefonica.net Mon Feb 6 13:46:19 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Mon, 06 Feb 2006 20:46:19 +0100 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <43E6D52C.9090207@mail.ru> References: <43E50F28.4080409@mail.ru> <1139170050.8324.9.camel@localhost.localdomain> <43E662CA.6010809@mail.ru> <1139180006.10777.27.camel@localhost.localdomain> <43E6D52C.9090207@mail.ru> Message-ID: <1139255179.15500.20.camel@localhost.localdomain> Hi Vadim, sorry for my late reply. > Please try the following > ./configure --enable-lang-es --enable-lang-es-utf8 > LANG=C make > LANG=C make install > I've just built maxima with ./configure --enable-cmucl --enable-lang-es --enable-lang-es-utf8 LANG=C make sudo LANG=C make install After that: Maxima 5.9.2.19cvs http://maxima.sourceforge.net Using Lisp CMU Common Lisp CVS release-19a 19a-release-20040728 + minimal debian patches Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. This is a development version of Maxima. The function bug_report() provides bug reporting information. (%i1) :lisp *maxima-lang-subdir* es.utf8 (%i1) ? solve 0: (solve_rec.info)Introduction to solve_rec. 1: Definitions for solve_rec. 2: solve_rec :Definitions for solve_rec. 3: solve_rec_rat :Definitions for solve_rec. Enter space-separated numbers, `all' or `none': n You see, it gives back info from the 'share' section, which is not yet translated. And there is no info about function 'solve'. Now I change the directory: (%i2) :lisp (setf *maxima-lang-subdir* "es") es (%i2) ? solve 0: desolve :(maxima.info)Definiciones para Ecuaciones Diferenciales. 1: fast_linsolve :Definiciones para Afines. 2: funcsolve :Definiciones para Ecuaciones. 3: globalsolve :Definiciones para Ecuaciones. 4: linsolve :Definiciones para Ecuaciones. 5: linsolve_params :Definiciones para Ecuaciones. 6: linsolvewarn :Definiciones para Ecuaciones. 7: solve :Definiciones para Ecuaciones. 8: solve_inconsistent_error :Definiciones para Ecuaciones. 9: solvedecomposes :Definiciones para Ecuaciones. 10: solveexplicit :Definiciones para Ecuaciones. 11: solvefactors :Definiciones para Ecuaciones. 12: solvenullwarn :Definiciones para Ecuaciones. 13: solveradcan :Definiciones para Ecuaciones. 14: solvetrigwarn :Definiciones para Ecuaciones. 15: (solve_rec.info)Introduction to solve_rec. 16: Definitions for solve_rec. 17: solve_rec :Definitions for solve_rec. 18: solve_rec_rat :Definitions for solve_rec. But when I select one of these options I see the Spanish text with accented letter substituted by rectangles. > What is your locale? What is the output of > > locale > command ? > $ locale LANG=es_ES.UTF-8 LC_CTYPE="es_ES.UTF-8" LC_NUMERIC="es_ES.UTF-8" LC_TIME="es_ES.UTF-8" LC_COLLATE="es_ES.UTF-8" LC_MONETARY="es_ES.UTF-8" LC_MESSAGES="es_ES.UTF-8" LC_PAPER="es_ES.UTF-8" LC_NAME="es_ES.UTF-8" LC_ADDRESS="es_ES.UTF-8" LC_TELEPHONE="es_ES.UTF-8" LC_MEASUREMENT="es_ES.UTF-8" LC_IDENTIFICATION="es_ES.UTF-8" LC_ALL= > Make sure that *.info get installed correctly. > What is the contents of installation > /info/es > and > /info/es.utf8 > directories They seem to be ok: $ ls /usr/local/info/es maxima.info maxima.info-1 maxima.info-2 maxima.info-3 maxima.info-4 maxima.info-5 $ ls /usr/local/info/es.utf8 maxima.info maxima.info-1 maxima.info-2 maxima.info-3 maxima.info-4 maxima.info-5 and $ ls /usr/local/info contrib.info es maxima.info maxima.info-3 numericalio.info simplex.info stringproc.info descriptive.info es.utf8 maxima.info-1 maxima.info-4 orthopoly.info simplification.info distrib.info linearalgebra.info maxima.info-2 maxima.info-5 pt.utf8 solve_rec.info See that folder pt.utf8 was also created. Shall I check anything else ? -- Mario Rodriguez Riotorto www.biomates.net From vvzhy at mail.ru Mon Feb 6 13:47:01 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Mon, 06 Feb 2006 22:47:01 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: References: <43E50F28.4080409@mail.ru> <1139170050.8324.9.camel@localhost.localdomain> <43E662CA.6010809@mail.ru> <1139180006.10777.27.camel@localhost.localdomain> <43E6D52C.9090207@mail.ru> Message-ID: <43E7A7B5.1040707@mail.ru> Robert Dodier writes: >> Please try the following >> ./configure --enable-lang-es --enable-lang-es-utf8 >> LANG=C make >> LANG=C make install > > I find that make is successful. make install appears to > get most of the way through the installation and then fails with this: > > /usr/bin/install -c -m 644 ./maxima_toc.html > /usr/local/share/maxima/5.9.2.24cvs/doc/html/es/maxima_toc.html > test -z "/usr/local/info/es" || "/usr/local/info/es" > /bin/sh: line 1: /usr/local/info/es: No such file or directory > make[4]: *** [install-info-am] Error 127 > > If I do sudo mkdir /usr/local/info/es and run make install again, > it fails with > > /usr/bin/install -c -m 644 ./maxima_toc.html > /usr/local/share/maxima/5.9.2.24cvs/doc/html/es/maxima_toc.html > test -z "/usr/local/info/es" || "/usr/local/info/es" > /bin/sh: line 1: /usr/local/info/es: is a directory > make[4]: *** [install-info-am] Error 126 > Probably it is good idea to to make test installation somewhere in your home directory. Something like ./configure --prefix=/home/robert/maxima-test --enable-lang-es -enable-lang-es-utf8 Replace /home/robert/maxima-test by any directory for which you have full write access. Hope this helps. Best wishes, Vadim -- Vadim V. Zhytnikov From macrakis at alum.mit.edu Mon Feb 6 14:02:17 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Mon, 6 Feb 2006 15:02:17 -0500 Subject: [Maxima] Is something broken? In-Reply-To: <1139252257.8949.7.camel@montroll.chem.mcgill.ca> References: <1139242859.7986.4.camel@montroll.chem.mcgill.ca> <8b356f880602060903x2aead7bet667ddcbfdaa24f8a@mail.gmail.com> <1139252257.8949.7.camel@montroll.chem.mcgill.ca> Message-ID: <8b356f880602061202o79d36e25r974a52868c3ab0d4@mail.gmail.com> ------=_Part_5537_28103918.1139256137768 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > ... now I get: > > trigsimp(%o11); > sinh((b - t) w) sinh(t w) > (%o13) --------------------------------------------------------- > w cosh((b - t) w) sinh(t w) + w sinh((b - t) w) cosh(t w) > > The numerator is what I want; however, the denomenator will simplify to > w sinh (b w) if the cosh((b - t)w) and sinh((b -t)w) factors are > expanded. > Call that expression ex. You can simplify it using trigsimp(trigreduce(ex)= ) or factor(trigreduce(ex)), which give slight variants of the result. ------=_Part_5537_28103918.1139256137768 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
... now I ge= t:

trigsimp(%o11);
       &nb= sp;            =        sinh((b - t) w) sinh(t w)
(%o13)     ----------------------------------------= -----------------
         =   w cosh((b - t) w) sinh(t w) + w sinh((b - t) w) cosh(t w)

The= numerator is what I want; however, the denomenator will simplify to
w sinh (b w) if the cosh((b - t)w) and sinh((b -t)w) factors are
exp= anded.

Call that expression ex.  You can sim= plify it using trigsimp(trigreduce(ex)) or factor(trigreduce(ex)), which gi= ve slight variants of the result.
------=_Part_5537_28103918.1139256137768-- From vvzhy at mail.ru Mon Feb 6 14:05:45 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Mon, 06 Feb 2006 23:05:45 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <43E667D8.1060000@mail.ru> References: <43E50F28.4080409@mail.ru> <1139104017.8059.34.camel@localhost.localdomain> <43E5E700.7030207@mail.ru> <1139167656.8324.2.camel@localhost.localdomain> <43E667D8.1060000@mail.ru> Message-ID: <43E7AC19.7010702@mail.ru> Vadim V. Zhytnikov write: > The problem is not with source *.texi files. All *.texi in ISO-8859-1 > and UTF-8 are identical (except for a few characters, what are these?). > This is property of all Latin-1 aka ISO-8859-1 languages (almost all > European languages). This is how UTF-8 is designed - text files in > ISO-8859-1 and UTF-8 should coincide. Try converting with iconv and see > for yourself. Please, ignore this. This was my old delusion which I've just demystified for myself. In fact ISO-8859-1 -> UTF-8 transformation is idempotent only for upper part of ISO-8859-1 codepage which comprise only 26 standard Latin characters (aka ASCII table). Lower part containing various accented character is different ISO-8859-1 and UTF-8. Sorry for any unintentional deceit, Vadim -- Vadim V. Zhytnikov From willisb at unk.edu Mon Feb 6 14:11:14 2006 From: willisb at unk.edu (Barton Willis) Date: Mon, 6 Feb 2006 14:11:14 -0600 Subject: quad double arithmetic; was Re: [Maxima] linalg In-Reply-To: <015b01c62b3a$c441ec30$15d09888@windsor> Message-ID: If somebody gets dd and qd numbers working with GCL, I'll make the linear algebra code work with these numbers. If I have CL functions for arithmetic on these numbers, the rest is supposed to be easy. I've never used uffi -- I'll need some help with that. Barton From vvzhy at mail.ru Mon Feb 6 14:54:04 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Mon, 06 Feb 2006 23:54:04 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <1139255179.15500.20.camel@localhost.localdomain> References: <43E50F28.4080409@mail.ru> <1139170050.8324.9.camel@localhost.localdomain> <43E662CA.6010809@mail.ru> <1139180006.10777.27.camel@localhost.localdomain> <43E6D52C.9090207@mail.ru> <1139255179.15500.20.camel@localhost.localdomain> Message-ID: <43E7B76C.5080102@mail.ru> Mario Rodriguez writes: > Maxima 5.9.2.19cvs http://maxima.sourceforge.net > Using Lisp CMU Common Lisp CVS release-19a 19a-release-20040728 + Ah! Now I see the problem. You are running cmucl under UTF-8 locale. But cmucl (and gcl) is not Unicode aware. And this make difference. At the moment this combination doesn't work out of the box. I'll try to fix the problem if it is possible. For time being you can ether use ISO-8859-1 locale with cmucl and gcl LANG=es_ES ./maxima -l cmucl LANG=es_ES ./maxima -l gcl (it should work well) or build Maxima with Unicode enabled lisps such as clisp or sbcl (recent releases of sbcl). -- Vadim V. Zhytnikov From dp2 at cise.ufl.edu Mon Feb 6 16:56:15 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Mon, 6 Feb 2006 17:56:15 -0500 (EST) Subject: [Maxima] How to make and apply rules dynamically? Message-ID: <7791.10.228.0.47.1139266575.squirrel@webmail.cise.ufl.edu> Hi, I am trying make rules in the program dynamically from a pre-defined list and applying all the rules one by one to the input expression. e.g. I have predefined list: [x(I,L) = r(L), x(I, L)*x(J, K)) = r(L)*d(L, K),.....] Now when there is an input expression like sum(x(t,u)*y(t),t,1,n)*sum(x(e,f)*x(g,h)*z(h),h,1,n); I need to first search from the predefined list what to apply on the expression and then make rules accordingly from them and then at the end apply all the rules made. I have been able to figure out what rule to apply from the list. I now know how to apply rule on the expression. But for handling dynamic thingie I have following problems: 1) How to define rule names dynamically. 2) How to apply rules using apply1 passing it the LIST of rules. Since we don?t know how many rules will be there. Should I use the loop to do that? Regards Dileep From biomates at telefonica.net Mon Feb 6 17:12:11 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Tue, 07 Feb 2006 00:12:11 +0100 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <43E7B76C.5080102@mail.ru> References: <43E50F28.4080409@mail.ru> <1139170050.8324.9.camel@localhost.localdomain> <43E662CA.6010809@mail.ru> <1139180006.10777.27.camel@localhost.localdomain> <43E6D52C.9090207@mail.ru> <1139255179.15500.20.camel@localhost.localdomain> <43E7B76C.5080102@mail.ru> Message-ID: <1139267531.28565.11.camel@localhost.localdomain> You've got it Vadim !! Thanks a lot. I have rebuilt with clisp and I see the special characters without any problems. I had also access to the Spanish documentation with cmucl by calling LANG=es_ES maxima but I couldn't see the special characters. Now I'll try to write the translation of the share info files. Definitely, I'll drink a glass of wine 'a la votre chante'. Best wishes. > Ah! Now I see the problem. > You are running cmucl under UTF-8 locale. > But cmucl (and gcl) is not Unicode aware. > And this make difference. At the moment > this combination doesn't work out of the box. > I'll try to fix the problem if it is possible. > For time being you can ether use > ISO-8859-1 locale with cmucl and gcl > > LANG=es_ES ./maxima -l cmucl > LANG=es_ES ./maxima -l gcl > > (it should work well) or build Maxima > with Unicode enabled lisps such as > clisp or sbcl (recent releases of sbcl). > -- Mario Rodriguez Riotorto www.biomates.net From robert.dodier at gmail.com Mon Feb 6 17:21:24 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 6 Feb 2006 16:21:24 -0700 Subject: [Maxima] Re: How to make and apply rules dynamically? In-Reply-To: <7791.10.228.0.47.1139266575.squirrel@webmail.cise.ufl.edu> References: <7791.10.228.0.47.1139266575.squirrel@webmail.cise.ufl.edu> Message-ID: On 2/6/06, dp2 at cise.ufl.edu wrote: > I am trying make rules in the program dynamically from a pre-defined list > and applying all the rules one by one to the input expression. > e.g. I have predefined list: [x(I,L) = r(L), x(I, L)*x(J, K)) = r(L)*d(L, > K),.....] > Now when there is an input expression like > sum(x(t,u)*y(t),t,1,n)*sum(x(e,f)*x(g,h)*z(h),h,1,n); I need to first > search from the predefined list what to apply on the expression and then > make rules accordingly from them and then at the end apply all the rules > made. > > I have been able to figure out what rule to apply from the list. I now > know how to apply rule on the expression. But for handling dynamic thingie > I have following problems: > 1) How to define rule names dynamically. > 2) How to apply rules using apply1 passing it the LIST of rules. Since we > don't know how many rules will be there. Should I use the loop to do that? OK, here are some answers to the questions which you've asked. (1) the concat function returns a symbol by smashing together its arguments. maybe s.t. like concat ('myrule, k); where k is an integer. or, heck, just call ?gensym(); which returns a random symbol name. (2) apply (function_name, argument_list); calls function_name after evaluating argument_list. so you can write apply (apply1, cons (expr, rule_list)); to get the effect of apply1 (expr, rule_list[1], ..., rule_list[n]); but i still wonder what you're trying to do. in particular i wonder why you're choosing rules from a list. if you call apply1 (expr, rule1, rule2, rule3); and some of the rules don't match expr, they are ignored and have no effect. hth robert dodier From dp2 at cise.ufl.edu Mon Feb 6 19:14:56 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Mon, 6 Feb 2006 20:14:56 -0500 (EST) Subject: [Maxima] Re: How to make and apply rules dynamically? In-Reply-To: References: <7791.10.228.0.47.1139266575.squirrel@webmail.cise.ufl.edu> Message-ID: <7940.10.228.0.47.1139274896.squirrel@webmail.cise.ufl.edu> Thanks alot Robert, You are right! Its better to apply all the rules altogether as there is no effect if pattern does not match. But there is one problem I am facing in this: if rule is x(I,J)*x(K,L) then it does not apply to x(i1,j1)*r(j1)*x(k1,l1). How should I deal with this? Regards Dileep > On 2/6/06, dp2 at cise.ufl.edu wrote: > > >> I am trying make rules in the program dynamically from a pre-defined >> list and applying all the rules one by one to the input expression. e.g. >> I have predefined list: [x(I,L) = r(L), x(I, L)*x(J, K)) = r(L)*d(L, >> K),.....] >> Now when there is an input expression like >> sum(x(t,u)*y(t),t,1,n)*sum(x(e,f)*x(g,h)*z(h),h,1,n); I need to first >> search from the predefined list what to apply on the expression and >> then make rules accordingly from them and then at the end apply all the >> rules made. >> >> I have been able to figure out what rule to apply from the list. I now >> know how to apply rule on the expression. But for handling dynamic >> thingie I have following problems: >> 1) How to define rule names dynamically. >> 2) How to apply rules using apply1 passing it the LIST of rules. Since >> we don't know how many rules will be there. Should I use the loop to do >> that? > > OK, here are some answers to the questions which you've asked. > > > (1) the concat function returns a symbol by smashing together > its arguments. maybe s.t. like concat ('myrule, k); where k is an integer. > or, heck, just call ?gensym(); which returns a random symbol name. > > (2) apply (function_name, argument_list); calls function_name after > evaluating argument_list. so you can write apply (apply1, cons (expr, > rule_list)); to get the effect of apply1 (expr, rule_list[1], ..., > rule_list[n]); > > but i still wonder what you're trying to do. in particular i wonder why > you're choosing rules from a list. if you call apply1 (expr, rule1, rule2, > rule3); and some of the rules don't match expr, they are ignored and have > no effect. > > hth robert dodier > > From robert.dodier at gmail.com Mon Feb 6 19:33:15 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 6 Feb 2006 18:33:15 -0700 Subject: [Maxima] Re: How to make and apply rules dynamically? In-Reply-To: <7940.10.228.0.47.1139274896.squirrel@webmail.cise.ufl.edu> References: <7791.10.228.0.47.1139266575.squirrel@webmail.cise.ufl.edu> <7940.10.228.0.47.1139274896.squirrel@webmail.cise.ufl.edu> Message-ID: hi dileep, > if rule is x(I,J)*x(K,L) > then it does not apply to x(i1,j1)*r(j1)*x(k1,l1). > How should I deal with this? not sure if you want to avoid matching x(i1,j1)*r(j1)*x(k1,l1), or if you want to match it and can't make it work ... to match it: put an extra variable in the defrule to collect multiplicative terms not matching x(a,b)*x(c,d): matchdeclare ([a, b, c, d, e], all); defrule (r1, x(a,b)*x(c,d)*e, FOO(a,b,c,d)*e); to avoid matching: put only literal x terms in defrule: (with same matchdeclare as above) defrule (r2, x(a,b)*x(c,d), FOO(a,b,c,d)); then apply1 (x(i1,j1)*r(j1)*x(k1,l1), r1); => r(j1) FOO(k1, l1, i1, j1) /* e = r(j1) here */ apply1 (x(i1,j1)*r(j1)*x(k1,l1), r2); => x(i1, j1) r(j1) x(k1, l1) /* no match here */ apply1 (x(i1,j1)*x(k1,l1), r1); => FOO(k1, l1, i1, j1) /* e = 1 here */ apply1 (x(i1,j1)*x(k1,l1), r2); => FOO(k1, l1, i1, j1) hth robert dodier From dp2 at cise.ufl.edu Mon Feb 6 19:33:37 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Mon, 6 Feb 2006 20:33:37 -0500 (EST) Subject: [Maxima] How to define rules for variables randomly created by implicit simplification of Maxima? e.g. rule for sum(x(i1,j1),x,1,n)^2 Message-ID: <7960.10.228.0.47.1139276017.squirrel@webmail.cise.ufl.edu> Hi all, If you define the square of the sum, Maxima simplifies in the following way: eq2:sum(x(i1,j1),x,1,n)^2; n n ==== ==== \ \ (%o54) > > i15(i1, j1) i16(i1, j1) / / ==== ==== i15 = 1 i16 = 1 Now how do I apply rule which I was defined for x(I,J)*x(K,L); since x is now changed to something else. Regards Dileep From macrakis at alum.mit.edu Mon Feb 6 21:13:14 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Mon, 6 Feb 2006 22:13:14 -0500 Subject: [Maxima] How to define rules for variables randomly created by implicit simplification of Maxima? e.g. rule for sum(x(i1,j1),x,1,n)^2 In-Reply-To: <7960.10.228.0.47.1139276017.squirrel@webmail.cise.ufl.edu> References: <7960.10.228.0.47.1139276017.squirrel@webmail.cise.ufl.edu> Message-ID: <8b356f880602061913l6dcf7d31q28c06776a83c46a5@mail.gmail.com> ------=_Part_10376_30561732.1139281994596 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On 2/6/06, dp2 at cise.ufl.edu wrote: > > Hi all, > If you define the square of the sum, Maxima simplifies in the following > way: > eq2:sum(x(i1,j1),x,1,n)^2; > I'm not sure what you intended to write here, but surely not this. The index "x" runs from 1 to n and you are trying to subscript it? What would 1(i1,j1) mean? ------=_Part_10376_30561732.1139281994596 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline

On 2/6/06, dp2 at cise.ufl.edu <dp2 at cise.ufl.edu> wrote: Hi all,
If you define the square of the sum, Maxima simplifies in the fo= llowing way:
eq2:sum(x(i1,j1),x,1,n)^2;

I'm no= t sure what you intended to write here, but surely not this.  The inde= x "x" runs from 1 to n and you are trying to subscript it?  = What would 1(i1,j1) mean?
------=_Part_10376_30561732.1139281994596-- From vvzhy at mail.ru Mon Feb 6 22:52:22 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Tue, 07 Feb 2006 07:52:22 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <1139267531.28565.11.camel@localhost.localdomain> References: <43E50F28.4080409@mail.ru> <1139170050.8324.9.camel@localhost.localdomain> <43E662CA.6010809@mail.ru> <1139180006.10777.27.camel@localhost.localdomain> <43E6D52C.9090207@mail.ru> <1139255179.15500.20.camel@localhost.localdomain> <43E7B76C.5080102@mail.ru> <1139267531.28565.11.camel@localhost.localdomain> Message-ID: <43E82786.1020101@mail.ru> Mario Rodriguez writes: > > I had also access to the Spanish documentation with cmucl by calling > LANG=es_ES maxima > > but I couldn't see the special characters. > You can't see them since font in your terminal is still UTF-8 - it doesn't match special characters in ISO-8859-1 encoding. To see everything right in this case you have to go one step dipper. Start you favorite console program with es_ES locale LANG=e_ES konsole and run maxima in this "konsole" just as ./maxima -l cmucl Here LANG=es_ES no longer requited since locale is already es_ES. Now you should see everything right. Best wishes, Vadim -- Vadim V. Zhytnikov From sangwinc at for.mat.bham.ac.uk Tue Feb 7 03:47:32 2006 From: sangwinc at for.mat.bham.ac.uk (Chris Sangwin) Date: Tue, 7 Feb 2006 09:47:32 +0000 (GMT) Subject: [Maxima] simp:false Message-ID: I have been using Maxima extensively with simp:false to prevent simplification of very simple algebraic expressions within my learning and teaching application. (1) Is it possible to perform only "steps" in the calculation. That is to say, perform only one simplification at a time? I know this will be quite complicated and probably needs a tighter specification from me to make a sensible question, but has anyone looked into this problem? (2) How would I go about writing a function which selectively simplified on some of the algebraic properties. For example, I'd like to use idempotence and write a function which matched 0*x = 0 and identities as 0+x = x 1*x = x From A.G.Grozin at inp.nsk.su Tue Feb 7 04:20:04 2006 From: A.G.Grozin at inp.nsk.su (Andrey G. Grozin) Date: Tue, 7 Feb 2006 16:20:04 +0600 (NOVT) Subject: [Maxima] Once more about *general-display-prefix* Message-ID: Hello *, Some time ago, variables *prompt-prefix*, *prompt-suffix*, etc. were introduced into maxima sources to make interfacing with external programs easier and more robust. They are used by the TeXmacs interface. By the way, are they used by other interfaces (wxmaxima, imaxima)? If so, how? If not, why? The theory about how the maxima REPL should work is following. The user writes something at the maxima prompt, terminates it with ; or $, and presses enter. Maxima writes *general-display-prefix*, then some output (maybe empty), then *prompt-prefix*, then the prompt, then *prompt-suffix*, and then waits for more user input. We can make an analogy: suppose *general-display-prefix* = [ *prompt-prefix* = ( *prompt-suffix* = )] Then the brackets should be paired correctly: [ ( )] For the current discussion, a question like "Is a positive or negative?" is considered as a prompt. Currently, maxima does not write *general-display-prefix* after such questions. This was reported as a bug 1362658, and a patch to fix it was attached. There is another (and more serious) issue: if the user writes several statements in a single line, separating them by ; or $, then *general-display-prefix* is written several times. Continuing our analogy, if the user writes, say, x:1$ y:2$ then maxima output has unbalanced brackets: [ [ ( )] The TeXmacs interface hangs: it waits for one more ] which never arrives. It seems that the function call which writes *general-display-prefix* in macsys.lisp is actually situated in a wrong place. I'd be grateful if anybody more familiar with maxima input-output functions could advice me about fixing this problem. Best wishes, Andrey From caruso at posso.dm.unipi.it Tue Feb 7 08:48:27 2006 From: caruso at posso.dm.unipi.it (Fabrizio Caruso) Date: Tue, 7 Feb 2006 15:48:27 +0100 (CET) Subject: [Maxima] points & lines with plot2d Message-ID: Hi I am still struggling with plot2d and I haven't been able to find a way to draw isolated points and segments of lines in the same window. I have read the documentation available in Maxima but it did not show any way to do this. Is there a way to do it? For example if I use plot2d([[discrete,[[0,0],[1,1]]],[discrete,[[1,0],[0,1]]]],[gnuplot_curve_styles,["with lines 2"],["with points 3"]]); gnuplot only prints lines and no isolated points. Thanks in advance Fabrizio From macrakis at alum.mit.edu Tue Feb 7 08:46:29 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Tue, 7 Feb 2006 09:46:29 -0500 Subject: [Maxima] simp:false In-Reply-To: References: Message-ID: <8b356f880602070646k2dd56807t7da2f4f07a6b54b3@mail.gmail.com> ------=_Part_15274_16697511.1139323589836 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > (1) Is it possible to perform only "steps" in the calculation. That > is to say, perform only one simplification at a time? The simplest way is probably using Box'es to isolate subexpressions from th= e simplifier, e.g. box(2*x)+box(3*x) does not simplify. Take a look at the whole series of box functions. Another way is to turn off simp and try to fool the simplifier into believing some things are already simplified when you turn it back on. But this has problems. ------------------------- ;; Forces an expression to be treated as simplified -- use with simp:false (defun $deemsimp (x) (cond ((atom x) x) ((memq 'simp (car x)) x) (t (cons (append (car x) '(simp)) (cdr x))))) /* Auxiliary conveniences */ inop(ex):=3Dblock([inflag:true],op(ex)); inargs(ex):=3Dblock([inflag:true],args(ex)); /* Main function */ onelevelsimp(expr):=3D if atom(expr) then expr else block([op:inop(expr), args:map(deemsimp,inargs(expr)), simp:true], apply(op,args)); However, the simplifier depends on subexpressions which have been marked as simplified to be in a standardized form, and so will not give correct results in some cases: simp:false$ sx2:deemsimp(x*2)$ simp:true$ 2*x - sx2 =3D> 2*x !!!! ------------------------------------ (2) How would I go about writing a function which selectively > simplified on some of the algebraic properties. For example, I'd > like to use idempotence and write a function which matched > > 0*x =3D 0 > > and identities as > > 0+x =3D x > 1*x =3D x > Presumably you'd use the pattern matching system, but I believe it depends on the simplifer to drive it. ----------------------- I think the best solution is to define your own series of non-simplifying operators, e.g. infix("***")$ infix("+++")$ etc. and define pattern matching simplifications on them. When you want to use the standard simplifier, swap out the non-standard for the standard operators. Good luck! -s ------=_Part_15274_16697511.1139323589836 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
(1) Is it po= ssible to perform only "steps" in the calculation.  Tha= t
is to say, perform only one simplification at a time?

The simplest way is probably using Box'es to isolate = subexpressions from the simplifier, e.g.

    &nb= sp;      box(2*x)+box(3*x)

does not simplif= y.  Take a look at the whole series of box functions.

Another way is to turn off simp and try to fool the simplifier into= believing some things are already simplified when you turn it back on.&nbs= p; But this has problems.
-------------------------

;; Forces an = expression to be treated as simplified -- use with simp:false
(defun $deemsimp (x)
    (cond ((atom x) x)
 =             &nb= sp; ((memq 'simp (car x)) x)
       =         (t (cons (append (car x) '(simp)= ) (cdr x)))))

/* Auxiliary conveniences */
inop(ex):=3Dblock([inf= lag:true],op(ex));
inargs(ex):=3Dblock([inflag:true],args(ex));

/* Main function */=
onelevelsimp(expr):=3D
  if atom(expr) then expr
  else=
     block([op:inop(expr),
   &nb= sp;        args:map(deemsimp,inargs(expr= )),
            s= imp:true],
           apply(op,a= rgs));

However, the simplifier depends on subexpressions which have = been marked as simplified to be in a standardized form, and so will not giv= e correct results in some cases:

simp:false$
sx2:deemsimp(x*2)$
simp:true$
      = ;  2*x - sx2 =3D> 2*x   !!!!

---------------------= ---------------

(2) How would I go about writing a function which selectively
simplified= on some of the algebraic properties.  For example, I'd
like t= o use idempotence and write a function which matched

0*x =3D 0
and identities as

0+x =3D x
1*x =3D x

Presumably you'd= use the pattern matching system, but I believe it depends on the simplifer= to drive it.

-----------------------

I think the best soluti= on is to define your own series of non-simplifying operators,=20 e.g.

          infix(&q= uot;***")$ infix("+++")$

etc. and define pattern matc= hing simplifications on them.  When you want to use the standard simpl= ifier, swap out the non-standard for the standard operators.

Good luck!

        &= nbsp;      -s
------=_Part_15274_16697511.1139323589836-- From robert.dodier at gmail.com Tue Feb 7 09:25:16 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Tue, 7 Feb 2006 08:25:16 -0700 Subject: [Maxima] simp:false In-Reply-To: References: Message-ID: Hello Chris, > (1) Is it possible to perform only "steps" in the calculation. That > is to say, perform only one simplification at a time? I don't know of any built-in way to enable a 1-step simplification mode. If you are willing to do some programming, it is conceivable to replace the function SIMPLIFYA to do something like walk down a list of rules (see below) and return the result of the first one which has some effect. Presumably the list would change according to circumstances. > (2) How would I go about writing a function which selectively > simplified on some of the algebraic properties. defrule creates a function which attempts to match a pattern and replace it. matchdeclare specifies what are pattern variables; everything not a variable is a literal. Here is an example of how I think this ought to work (it doesn't). simp : false; not01p (x) := x # 0 and x # 1; matchdeclare (x, not01p); defrule (idempotent, 1*x, x); defrule (nilpotent, 0*x, 0); 1*(a + 0*(b - c) - d); => 1*(a + 0*(b - c) - d); /* So far, so good. */ apply1 (%, idempotent); => a + 0*(b - c) - d /* ought to be */ apply1 (%, nilpotent); => a - d /* ought to be */ The apply1's actually cause indefinite looping; this is a consequence of the algorithm by which a match is found for a multiplicative term: divide out the literal factors and see if the result = x. This is problematic if simp = false and the literal factor is 1 or 0. Try trace (idempotent); apply1 (foo, idempotent); . (I mention this stuff mostly so I can find it again when I file a bug report.) If the defrule stuff sounds like it might be useful to you, please let us know and I'll see if I can figure out how to make defrule behave better. Hope this helps, Robert Dodier From van.Nek at gmx.net Tue Feb 7 09:53:36 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Tue, 07 Feb 2006 16:53:36 +0100 Subject: [Maxima] plot2d In-Reply-To: References: <43CFB85D.2708.18F157F@localhost> Message-ID: <43E8D090.24521.351DF3@localhost> Am 7 Feb 2006 um 12:20 hat Fabrizio Caruso geschrieben: > Hi! > > Sorry to bother you again with a question about plot2d. > It seems to me that I haven't still understood > how gnuplot_curve_styles works. > > For instance I need to draw points and lines > in the same window. > > If I do: > > plot2d([[discrete,[[0,0],[1,1]]],[discrete,[[1,0],[0,1]]]],[gnuplot_curve_styles,["with > lines 2"],["with points 3"]]); > > I only get lines. > just a little change: plot2d( [ [discrete,[[0,0],[1,1]]], [discrete,[[1,0],[0,1]]] ], [gnuplot_curve_styles, ["with lines 2","with points 3"] ]); you only need one list of curve styles Volker van Nek From dp2 at cise.ufl.edu Tue Feb 7 10:02:48 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Tue, 7 Feb 2006 11:02:48 -0500 (EST) Subject: [Maxima] Sorry about this question? Re: How to define rules for variables randomly created by implicit simplification of Maxima? e.g. rule for sum(x(i1,j1),x, 1,n)^2 In-Reply-To: References: <8050.10.228.0.47.1139280420.squirrel@webmail.cise.ufl.edu> Message-ID: <8381.10.228.0.79.1139328168.squirrel@webmail.cise.ufl.edu> This question is wrong and I am sorry for that! Dileep > hi dileep, > > i'm pretty confused about what you are trying to do here. > >> If you define the square of the sum, Maxima simplifies in the following >> way: >> eq2:sum(x(i1,j1),x,1,n)^2; >> > > what can this mean? if, for example, n=3, it would be > > (1(i1,j1) + 2(i1,j1) + 3(i1,j1))^2 > > > which is odd because 1, 2, and 3 aren't the names of functions. > > maybe there is some confusion about maxima syntax: > > -- parentheses are for function calls, square brackets are for list > and matrix indices e.g. f(x) is a function call, a[k] is a list index > > -- in input multiplication must be denoted with asterisk, > maxima does not understand a b as the product of a and b, it has to be > written a*b > > maybe you can spell out for me what you expect the summation to be when n > = 3. > > > sorry i can't be more helpful, > > robert dodier > > From dp2 at cise.ufl.edu Tue Feb 7 12:09:31 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Tue, 7 Feb 2006 13:09:31 -0500 (EST) Subject: [Maxima] What is wrong with this rule? Message-ID: <8544.10.228.0.79.1139335771.squirrel@webmail.cise.ufl.edu> I am trying to apply rule for the following scenario; but not able to figure out why the replacement not happening. Please help me solve: (%i42) eq1; n n n n ==== ==== ==== ==== \ \ \ \ (%o42) > > > > x(i102, l) x(i104, l) x(i105, l) / / / / ==== ==== ==== ==== i105 = 1 i106 = 1 i104 = 1 i102 = 1 x(i106, l) (%i43) defrule(r1,x(I, L)*x(J, S)*x(M, K)*x(N, T),r(L,K,T)); (%o43) r1 : x(I, L) x(J, S) x(M, K) x(N, T) -> r(L, K, T) (%i44) disprule(r1); (%o44) r1 : x(I, L) x(J, S) x(M, K) x(N, T) -> r(L, K, T) (%i45) apply(apply1,[eq1,r1]); n n n n ==== ==== ==== ==== \ \ \ \ (%o45) > > > > x(i130, l) x(i132, l) x(i133, l) / / / / ==== ==== ==== ==== i133 = 1 i134 = 1 i132 = 1 i130 = 1 x(i134, l) Thanks Dileep From andrej.vodopivec at gmail.com Tue Feb 7 12:41:32 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Tue, 7 Feb 2006 10:41:32 -0800 Subject: [Maxima] Once more about *general-display-prefix* In-Reply-To: References: Message-ID: <7775b21a0602071041u42c7096cw@mail.gmail.com> 2006/2/7, Andrey G. Grozin : > By the way, are they used by other interfaces (wxmaxima, imaxima)? If so, > how? If not, why? wxMaxima uses *prompt-prefix* and *prompt-suffix*, it doesn't use *general-display-prefix*. It reads maxima output until it recieves a *prompt-suffix* and then displays the output. The output is parsed using libxml (including the *prompt-prefix* and *prompt-suffix* parts). > The theory about how the maxima REPL should work is following. The user > writes something at the maxima prompt, terminates it with ; or $, and > presses enter. Maxima writes *general-display-prefix*, then some output > (maybe empty), then *prompt-prefix*, then the prompt, then > *prompt-suffix*, and then waits for more user input. We can make an > analogy: suppose > *general-display-prefix* = [ > *prompt-prefix* = ( > *prompt-suffix* = )] > Then the brackets should be paired correctly: > [ > ( > )] > > For the current discussion, a question like "Is a positive or negative?" > is considered as a prompt. Currently, maxima does not write > *general-display-prefix* after such questions. This was reported as a bug > 1362658, and a patch to fix it was attached. > > There is another (and more serious) issue: if the user writes several > statements in a single line, separating them by ; or $, then > *general-display-prefix* is written several times. Continuing our analogy, > if the user writes, say, > x:1$ y:2$ > then maxima output has unbalanced brackets: > [ > [ > ( > )] > The TeXmacs interface hangs: it waits for one more ] which never arrives. I don't know what exactly is the purpuse of [ and ] but I would force the display as soon as I get *prompt-suffix*. I think it would be a good idea to introduce more of there variables. Maybe a *general-display-suffix* would help you solve this problem. Some other variables would also be nice (for instance a different prefix/suffix for questions like "Is a positive...."). Andrej From fateman at cs.berkeley.edu Tue Feb 7 12:42:46 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Tue, 07 Feb 2006 10:42:46 -0800 Subject: [Maxima] What is wrong with this rule? In-Reply-To: <8544.10.228.0.79.1139335771.squirrel@webmail.cise.ufl.edu> References: <8544.10.228.0.79.1139335771.squirrel@webmail.cise.ufl.edu> Message-ID: <43E8EA26.60709@cs.berkeley.edu> Have you declared I,L,J,S,M,K,N,T ? The rule ignores S. did you mean the RHS to be r(L,S,K,T)? RJF From dp2 at cise.ufl.edu Tue Feb 7 12:54:09 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Tue, 7 Feb 2006 13:54:09 -0500 (EST) Subject: [Maxima] What is wrong with this rule? In-Reply-To: <43E8EA26.60709@cs.berkeley.edu> References: <8544.10.228.0.79.1139335771.squirrel@webmail.cise.ufl.edu> <43E8EA26.60709@cs.berkeley.edu> Message-ID: <8601.10.228.0.107.1139338449.squirrel@webmail.cise.ufl.edu> Yes, I have declared all the variables using matchdeclare. and yes its r(L,S,K,T), even than it does not run. Dileep > Have you declared I,L,J,S,M,K,N,T ? > The rule ignores S. did you mean the RHS to be r(L,S,K,T)? > RJF > > > > > From robert.dodier at gmail.com Tue Feb 7 13:08:22 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Tue, 7 Feb 2006 12:08:22 -0700 Subject: [Maxima] What is wrong with this rule? In-Reply-To: <8544.10.228.0.79.1139335771.squirrel@webmail.cise.ufl.edu> References: <8544.10.228.0.79.1139335771.squirrel@webmail.cise.ufl.edu> Message-ID: dileep, i find apply1 (expr, r1); works OK but apply (apply1, [expr, r1]); does not. looks to me like maxima is simplifying the nested sum into a product of sums so the rule doesn't apply anymore. not sure why that doesn't happen with apply1 (expr, r1); . i don't know of a way to stop maxima from simplifying the nested sum. anyway if the set of rules is known ahead of time, why not just call apply1 (expr, r1) . robert From sangwinc at for.mat.bham.ac.uk Tue Feb 7 13:45:10 2006 From: sangwinc at for.mat.bham.ac.uk (Chris Sangwin) Date: Tue, 7 Feb 2006 19:45:10 +0000 (GMT) Subject: [Maxima] simp:false In-Reply-To: <8b356f880602070646k2dd56807t7da2f4f07a6b54b3@mail.gmail.com> Message-ID: Dear Stavros, Many thanks for these helpful comments. I had already begun with the last suggestion, that of defining parallel noun forms of the arithmetic operators. I shall pursue this option first. Chris On Tue, 7 Feb 2006, Stavros Macrakis wrote: > > > > (1) Is it possible to perform only "steps" in the calculation. That > > is to say, perform only one simplification at a time? > > > The simplest way is probably using Box'es to isolate subexpressions from the > simplifier, e.g. > > box(2*x)+box(3*x) > > does not simplify. Take a look at the whole series of box functions. > > Another way is to turn off simp and try to fool the simplifier into > believing some things are already simplified when you turn it back on. But > this has problems. > ------------------------- > > ;; Forces an expression to be treated as simplified -- use with simp:false > (defun $deemsimp (x) > (cond ((atom x) x) > ((memq 'simp (car x)) x) > (t (cons (append (car x) '(simp)) (cdr x))))) > > /* Auxiliary conveniences */ > inop(ex):=block([inflag:true],op(ex)); > inargs(ex):=block([inflag:true],args(ex)); > > /* Main function */ > onelevelsimp(expr):= > if atom(expr) then expr > else > block([op:inop(expr), > args:map(deemsimp,inargs(expr)), > simp:true], > apply(op,args)); > > However, the simplifier depends on subexpressions which have been marked as > simplified to be in a standardized form, and so will not give correct > results in some cases: > > simp:false$ > sx2:deemsimp(x*2)$ > simp:true$ > 2*x - sx2 => 2*x !!!! > > ------------------------------------ > > (2) How would I go about writing a function which selectively > > simplified on some of the algebraic properties. For example, I'd > > like to use idempotence and write a function which matched > > > > 0*x = 0 > > > > and identities as > > > > 0+x = x > > 1*x = x > > > > Presumably you'd use the pattern matching system, but I believe it depends > on the simplifer to drive it. > > ----------------------- > > I think the best solution is to define your own series of non-simplifying > operators, e.g. > > infix("***")$ infix("+++")$ > > etc. and define pattern matching simplifications on them. When you want to > use the standard simplifier, swap out the non-standard for the standard > operators. > > Good luck! > > -s > From andrej.vodopivec at gmail.com Tue Feb 7 14:39:38 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Tue, 7 Feb 2006 12:39:38 -0800 Subject: [Maxima] plot2d In-Reply-To: References: Message-ID: <7775b21a0602071239p492bd8f0r@mail.gmail.com> I you are using gnuplot you can try with plot2d(..., [gnuplot_preamble, "set xrange [-5:5]; set yrange [-5:5]; set nokey;"]); Andrej 2006/1/19, Fabrizio Caruso : > Hi again! > > > I can't find a way to get rid of the legend > when using on Maxima 5.9.2 > "plot2d([[discrete,....],[discrete,...],...])" nor can > I find a way to show a larger coordinate system > (the coordinate system is just sized as the highest coordinate > and points with such coordinates are covered by the > border of the coordinate system). > > Could someone help me? > > Fabrizio > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From andrej.vodopivec at gmail.com Tue Feb 7 14:47:51 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Tue, 7 Feb 2006 12:47:51 -0800 Subject: [Maxima] points & lines with plot2d In-Reply-To: References: Message-ID: <7775b21a0602071247j7f55db00y@mail.gmail.com> You are using gnuplot_curve_styles wrong. You should use it like ... [gnuplot_curve_styles, ["with lines 2", with points 3"]] ..., Andrej 2006/2/7, Fabrizio Caruso : > Hi > > I am still struggling with plot2d and I haven't been > able to find a way to draw isolated points and segments of > lines in the same window. > > I have read the documentation available in Maxima > but it did not show any way to do this. > > Is there a way to do it? > > For example if I use > plot2d([[discrete,[[0,0],[1,1]]],[discrete,[[1,0],[0,1]]]],[gnuplot_curve_styles,["with > lines 2"],["with points 3"]]); > > gnuplot only prints lines and no isolated points. > > > Thanks in advance > > Fabrizio > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From dp2 at cise.ufl.edu Tue Feb 7 14:53:27 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Tue, 7 Feb 2006 15:53:27 -0500 (EST) Subject: [Maxima] What is wrong with this rule? Message-ID: <8768.10.228.8.2.1139345607.squirrel@webmail.cise.ufl.edu> Hi, I set sumexpand already but doesnt work even then. The rule to be applied is not known untill the user enters the expression; so need to use the variable for rulename and thus have to use "apply". Right now I am using apply in the following fashion, where rulelist is the list of rules to be applied. Even if I apply single rule at a time I will have use varaible for rulename. apply (apply1, cons (eq1, rulelist)) If you know any alternative for above, please share. The bizzare thing is that it works for product of 1 and 2 terms but not more than that: (%i1) sumexpand:true; (%o1) true (%i2) matchdeclare([I,L,J,K,e],all); (%o2) done (%i3) defrule(r1,x(I,L)*x(J,K)*e,(r(L)*d(L, K)*d(I, J) + r(L)*r(L, 1)*d(L, K)*(1 - d(I, J)) + r(L)*r(K)*(1 - d(I, J))*(1 - d(L, K)))*e); (%o3) r1 : e x(I, L) x(J, K) -> e ((1 - d(I, J)) r(L) r(L, 1) d(L, K) + d(I, J) r(L) d(L, K) + (1 - d(I, J)) r(K) r(L) (1 - d(L, K))) (%i5) eq1:sum(x(i1, l)*f(i1), i1, 1, n)* sum(x(i2, m)*f(i2), i2, 1, n); n n ==== ==== \ \ (%o5) > > f(i1) x(i1, l) f(i2) x(i2, m) / / ==== ==== i1 = 1 i2 = 1 (%i7) apply(apply1,[eq1,r1]); n n ==== ==== \ \ (%o7) > f(i3) > f(i4) ((1 - d(i4, i3)) r(m) r(m, 1) d(m, l) / / ==== ==== i3 = 1 i4 = 1 + d(i4, i3) r(m) d(m, l) + (1 - d(i4, i3)) r(l) r(m) (1 - d(m, l))) But does not work for product of 3 terms: (%i9) matchdeclare([I,J,K,L,M,N,e],all); (%o9) done (%i10) defrule(r1,x(I,L)*x(J,K)*x(M,N)*e,(r(L)*d(L, K)*d(I, J) + r(M)*r(L, 1)*d(N, K)*(1 - d(I, J)) + r(L)*r(K)*(1 - d(I, J))*(1 - d(L, K)))*e); (%o10) r1 : e x(I, L) x(J, K) x(M, N) -> e ((1 - d(I, J)) r(L, 1) r(M) d(N, K) + d(I, J) r(L) d(L, K) + (1 - d(I, J)) r(K) r(L) (1 - d(L, K))) (%i13) eq1:sum(x(i1, l)*f(i1), i1, 1, n)* sum(x(i2, l)*f(i2), i2, 1, n)*sum(x(i3, l)*f(i3), i3, 1, n); n n n ==== ==== ==== \ \ \ (%o13) > > > f(i10) x(i10, l) f(i11) x(i11, l) f(i12) / / / ==== ==== ==== i11 = 1 i12 = 1 i10 = 1 x(i12, l) (%i14) apply(apply1,[eq1,r1]); n n n ==== ==== ==== \ \ \ (%o14) > > > f(i18) x(i18, l) f(i19) x(i19, l) f(i20) / / / ==== ==== ==== i19 = 1 i20 = 1 i18 = 1 x(i20, l) (%i15) apply1(eq1,r1); n n n ==== ==== ==== \ \ \ (%o15) > f(i11) > f(i12) > f(i10) / / / ==== ==== ==== i11 = 1 i12 = 1 i10 = 1 (r(i10) (1 - d(i12, i11)) r(l, 1) d(l, l) + d(i12, i11) r(l) d(l, l) 2 + (1 - d(i12, i11)) r (l) (1 - d(l, l))) If you have any clue, please share. Regards Dileep > dileep, > > try setting sumexpand : true; > > ? sumexpand > should have a little information. > > hth robert > > From fateman at cs.berkeley.edu Tue Feb 7 15:40:25 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Tue, 07 Feb 2006 13:40:25 -0800 Subject: [Maxima] What is wrong with this rule? In-Reply-To: <8768.10.228.8.2.1139345607.squirrel@webmail.cise.ufl.edu> References: <8768.10.228.8.2.1139345607.squirrel@webmail.cise.ufl.edu> Message-ID: <43E913C9.9000805@cs.berkeley.edu> One guess: if you have a rule like e*f(x)*g(y), then it could try to match 3*f(4)*g(5) by matching e= 3*f(4) and then failing. You don't want e to match "anything at all". You want e to match something not involving any f( ..). RJF From macrakis at alum.mit.edu Tue Feb 7 19:43:29 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Tue, 7 Feb 2006 20:43:29 -0500 Subject: [Maxima] What is wrong with this rule? In-Reply-To: <43E913C9.9000805@cs.berkeley.edu> References: <8768.10.228.8.2.1139345607.squirrel@webmail.cise.ufl.edu> <43E913C9.9000805@cs.berkeley.edu> Message-ID: <8b356f880602071743s5db2c339o4b1b4cbfe33ea671@mail.gmail.com> > if you have a rule like e*f(x)*g(y), then it could try to match > 3*f(4)*g(5) by matching > e= 3*f(4) and then failing. > > You don't want e to match "anything at all". You want e to match > something not involving any f( ..). Sure, it might try matching e=3*f(4) to start, but when it fails, it had better backtrack and try e=3. If it doesn't, that seems like a bug. From fateman at cs.berkeley.edu Tue Feb 7 20:09:39 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Tue, 07 Feb 2006 18:09:39 -0800 Subject: [Maxima] What is wrong with this rule? In-Reply-To: <8b356f880602071743s5db2c339o4b1b4cbfe33ea671@mail.gmail.com> References: <8768.10.228.8.2.1139345607.squirrel@webmail.cise.ufl.edu> <43E913C9.9000805@cs.berkeley.edu> <8b356f880602071743s5db2c339o4b1b4cbfe33ea671@mail.gmail.com> Message-ID: <43E952E3.4080509@cs.berkeley.edu> This is a multi-part message in MIME format. --------------010406040700070205090203 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit The matcher does not backtrack at all. There is one that does, in the integration package but it is not available except from lisp. There are other possibilities (e.g. a Mathematica-style pattern matcher in Lisp) but that would need a lot more syntactic mechanism for the user. RJF Stavros Macrakis wrote: >>if you have a rule like e*f(x)*g(y), then it could try to match >>3*f(4)*g(5) by matching >>e= 3*f(4) and then failing. >> >>You don't want e to match "anything at all". You want e to match >>something not involving any f( ..). >> >> > >Sure, it might try matching e=3*f(4) to start, but when it fails, it >had better backtrack and try e=3. If it doesn't, that seems like a >bug. > >_______________________________________________ >Maxima mailing list >Maxima at math.utexas.edu >http://www.math.utexas.edu/mailman/listinfo/maxima > > --------------010406040700070205090203 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit The matcher does not backtrack at all.
There is one that does, in the integration package
but it is not available except from lisp.
There are other possibilities (e.g. a Mathematica-style
pattern matcher in Lisp) but that would need a lot more syntactic
mechanism for the user.

RJF


Stavros Macrakis wrote:
if you have a rule like e*f(x)*g(y),  then it could try to match
3*f(4)*g(5)   by matching
e= 3*f(4)    and then failing.

You don't want e to match "anything at all".  You want e to match
something not involving any f( ..).
    

Sure, it might try matching e=3*f(4) to start, but when it fails, it
had better backtrack and try e=3.  If it doesn't, that seems like a
bug.

_______________________________________________
Maxima mailing list
Maxima at math.utexas.edu
http://www.math.utexas.edu/mailman/listinfo/maxima
  
--------------010406040700070205090203-- From dp2 at cise.ufl.edu Tue Feb 7 22:27:35 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Tue, 7 Feb 2006 23:27:35 -0500 (EST) Subject: [Maxima] What is wrong with this rule? In-Reply-To: <43E952E3.4080509@cs.berkeley.edu> References: <8768.10.228.8.2.1139345607.squirrel@webmail.cise.ufl.edu> <43E913C9.9000805@cs.berkeley.edu> <8b356f880602071743s5db2c339o4b1b4cbfe33ea671@mail.gmail.com> <43E952E3.4080509@cs.berkeley.edu> Message-ID: <61734.70.171.54.119.1139372855.squirrel@webmail.cise.ufl.edu> Can I call that lisp function by using "?". Also why the same rule runs if we use apply1 simply as I gave example in the previous email. The problem is only when apply(apply1...) is used. Do you have any alternative solution for the problem, in which I have to apply in this way: x(i,j)*x(k,l)*x(m,n)->some function; it should match even the product is x(a,b)*f(a)*x(c,d)*f(d)*x(e,f). And similarly for the product of four,five,.... since I am generating rules at the time function is called. Regards Dileep > The matcher does not backtrack at all. > There is one that does, in the integration package > but it is not available except from lisp. There are other possibilities > (e.g. a Mathematica-style > pattern matcher in Lisp) but that would need a lot more syntactic mechanism > for the user. > > RJF > > > > Stavros Macrakis wrote: > > >>> if you have a rule like e*f(x)*g(y), then it could try to match >>> 3*f(4)*g(5) by matching >>> e= 3*f(4) and then failing. >>> >>> You don't want e to match "anything at all". You want e to match >>> something not involving any f( ..). >>> >>> >> >> Sure, it might try matching e=3*f(4) to start, but when it fails, it >> had better backtrack and try e=3. If it doesn't, that seems like a bug. >> >> _______________________________________________ >> Maxima mailing list >> Maxima at math.utexas.edu >> http://www.math.utexas.edu/mailman/listinfo/maxima >> >> >> > From fateman at cs.berkeley.edu Tue Feb 7 23:42:49 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Tue, 7 Feb 2006 21:42:49 -0800 Subject: [Maxima] What is wrong with this rule? References: <8768.10.228.8.2.1139345607.squirrel@webmail.cise.ufl.edu> <43E913C9.9000805@cs.berkeley.edu> <8b356f880602071743s5db2c339o4b1b4cbfe33ea671@mail.gmail.com> <43E952E3.4080509@cs.berkeley.edu> <61734.70.171.54.119.1139372855.squirrel@webmail.cise.ufl.edu> Message-ID: <004101c62c72$7fe75a00$0ad09888@windsor> ----- Original Message ----- From: To: "Richard Fateman" Cc: ; ; "Robert Dodier" ; Sent: Tuesday, February 07, 2006 8:27 PM Subject: Re: [Maxima] What is wrong with this rule? > Can I call that lisp function by using "?". The function is called m1, but the arguments are not going to look like macsyma expressions. So the answer is no. > Also why the same rule runs if > we use apply1 simply as I gave example in the previous email. The problem > is only when apply(apply1...) is used. I don't know why you are using apply. If you want to write a program that looks for an operator "*" that has 3,4, ... arguments, each of the form x(a,b), and does what you want, it should be possible. > Do you have any alternative solution for the problem, in which I have to > apply in this way: x(i,j)*x(k,l)*x(m,n)->some function; it should match > even the product is x(a,b)*f(a)*x(c,d)*f(d)*x(e,f). > And similarly for the product of four,five,.... since I am generating > rules at the time function is called. > Regards > Dileep > >> The matcher does not backtrack at all. >> There is one that does, in the integration package >> but it is not available except from lisp. There are other possibilities >> (e.g. a Mathematica-style >> pattern matcher in Lisp) but that would need a lot more syntactic >> mechanism >> for the user. >> >> RJF >> >> >> >> Stavros Macrakis wrote: >> >> >>>> if you have a rule like e*f(x)*g(y), then it could try to match >>>> 3*f(4)*g(5) by matching >>>> e= 3*f(4) and then failing. >>>> >>>> You don't want e to match "anything at all". You want e to match >>>> something not involving any f( ..). >>>> >>>> >>> >>> Sure, it might try matching e=3*f(4) to start, but when it fails, it >>> had better backtrack and try e=3. If it doesn't, that seems like a bug. >>> >>> _______________________________________________ >>> Maxima mailing list >>> Maxima at math.utexas.edu >>> http://www.math.utexas.edu/mailman/listinfo/maxima >>> >>> >>> >> > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From vvzhy at mail.ru Tue Feb 7 23:45:12 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Wed, 08 Feb 2006 08:45:12 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: References: <43E50F28.4080409@mail.ru> <1139170050.8324.9.camel@localhost.localdomain> <43E662CA.6010809@mail.ru> <1139180006.10777.27.camel@localhost.localdomain> <43E6D52C.9090207@mail.ru> Message-ID: <43E98568.5060406@mail.ru> Robert Dodier writes: Hi Robert! > I find that make is successful. make install appears to > get most of the way through the installation and then fails with this: > > /usr/bin/install -c -m 644 ./maxima_toc.html > /usr/local/share/maxima/5.9.2.24cvs/doc/html/es/maxima_toc.html > test -z "/usr/local/info/es" || "/usr/local/info/es" > /bin/sh: line 1: /usr/local/info/es: No such file or directory > make[4]: *** [install-info-am] Error 127 > Could you send me by private mail Makefile created by configure in /info (not info/es !) directory? -- Vadim V. Zhytnikov From dp2 at cise.ufl.edu Wed Feb 8 00:34:14 2006 From: dp2 at cise.ufl.edu (Dileep) Date: Wed, 8 Feb 2006 01:34:14 -0500 Subject: [Maxima] What is wrong with this rule? In-Reply-To: <004101c62c72$7fe75a00$0ad09888@windsor> Message-ID: <20060208063410.AA0DE37B@mail.cise.ufl.edu> I am using batchfile for defining a function say func(exp) which can be called by passing exp. I am using apply because I am using variable for rulename. Rulename is generated and defined dynamically in the code in func(exp). Therefore I have to use apply like this: apply(apply1,[expression,rulename] But the problem is the following: (the following thing is not from the batchfile I have used for the code, I am just testing on command prompt to show the results) (%i1) sumexpand:true; (%o1) true (%i2) matchdeclare([I,L,J,K,e],all); (%o2) done (%i3) defrule(r1,x(I,L)*x(J,K)*e,(r(L)*d(L, K)*d(I, J) + r(L)*r(L, 1)*d(L, K)*(1 - d(I, J)) + r(L)*r(K)*(1 - d(I, J))*(1 - d(L, K)))*e); (%o3) r1 : e x(I, L) x(J, K) -> e ((1 - d(I, J)) r(L) r(L, 1) d(L, K) + d(I, J) r(L) d(L, K) + (1 - d(I, J)) r(K) r(L) (1 - d(L, K))) (%i5) eq1:sum(x(i1, l)*f(i1), i1, 1, n)* sum(x(i2, m)*f(i2), i2, 1, n); n n ==== ==== \ \ (%o5) > > f(i1) x(i1, l) f(i2) x(i2, m) / / ==== ==== i1 = 1 i2 = 1 (%i7) apply(apply1,[eq1,r1]); n n ==== ==== \ \ (%o7) > f(i3) > f(i4) ((1 - d(i4, i3)) r(m) r(m, 1) d(m, l) / / ==== ==== i3 = 1 i4 = 1 + d(i4, i3) r(m) d(m, l) + (1 - d(i4, i3)) r(l) r(m) (1 - d(m, l))) But does not work for product of 3 terms: (%i9) matchdeclare([I,J,K,L,M,N,e],all); (%o9) done (%i10) defrule(r1,x(I,L)*x(J,K)*x(M,N)*e,(r(L)*d(L, K)*d(I, J) + r(M)*r(L, 1)*d(N, K)*(1 - d(I, J)) + r(L)*r(K)*(1 - d(I, J))*(1 - d(L, K)))*e); (%o10) r1 : e x(I, L) x(J, K) x(M, N) -> e ((1 - d(I, J)) r(L, 1) r(M) d(N, K) + d(I, J) r(L) d(L, K) + (1 - d(I, J)) r(K) r(L) (1 - d(L, K))) (%i13) eq1:sum(x(i1, l)*f(i1), i1, 1, n)* sum(x(i2, l)*f(i2), i2, 1, n)*sum(x(i3, l)*f(i3), i3, 1, n); n n n ==== ==== ==== \ \ \ (%o13) > > > f(i10) x(i10, l) f(i11) x(i11, l) f(i12) / / / ==== ==== ==== i11 = 1 i12 = 1 i10 = 1 x(i12, l) (%i14) apply(apply1,[eq1,r1]); n n n ==== ==== ==== \ \ \ (%o14) > > > f(i18) x(i18, l) f(i19) x(i19, l) f(i20) / / / ==== ==== ==== i19 = 1 i20 = 1 i18 = 1 x(i20, l) (%i15) apply1(eq1,r1); n n n ==== ==== ==== \ \ \ (%o15) > f(i11) > f(i12) > f(i10) / / / ==== ==== ==== i11 = 1 i12 = 1 i10 = 1 (r(i10) (1 - d(i12, i11)) r(l, 1) d(l, l) + d(i12, i11) r(l) d(l, l) 2 + (1 - d(i12, i11)) r (l) (1 - d(l, l))) Dileep -----Original Message----- From: Richard Fateman [mailto:fateman at cs.berkeley.edu] Sent: Wednesday, February 08, 2006 12:43 AM To: dp2 at cise.ufl.edu Cc: macrakis at alum.mit.edu; dp2 at cise.ufl.edu; Robert Dodier; maxima at math.utexas.edu Subject: Re: [Maxima] What is wrong with this rule? ----- Original Message ----- From: To: "Richard Fateman" Cc: ; ; "Robert Dodier" ; Sent: Tuesday, February 07, 2006 8:27 PM Subject: Re: [Maxima] What is wrong with this rule? > Can I call that lisp function by using "?". The function is called m1, but the arguments are not going to look like macsyma expressions. So the answer is no. > Also why the same rule runs if > we use apply1 simply as I gave example in the previous email. The problem > is only when apply(apply1...) is used. I don't know why you are using apply. If you want to write a program that looks for an operator "*" that has 3,4, ... arguments, each of the form x(a,b), and does what you want, it should be possible. > Do you have any alternative solution for the problem, in which I have to > apply in this way: x(i,j)*x(k,l)*x(m,n)->some function; it should match > even the product is x(a,b)*f(a)*x(c,d)*f(d)*x(e,f). > And similarly for the product of four,five,.... since I am generating > rules at the time function is called. > Regards > Dileep > >> The matcher does not backtrack at all. >> There is one that does, in the integration package >> but it is not available except from lisp. There are other possibilities >> (e.g. a Mathematica-style >> pattern matcher in Lisp) but that would need a lot more syntactic >> mechanism >> for the user. >> >> RJF >> >> >> >> Stavros Macrakis wrote: >> >> >>>> if you have a rule like e*f(x)*g(y), then it could try to match >>>> 3*f(4)*g(5) by matching >>>> e= 3*f(4) and then failing. >>>> >>>> You don't want e to match "anything at all". You want e to match >>>> something not involving any f( ..). >>>> >>>> >>> >>> Sure, it might try matching e=3*f(4) to start, but when it fails, it >>> had better backtrack and try e=3. If it doesn't, that seems like a bug. >>> >>> _______________________________________________ >>> Maxima mailing list >>> Maxima at math.utexas.edu >>> http://www.math.utexas.edu/mailman/listinfo/maxima >>> >>> >>> >> > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From vvzhy at mail.ru Wed Feb 8 00:38:07 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Wed, 08 Feb 2006 09:38:07 +0300 Subject: [Maxima] Maxima i18n Message-ID: <43E991CF.80005@mail.ru> Hi! I want to describe state of affairs with of Maxima i18n project. There are some problems and unfinished things and any advice will be greatly appreciated. Now in Maxima CVS we have two complete translations of Maxima documentation to Portuguese and Spanish languages. Both these languages may use two classes of locales 1. ISO-8859-1 locales: es_XX, pt_XX (where XX is country code ES, AR, PT, BR ... we ignore this). This is useful for old Linux distros and works well with all lisp implementation. 2. UTF-8 locales: es_XX.UTF-8, pt_XX.UTF-8 This is common in almost all modern Linux distros. There are serious problems with UTF-8 and non UTF-aware lisps such as gcl and cmucl but clisp and sbcl are OK. Thus we have to create four language packs -- two packs for each language. Languge pack is the collection of info (do be read by describe) and html files. For this purpose we have four configure options --enable-lang-es --enable-lang-pt --enable-lang-es-utf8 --enable-lang-pt-utf8 These options are independent and each of them triggers creation of corresponding language pack. Now how this implemented internally. Maxima CVS have four directories doc/info/es doc/info/pt doc/info/es.utf8 doc/info/pt.utf8 First two directories contain Spanish and Portuguese texinfo files in ISO-8859-1 encoding. Naturally they are used to create ISO-8859-1 language packs. Second pair of directories doc/info/es.utf8 doc/info/pt.utf8 are intended for UTF-8 language packs. They are almost empty and contain only minimal amount of files. Main documentation is fetched from doc/info/es doc/info/pt and result is recoded from ISO to UTF. Problems: 1. es.utf8 and pt.utf8 files contain copies of main texinfo file maxima.texi. Thus is someone change info/es/maxima.texi then info/es.utf8/maxima.texi must be changed accordingly. This is inconvenient and error prone but I don't know how to avoid this. 2. At present .info files in .utf8 directories get recoder into UTF-8 only on make install stage. This must be changed -- we want UTF-8 infos on make stage. 3. All .html is still in ISO-8859-1. Must be fixed. 4. There are some problem with portability of current Makefile.am reported by Robert. 5. Very serious portability problem. Which program to use for ISO->UTF conversion? For Linux the natural choice is iconv -- this program is part of glibc and must be present on all modern Linux distros. But what about other UNIX? I don't know. Recode? Any other ideas? Best wishes, Vadim -- Vadim V. Zhytnikov From robert.dodier at gmail.com Wed Feb 8 00:52:30 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Tue, 7 Feb 2006 23:52:30 -0700 Subject: [Maxima] What is wrong with this rule? In-Reply-To: <20060208063410.AA0DE37B@mail.cise.ufl.edu> References: <004101c62c72$7fe75a00$0ad09888@windsor> <20060208063410.AA0DE37B@mail.cise.ufl.edu> Message-ID: hi dileep, instead of apply(apply1,[eq1,r1]); try writing apply (apply1, ['eq1, r1]); (i.e. put a single quote mark ' before eq1) does it now yield the same as apply1(eq1,r1); ?? hth robert dodier From dp2 at cise.ufl.edu Wed Feb 8 05:37:51 2006 From: dp2 at cise.ufl.edu (Dileep) Date: Wed, 8 Feb 2006 06:37:51 -0500 Subject: [Maxima] What is wrong with this rule? In-Reply-To: Message-ID: <20060208113748.7D7B8C13@mail.cise.ufl.edu> Yes! It works now. But couldn't understand why this happened and only for the product of higher orders. Thanks a lot Dileep -----Original Message----- From: Robert Dodier [mailto:robert.dodier at gmail.com] Sent: Wednesday, February 08, 2006 1:53 AM To: Dileep Cc: maxima at math.utexas.edu Subject: Re: [Maxima] What is wrong with this rule? hi dileep, instead of apply(apply1,[eq1,r1]); try writing apply (apply1, ['eq1, r1]); (i.e. put a single quote mark ' before eq1) does it now yield the same as apply1(eq1,r1); ?? hth robert dodier From caruso at posso.dm.unipi.it Wed Feb 8 08:39:04 2006 From: caruso at posso.dm.unipi.it (Fabrizio Caruso) Date: Wed, 8 Feb 2006 15:39:04 +0100 (CET) Subject: [Maxima] fastquotient? In-Reply-To: Message-ID: Hi all again! Is there in Maxima a function to divide polynoimals in CRE faster than "divide"? I mean something equivalent to "fasttimes", (it could be implemented by multiplication by the modular inverse). Is fasttimes using Karatsuba or something else? If so, why does the documentation say that the arguments of "fasttimes" must be multivariate? Fabrizio From fateman at cs.berkeley.edu Wed Feb 8 08:38:29 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 8 Feb 2006 06:38:29 -0800 Subject: [Maxima] What is wrong with this rule? References: <8768.10.228.8.2.1139345607.squirrel@webmail.cise.ufl.edu> <43E913C9.9000805@cs.berkeley.edu> <8b356f880602071743s5db2c339o4b1b4cbfe33ea671@mail.gmail.com> <43E952E3.4080509@cs.berkeley.edu> <61734.70.171.54.119.1139372855.squirrel@webmail.cise.ufl.edu> <004101c62c72$7fe75a00$0ad09888@windsor> Message-ID: <005501c62cbd$57359bd0$0ad09888@windsor> Oh, by the way, it looks like what you are implementing is the Einstein convention for summation, and if so you might find that there are better ways of doing your calculations that have been already programmed in the tensor packages. From robert.dodier at gmail.com Wed Feb 8 08:43:13 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 8 Feb 2006 07:43:13 -0700 Subject: [Maxima] What is wrong with this rule? In-Reply-To: <20060208113748.7D7B8C13@mail.cise.ufl.edu> References: <20060208113748.7D7B8C13@mail.cise.ufl.edu> Message-ID: hi dileep, > Yes! It works now. But couldn't understand why this > happened and only for the product of higher orders. i;m not sure what-all is going on, but the motive behind the quote mark is that apply1 is an argument-quoting function. apply (foo, [a, b, c]); on the other hand evaluates the arguments ... so quoting 'eq1 makes it look the same in apply (...) as it does in an ordinary function call. if this seems extremely obscure, you're right, it is. anyway i'm glad to hear you're making progress. robert dodier From fateman at cs.berkeley.edu Wed Feb 8 09:01:39 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 8 Feb 2006 07:01:39 -0800 Subject: [Maxima] fastquotient? References: Message-ID: <008901c62cc0$95ebf650$0ad09888@windsor> ----- Original Message ----- From: "Fabrizio Caruso" To: Sent: Wednesday, February 08, 2006 6:39 AM Subject: [Maxima] fastquotient? > Hi all again! > > Is there in Maxima a function to divide > polynoimals in CRE faster than "divide"? Divide probably converts its arguments to CRE. Do you want quotient or remainder? Or exact division? I guess if you are in a hurry for the answer, and you have univariate polynomials you might consider a program that does nothing else, and may be faster. NTL is one such program. > I mean something equivalent to "fasttimes", > (it could be implemented by multiplication > by the modular inverse). I think this would work for exact division; knowing that you can do exact division requires a GCD which may be, in practice, the more expensive item. > > Is fasttimes using Karatsuba or something else? Karatsuba (division into two pieces, recursively) > If so, why does the documentation say that the > arguments of "fasttimes" must be multivariate? I think that testing showed that for one variable it was not faster, at least when it was written (in 1970 or so). It may be different now. RJF From caruso at posso.dm.unipi.it Wed Feb 8 10:08:08 2006 From: caruso at posso.dm.unipi.it (Fabrizio Caruso) Date: Wed, 8 Feb 2006 17:08:08 +0100 (CET) Subject: [Maxima] Re: fastquotient? In-Reply-To: Message-ID: Hi! Whay I need is to compute within my Maxima package the quotient of two univariate polynomials but the remainder might be non-zero so I need something like "quotient" but possibly faster than "quotient". Exact division would mean assuming a zero-remainder which in this case might lead to wrong results. If this is not available in Maxima my suggestion would be to implement it as multiplication by the modular inverse. In all my tests "fasttimes" is much faster than doing the product of two polynomials by "expand(...*...)" even if the polynomials are univariate. Regards Fabrizio From fateman at cs.berkeley.edu Wed Feb 8 10:34:07 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 08 Feb 2006 08:34:07 -0800 Subject: [Maxima] fastquotient? In-Reply-To: References: Message-ID: <43EA1D7F.6010609@cs.berkeley.edu> This is a multi-part message in MIME format. --------------060406080508060409050901 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit 1. Do not use expand if you want anything to be fast. 2. assume you have two large polynomials P and Q. let pp: rat(P)$ qq: rat(Q)$ then time ss: pp*qq $ this should be expanded fully into a "recursive" form. If you want to see it displayed as a sum of monomials, try ratexpand(ss)$ which is just a display hack. You can compare this to fasttimes(pp,qq) and see if that is faster than pp*qq I'd be curious to see what you find for your polynomials. You can also try divide(pp,qq,x) where x is the main variable, and see what happens. divide does not use fasttimes (or the internal lisp program that does Karatsuba) probably because it is not usually fast. Though for large enough inputs it might be. If timings come out the way I think they will, we should try to figure out a way to explain to people how to make programs faster (number 1 on my list is "don't use the expand command". Try ratexpand, or just use rat() forms and let contagion work.) Maybe add it to some manual or introductory material. RJf Fabrizio Caruso wrote: >I tested > >"expand(rat(..)*rat(...))" >against >"fasttimes(rat(...),rat(...))" > >with univiariate dense polynoimals >and "fasttimes" is much faster than the >operator "*" in all the non-trivial examples >I have used. > > >It would be nice to have >"fastquotient" in Maxima, which >would do something like fasttimes. > >I will probably implement it but my implementation >will use lists or arrays instead of CRE because I don't >know how to use CRE at low level. > >"quotient" and "divide" most probably >do not use fasttimes internally because they take >arguments in general form. > > Fabrizio > > > > > > > >On Wed, 8 Feb 2006, Richard Fateman wrote: > > > >>expand( ...*....) is always very slow. It does lots of things that have >>nothing to do with polynomials, e.g. diff. >>try rat(...* ....) if you want speed. or ratsimp() if you want the results >>in >>non-CRE form. >> >>Probably you should keep your items in CRE form (that is, use rat() on >>them). >>RJF >> >>----- Original Message ----- >>From: "Fabrizio Caruso" >>To: "Richard Fateman" >>Sent: Wednesday, February 08, 2006 7:57 AM >>Subject: Re: [Maxima] fastquotient? >> >> >> >> >>>Hi! >>> >>>I need to compute within my Maxima package >>>the quotient but the remainder might be non-zero so I need >>>something like "quotient" but faster than "quotient". >>>Exact division would mean assuming a zero-remainder >>>which might lead to wrong results if used >>>to compute the quotient. >>> >>>If this is not available in Maxima my suggestion >>>would be to implement it as multiplication by >>>the modular inverse. >>> >>>In all my tests "fasttimes" is much faster than doing >>>the product of two polynomials by "expand(...*...)" >>>even if the polynomials are univariate. >>> >>> Regards >>> >>> Fabrizio >>> >>>On Wed, 8 Feb 2006, Richard Fateman wrote: >>> >>> >>> >>>>----- Original Message ----- >>>>From: "Fabrizio Caruso" >>>>To: >>>>Sent: Wednesday, February 08, 2006 6:39 AM >>>>Subject: [Maxima] fastquotient? >>>> >>>> >>>> >>>> >>>>>Hi all again! >>>>> >>>>>Is there in Maxima a function to divide >>>>>polynoimals in CRE faster than "divide"? >>>>> >>>>> >>>>Divide probably converts its arguments to CRE. Do >>>>you want quotient or remainder? Or exact division? >>>>I guess if you are in a hurry for the answer, and you have >>>>univariate polynomials you might consider a program that >>>>does nothing else, and may be faster. NTL is one such >>>>program. >>>> >>>> >>>> >>>>>I mean something equivalent to "fasttimes", >>>>>(it could be implemented by multiplication >>>>>by the modular inverse). >>>>> >>>>> >>>>I think this would work for exact division; knowing that >>>>you can do exact division requires a GCD which may be, >>>>in practice, the more expensive item. >>>> >>>> >>>>>Is fasttimes using Karatsuba or something else? >>>>> >>>>> >>>>Karatsuba (division into two pieces, recursively) >>>> >>>> >>>>>If so, why does the documentation say that the >>>>>arguments of "fasttimes" must be multivariate? >>>>> >>>>> >>>>I think that testing showed that for one variable it >>>>was not faster, at least when it was written (in 1970 or so). >>>>It may be different now. >>>> >>>>RJF >>>> >>>> >>>> >>>> >>>> >>> >>> >> >> > > > --------------060406080508060409050901 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit 1.  Do not use expand if you want anything to be fast.
2. assume you have two large polynomials P and Q.
  let pp: rat(P)$
      qq: rat(Q)$
    then time
    ss: pp*qq $     this should be expanded fully into a "recursive" form.
If you want to see it displayed as a sum of monomials, try
  ratexpand(ss)$  which is just a display hack.

You can compare this to
fasttimes(pp,qq)
and see if that is faster than pp*qq

I'd be curious to see what you find for your polynomials.

You can also try
divide(pp,qq,x)  where x is the main variable, and see
what happens.

divide does not use fasttimes (or the internal lisp program
that does Karatsuba) probably because it is not usually
fast.  Though for large enough inputs it might be.

If timings come out the way I think they will, we should
try to figure out a way to explain to people how to make
programs faster  (number 1 on my list is "don't use the
expand command".  Try ratexpand, or just use rat() forms
and let contagion work.)  Maybe add it to some manual or
introductory material.



RJf



Fabrizio Caruso wrote:
I tested 

"expand(rat(..)*rat(...))"
against
"fasttimes(rat(...),rat(...))"

with univiariate dense polynoimals
and "fasttimes" is much faster than the
operator "*" in all the non-trivial examples
I have used.


It would be nice to have
"fastquotient" in Maxima, which 
would do something like fasttimes.

I will probably implement it but my implementation
will use lists or arrays instead of CRE because I don't
know how to use CRE at low level.

"quotient" and "divide" most probably 
do not use fasttimes internally because they take
arguments in general form.

   Fabrizio







On Wed, 8 Feb 2006, Richard Fateman wrote:

  
expand( ...*....)  is always very slow. It does lots of things that have 
nothing to do with polynomials, e.g. diff.
try rat(...* ....)  if you want speed.  or ratsimp() if you want the results 
in
non-CRE form.

Probably you should keep your items in CRE form   (that is, use rat() on 
them).
RJF

----- Original Message ----- 
From: "Fabrizio Caruso" <caruso at posso.dm.unipi.it>
To: "Richard Fateman" <fateman at cs.berkeley.edu>
Sent: Wednesday, February 08, 2006 7:57 AM
Subject: Re: [Maxima] fastquotient?


    
Hi!

I need to compute within my Maxima package
the quotient but the remainder might be non-zero so I need
something like "quotient" but faster than "quotient".
Exact division would mean assuming a zero-remainder
which might lead to wrong results if used
to compute the quotient.

If this is not available in Maxima my suggestion
would be to implement it as multiplication by
the modular inverse.

In all my tests "fasttimes" is much faster than doing
the product of two polynomials by "expand(...*...)"
even if the polynomials are univariate.

 Regards

 Fabrizio

On Wed, 8 Feb 2006, Richard Fateman wrote:

      
----- Original Message ----- 
From: "Fabrizio Caruso" <caruso at posso.dm.unipi.it>
To: <maxima at math.utexas.edu>
Sent: Wednesday, February 08, 2006 6:39 AM
Subject: [Maxima] fastquotient?


        
Hi all again!

Is there in Maxima a function to divide
polynoimals in CRE faster than "divide"?
          
Divide probably converts its arguments to CRE. Do
you want quotient or remainder?  Or exact division?
I guess if you are in a hurry for the answer, and you have
univariate polynomials you might consider a program that
does nothing else, and may be faster.  NTL is one such
program.

        
I mean something equivalent to "fasttimes",
(it could be implemented by multiplication
by the modular inverse).
          
I think this would work for exact division; knowing that
you can do exact division requires a GCD which may be,
in practice, the more expensive item.
        
Is fasttimes using Karatsuba or something else?
          
Karatsuba (division into two pieces, recursively)
        
If so, why does the documentation say that the
arguments of "fasttimes" must be multivariate?
          
I think that testing showed that for one variable it
was not faster, at least when it was written (in 1970 or so).
It may be different now.

RJF



        
      
    

  
--------------060406080508060409050901-- From caruso at posso.dm.unipi.it Wed Feb 8 11:21:23 2006 From: caruso at posso.dm.unipi.it (Fabrizio Caruso) Date: Wed, 8 Feb 2006 18:21:23 +0100 (CET) Subject: [Maxima] fastquotient? In-Reply-To: <43EA1D7F.6010609@cs.berkeley.edu> Message-ID: Hi! Thanks! Yes, expand was the problem. fasttimes performs roughly the same as "*" with fairly big dense univariate polynomials (degree>2500) which means fasttimes must be probably using something different then standard Karatsuba. I wonder it fasttimes does... Karatsuba as described in textbooks splits univariate dense polynomials into its higher degree part and lower degree part and by doing so it avoids one multiplication (3 instead of 4) at each recursive step. My C++ implementation of Karatsuba overtakes on the computers I tested it the school multiplication algorithm as soon as the degree is about 100. Fabrizio On Wed, 8 Feb 2006, Richard Fateman wrote: > 1. Do not use expand if you want anything to be fast. > 2. assume you have two large polynomials P and Q. > let pp: rat(P)$ > qq: rat(Q)$ > then time > ss: pp*qq $ this should be expanded fully into a "recursive" form. > If you want to see it displayed as a sum of monomials, try > ratexpand(ss)$ which is just a display hack. > > You can compare this to > fasttimes(pp,qq) > and see if that is faster than pp*qq > > I'd be curious to see what you find for your polynomials. > > You can also try > divide(pp,qq,x) where x is the main variable, and see > what happens. > > divide does not use fasttimes (or the internal lisp program > that does Karatsuba) probably because it is not usually > fast. Though for large enough inputs it might be. > > If timings come out the way I think they will, we should > try to figure out a way to explain to people how to make > programs faster (number 1 on my list is "don't use the > expand command". Try ratexpand, or just use rat() forms > and let contagion work.) Maybe add it to some manual or > introductory material. > > > > RJf > > > > Fabrizio Caruso wrote: > > >I tested > > > >"expand(rat(..)*rat(...))" > >against > >"fasttimes(rat(...),rat(...))" > > > >with univiariate dense polynoimals > >and "fasttimes" is much faster than the > >operator "*" in all the non-trivial examples > >I have used. > > > > > >It would be nice to have > >"fastquotient" in Maxima, which > >would do something like fasttimes. > > > >I will probably implement it but my implementation > >will use lists or arrays instead of CRE because I don't > >know how to use CRE at low level. > > > >"quotient" and "divide" most probably > >do not use fasttimes internally because they take > >arguments in general form. > > > > Fabrizio > > > > > > > > > > > > > > > >On Wed, 8 Feb 2006, Richard Fateman wrote: > > > > > > > >>expand( ...*....) is always very slow. It does lots of things that have > >>nothing to do with polynomials, e.g. diff. > >>try rat(...* ....) if you want speed. or ratsimp() if you want the results > >>in > >>non-CRE form. > >> > >>Probably you should keep your items in CRE form (that is, use rat() on > >>them). > >>RJF > >> > >>----- Original Message ----- > >>From: "Fabrizio Caruso" > >>To: "Richard Fateman" > >>Sent: Wednesday, February 08, 2006 7:57 AM > >>Subject: Re: [Maxima] fastquotient? > >> > >> > >> > >> > >>>Hi! > >>> > >>>I need to compute within my Maxima package > >>>the quotient but the remainder might be non-zero so I need > >>>something like "quotient" but faster than "quotient". > >>>Exact division would mean assuming a zero-remainder > >>>which might lead to wrong results if used > >>>to compute the quotient. > >>> > >>>If this is not available in Maxima my suggestion > >>>would be to implement it as multiplication by > >>>the modular inverse. > >>> > >>>In all my tests "fasttimes" is much faster than doing > >>>the product of two polynomials by "expand(...*...)" > >>>even if the polynomials are univariate. > >>> > >>> Regards > >>> > >>> Fabrizio > >>> > >>>On Wed, 8 Feb 2006, Richard Fateman wrote: > >>> > >>> > >>> > >>>>----- Original Message ----- > >>>>From: "Fabrizio Caruso" > >>>>To: > >>>>Sent: Wednesday, February 08, 2006 6:39 AM > >>>>Subject: [Maxima] fastquotient? > >>>> > >>>> > >>>> > >>>> > >>>>>Hi all again! > >>>>> > >>>>>Is there in Maxima a function to divide > >>>>>polynoimals in CRE faster than "divide"? > >>>>> > >>>>> > >>>>Divide probably converts its arguments to CRE. Do > >>>>you want quotient or remainder? Or exact division? > >>>>I guess if you are in a hurry for the answer, and you have > >>>>univariate polynomials you might consider a program that > >>>>does nothing else, and may be faster. NTL is one such > >>>>program. > >>>> > >>>> > >>>> > >>>>>I mean something equivalent to "fasttimes", > >>>>>(it could be implemented by multiplication > >>>>>by the modular inverse). > >>>>> > >>>>> > >>>>I think this would work for exact division; knowing that > >>>>you can do exact division requires a GCD which may be, > >>>>in practice, the more expensive item. > >>>> > >>>> > >>>>>Is fasttimes using Karatsuba or something else? > >>>>> > >>>>> > >>>>Karatsuba (division into two pieces, recursively) > >>>> > >>>> > >>>>>If so, why does the documentation say that the > >>>>>arguments of "fasttimes" must be multivariate? > >>>>> > >>>>> > >>>>I think that testing showed that for one variable it > >>>>was not faster, at least when it was written (in 1970 or so). > >>>>It may be different now. > >>>> > >>>>RJF > >>>> > >>>> > >>>> > >>>> > >>>> > >>> > >>> > >> > >> > > > > > > > From macrakis at alum.mit.edu Wed Feb 8 11:19:05 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Wed, 8 Feb 2006 12:19:05 -0500 Subject: [Maxima] Re: fastquotient? In-Reply-To: References: Message-ID: <8b356f880602080919i39f702abx905084dadad9fcc6@mail.gmail.com> > In all my tests "fasttimes" is much faster than doing > the product of two polynomials by "expand(...*...)" > even if the polynomials are univariate. Expand uses general representation, which is very slow for polynomial calculations. CRE multiplication is much faster than expand, so you should write rat(...)*rat(...) or rat(...*...). Even better, just always keep the polynomials in CRE form. Divide works on CREs. -s From caruso at posso.dm.unipi.it Wed Feb 8 11:51:33 2006 From: caruso at posso.dm.unipi.it (Fabrizio Caruso) Date: Wed, 8 Feb 2006 18:51:33 +0100 (CET) Subject: [Maxima] Re: fastquotient? In-Reply-To: <8b356f880602080919i39f702abx905084dadad9fcc6@mail.gmail.com> Message-ID: Yes, I undestood that expand is bad. What I need is something asymptotically faster than O(n^2) because I must do some benchmarks for which I need a better than O(n^2) multiplication and division algorithm. Is "*" for CRE polynomials using (standard univariate) Karatsuba? If not, is (standard univariate) Karatsuba implemented in Maxima? Fabrizio On Wed, 8 Feb 2006, Stavros Macrakis wrote: > > In all my tests "fasttimes" is much faster than doing > > the product of two polynomials by "expand(...*...)" > > even if the polynomials are univariate. > > Expand uses general representation, which is very slow for polynomial > calculations. CRE multiplication is much faster than expand, so you > should write rat(...)*rat(...) or rat(...*...). Even better, just > always keep the polynomials in CRE form. Divide works on CREs. > > -s > From fateman at cs.berkeley.edu Wed Feb 8 12:13:34 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 08 Feb 2006 10:13:34 -0800 Subject: [Maxima] fastquotient? In-Reply-To: References: Message-ID: <43EA34CE.6020301@cs.berkeley.edu> Fabrizio Caruso wrote: >Hi! > >Thanks! >Yes, expand was the problem. > >fasttimes performs roughly the same as "*" >with fairly big dense univariate >polynomials (degree>2500) >which means fasttimes must be probably >using something different then standard Karatsuba. >I wonder it fasttimes does...\ > You can look at the code for fasttimes. Unless someone changed it since I wrote it, it is using a Karatsuba-style multiplier. > >Karatsuba as described in textbooks >splits univariate dense polynomials >into its higher degree part and >lower degree part and by doing so >it avoids one multiplication (3 instead of 4) >at each recursive step. >My C++ implementation of Karatsuba overtakes >on the computers I tested it >the school multiplication algorithm >as soon as the degree is about 100. > That sounds reasonable. The degree of answer or the input? 50X50 --> 100 is a possible winner in my recent tests. Trying it on 10X90 --> 100 you might get a different winner. Also consider that the Karatsuba iteration for say 2500X2500 degree should be cut off at whatever you see as the break-even, and switch to the "school multiplication". On the other hand, for 2500X2500 univariate you can consider FFT multiplication if you really have modest-size coefficients and only one variable. If you are studying this problem seriously, look at what is done by NTL. I also have some programs for splitting in 3 rather than 2 (Cook-Toom) and FFT. RJF From willisb at unk.edu Wed Feb 8 12:19:32 2006 From: willisb at unk.edu (Barton Willis) Date: Wed, 8 Feb 2006 12:19:32 -0600 Subject: [Maxima] fastquotient? In-Reply-To: <43EA1D7F.6010609@cs.berkeley.edu> Message-ID: Off topic, but ... (%i1) load(linalg); (%o1) c:/maxima/share/maxima/5.9.2.19cvs/share/linearalgebra/linalg.mac (%i2) mm[i,j] := 1/(x + i + j)$ (%i3) m : genmatrix(mm,4,4)$ (%i4) showtime : all$ Evaluation took 0.00 seconds (0.00 elapsed) (%i5) lu_factor(m)$ Evaluation took 32.33 seconds (32.33 elapsed) Convert to CRE (%i6) lu_factor(m,crering)$ Evaluation took 00.40 seconds (00.40 elapsed) In general, ratmx controls such behavior---linalg ignores this flag, but allows you to do the same thing using the optional second argument. Barton From van.Nek at gmx.net Wed Feb 8 13:34:07 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Wed, 08 Feb 2006 20:34:07 +0100 Subject: [Maxima] 2 question about arrays Message-ID: <43EA55BF.1132.2B5A223@localhost> Hello, 2 questions about arrays: (C1) test:make_array('fixnum,3,2)$ (C2) test[2,1]:1$ (C3) test; (D3) {Array: #2A((0 0) (0 0) (0 1))} (C4) arrays; (D4) [] (C5) arrayinfo(test); (D5) [declared, 2, [2, 1]] the array named test ist declared. so why is it not listed in the list of arrays? (C6) foo(array,row,col):=array[row,col]$ (C7) foo(test,2,1); (D7) 1 foo works when not compiled, but not when compiled. can someone explain? (C8) compile(foo); Compiling gazonk0.lsp. End of Pass 1. End of Pass 2. OPTIMIZE levels: Safety=2, Space=3, Speed=2 Finished compiling gazonk0.lsp. (D8) [foo] (C9) foo(test,2,1); Maxima encountered a Lisp error: not a valid array reference to #2A((0 0) (0 0) (0 1)) ??? Thank you for an answer. Volker van Nek From macrakis at alum.mit.edu Wed Feb 8 14:32:42 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Wed, 8 Feb 2006 15:32:42 -0500 Subject: [Maxima] 2 question about arrays In-Reply-To: <43EA55BF.1132.2B5A223@localhost> References: <43EA55BF.1132.2B5A223@localhost> Message-ID: <8b356f880602081232q39f73008wb265b02756774cba@mail.gmail.com> > (C1) test:make_array('fixnum,3,2)$ > (C4) arrays; > the array named test ist declared. so why is it not listed in the list of arrays? I'm afraid Maxima's system of arrays is rather messy. There are three kinds of arrays: named Maxima arrays, anonymous Lisp arrays, and lists/matrices used as 1/2-dimensional arrays. The array function creates a named array and adds it to the 'arrays' list. The make_array function creates an *anonymous* array, which is not added to the 'arrays' list. In your example above, you have not named the array, you have assigned an array value to a variable. Finally, you can use lists as 1-dimensional arrays and matrices as 2-dimensional arrays: ar1: [2,3,4]$ ar1[2] => 3 ar2: matrix([2,3],[4,5])$ ar2[2,2] => 5 Personally, I prefer the list/matrix solution because they are first-class objects in the Maxima world, though they are slower -- but that doesn't matter for many applications. > foo works when not compiled, but not when compiled. can someone explain? I'm not sure, but the compiler probably assumes that array is a named array. -s From van.Nek at gmx.net Wed Feb 8 15:40:51 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Wed, 08 Feb 2006 22:40:51 +0100 Subject: [Maxima] 2 question about arrays In-Reply-To: <8b356f880602081232q39f73008wb265b02756774cba@mail.gmail.com> References: <43EA55BF.1132.2B5A223@localhost> Message-ID: <43EA7373.9874.329AA05@localhost> --Alt-Boundary-1209.53062149 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body Am 8 Feb 2006 um 15:32 hat Stavros Macrakis geschrieben: > I'm afraid Maxima's system of arrays is rather messy. There are three > kinds of arrays: named Maxima arrays, anonymous Lisp arrays, and > lists/matrices used as 1/2-dimensional arrays. > > The array function creates a named array and adds it to the 'arrays' list. > > The make_array function creates an *anonymous* array, which is not > added to the 'arrays' list. In your example above, you have not named > the array, you have assigned an array value to a variable. > that makes it clear > Personally, I prefer the list/matrix solution because they are > first-class objects in the Maxima world, though they are slower -- but > that doesn't matter for many applications. I did time consuming computations with 2-dim-lists, so I am interested to know, if arrays are faster. let's see ... > > > foo works when not compiled, but not when compiled. can someone explain? > > I'm not sure, but the compiler probably assumes that array is a named array. named arrays do not seem be a solution. the compiled function does not see the values. (%i1) array(test,2,3); (%o1) test (%i2) arrays; (%o2) [test] (%i3) for r:0 thru 2 do for c:0 thru 3 do test[r,c]: random(10)$ (%i4) printArray(array,rows,cols):= block( [ row ], for r:0 thru rows do ( row:[], for c:cols thru 0 step -1 do row:cons(array[r,c],row), apply('print,row) ) )$ (%i5) printArray(test,2,3); 2 2 4 5 4 1 9 5 8 3 5 5 (%o5) done (%i6) compile(printArray); Compiling gazonk0.lsp. End of Pass 1. End of Pass 2. OPTIMIZE levels: Safety=2, Space=3, Speed=2 Finished compiling gazonk0.lsp. (%o6) [printArray] (%i7) printArray(test,2,3); test test test test 0, 0 0, 1 0, 2 0, 3 test test test test 1, 0 1, 1 1, 2 1, 3 test test test test 2, 0 2, 1 2, 2 2, 3 (%o7) done Volker _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > --Alt-Boundary-1209.53062149 Content-type: text/html; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body
Am 8 Feb 2006 um 15:32 hat Stavros Macrakis geschrieben:

> I'm afraid Maxima's system of arrays is rather messy.  There are three
> kinds of arrays: named Maxima arrays, anonymous Lisp arrays, and
> lists/matrices used as 1/2-dimensional arrays.
>
> The array function creates a named array and adds it to the 'arrays' list.
>
> The make_array function creates an *anonymous* array, which is not
> added to the 'arrays' list.  In your example above, you have not named
> the array, you have assigned an array value to a variable.
>
that makes it clear

> Personally, I prefer the list/matrix solution because they are
> first-class objects in the Maxima world, though they are slower -- but
> that doesn't matter for many applications.

I did time consuming computations with 2-dim-lists, so I am interested to know, if arrays
are faster. let's see ...
>
> > foo works when not compiled, but not when compiled. can someone explain?
>
> I'm not sure, but the compiler probably assumes that array is a named array.

named arrays do not seem be a solution. the compiled function does not see the
values.

(%i1) array(test,2,3);
(%o1)                                            test
(%i2) arrays;
(%o2)                                           [test]
(%i3) for r:0 thru 2 do
            for c:0 thru 3 do
                        test[r,c]: random(10)$
(%i4) printArray(array,rows,cols):= block(
            [ row ],
            for r:0 thru rows do (
                        row:[],
                        for c:cols thru 0 step -1 do row:cons(array[r,c],row),
                        apply('print,row) ) )$
(%i5) printArray(test,2,3);
2 2 4 5
4 1 9 5
8 3 5 5
(%o5)                                            done
(%i6) compile(printArray);
Compiling gazonk0.lsp.
End of Pass 1. 
End of Pass 2. 
OPTIMIZE levels: Safety=2, Space=3, Speed=2
Finished compiling gazonk0.lsp.
(%o6)                                        [printArray]
(%i7) printArray(test,2,3);
test     test          test       test      
     0, 0      0, 1       0, 2        0, 3
test     test          test       test      
     1, 0      1, 1       1, 2       1, 3
test     test          test       test      
     2, 0      2, 1       2, 2       2, 3
(%o7)                                            done

Volker
_______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>

--Alt-Boundary-1209.53062149-- From robert.dodier at gmail.com Wed Feb 8 16:17:10 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 8 Feb 2006 15:17:10 -0700 Subject: [Maxima] 2 question about arrays In-Reply-To: <43EA55BF.1132.2B5A223@localhost> References: <43EA55BF.1132.2B5A223@localhost> Message-ID: hello volker, > foo works when not compiled, but not when compiled. can someone explain? there are many bugs in the maxima->lisp translation code. the problem with array references is one of them. i believe that problem came up on the mailing list a while ago; i don't remember the resolution. if you come up with a solution, i would be very interested to hear about it. sorry that i can't be more helpful, robert From raymond.toy at ericsson.com Wed Feb 8 16:49:08 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Wed, 08 Feb 2006 17:49:08 -0500 Subject: [Maxima] 2 question about arrays In-Reply-To: <43EA55BF.1132.2B5A223@localhost> (van Nek's message of "Wed, 08 Feb 2006 20:34:07 +0100") References: <43EA55BF.1132.2B5A223@localhost> Message-ID: >>>>> "Volker" == van Nek writes: Volker> (C8) compile(foo); Volker> Compiling gazonk0.lsp. Volker> End of Pass 1. Volker> End of Pass 2. Volker> OPTIMIZE levels: Safety=2, Space=3, Speed=2 Volker> Finished compiling gazonk0.lsp. Volker> (D8) [foo] Volker> (C9) foo(test,2,1); Volker> Maxima encountered a Lisp error: Volker> not a valid array reference to #2A((0 0) (0 0) (0 1)) ??? I think this is a bug in maref1 in src/trans2.lisp. I think the method it's using to figure the type of AR is confused wrt to Common Lisp. If I insert a new clause for cond like so: (cond ((typep ar 'cl:array) (apply #'aref ar inds)) ;; <- new stuff ((one-of-types .type. (make-array 3)) (apply #'aref ar inds)) the compiled version actually works. Ray From ficmatin01 at solar.com.br Thu Feb 9 03:12:37 2006 From: ficmatin01 at solar.com.br (Jorge Barros de Abreu) Date: Thu, 9 Feb 2006 07:12:37 -0200 Subject: [Maxima] Maxima i18n In-Reply-To: <43E991CF.80005@mail.ru> References: <43E991CF.80005@mail.ru> Message-ID: <200602090712.37347.ficmatin01@solar.com.br> Hi Vadim. My slackware 10.2 don't have /usr/X11R6/lib/X11/locale/pt_BR.UTF-8 for now, I am going to find this on the internet. []?s -- Data Estelar 2453772.602072 http://www.solar.com.br/~ficmatin Desejo-lhe Paz, Vida Longa e Prosperidade. S?o Bem Vindas Mensagens no Formato Texto Gen?rico com Acentos. From vvzhy at mail.ru Thu Feb 9 09:53:54 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Thu, 09 Feb 2006 18:53:54 +0300 Subject: [Maxima] Maxima i18n In-Reply-To: <200602090712.37347.ficmatin01@solar.com.br> References: <43E991CF.80005@mail.ru> <200602090712.37347.ficmatin01@solar.com.br> Message-ID: <43EB6592.2070106@mail.ru> Jorge Barros de Abreu writes: > My slackware 10.2 don't have /usr/X11R6/lib/X11/locale/pt_BR.UTF-8 for now, > I am going to find this on the internet. Hi! But do you really need it? Is you locale pt_BR.UTF-8 according to locale output? Maybe it pt_BR, then you don't need pt_BR.UTF-8. But please be warned that make install may fail for you. I did some quite unportable things in Makefile.am in all doc/info/{es|es.utf8|pt|pt.utf8} directories. Hope to fix the problem this weekend. -- Vadim V. Zhytnikov From van.Nek at gmx.net Thu Feb 9 11:02:55 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Thu, 09 Feb 2006 18:02:55 +0100 Subject: [Maxima] Re: one more question... In-Reply-To: References: <43E8D80A.28491.5250F5@localhost> Message-ID: <43EB83CF.18299.55BB93@localhost> Am 9 Feb 2006 um 17:30 hat Fabrizio Caruso geschrieben: > Hi again! > > I have one more question about line segments. > > So far, I know that to draw n line segments > I'll have to do something like: > > plot2d([[discrete,[[x1,y1],[x2,y2]]], > [discrete,[................]...] (n times), > [gnuplot_curve_styles, > ["with lines", "with lines", .... "with lines"]) ( n times) > > Is there a simpler way? > > Fabrizio > > Hello Fabrizio, perhaps the following method could be interesting for you: 1. write your data into a file in columns 2. open gnuplot itself and plot the data gnuplot can plot data from columns in a file. (Maxima plot2d makes use of this with the intermediate maxout.gnuplot) if this fits to your your needs, I will explain more in detail cheers Volker From ficmatin01 at solar.com.br Fri Feb 10 02:25:10 2006 From: ficmatin01 at solar.com.br (Jorge Barros de Abreu) Date: Fri, 10 Feb 2006 06:25:10 -0200 Subject: [Maxima] Maxima i18n In-Reply-To: <43EB6592.2070106@mail.ru> References: <43E991CF.80005@mail.ru> <200602090712.37347.ficmatin01@solar.com.br> <43EB6592.2070106@mail.ru> Message-ID: <200602100625.10349.ficmatin01@solar.com.br> Hi Vadim. The change is done. I am using utf-8 but carefully and in observation case. []?s -- Data Estelar 2453773.882766 http://www.solar.com.br/~ficmatin Desejo-lhe Paz, Vida Longa e Prosperidade. S?o Bem Vindas Mensagens no Formato Texto Gen?rico com Acentos. From 99LSharkey at ormskirk.lancs.sch.uk Fri Feb 10 04:55:26 2006 From: 99LSharkey at ormskirk.lancs.sch.uk (Luke Sharkey) Date: Fri, 10 Feb 2006 10:55:26 +0000 Subject: FW: [Maxima] bug report, or am I doing something wrong? Message-ID: <3E783573F8C838449803D19EAFEEA835014DE5BA@orm-ex-001.ormskirk.internal> So does nobody have any feedback for me on the log question, etc.? -----Original Message----- From: Luke Sharkey Sent: 06 February 2006 11:01 To: 'maxima-admin at math.utexas.edu' Subject: RE: [Maxima] bug report, or am I doing something wrong? "Maxima's choice of branches for multi-valued functions." So what can be done about it: when can we know whether the calculated integral / differential is more likely to be corrector not? Am I just going to have to plot it each time? Also: (this caused me a *lot* of headache before I realised what was going on). Its about the log() function. I checked the documentation, and finally realised that log() actually means the *natural logarithm*. Firstly, how does one do log to the base 10 with maxima? Secondly, on every calculator, maths program (Microsoft Excel, etc) and textbook I have ever used, "log" has ALWAYS meant "log to the base 10", and "ln()" log to the base e", unless it is specified in some way, e.g. log2() meaning log to the base 2. I propose that the "log" function should be changed in meaning from natural log to log to the base 10. I personally think a new function should be created as ln() for natural logarithms. At the very least, every time the log function is used, some text should appear below indicating that the such and such a calculation involving a log has been "calculated with log to the base xyz" underneath the output, so people like me don't use it assuming that "log" means "log to the base 10". Thirdly, programs like Excel use "LOG" in uppercase. Maxima should be able to recognise when "LOG" is typed, or copied and pasted in from Excel, that it should be recognised as "log": this should be automatic. Thanks. L Sharkey ________________________________________ From: maxima-admin at math.utexas.edu [mailto:maxima-admin at math.utexas.edu] On Behalf Of Robert Dodier Sent: 31 January 2006 15:45 To: Maxima List Cc: Luke Sharkey Subject: [Maxima] Fwd: bug report, or am I doing something wrong? A quick look suggests the results below stem from Maxima's choice of branches for multi-valued functions. *************************************************************************** This e-mail is confidential and privileged. If you are not the intended recipient do not disclose, copy or distribute information in this e-mail or take any action in reliance on its content. *************************************************************************** *************************************************************************** This email has been checked for known viruses. *************************************************************************** From frank.palazzolo at mcm1.com Fri Feb 10 07:32:20 2006 From: frank.palazzolo at mcm1.com (Frank Palazzolo) Date: Fri, 10 Feb 2006 08:32:20 -0500 Subject: [Maxima] bug report, or am I doing something wrong? In-Reply-To: <3E783573F8C838449803D19EAFEEA835014DE5BA@orm-ex-001.ormskirk.internal> Message-ID: <001a01c62e46$6b889760$1600100a@mcmrnd> Hi Luke, Firstly, although the "calculator" convention of log() vs ln() certainly exists, there is a convention in most (if not all) mathematical programming languages that log() is the natural log. This holds for both numerical (Matlab/Octave) and symbolic (Maxima/Mathematica/Axiom) languages. From a mathematician's standpoint, the natural log is the only "one true logarithm", arising from calculus (arising from the integral of x^(-1)). All others are defined as: Log[base y](x) = ln(x)/ln(y) In Maxima, for example, you can define: log10(x) := log(x)/log(10); After all, using logarithms to the base 10 is really just a consequence of humans having 10 fingers. So, I don't think you're going to get your warning message about log() meaning natural log - it is a standard convention. Maxima function names are case sensitive, so LOG() is not the same as log(). If you really want to, you can do: ln(x) := log(x); LOG(x) := log(x)/log(10); However, this probably asking for more trouble than just using log10() as above. -Frank -----Original Message----- From: maxima-admin at math.utexas.edu [mailto:maxima-admin at math.utexas.edu] On Behalf Of Luke Sharkey Sent: Friday, February 10, 2006 5:55 AM To: maxima at math.utexas.edu Subject: FW: [Maxima] bug report, or am I doing something wrong? So does nobody have any feedback for me on the log question, etc.? -----Original Message----- From: Luke Sharkey Sent: 06 February 2006 11:01 To: 'maxima-admin at math.utexas.edu' Subject: RE: [Maxima] bug report, or am I doing something wrong? "Maxima's choice of branches for multi-valued functions." So what can be done about it: when can we know whether the calculated integral / differential is more likely to be corrector not? Am I just going to have to plot it each time? Also: (this caused me a *lot* of headache before I realised what was going on). Its about the log() function. I checked the documentation, and finally realised that log() actually means the *natural logarithm*. Firstly, how does one do log to the base 10 with maxima? Secondly, on every calculator, maths program (Microsoft Excel, etc) and textbook I have ever used, "log" has ALWAYS meant "log to the base 10", and "ln()" log to the base e", unless it is specified in some way, e.g. log2() meaning log to the base 2. I propose that the "log" function should be changed in meaning from natural log to log to the base 10. I personally think a new function should be created as ln() for natural logarithms. At the very least, every time the log function is used, some text should appear below indicating that the such and such a calculation involving a log has been "calculated with log to the base xyz" underneath the output, so people like me don't use it assuming that "log" means "log to the base 10". Thirdly, programs like Excel use "LOG" in uppercase. Maxima should be able to recognise when "LOG" is typed, or copied and pasted in from Excel, that it should be recognised as "log": this should be automatic. Thanks. L Sharkey ________________________________________ From: maxima-admin at math.utexas.edu [mailto:maxima-admin at math.utexas.edu] On Behalf Of Robert Dodier Sent: 31 January 2006 15:45 To: Maxima List Cc: Luke Sharkey Subject: [Maxima] Fwd: bug report, or am I doing something wrong? A quick look suggests the results below stem from Maxima's choice of branches for multi-valued functions. *************************************************************************** This e-mail is confidential and privileged. If you are not the intended recipient do not disclose, copy or distribute information in this e-mail or take any action in reliance on its content. *************************************************************************** *************************************************************************** This email has been checked for known viruses. *************************************************************************** _______________________________________________ Maxima mailing list Maxima at math.utexas.edu http://www.math.utexas.edu/mailman/listinfo/maxima From raymond.toy at ericsson.com Fri Feb 10 08:20:44 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Fri, 10 Feb 2006 09:20:44 -0500 Subject: FW: [Maxima] bug report, or am I doing something wrong? In-Reply-To: <3E783573F8C838449803D19EAFEEA835014DE5BA@orm-ex-001.ormskirk.internal> (Luke Sharkey's message of "Fri, 10 Feb 2006 10:55:26 +0000") References: <3E783573F8C838449803D19EAFEEA835014DE5BA@orm-ex-001.ormskirk.internal> Message-ID: >>>>> "Luke" == Luke Sharkey <99LSharkey at ormskirk.lancs.sch.uk> writes: Luke> Also: (this caused me a *lot* of headache before I realised Luke> what was going on). Its about the log() function. I Luke> checked the documentation, and finally realised that log() Luke> actually means the *natural logarithm*. I think that's fairly typical in mathematics. We could certainly change the docs to explicitly say it's the natural log, though. Luke> Firstly, how does one do log to the base 10 with maxima? log10(x) := log(x)/log(10); Luke> Secondly, on every calculator, maths program (Microsoft Excel, etc) and Luke> textbook I have ever used, "log" has ALWAYS meant "log to the base 10", Luke> and "ln()" log to the base e", unless it is specified in some way, e.g. Can't help it if they're wrong. :-) I'm pretty sure Mathematica and Maple use log to mean base e. Many math reference books use log. Tables of formulas and integrals use log. Luke> At the very least, every time the log function is used, some text should Luke> appear below indicating that the such and such a calculation involving a Luke> log has been "calculated with log to the base xyz" underneath the Luke> output. I doubt that will happen. Luke> Thirdly, programs like Excel use "LOG" in uppercase. Maxima should be Luke> able to recognise when "LOG" is typed, or copied and pasted in from Luke> Excel, that it should be recognised as "log": this should be automatic. I doubt that will happen either, just like A and a are (now) two different variables. Ray From robert.dodier at gmail.com Fri Feb 10 09:31:15 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 10 Feb 2006 08:31:15 -0700 Subject: [Maxima] bug report, or am I doing something wrong? In-Reply-To: <001a01c62e46$6b889760$1600100a@mcmrnd> References: <3E783573F8C838449803D19EAFEEA835014DE5BA@orm-ex-001.ormskirk.internal> <001a01c62e46$6b889760$1600100a@mcmrnd> Message-ID: On 2/10/06, Frank Palazzolo wrote: > After all, using logarithms to the base 10 is really > just a consequence of humans having 10 fingers. Perhaps sheep, cows, and buffalo would find computers easy to understand, given their natural inclination to count in base 2. The rhinoceros, on the other hand, would want Maxima to have log(x) = log3(x). As for the horse, the lack of toes doubtless accounts for their slow progress, mathematically speaking. Glad to help, Robert Dodier From miquel.cabanas at uab.es Fri Feb 10 10:09:20 2006 From: miquel.cabanas at uab.es (Miquel Cabanas) Date: Fri, 10 Feb 2006 17:09:20 +0100 Subject: [Maxima] bug report, or am I doing something wrong? In-Reply-To: References: <001a01c62e46$6b889760$1600100a@mcmrnd> Message-ID: <1139587760.14468.31.camel@sermn02.uab.es> On Fri, 2006-02-10 at 08:31 -0700, Robert Dodier wrote: > On 2/10/06, Frank Palazzolo wrote: > > > After all, using logarithms to the base 10 is really > > just a consequence of humans having 10 fingers. > > ... > > As for the horse, the lack of toes doubtless accounts for > their slow progress, mathematically speaking. but they seem to be good on practical psychology, see http://www.kbrhorse.net/tra/hans.html and to be fair, there's at least one report of a "really smart horse" in this science page, http://www.xs4all.nl/~jcdverha/scijokes/1_6.html (smarter than me, I took me a while to understand the joke, language matters) Miquel From sangwinc at for.mat.bham.ac.uk Fri Feb 10 10:05:19 2006 From: sangwinc at for.mat.bham.ac.uk (Chris Sangwin) Date: Fri, 10 Feb 2006 16:05:19 +0000 (GMT) Subject: [Maxima] bug report, or am I doing something wrong? In-Reply-To: Message-ID: In a rather nice paper by Margret Brown, full ref below, she suggests a new convention for lograithms. Her paper uses \uparrow and \downarrow, but this can be translated into CAS syntax as follows. a^b as ususal. a_b will be log_a(b). This gives, for example, a^(a_b)= a_(a^b) = b. Well, sometimes anyway. Any volunteers to add this to Maxima?! Chris @ARTICLE{Brown1974, author = {Brown, M.}, title = {Some thoughts on the use of computer symbols in mathematics}, journal = {The Mathematical Gazette}, year = {1974}, volume = {58}, number = {404}, pages = {78--79}, month = {June}, } On Fri, 10 Feb 2006, Robert Dodier wrote: > On 2/10/06, Frank Palazzolo wrote: > > > After all, using logarithms to the base 10 is really > > just a consequence of humans having 10 fingers. > > Perhaps sheep, cows, and buffalo would find computers easy > to understand, given their natural inclination to count in base 2. > The rhinoceros, on the other hand, would want Maxima to > have log(x) = log3(x). > > As for the horse, the lack of toes doubtless accounts for > their slow progress, mathematically speaking. > > Glad to help, > > Robert Dodier > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From robert.dodier at gmail.com Fri Feb 10 11:12:19 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 10 Feb 2006 10:12:19 -0700 Subject: [Maxima] bug report, or am I doing something wrong? In-Reply-To: <1139587760.14468.31.camel@sermn02.uab.es> References: <001a01c62e46$6b889760$1600100a@mcmrnd> <1139587760.14468.31.camel@sermn02.uab.es> Message-ID: On 2/10/06, Miquel Cabanas wrote: > http://www.kbrhorse.net/tra/hans.html Now if Clever Hans could count in base 6, let's say, nodding his head, swishing his tail, and getting all 4 feet into the action, that, now THAT, would be impressive. The kind of thing that should be etched onto a gold plaque and fired off into interstellar space as proof of intelligent life on Earth. I can just imagine Sagan's Pioneer 10 plaque with a horse in the background. Or the foreground, for that matter. Gives a whole new meaning to "Chariots of the Gods". Speculatively yrs, Robert From biomates at telefonica.net Fri Feb 10 11:32:41 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Fri, 10 Feb 2006 18:32:41 +0100 Subject: FW: [Maxima] bug report, or am I doing something wrong? In-Reply-To: <3E783573F8C838449803D19EAFEEA835014DE5BA@orm-ex-001.ormskirk.internal> References: <3E783573F8C838449803D19EAFEEA835014DE5BA@orm-ex-001.ormskirk.internal> Message-ID: <1139592761.8363.18.camel@localhost.localdomain> Luke, When you call Maxima, it looks for a file called 'maxima-init.mac' in the directory '~/.maxima' and executes the code in it. So, you can write loga(x,a):=log(x)/log(a)$ or log10(x):=log(x)/log(10)$ or anything you wish in 'maxima-init.mac' and Maxima will be able to compute the corresponding logarithms without retyping the code. Mario -- Mario Rodriguez Riotorto www.biomates.net From fateman at cs.berkeley.edu Fri Feb 10 11:36:03 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Fri, 10 Feb 2006 09:36:03 -0800 Subject: [Maxima] bug report, or am I doing something wrong? References: Message-ID: <008f01c62e68$7cd09a00$13d09888@windsor> I think that you are free to define _ as a new syntactic operator using syntax extension. You can then use it as much as you like, as long as you do not conflict with other uses, like a separator between words in a name like Chris_Sangwin. As for making it part of maxima, I vote no. The world has had 31 years to adopt this convention of Margret Brown, and I think it hasn't caught on :) RJF From Harald.Geyer at gmx.at Fri Feb 10 12:09:34 2006 From: Harald.Geyer at gmx.at (Harald Geyer) Date: Fri, 10 Feb 2006 19:09:34 +0100 Subject: [Maxima] Maxima i18n In-Reply-To: <43E991CF.80005@mail.ru> References: <43E991CF.80005@mail.ru> Message-ID: > 3. All .html is still in ISO-8859-1. Must > be fixed. I don't think so. There are *lots* of websites using latin1 or latin9 encoding. Every sane www-browser should be able to handle that. No matter what's the local locale. > 5. Very serious portability problem. > Which program to use for ISO->UTF conversion? > For Linux the natural choice is iconv -- this > program is part of glibc and must be > present on all modern Linux distros. > But what about other UNIX? I don't know. > Recode? Any other ideas? If in doubt, I would add an option to the configure script, to do that. (And wait for patches from people who actually use some other system...) Regards, Harald From macrakis at alum.mit.edu Fri Feb 10 12:32:47 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Fri, 10 Feb 2006 13:32:47 -0500 Subject: [Maxima] bug report, or am I doing something wrong? In-Reply-To: References: Message-ID: <8b356f880602101032h28970d5s4b7c00daa9c2679d@mail.gmail.com> ------=_Part_10055_30516952.1139596367212 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > > Her paper uses \uparrow and > \downarrow, but this can be translated into CAS syntax as follows. > > a^b as ususal. > > a_b will be log_a(b). > So... is anyone actually using this convention? I haven't seen it. But it brings up another issue, which is that Unicode has a very rich collection of operator symbols which it would be nice to be able to use. I don't know what the current situation is on Unicode support in our Lisps. Actually, the Unicode support doesn't even need to be very "deep", just something done in the front ends. After all, UTF-8 looks just like any othe= r sequence of 8-bit codes, and only i/O and string operations care. I would be happy even if string operations were ignorant of Unicode. Any news on that front? (Of course, there is then the problem of input methods, and teaching Displa about these characters...) -s ------=_Part_10055_30516952.1139596367212 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
Her paper us= es \uparrow and
\downarrow, but this can be translated into CAS syntax a= s follows.

a^b as ususal.

a_b will be log_a(b).
<= br>So... is anyone actually using this convention?  I haven't seen it.

But it brings up another= issue, which is that Unicode has a very rich collection of operator symbol= s which it would be nice to be able to use.  I don't know what the cur= rent situation is on Unicode support in our Lisps.  Actually, the Unic= ode support doesn't even need to be very "deep", just something d= one in the front ends. After all, UTF-8 looks just like any other sequence = of 8-bit codes, and only i/O and string operations care.  I would be h= appy even if string operations were ignorant of Unicode.

Any news on that front?  (Of course, there is then the problem= of input methods, and teaching Displa about these characters...)

&n= bsp;           -s
------=_Part_10055_30516952.1139596367212-- From raymond.toy at ericsson.com Fri Feb 10 12:56:32 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Fri, 10 Feb 2006 13:56:32 -0500 Subject: [Maxima] Maxima i18n In-Reply-To: <43E991CF.80005@mail.ru> (Vadim V. Zhytnikov's message of "Wed, 08 Feb 2006 09:38:07 +0300") References: <43E991CF.80005@mail.ru> Message-ID: >>>>> "Vadim" == Vadim V Zhytnikov writes: Vadim> 5. Very serious portability problem. Vadim> Which program to use for ISO->UTF conversion? Vadim> For Linux the natural choice is iconv -- this Vadim> program is part of glibc and must be Vadim> present on all modern Linux distros. Vadim> But what about other UNIX? I don't know. Vadim> Recode? Any other ideas? Solaris and Mac OS X both have iconv. Don't know whether it will do the same thing as Linux iconv, but at least iconv is there. Ray From robert.dodier at gmail.com Fri Feb 10 13:18:40 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 10 Feb 2006 12:18:40 -0700 Subject: [Maxima] bug report, or am I doing something wrong? In-Reply-To: <8b356f880602101032h28970d5s4b7c00daa9c2679d@mail.gmail.com> References: <8b356f880602101032h28970d5s4b7c00daa9c2679d@mail.gmail.com> Message-ID: hello stavros, > But it brings up another issue, which is that Unicode has a very rich > collection of operator symbols which it would be nice to be able to use. I > don't know what the current situation is on Unicode support in our Lisps. > Actually, the Unicode support doesn't even need to be very "deep", just > something done in the front ends. After all, UTF-8 looks just like any other > sequence of 8-bit codes, and only i/O and string operations care. I would > be happy even if string operations were ignorant of Unicode. i'd like to see that. i don't know how to make it happen, though. robert From richard at exstrom.com Fri Feb 10 14:18:53 2006 From: richard at exstrom.com (Richard Hollos) Date: Fri, 10 Feb 2006 13:18:53 -0700 Subject: [Maxima] Robert Dodier's read_list function Message-ID: <20060210201853.GA19918@exstrom.com> Hello fellow Maximaists, Robert Dodier wrote a very nice set of functions for reading data into Maxima which I downloaded from http://riso.sourceforge.net/maxima/read_write_data-0.1.tar.gz and have used with no problem under Maxima 5.9.2 and clisp. I have since compiled Maxima using the latest cmucl. The build_info() is: Maxima version: 5.9.2 Maxima build date: 12:31 2/2/2006 host type: i686-pc-linux-gnu lisp-implementation-type: CMU Common Lisp lisp-implementation-version: 19c (19C) and now I get an error when I call Robert's read_list function. The code for this function is: (defun $read_list (file-name &optional sep-ch) (setq a '()) (with-open-file (in (stripdollar file-name)) (setq sep-ch (get-sep-ch sep-ch)) (loop (setq l (read-line in nil 'eof)) (if (eq l 'eof) (return (cons '(mlist simp) a))) (setq a (append a (cdr (make-mlist-from-string l sep-ch))))))) and the error that I get when I call the function like this read_list("/project/dgf/temp.dat"); is Maxima encountered a Lisp error: Type-error in KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER: /PROJECT/DGF/TEMP.DAT is not of type (OR BASE-STRING FILE-STREAM PATHNAME) Automatically continuing. In trying to track it down, it looks like the error is occuring at the "with-open-file" call. Any suggestions as to how to fix this problem are appreciated. Richard Hollos From robert.dodier at gmail.com Fri Feb 10 14:30:03 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 10 Feb 2006 13:30:03 -0700 Subject: [Maxima] Robert Dodier's read_list function In-Reply-To: <20060210201853.GA19918@exstrom.com> References: <20060210201853.GA19918@exstrom.com> Message-ID: hello richard, thanks for your interest in maxima. > http://riso.sourceforge.net/maxima/read_write_data-0.1.tar.gz sorry, that's an experimental version that is long since superseded. i should have erased it long ago. sorry for the confusion. the most recent version is in the 5.9.2 tarball, which i guess you must have since you mention recompiling maxima. it is named "numericalio" now, which is unfortunately a misnomer since it reads symbols and strings as well as numbers. perhaps it should be renamed to "atomicio" or something since those things are all atoms. anyway, i believe load (numericalio); should load the lisp code. the lisp code should be located at maxima/share/contrib/numericalio/, which also contains several example input files and test scripts. please try again and let us know how it turns out. best, robert dodier From van.Nek at gmx.net Fri Feb 10 14:52:01 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Fri, 10 Feb 2006 21:52:01 +0100 Subject: [Maxima] 2 question about arrays In-Reply-To: References: <43EA55BF.1132.2B5A223@localhost> (van Nek's message of "Wed, 08 Feb 2006 20:34:07 +0100") Message-ID: <43ED0B01.20263.115A80F@localhost> --Alt-Boundary-25115.18196495 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body Am 8 Feb 2006 um 17:49 hat Raymond Toy geschrieben: Thank you, Raymond! Hi all! > I think this is a bug in maref1 in src/trans2.lisp. I think the > method it's using to figure the type of AR is confused wrt to Common > Lisp. > > If I insert a new clause for cond like so: > > (cond > ((typep ar 'cl:array) > (apply #'aref ar inds)) ;; <- new stuff > ((one-of-types .type. (make-array 3)) (apply #'aref ar inds)) > > the compiled version actually works. I have tested a lot and Raymonds fix does it. But only for arrays defined with 'make_array'. Other definitions ( with function 'array' ) fail with compiled code. Volker van Nek (%i1) load("trans2.lisp"); <--- fixed (%o1) F:/Programme/Maxima-5.9.2/share/maxima/5.9.2/src/trans2.lisp (%i2) test: make_array('fixnum,5,3)$ (%i3) for r:0 thru 4 do for c:0 thru 2 do test[r,c]: random(10)$ (%i4) printArray(array,rows,cols):= block( [ row ], for r:0 thru rows-1 do ( row:[], for c:cols-1 thru 0 step -1 do row:cons(array[r,c],row), apply('print,row) ) )$ (%i5) printArray(test,5,3); 2 2 4 5 4 1 9 5 8 3 5 5 0 6 9 (%o5) done (%i6) compile(printArray); Compiling gazonk0.lsp. End of Pass 1. End of Pass 2. OPTIMIZE levels: Safety=2, Space=3, Speed=2 Finished compiling gazonk0.lsp. (%o6) [printArray] (%i7) printArray(test,5,3); 2 2 4 5 4 1 9 5 8 3 5 5 0 6 9 (%o7) done --Alt-Boundary-25115.18196495 Content-type: text/html; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body
Am 8 Feb 2006 um 17:49 hat Raymond Toy geschrieben:

Thank you, Raymond!  Hi all!

> I think this is a bug in maref1 in src/trans2.lisp.  I think the
> method it's using to figure the type of AR is confused wrt to Common
> Lisp. 
>
> If I insert a new clause for cond like so:
>
>     (cond
>       ((typep ar 'cl:array)
>        (apply #'aref ar inds)) ;; <- new stuff
>       ((one-of-types .type. (make-array 3))     (apply #'aref ar inds))
>
> the compiled version actually works.

I have tested a lot and Raymonds fix does it. But only for arrays defined with 'make_array'. Other definitions ( with function 'array' ) fail with compiled code.

Volker van Nek

(%i1) load("trans2.lisp");  <--- fixed
(%o1)   F:/Programme/Maxima-5.9.2/share/maxima/5.9.2/src/trans2.lisp
(%i2) test: make_array('fixnum,5,3)$
(%i3) for r:0 thru 4 do
            for c:0 thru 2 do
              test[r,c]: random(10)$
(%i4) printArray(array,rows,cols):= block(
            [ row ],
            for r:0 thru rows-1 do (
              row:[],
              for c:cols-1 thru 0 step -1 do row:cons(array[r,c],row),
              apply('print,row) ) )$
(%i5) printArray(test,5,3);
2 2 4
5 4 1
9 5 8
3 5 5
0 6 9
(%o5)                                            done
(%i6) compile(printArray);
Compiling gazonk0.lsp.
End of Pass 1. 
End of Pass 2. 
OPTIMIZE levels: Safety=2, Space=3, Speed=2
Finished compiling gazonk0.lsp.
(%o6)                                        [printArray]
(%i7) printArray(test,5,3);
2 2 4
5 4 1
9 5 8
3 5 5
0 6 9
(%o7)                                            done
--Alt-Boundary-25115.18196495-- From vvzhy at mail.ru Fri Feb 10 15:20:51 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Sat, 11 Feb 2006 00:20:51 +0300 Subject: [Maxima] Maxima i18n In-Reply-To: References: <43E991CF.80005@mail.ru> Message-ID: <43ED03B3.2080805@mail.ru> Harald Geyer writes: >> 3. All .html is still in ISO-8859-1. Must >> be fixed. > > I don't think so. There are *lots* of websites using latin1 > or latin9 encoding. Every sane www-browser should be able > to handle that. No matter what's the local locale. Actually I worried about xmaxima built-in browser which is not so advanced. Bit it is OK -- I've checked. So agreed. All .html will be in latin1 (iso-8859-1). >> 5. Very serious portability problem. >> Which program to use for ISO->UTF conversion? >> For Linux the natural choice is iconv -- this >> program is part of glibc and must be >> present on all modern Linux distros. >> But what about other UNIX? I don't know. >> Recode? Any other ideas? > > If in doubt, I would add an option to the configure script, > to do that. (And wait for patches from people who actually > use some other system...) > I'll make 1. iconv default 2. recode if iconv is absent 3. and option which forces recode. -- Vadim V. Zhytnikov From vvzhy at mail.ru Fri Feb 10 15:35:26 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Sat, 11 Feb 2006 00:35:26 +0300 Subject: [Maxima] Maxima i18n In-Reply-To: References: <43E991CF.80005@mail.ru> Message-ID: <43ED071E.6000304@mail.ru> Raymond Toy writes: > > Solaris and Mac OS X both have iconv. Don't know whether it will do > the same thing as Linux iconv, but at least iconv is there. > Thank you for the information! Following you hint I found some Mac OS and Solaris man pages for iconv on the net. It looks the same on all platforms. Good. -- Vadim V. Zhytnikov From raymond.toy at ericsson.com Fri Feb 10 15:34:27 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Fri, 10 Feb 2006 16:34:27 -0500 Subject: [Maxima] 2 question about arrays In-Reply-To: <43ED0B01.20263.115A80F@localhost> (van Nek's message of "Fri, 10 Feb 2006 21:52:01 +0100") References: <43EA55BF.1132.2B5A223@localhost> <43ED0B01.20263.115A80F@localhost> Message-ID: >>>>> "Volker" == van Nek writes: Volker> I have tested a lot and Raymonds fix does it. But only for arrays defined with Cool! Volker> 'make_array'. Other definitions ( with function 'array' ) fail with compiled code. Bummer. If you have other examples, please send them on, and I'll try to look at them. Can't promise I can fix it, but I'll at least look at them. :-) Ray From jamesahart79 at gmail.com Fri Feb 10 17:12:58 2006 From: jamesahart79 at gmail.com (James Hart) Date: Fri, 10 Feb 2006 18:12:58 -0500 Subject: [Maxima] Standard maxima installation under Linux? Message-ID: Hello all. I am trying to make a GUI for manipulating mathematics. My GUI can use Maxima as a back end to help it solve some of the more challenging problems. I have it working under windows, but I haven't tested it under Linux yet. Unfortunately, I don't know enough about Linux to make meaningful choices, so I came here. Basically, my questions are: 1) Is there a standard installation directory for Maxima under Linux systems? The download on sourceforge looks like a zip file, and like I said I have little experience with Linux. I would like to allow my program to autodetect Maxima if it can. 2) Once Maxima is installed (or just downloaded) how does one start the program from the command line? Basically, where is the "executable", and what is its name? Are any command-line options needed? Etc. From ficmatin01 at solar.com.br Sat Feb 11 03:59:28 2006 From: ficmatin01 at solar.com.br (Jorge Barros de Abreu) Date: Sat, 11 Feb 2006 07:59:28 -0200 Subject: [Maxima] Maxima i18n In-Reply-To: <200602100625.10349.ficmatin01@solar.com.br> References: <43E991CF.80005@mail.ru> <43EB6592.2070106@mail.ru> <200602100625.10349.ficmatin01@solar.com.br> Message-ID: <200602110759.28601.ficmatin01@solar.com.br> Hi. OpenOffice don't work correctly. Turning off utf-8. Using iso-8859-1 again. []?s Em Fri 10 Feb 2006 06:25, Jorge Barros de Abreu escreveu: > The change is done. > I am using utf-8 but carefully and in observation case. > > []?s -- Data Estelar 2453774.937442 http://www.solar.com.br/~ficmatin Desejo-lhe Paz, Vida Longa e Prosperidade. S?o Bem Vindas Mensagens no Formato Texto Gen?rico com Acentos. From yhonda at mac.com Sat Feb 11 03:54:57 2006 From: yhonda at mac.com (Yasuaki Honda) Date: Sat, 11 Feb 2006 18:54:57 +0900 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: References: Message-ID: <4446344F-C87D-4AD7-937F-D61449699271@mac.com> Dear Robert san, I have noticed that slightly older clisp (aka 2.33-2) does not compile clmacs.lisp successfully, hence entire make process to stop. This is because if the symbol *FLOATING-POINT-RATIONAL-CONTAGION-ANSI* in package "custom" is not defined (that is the case for older clisp), accessing to the symbol causes an error during compilation. To fix this issue is simple. The following patch allows that the newest clisp (2.38) compiles things correctly while older clisp ignores things safely. ------------start here------------- *** clmacs.lisp Sat Feb 11 18:23:04 2006 --- clmacs.lisp.orig Sat Feb 11 17:34:10 2006 *************** *** 467,474 **** ;; in those few cases when the mathematical result is exact although ;; one of the arguments is a floating-point number, such as (* 0 ;; 1.618), (/ 0 1.618), (atan 0 1.0), (expt 2.0 0) ! (let ((fprca (find-symbol "*FLOATING-POINT-RATIONAL-CONTAGION- ANSI*" :CUSTOM))) ! (if fprca (set fprca t))) ! ) (defmacro float (x &optional (y 1.0d0)) `(cl:float ,x ,y)) --- 467,473 ---- ;; in those few cases when the mathematical result is exact although ;; one of the arguments is a floating-point number, such as (* 0 ;; 1.618), (/ 0 1.618), (atan 0 1.0), (expt 2.0 0) ! (setq custom:*floating-point-rational-contagion-ansi* t) ! ) (defmacro float (x &optional (y 1.0d0)) `(cl:float ,x ,y)) ------------end here------------- The reason I am asking this is because some packaging system, namely Fink on Mac OS X in my case, only provides older clisp thus the compilation of maxima certainly fails here. I would very much appreciate if you would consider to incorporate this patch in 5.9.3. If that is not possible, could you please apply the patch to main CVS tree? Yasuaki Honda On 2006/02/02, at 6:50 AM, Robert Dodier wrote: > Hello, > > I would like to put the wheels in motion for a 5.9.3 release. > There have been many bug fixes and enhancements since > the last release, and I want to make them available to users. > > So far as I know, the most important problem to solve at > the moment is to get the texinfo help system working. > I am also aware that there is work in progress on the > linear algebra code, and there is a persistent bug in one > of the test suite files. > > What is the status of the help system? If it is not working > at the moment, what can we do to bring it to a working state? > > Thanks to everyone for their contributions. > > Robert Dodier > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima From Harald.Geyer at gmx.at Sat Feb 11 11:39:56 2006 From: Harald.Geyer at gmx.at (Harald Geyer) Date: Sat, 11 Feb 2006 18:39:56 +0100 Subject: [Maxima] Standard maxima installation under Linux? In-Reply-To: References: Message-ID: > Hello all. I am trying to make a GUI for manipulating mathematics. > My GUI can use Maxima as a back end to help it solve some of the more > challenging problems. I have it working under windows, but I haven't > tested it under Linux yet. Unfortunately, I don't know enough about > Linux to make meaningful choices, so I came here. A general hint: If you want some example how to write a Windows/Linux cross-os program, you might want to look at wxMaxima: http://sourceforge.net/projects/wxmaxima > Basically, my questions are: > > 1) Is there a standard installation directory for Maxima under Linux > systems? The download on sourceforge looks like a zip file, and like > I said I have little experience with Linux. I would like to allow my > program to autodetect Maxima if it can. Under Linux and all Unices AFAIK software packages are usually spread across the file system. The executable is most likely /usr/bin/maxima or /usr/local/bin/maxima Additional maxima packages probably are somewhere like /usr/share/maxima//... Your issues are not specific to maxima but depend on the linux distribution used or the taste of the local admin. Probably it would be a good idea to look for some (linux)experienced programmer to work together on your project. Regards, Harald From vvzhy at mail.ru Sat Feb 11 13:06:43 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Sat, 11 Feb 2006 22:06:43 +0300 Subject: [Maxima] Maxima i18n In-Reply-To: <43E991CF.80005@mail.ru> References: <43E991CF.80005@mail.ru> Message-ID: <43EE35C3.2090500@mail.ru> Hi! I've committed into Maxima CVS fixes for all known i18n problems. Now Maxima should work OK with es and pt documentation in ISO-8859-1 and UTF-8 locales (Unicode enabled Lisp is required for UTF-8 ones). > 2. At present .info files in .utf8 directories > get recoder into UTF-8 only on make install stage. > This must be changed -- we want UTF-8 infos > on make stage. Fixed. > 3. All .html is still in ISO-8859-1. Must > be fixed. All .html docs are left in iso-8859-1. But we can recode it to utf-8 if it is really needed. > 4. There are some problem with portability > of current Makefile.am reported by Robert. Fixed. Old code worked only with automake 1.9. Now it works with all version from 1.6 to 1.9. > 5. Very serious portability problem. > Which program to use for ISO->UTF conversion? > For Linux the natural choice is iconv -- this > program is part of glibc and must be > present on all modern Linux distros. > But what about other UNIX? I don't know. > Recode? Any other ideas? iconv is used to convert charsets by default. recode is tried if iconv is absent and new option --enable-recode forces recode. Windows builds are available at ftp://ftp.altlinux.ru/pub/people/vvz/Maxima Please test and report problems on all platforms. Best wishes, Vadim -- Vadim V. Zhytnikov From dp2 at cise.ufl.edu Sat Feb 11 16:14:59 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Sat, 11 Feb 2006 17:14:59 -0500 (EST) Subject: [Maxima] how to do this substitution? Plz suggest Message-ID: <63690.70.171.54.119.1139696099.squirrel@webmail.cise.ufl.edu> Hi, I need to apply a substitution rule in the following manner: Lets say (%i14) eq:sum(d(i1,i2)*f(i1)*d(i3,i1),i1,1,n); n ==== \ (%o14) > f(i1) d(i1, i2) d(i3, i1) / ==== i1 = 1 Now, I need to substitute it with f(i2)*d(i3,i2) i.e. I am removing summation and function ?d(index of the summation, any variable say i2)?, as well as replacing index of summation in all the functions within the summation with the i2 (the second variable of function d). I tried the following thing but didn?t work. (%i10) matchdeclare([i,j,k,q],all); (%o10) done (%i12) apply(defrule,[rule1,sum(d(i,j)*q(i),i,1,k),q(j)]); k ==== \ (%o12) rule1 : > q(i) d(i, j) -> q(j) / ==== i = 1 (%i13) apply(apply1,[eq,rule1]); n ==== \ (%o13) > d(i1, i2) f(i2) d(i3, i2) / ==== i2 = 1 Although I was able to do it with one specific function, like this: (%i16) apply(defrule,[rule1,sum(d(i,j)*f(i),i,1,k),f(j)]); k ==== \ (%o16) rule1 : > f(i) d(i, j) -> f(j) / ==== i = 1 (%i17) eq:sum(d(i1,i2)*f(i1),i1,1,n); n ==== \ (%o17) > f(i1) d(i1, i2) / ==== i1 = 1 (%i18) apply(apply1,[eq,rule1]); (%o18) f(i2) But, the equation within summation can have more functions in product. If you have any clue, please suggest. Regards Dileep From fateman at cs.berkeley.edu Sat Feb 11 16:58:08 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Sat, 11 Feb 2006 14:58:08 -0800 Subject: [Maxima] how to do this substitution? Plz suggest References: <63690.70.171.54.119.1139696099.squirrel@webmail.cise.ufl.edu> Message-ID: <017201c62f5e$a0ac3730$13d09888@windsor> Again, I think what you are trying to do is already available. See http://arxiv.org/PS_cache/cs/pdf/0503/0503073.pdf Generally, the use of macsyma's top-level pattern matcher (defrule, defmatch, tellsimp,...) is plausible for defining rules for newly-defined functions, and for picking out coefficients in a sum or product, e.g. the coefficient of x^2. It is not suitable for backtrack matching in which the intention is to find, after some number of attempts, a way of matching terms in a sum or product by some unguided heuristic. If you want to write a program that looks at the summation index, here i1, and then looks for repeated occurrences of i1 in the summand, and then constructs a new summand, then you can go write such a program. In your pattern indicated below, you are looking for a product of EXACTLY TWO items in the sum, d(i,j), f(i), where i= index of summation. The pattern will NOT match any product of 3 or more terms. Do NOT write a pattern with 3 terms: they will be either matched or not in ONE PASS. If a different permutation of the terms could match, the matching program WILL NOT look for it. How to fix this? grab the summand. (You can do this with pattern matching if you wish. ) Put each of the terms in a list. Then iterate over the list looking for what you want. Or, use someone else's program. Good luck. RJF ----- Original Message ----- From: To: Sent: Saturday, February 11, 2006 2:14 PM Subject: [Maxima] how to do this substitution? Plz suggest > Hi, > I need to apply a substitution rule in the following manner: > Lets say > > (%i14) eq:sum(d(i1,i2)*f(i1)*d(i3,i1),i1,1,n); > > n > > ==== > > \ > > (%o14) > f(i1) d(i1, i2) d(i3, i1) > > / > > ==== > > i1 = 1 > > > > Now, I need to substitute it with > f(i2)*d(i3,i2) > i.e. I am removing summation and function "d(index of the summation, any > variable say i2)", as well as replacing index of summation in all the > functions within the summation with the i2 (the second variable of > function d). > > I tried the following thing but didn't work. > > (%i10) matchdeclare([i,j,k,q],all); > > (%o10) done > > (%i12) apply(defrule,[rule1,sum(d(i,j)*q(i),i,1,k),q(j)]); > > > > k > > ==== > > \ > > (%o12) rule1 : > q(i) d(i, j) -> q(j) > > / > > ==== > > i = 1 > > (%i13) apply(apply1,[eq,rule1]); > > n > > ==== > > \ > > (%o13) > d(i1, i2) f(i2) d(i3, i2) > > / > > ==== > > i2 = 1 > > > Although I was able to do it with one specific function, like this: > > (%i16) apply(defrule,[rule1,sum(d(i,j)*f(i),i,1,k),f(j)]); > > > > k > > ==== > > \ > > (%o16) rule1 : > f(i) d(i, j) -> f(j) > > / > > ==== > > i = 1 > > (%i17) eq:sum(d(i1,i2)*f(i1),i1,1,n); > > n > > ==== > > \ > > (%o17) > f(i1) d(i1, i2) > > / > > ==== > > i1 = 1 > > (%i18) apply(apply1,[eq,rule1]); > > (%o18) f(i2) > > > > But, the equation within summation can have more functions in product. > > If you have any clue, please suggest. > Regards > > Dileep > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From jrichards1981 at gmail.com Fri Feb 10 17:24:09 2006 From: jrichards1981 at gmail.com (Jason Richards) Date: Fri, 10 Feb 2006 16:24:09 -0700 Subject: [Maxima] Gnuplot problem Message-ID: <0F9F6B85-2D1F-4DFC-969C-99BD735407ED@gmail.com> Hello, I am new to maxima, i am running a macintosh g4, on tiger os x 10.4. I am trying to get maxima up and running. I have gotten as far as getting all the packages required by fink, i have ran it on an x window and in emacs using imaxima. I like the imaxima version, but i like the imaxima version better. The problem I keep running into is when i try to run a command like : plot2d(3*x+8); or something like that , i get the error "gnuplot: command not found" I don't know why this keeps happening, i have gnuplot installed, and it runs in x window's, is there something else i need to do to configure maxima to see gnuplot, or could it be something else. If there are any suggestions, it would be much appreciated. Thanks, Jason From jhammond at math.utexas.edu Sat Feb 11 17:50:13 2006 From: jhammond at math.utexas.edu (John Hammond) Date: Sat, 11 Feb 2006 17:50:13 -0600 Subject: [Maxima] trouble with resultants and gmane Message-ID: hi- I have an issue with the behavior/implementation of $resultant in 5.9.2. put simply, $resultant is tossing the (coefficient) denominators of it arguments, and as such, does not return their resultant. for example: f:(x-a1)*(x-a2); g:(x-b1)*(x-b2); resultant(3*f, g, x) => 9 (a1 - b1) (a2 - b1) (a1 - b2) (a2 - b2) resultant(f/3, g, x) => (a1 - b1) (a2 - b1) (a1 - b2) (a2 - b2) before passing the computation to procedure designated by the variable $resultant, the function $resultant is clobbering its arguments with the cadr's of their respective ratrep*'s. thus 3 survives but 1/3 does not. clearly, having everybody integral is preferable for the actual computation, but I think the appropriate powers of the denominators should be multiplied back into the answer. -John [p.s. it seems that gmane's blog-style-post-a-message automated interface has the wrong address for the mailing list.] From robert.dodier at gmail.com Sat Feb 11 20:33:25 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sat, 11 Feb 2006 19:33:25 -0700 Subject: [Maxima] Standard maxima installation under Linux? In-Reply-To: References: Message-ID: hello james, > 1) Is there a standard installation directory for Maxima under Linux > systems? The download on sourceforge looks like a zip file, and like > I said I have little experience with Linux. I would like to allow my > program to autodetect Maxima if it can. you need an rpm (precompiled binaries + supporting files and packaging information) for your linux system. what is your linux distribution? don't worry about where files go -- rpm takes care of that. also, don't bother with the zip / tar / tar.gz files, those are for people who are going to recompile maxima. > 2) Once Maxima is installed (or just downloaded) how does one start > the program from the command line? Basically, where is the > "executable", and what is its name? Are any command-line options > needed? Etc. just enter "maxima" to launch it from the command line. there aren't any required options. what is the method by which your front end is going to talk to maxima? hope this helps, robert dodier From jamesahart79 at gmail.com Sun Feb 12 00:36:37 2006 From: jamesahart79 at gmail.com (James Hart) Date: Sun, 12 Feb 2006 01:36:37 -0500 Subject: [Maxima] Standard maxima installation under Linux? In-Reply-To: References: Message-ID: On 2/11/06, Robert Dodier wrote: > hello james, > > > 1) Is there a standard installation directory for Maxima under Linux > > systems? The download on sourceforge looks like a zip file, and like > > I said I have little experience with Linux. I would like to allow my > > program to autodetect Maxima if it can. > > you need an rpm (precompiled binaries + supporting files and > packaging information) for your linux system. > what is your linux distribution? I actually don't have a distro (although I know where one computer is that I can test it on). I want to make it usable on as many systems as possible. However, my program is going to be distributed by an educational distro known as OpenLab GNU/Linux, and I would particularly like it to be easily usable on that system. > > don't worry about where files go -- rpm takes care of that. > also, don't bother with the zip / tar / tar.gz files, those are > for people who are going to recompile maxima. > > > 2) Once Maxima is installed (or just downloaded) how does one start > > the program from the command line? Basically, where is the > > "executable", and what is its name? Are any command-line options > > needed? Etc. > > just enter "maxima" to launch it from the command line. > there aren't any required options. > > what is the method by which your front end is going to > talk to maxima? It is a Java program that uses Maxima as an external process, communicating via streams. I think this is completely analgous to having my program sit down at a console and start typing. Am I right in thinking that the users current directory doesn't matter when starting maxima, as long as it has been installed? That was my biggest problem under windows. If so, then implementing this should be relatively easy. > > hope this helps, > robert dodier > From andrej.vodopivec at gmail.com Sun Feb 12 03:13:11 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Sun, 12 Feb 2006 01:13:11 -0800 Subject: [Maxima] Gnuplot problem In-Reply-To: <0F9F6B85-2D1F-4DFC-969C-99BD735407ED@gmail.com> References: <0F9F6B85-2D1F-4DFC-969C-99BD735407ED@gmail.com> Message-ID: <7775b21a0602120113s29674d06m4b3c15e1030ff8ac@mail.gmail.com> You can set the gnuplot_command variable to full path to your gnuplot. It has to be a lisp string so you should do it with something like gnuplot_command : sconcat("")$ HTH, Andrej On 2/10/06, Jason Richards wrote: > Hello, > I am new to maxima, i am running a macintosh g4, on tiger os x 10.4. > I am trying to get maxima up and running. I have gotten as far as > getting all the packages required by fink, i have ran it on an x > window and in emacs using imaxima. I like the imaxima version, but > i like the imaxima version better. The problem I keep running into is > when i try to run a command like : plot2d(3*x+8); or something like > that , i get the error "gnuplot: command not found" I don't know why > this keeps happening, i have gnuplot installed, and it runs in x > window's, is there something else i need to do to configure maxima to > see gnuplot, or could it be something else. If there are any > suggestions, it would be much appreciated. > > > Thanks, > Jason > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From vvzhy at mail.ru Sun Feb 12 04:16:24 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Sun, 12 Feb 2006 13:16:24 +0300 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: References: Message-ID: <43EF0AF8.8070600@mail.ru> Herb Martin writes: > The following is merely a question and probably > should NOT affect any release date but before > submitting any kind of bug report I wanted to > get an idea if this is experienced by others: > > Maxima 5.9.2 on Windows (XP) > TK XMaxima > > Issue: while sitting IDLE this process runs > at (near) 100% interferring with other programs > being actively used. > > Work-around: Use Task Manager to reduce process > priority base to "below normal". (Still runs near > 100% but doesn't interfere much.) > > Do others (on Windows) experience this with this > version? > I don't see such problem. On Windows Me/2000/XP in idle state maxima don't eat CPU. But from time to time I experience something similar. When I close xmaxima window maxima process remains running and in this very case it eats 100% CPU. This is useless process and the only resolution -- kill it in task manager. I don't know how to reproduce the problem with 100% probability -- it happens to me not quite often. -- Vadim V. Zhytnikov From robert.dodier at gmail.com Sun Feb 12 10:51:22 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 12 Feb 2006 09:51:22 -0700 Subject: [Maxima] trouble with resultants and gmane In-Reply-To: References: Message-ID: hello john, thanks for letting us know about gmane. i've send a message to the gmane administrator to ask for the mailing list address to be corrected. sorry, i don't know about resultant. best, robert dodier From robert.dodier at gmail.com Sun Feb 12 11:11:08 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 12 Feb 2006 10:11:08 -0700 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: <4446344F-C87D-4AD7-937F-D61449699271@mac.com> References: <4446344F-C87D-4AD7-937F-D61449699271@mac.com> Message-ID: Hello Yasuaki, > To fix this issue is simple. The following patch allows that the > newest clisp (2.38) compiles things correctly while older clisp ignores > things safely. I have committed the patch to src/clmacs.lisp. run_testsuite doesn't report any new errors with clisp 2.34, sbcl 0.9.4, and gcl 2.6.7 on linux. Since you are clearly a careful and competent programmer, I would like to ask you to become a Maxima developer so that in the future you can commit patches directly to cvs. If you wish to do so, please make a login at SourceForge (if you do not already have one) and email it to me. Thanks for your contribution to Maxima, Robert Dodier From andrej.vodopivec at gmail.com Sun Feb 12 13:41:43 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Sun, 12 Feb 2006 11:41:43 -0800 Subject: [Maxima] cvs maxima on clisp/win Message-ID: <7775b21a0602121141n42ccc30au4c2fabf6472d0bdb@mail.gmail.com> ------=_Part_5388_5593096.1139773303653 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hello, functions unix-like-dirname and unix-like-basename in init-clisp.lisp assume that directories are separated by "/" in pathnames. This is not true with clisp on windows where directories are separated by "\". Maxima compiles but when it starts I get null is not a number error. I have this patch to fix this (it assumes that if there is no "/" in pathname then the dirs are separated by "\" - I think this is harmless since maxima will not run if there is no "/" in pathname anyway). Andrej ------=_Part_5388_5593096.1139773303653 Content-Type: application/octet-stream; name=init-cl.lisp.patch Content-Transfer-Encoding: 7bit X-Attachment-Id: f_ejlrfszo Content-Disposition: attachment; filename="init-cl.lisp.patch" Index: src/init-cl.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/init-cl.lisp,v retrieving revision 1.62 diff -u -r1.62 init-cl.lisp --- src/init-cl.lisp 5 Feb 2006 13:59:35 -0000 1.62 +++ src/init-cl.lisp 12 Feb 2006 19:29:26 -0000 @@ -345,7 +345,7 @@ (if (equal (subseq pathstring (- len 1) len) "/") (progn (setf len (- len 1)) (setf pathstring (subseq pathstring 0 len)))) - (subseq pathstring (+ (position #\/ pathstring :from-end t) 1) len))) + (subseq pathstring (+ (or (position #\/ pathstring :from-end t) (position #\\ pathstring :from-end t)) 1) len))) (defun unix-like-dirname (path) (let* ((pathstring (namestring path)) @@ -353,7 +353,7 @@ (if (equal (subseq pathstring (- len 1) len) "/") (progn (setf len (- len 1)) (setf pathstring (subseq pathstring 0 len)))) - (subseq pathstring 0 (position #\/ pathstring :from-end t)))) + (subseq pathstring 0 (or (position #\/ pathstring :from-end t) (position #\\ pathstring :from-end t))))) (defun list-avail-action () (let* ((maxima-verpkglibdir (if (maxima-getenv "MAXIMA-VERPKGLIBDIR") ------=_Part_5388_5593096.1139773303653-- From robert.dodier at gmail.com Sun Feb 12 16:10:42 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 12 Feb 2006 15:10:42 -0700 Subject: [Maxima] cvs maxima on clisp/win In-Reply-To: <7775b21a0602121141n42ccc30au4c2fabf6472d0bdb@mail.gmail.com> References: <7775b21a0602121141n42ccc30au4c2fabf6472d0bdb@mail.gmail.com> Message-ID: hello andrej, > I have this patch to fix this (it assumes that if there is no "/" in > pathname then the dirs are separated by "\" - I think this is harmless > since maxima will not run if there is no "/" in pathname anyway). hmm, if there is a need to determine if maxima is running on windows, maybe the code should use the special variable *autoconf-win32*, which is a string, either "true" or "false". thanks for working on this, robert dodier From andrej.vodopivec at gmail.com Sun Feb 12 16:52:41 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Sun, 12 Feb 2006 14:52:41 -0800 Subject: [Maxima] cvs maxima on clisp/win In-Reply-To: References: <7775b21a0602121141n42ccc30au4c2fabf6472d0bdb@mail.gmail.com> Message-ID: <7775b21a0602121452y1b025c44ifbf715f36ec0990a@mail.gmail.com> > hmm, if there is a need to determine if maxima is running on > windows, maybe the code should use the special variable > *autoconf-win32*, which is a string, either "true" or "false". Well, both "/" and "\" are acceptable as separators on windows. gcl uses "/" and clisp uses "\", so just checking if we are on windows is not sufficient. Since on windows "/" can't be in a pathname if "\" is used as a separator, the code can't fail. On other systems we are already assuming that "/" is the separator, so "\" will not be used in any case. So I think it is not worth checking for which os and lisp is being used. Andrej From robert.dodier at gmail.com Sun Feb 12 20:37:36 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 12 Feb 2006 19:37:36 -0700 Subject: [Maxima] cvs maxima on clisp/win In-Reply-To: <7775b21a0602121452y1b025c44ifbf715f36ec0990a@mail.gmail.com> References: <7775b21a0602121141n42ccc30au4c2fabf6472d0bdb@mail.gmail.com> <7775b21a0602121452y1b025c44ifbf715f36ec0990a@mail.gmail.com> Message-ID: On 2/12/06, Andrej Vodopivec wrote: > Since on windows "/" can't be in a pathname if "\" is used as a > separator, the code can't fail. On other systems we are already > assuming that "/" is the separator, so "\" will not be used in any > case. So I think it is not worth checking for which os and lisp is > being used. OK by me, then. robert From robert.dodier at gmail.com Sun Feb 12 20:54:29 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Sun, 12 Feb 2006 19:54:29 -0700 Subject: [Maxima] Standard maxima installation under Linux? In-Reply-To: References: Message-ID: hello james, > It is a Java program that uses Maxima as an external process, > communicating via streams. I think this is completely analgous to > having my program sit down at a console and start typing. well, it should be, but it is not -- at odd times maxima will try to read something from the console, and waits forever if noone is there to type something ... but if your program already works on windows, you must have solved that problem. > Am I right in thinking that the users current directory doesn't matter > when starting maxima, as long as it has been installed? i believe that is the case. good luck and keep us posted. robert dodier From 99LSharkey at ormskirk.lancs.sch.uk Mon Feb 13 04:44:50 2006 From: 99LSharkey at ormskirk.lancs.sch.uk (Luke Sharkey) Date: Mon, 13 Feb 2006 10:44:50 +0000 Subject: [Maxima] RE: bug report, or am I doing something wrong? Message-ID: <3E783573F8C838449803D19EAFEEA835014DE5BE@orm-ex-001.ormskirk.internal> This is a multi-part message in MIME format. --Boundary_(ID_YDDmNjYmL3Nh7i8Nwuw+FA) Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7BIT Whoops, meant to send that last email to the mailing list. -----Original Message----- From: Luke Sharkey Sent: 13 February 2006 10:43 To: 'Mario Rodriguez' Subject: RE: FW: [Maxima] bug report, or am I doing something wrong? I don't understand this! Would it be too much just to create a new function, say " log_10() ", for all those high school kids out there, such as moi??? AS to what Mathmatica/Maple do, I can't say I've ever used them, our school not exactly being made of money. " log10(x):=log(x)/log(10)$ " ...Is obvious, but still a nuisance. Also, defining log10() might be ok for me, but what about the less computer literate who told me they'd like to be able to use Maxima? Think they're going to be fiddling round with program files? Besides, if I want to get Maxima on the school network, the administrators aren't exactly going to let me mess / adjust the program files. Ever. Is there really that much of a problem with including just one new function like this for the next release? Thank you. LS -----Original Message----- From: Mario Rodriguez [mailto:biomates at telefonica.net] Sent: 10 February 2006 17:33 To: Luke Sharkey Cc: maxima at math.utexas.edu Subject: Re: FW: [Maxima] bug report, or am I doing something wrong? Luke, When you call Maxima, it looks for a file called 'maxima-init.mac' in the directory '~/.maxima' and executes the code in it. So, you can write loga(x,a):=log(x)/log(a)$ or log10(x):=log(x)/log(10)$ or anything you wish in 'maxima-init.mac' and Maxima will be able to compute the corresponding logarithms without retyping the code. Mario -- Mario Rodriguez Riotorto www.biomates.net *************************************************************************** This e-mail is confidential and privileged. If you are not the intended recipient do not disclose, copy or distribute information in this e-mail or take any action in reliance on its content. *************************************************************************** *************************************************************************** This email has been checked for known viruses. *************************************************************************** --Boundary_(ID_YDDmNjYmL3Nh7i8Nwuw+FA) Content-type: text/html; charset=us-ascii Content-transfer-encoding: 7BIT

Whoops, meant to send that last email to the mailing list.

 

 

-----Original Message-----

From: Luke Sharkey

Sent: 13 February 2006 10:43

To: 'Mario Rodriguez'

Subject: RE: FW: [Maxima] bug report, or am I doing something wrong?

 

I don't understand this!

 

Would it be too much just to create a new function, say " log_10() ", for all those high school kids out there, such as moi???

 

AS to what Mathmatica/Maple do, I can't say I've ever used them, our school not exactly being made of money.

 

" log10(x):=log(x)/log(10)$ "

 

...Is obvious, but still a nuisance.  Also, defining log10() might be ok for me, but what about the less computer literate who told me they'd like to be able to use Maxima?  Think they're going to be fiddling round with program files?

Besides, if I want to get Maxima on the school network, the administrators aren't exactly going to let me mess / adjust the program files. Ever.

 

Is there really that much of a problem with including just one new function like this for the next release?

 

Thank you.

LS

 

-----Original Message-----

From: Mario Rodriguez [mailto:biomates at telefonica.net]

Sent: 10 February 2006 17:33

To: Luke Sharkey

Cc: maxima at math.utexas.edu

Subject: Re: FW: [Maxima] bug report, or am I doing something wrong?

 

Luke,

 

When you call Maxima, it looks for a file called 'maxima-init.mac'  in the directory '~/.maxima' and executes the code in it. So, you can write

 

loga(x,a):=log(x)/log(a)$

or

log10(x):=log(x)/log(10)$

 

or anything you wish in 'maxima-init.mac' and Maxima will be able to compute the corresponding logarithms without retyping the code.

 

Mario

--

Mario Rodriguez Riotorto

www.biomates.net

 

 

 

***************************************************************************
This e-mail is confidential and privileged. If you are not the intended
recipient do not disclose, copy or distribute information in this e-mail
or take any action in reliance on its content.
***************************************************************************

***************************************************************************
This email has been checked for known viruses.
***************************************************************************

--Boundary_(ID_YDDmNjYmL3Nh7i8Nwuw+FA)-- From robert.dodier at gmail.com Mon Feb 13 08:19:05 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 13 Feb 2006 07:19:05 -0700 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? Message-ID: hello everyone, > Would it be too much just to create a new function, say " log_10() ", for > all those high school kids out there, such as moi??? actually, i'm in favor of this, although i would call it log10. (i don't want log2, ln, and log_a, only log10.) don't forget, even fortran has a log10 function. (although it was called alog10 to indicate the real type.) the difficulty with log10(x) := log(x)/log(10); is that log10 goes away as soon as it is entered (and in its place, log appears). what i want to see is log10 acting as a distinct function, which doesn't simplify to log automatically. comments? robert dodier From macrakis at alum.mit.edu Mon Feb 13 08:49:07 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Mon, 13 Feb 2006 09:49:07 -0500 Subject: [Maxima] log10 Message-ID: <8b356f880602130649m6a76bc7cr7d2457f1a8e9717e@mail.gmail.com> > Would it be too much just to create a new function, say " log_10() ", > for all those high school kids out there, such as moi??? There are several things like this in Maxima which are designed for professional use, and which are different from the way things are done in many schools. Not only is logarithm defined as the natural logarithm instead of the base-10 logarithm, but the trigonometric functions are defined in terms of radians, not degrees. You might think that it would be a good idea to have a switch somewhere that you could flip between "high-school conventions" and "professional conventions", but that would complicate things in other ways. So I think the best solution is just to be aware that your conventions are different, and have a load file supporting your conventions. What's more, it actually seems to me that learning to define simple functions like log10 is in itself a useful exercise. If you cannot have that automatically load for everyone, you can load it manually whenever you start a Maxima session. -s From macrakis at alum.mit.edu Mon Feb 13 08:58:51 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Mon, 13 Feb 2006 09:58:51 -0500 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: References: Message-ID: <8b356f880602130658n61bce232na4d75c54722fe3b0@mail.gmail.com> > actually, i'm in favor of this, although i would call it log10. > the difficulty with log10(x) := log(x)/log(10); is that log10 > goes away as soon as it is entered (and in its place, log appears). > what i want to see is log10 acting as a distinct function, > which doesn't simplify to log automatically. Understood, but that means you lose all of Maxima's "knowledge" about logs. You would presumably want log10(a*b) to simplify to log10(a)+log10(b), etc., which would mean duplicating the log simplifier. You would want logcontract, integrate, limit, realpart, etc. to operate on log10. You would want comparison to know that log10(x)1, etc. etc. Reducing things to quasi-canonical form is one of the ways Maxima works; having more than one representation for the same or very similar things (e.g. x! vs. gamma(x+1)) tends to cause complications. Maxima does support some simple extensions for arbitrary functions (notably grad), but once you get beyond those, you essentially have to build a whole infrastructure from scratch, and modify functions all over the system. -s From raymond.toy at ericsson.com Mon Feb 13 09:16:15 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 13 Feb 2006 10:16:15 -0500 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: (Robert Dodier's message of "Mon, 13 Feb 2006 07:19:05 -0700") References: Message-ID: >>>>> "Robert" == Robert Dodier writes: Robert> the difficulty with log10(x) := log(x)/log(10); is that log10 Robert> goes away as soon as it is entered (and in its place, log appears). Robert> what i want to see is log10 acting as a distinct function, Robert> which doesn't simplify to log automatically. Robert> comments? While having log10 as a separate and distinct function seems like a nice idea, who is going to tell maxima all the properties of log10? Who is going to tell maxima how to integrate functions of log10? Although high school was quite a while ago for me, all I can remember ever wanting with log10 was a numerical value. In calculus, I think we always used natural logs, with an occasional log base a to see if you were awake. Ray From robert.dodier at gmail.com Mon Feb 13 09:21:46 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 13 Feb 2006 08:21:46 -0700 Subject: [Maxima] Maxima i18n In-Reply-To: <43EE35C3.2090500@mail.ru> References: <43E991CF.80005@mail.ru> <43EE35C3.2090500@mail.ru> Message-ID: hello vadim, thanks so much for your work on i18n. i was able to make a successful build after upgrading automake and autoconf to 1.9.6 and 2.59 respectively. (build failed with automake 1.7.something; i don't know the old autoconf version.) the latin-1 docs (es & pt, info & html) look good. hurray! i can't figure out how to view the utf-8 docs -- i set LANG=pt_BR.UTF-8 and run maxima / clisp in konsole, but special characters are goofed up. how is UTF-8 supposed to work? thanks a lot to everyone working on i18n (jorge, mario, & vadim, in alphabetical order). it is truly a herculean labor, and the results are terrific. best, robert From biomates at telefonica.net Mon Feb 13 09:30:55 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Mon, 13 Feb 2006 16:30:55 +0100 Subject: [Maxima] RE: bug report, or am I doing something wrong? In-Reply-To: <3E783573F8C838449803D19EAFEEA835014DE5BE@orm-ex-001.ormskirk.internal> References: <3E783573F8C838449803D19EAFEEA835014DE5BE@orm-ex-001.ormskirk.internal> Message-ID: <1139844655.8336.26.camel@localhost.localdomain> Dear Luke, > > Would it be too much just to create a new function, say " log_10() ", > for all those high school kids out there, such as moi??? I suppose it could be done so. In any case, my students also need the logarithm of base 10 from time to time. I find it's a perfect moment for them to remember the relation 'log(x,a):=log(x)/log(a)' ... their memory is so weak... > Besides, if I want to get Maxima on the school network, the > administrators aren't exactly going to let me mess / adjust the > program files. Ever. > In my case, it's common practice to write and change with relative frequency the contents of 'maxima-init.mac', creating new functions addapted to new classroom activities. It's not a problem for me. Best wishes -- Mario Rodriguez Riotorto www.biomates.net From raymond.toy at ericsson.com Mon Feb 13 09:39:16 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 13 Feb 2006 10:39:16 -0500 Subject: [Maxima] Associated Legendre P and Q functions Message-ID: >From looking at the documentation for orthopoly, it's unclear what assoc_legendre_p(a,b,z) and assoc_legendre_q(a,b,z) are. Is a the degree and b the order? Of course, once orthopoly is loaded and you enter assoc_legendre_q(a,b,z), it gets printed like b Q (z) a so it's clear that a is the degree and b is the order. I think the documentation should at least say so. If this is correct, I think all the hypergeometric simplification functions have this backward. :-( Ray From robert.dodier at gmail.com Mon Feb 13 10:03:45 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 13 Feb 2006 09:03:45 -0700 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: <8b356f880602130658n61bce232na4d75c54722fe3b0@mail.gmail.com> References: <8b356f880602130658n61bce232na4d75c54722fe3b0@mail.gmail.com> Message-ID: hello stavros, > Understood, but that means you lose all of Maxima's "knowledge" about > logs. You would presumably want log10(a*b) to simplify to > log10(a)+log10(b), etc., which would mean duplicating the log > simplifier. You would want logcontract, integrate, limit, realpart, > etc. to operate on log10. You would want comparison to know that > log10(x)1, etc. etc. yeah. well, it could happen with sufficient effort, but i'm not willing to invest the weeks or months necessary, so it won't happen any year soon ... best robert From fateman at cs.berkeley.edu Mon Feb 13 10:24:32 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Mon, 13 Feb 2006 08:24:32 -0800 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? References: <8b356f880602130658n61bce232na4d75c54722fe3b0@mail.gmail.com> Message-ID: <019301c630b9$fa65dae0$13d09888@windsor> It seems pretty obvious that defining log10(x) as log(x)/log(10) solves most of the problems, and in fact that is what the commercial macsyma does. Oh, consider the simplification problem of log10(x)- log(x)/log(10). How do you know that is zero? One term must be simplified to the other. It might be worthwhile to point out to readers of this newsgroup, and maybe Luke's friends at school, that Maxima doesn't really like to use division. x/y internally is much more like x * (y)^(-1). Why? Because redundant operations cause problems. Introducing log10 is a bad idea for that reason. This is not an "absolute truth" ... it is a judgment call. Whether sec(x) should immediately be converted to 1/cos(x), or kept around for a while in that form is puzzle. Trigsimp() has to decide. RJF ----- Original Message ----- From: "Robert Dodier" To: Cc: "Luke Sharkey" <99LSharkey at ormskirk.lancs.sch.uk>; Sent: Monday, February 13, 2006 8:03 AM Subject: Re: [Maxima] log10, was: bug report, or am I doing something wrong? > hello stavros, > >> Understood, but that means you lose all of Maxima's "knowledge" about >> logs. You would presumably want log10(a*b) to simplify to >> log10(a)+log10(b), etc., which would mean duplicating the log >> simplifier. You would want logcontract, integrate, limit, realpart, >> etc. to operate on log10. You would want comparison to know that >> log10(x)1, etc. etc. > > yeah. well, it could happen with sufficient effort, but > i'm not willing to invest the weeks or months necessary, > so it won't happen any year soon ... > > best > robert > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From miquel.cabanas at uab.es Mon Feb 13 10:55:07 2006 From: miquel.cabanas at uab.es (Miquel Cabanas) Date: Mon, 13 Feb 2006 17:55:07 +0100 Subject: [Maxima] Maxima i18n In-Reply-To: References: <43E991CF.80005@mail.ru> <43EE35C3.2090500@mail.ru> Message-ID: <1139849708.27746.76.camel@sermn02.uab.es> hi, do you mean KDE konsole? have you tried the "encoding" entry in the "settings" menu? it might help. Miquel On Mon, 2006-02-13 at 08:21 -0700, Robert Dodier wrote: > > i can't figure out how to view the utf-8 docs -- > i set LANG=pt_BR.UTF-8 and run maxima / clisp in konsole, > but special characters are goofed up. > how is UTF-8 supposed to work? From vvzhy at mail.ru Mon Feb 13 12:23:38 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Mon, 13 Feb 2006 21:23:38 +0300 Subject: [Maxima] Maxima i18n In-Reply-To: References: <43E991CF.80005@mail.ru> <43EE35C3.2090500@mail.ru> Message-ID: <43F0CEAA.50200@mail.ru> This is a multi-part message in MIME format. --------------000304010706030906050204 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi Robert! > i can't figure out how to view the utf-8 docs -- > i set LANG=pt_BR.UTF-8 and run maxima / clisp in konsole, > but special characters are goofed up. > how is UTF-8 supposed to work? Before seeing any special UTF-8 chars in Maxima you have to make sure that your console is UIF-enabled. The righteous UNIX way to do so is: 1. Start your favorite console program in UTF-8 locale LANG=es_ES.UTF-8 Where is xterm, aterm, konsole and so on provided that this version of understand UTF-8 and you have appropriate UTF-8 fonts in the system. You may test UTF-8 by running cat test-utf.txt in this . Small file test-utf.txt contains word Index in Portuguese and Spanish in UTF-8 -- I'ndice. Very first char is special -- I-prime. 2. Now start Maxima in this and enjoy special characters. Setting LANG=es_ES.UTF-8 is no longer required on this stage. Hope this helps. Best wishes, Vadim -- Vadim V. Zhytnikov --------------000304010706030906050204 Content-Type: text/plain; name="test-utf.txt" Content-Transfer-Encoding: 8bit Content-Disposition: inline; filename="test-utf.txt" ??ndice --------------000304010706030906050204 Content-Type: text/plain; name="test-iso.txt" Content-Transfer-Encoding: 8bit Content-Disposition: inline; filename="test-iso.txt" ?ndice --------------000304010706030906050204-- From raymond.toy at ericsson.com Mon Feb 13 12:42:05 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 13 Feb 2006 13:42:05 -0500 Subject: [Maxima] integrate(x/(1-x^2),x)? Message-ID: Maxima currently says integrate(x/(1-x^2),x) -> -log(1-x^2)/2 and integrate(x/(x^2-1),x) -> log(x^2-1)/2 What does Macsyma (or Mathematica/Maple) say for these integrals? I think this is the source of the integration bug 1374700. Ray From andrej.vodopivec at gmail.com Mon Feb 13 13:23:07 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Mon, 13 Feb 2006 11:23:07 -0800 Subject: [Maxima] integrate(x/(1-x^2),x)? In-Reply-To: References: Message-ID: <7775b21a0602131123y7c1622e6xc73dd08fc58e6146@mail.gmail.com> Maple: integrate(x/(1-x^2), x); 1 1 - - ln(x - 1) - - ln(x + 1) 2 2 integrate(x/(x^2-1), x); 1 1 - ln(x - 1) + - ln(x + 1) 2 2 HTH, Andrej On 2/13/06, Raymond Toy wrote: > > Maxima currently says > > integrate(x/(1-x^2),x) -> > -log(1-x^2)/2 > > and > > integrate(x/(x^2-1),x) -> > log(x^2-1)/2 > > What does Macsyma (or Mathematica/Maple) say for these integrals? > > I think this is the source of the integration bug 1374700. > > Ray > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From dlakelan at street-artists.org Mon Feb 13 13:25:30 2006 From: dlakelan at street-artists.org (Daniel Lakeland) Date: Mon, 13 Feb 2006 11:25:30 -0800 Subject: [Maxima] integrate(x/(1-x^2),x)? In-Reply-To: References: Message-ID: <20060213192530.GE29407@mooch> On Mon, Feb 13, 2006 at 01:42:05PM -0500, Raymond Toy wrote: > > Maxima currently says > > integrate(x/(1-x^2),x) -> > -log(1-x^2)/2 > > and > > integrate(x/(x^2-1),x) -> > log(x^2-1)/2 > > What does Macsyma (or Mathematica/Maple) say for these integrals? Mathematica says the same thing using "integrals.wolfram.com/index.jsp" online. Obviously this integral is only meaningful for certain regions of the real line. For example maxima correctly says: (%i6) integrate(x/(1-x^2),x,0,1); Integral is divergent -- an error. Quitting. To debug this try debugmode(true); (%i7) But I'm afraid I can't see what you're trying to say. Perhaps you could clarify what you think it should do? Since we're trying to find an indefinite integral here, maxima seems like it's doing the right thing. -- Daniel Lakeland dlakelan at street-artists.org http://www.street-artists.org/~dlakelan From fateman at cs.berkeley.edu Mon Feb 13 13:32:00 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Mon, 13 Feb 2006 11:32:00 -0800 Subject: [Maxima] integrate(x/(1-x^2),x)? In-Reply-To: References: Message-ID: <43F0DEB0.8070605@cs.berkeley.edu> Commercial Macsyma and Mathematica give the same results as you show. The answers look OK to me. Raymond Toy wrote: >Maxima currently says > >integrate(x/(1-x^2),x) -> >-log(1-x^2)/2 > >and > >integrate(x/(x^2-1),x) -> >log(x^2-1)/2 > >What does Macsyma (or Mathematica/Maple) say for these integrals? > >I think this is the source of the integration bug 1374700. > >Ray > >_______________________________________________ >Maxima mailing list >Maxima at math.utexas.edu >http://www.math.utexas.edu/mailman/listinfo/maxima > > From macrakis at alum.mit.edu Mon Feb 13 13:37:29 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Mon, 13 Feb 2006 14:37:29 -0500 Subject: [Maxima] integrate(x/(1-x^2),x)? In-Reply-To: References: Message-ID: <8b356f880602131137x15f845e4w5f2788139f4a1632@mail.gmail.com> > Maxima currently says > > integrate(x/(1-x^2),x) -> > -log(1-x^2)/2 > > integrate(x/(x^2-1),x) -> > log(x^2-1)/2 I must be missing something obvious here. These both seem like correct answers. Are you expecting them to both be giving results real for abs(x)<1 or for abs(x)>1? From raymond.toy at ericsson.com Mon Feb 13 13:52:00 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Mon, 13 Feb 2006 14:52:00 -0500 Subject: [Maxima] integrate(x/(1-x^2),x)? In-Reply-To: <43F0DEB0.8070605@cs.berkeley.edu> (Richard Fateman's message of "Mon, 13 Feb 2006 11:32:00 -0800") References: <43F0DEB0.8070605@cs.berkeley.edu> Message-ID: >>>>> "Richard" == Richard Fateman writes: Richard> Commercial Macsyma and Mathematica give the same results as you show. Richard> The answers look OK to me. Richard> Raymond Toy wrote: >> Maxima currently says >> >> integrate(x/(1-x^2),x) -> >> -log(1-x^2)/2 >> >> and >> >> integrate(x/(x^2-1),x) -> >> log(x^2-1)/2 >> I think the result are correct, but information is missing. Here is what's happening in bug 1374700. integrate((1+tan(x)^2)/tan(x),x) is converted to integrate(cos(x)/sin(x)*(1+sin(x)^2/cos(x)^2),x) by replacing tan with sin/cos. Maxima recognizes this form and uses the substitution y = sin(x) to get a new integral integrate(1/y*(1+y^2/(1-y^2)),y), which maxima figures is log(y)-log(y^2-1)/2. Substitute back to get the final answer log(sin(x)) - log(sin(x)^2-1)/2. So the result isn't a real number for real x. If, however, maxima chose the different integral for y, by doing integrate(expand(1/y*(1+y^2/(1-y^2)),y)), we would have gotten log(y)-log(1-y^2)/2 with a final result of log(sin(x)) - log(1-sin(x)^2)/2. (Of course, this isn't quite right either because we're assuming sin(x) > 0.) Perhaps this isn't an issue, and we should just live with the result. Ray From jamesahart79 at gmail.com Mon Feb 13 13:56:00 2006 From: jamesahart79 at gmail.com (James Hart) Date: Mon, 13 Feb 2006 14:56:00 -0500 Subject: [Maxima] Standard maxima installation under Linux? In-Reply-To: References: Message-ID: On 2/12/06, Robert Dodier wrote: > hello james, > > > It is a Java program that uses Maxima as an external process, > > communicating via streams. I think this is completely analgous to > > having my program sit down at a console and start typing. > > well, it should be, but it is not -- at odd times maxima will try > to read something from the console, and waits forever if noone > is there to type something ... but if your program already works > on windows, you must have solved that problem. Actually, this still worries me. So far, I've only used Maxima for factorization and solving equations, and I haven't had any trouble with either of those. I'm thinking that when I add integration, it will be more likely to pop up. Before Maxima pauses, does it always print a question to the screen saying what kind of information it's asking for? I'm pretty sure it does, and if it does, my program will probably be able to read the question from the output stream and hopefully I'll have a chance to intercept it and at least stop it from pausing. Whether the program can be smart enough to read it is another question (maybe I could pass it on to the user, somehow). I'll cross that bridge when I get to it. > > > Am I right in thinking that the users current directory doesn't matter > > when starting maxima, as long as it has been installed? > > i believe that is the case. > > good luck and keep us posted. > > robert dodier > Thank you very much for the feedback. It is appreciated. From robert.dodier at gmail.com Mon Feb 13 16:11:56 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Mon, 13 Feb 2006 15:11:56 -0700 Subject: [Maxima] Standard maxima installation under Linux? In-Reply-To: References: Message-ID: hello james, > > well, it should be, but it is not -- at odd times maxima will try > > to read something from the console, and waits forever if noone > > is there to type something ... but if your program already works > > on windows, you must have solved that problem. > > Actually, this still worries me. So far, I've only used Maxima for > factorization and solving equations, and I haven't had any trouble > with either of those. I'm thinking that when I add integration, it > will be more likely to pop up. so far as i know, working around this behavior is completely a mess. however, there are several front-end programs so i guess that it has been solved in different ways. see: http://maxima.sf.net/relatedprojects.shtml i am hoping to figure out a way to discourage maxima from asking questions. maybe it will be ready by the time you need it, but then again maybe not. best, robert dodier From willisb at unk.edu Mon Feb 13 19:14:04 2006 From: willisb at unk.edu (Barton Willis) Date: Mon, 13 Feb 2006 19:14:04 -0600 Subject: [Maxima] Associated Legendre P and Q functions Message-ID: -----Raymond Toy wrote: ----- >From looking at the documentation for orthopoly, >it's unclear what assoc_legendre_p(a,b,z) and >assoc_legendre_q(a,b,z) are. Is a the >degree and b the order? For integers n, with n > -1, it should be the case that assoc_legendre_p(n,0,x) - legendre_p(n,x), assoc_legendre_q(n,0,x) - legendre_q(n,x). So, yes for assoc_legendre_p(a,b,x) and assoc_legendre_p(a,b,x), the first argument is what I would call the degree, and the second is the order. My macsyma uses the same convention. >I think the documentation should at least say so. I'll try to improve it. Barton From ryanlists at gmail.com Mon Feb 13 21:36:37 2006 From: ryanlists at gmail.com (Ryan Krauss) Date: Mon, 13 Feb 2006 22:36:37 -0500 Subject: [Maxima] transcendental zeros function Message-ID: I have a problem that will need to find roots of transcendental problems. A simple example would be f(s)=sinh(s)*sin(s). Since I am search on the range s>0, sinh(s) will never =0 and it makes things numerically very messy. Is there a Maxima function (or would it be easy to write a simple one), that could look at an expression and for a range of an input values know which terms will never be 0 and factor them out for the sake of easier root searching? These functions will have many parameters, but only one independent variable (a better example might be L^2/beta*sinh(beta)*sin(beta) where beta=(w^2*m*L^4/EI)^0.25, the roots of which are the natural frequencies of a pinned-pinned beam in free vibration and w is the independent variable). Thanks for your thoughts, Ryan From A.G.Grozin at inp.nsk.su Mon Feb 13 22:45:54 2006 From: A.G.Grozin at inp.nsk.su (Andrey G. Grozin) Date: Tue, 14 Feb 2006 10:45:54 +0600 (NOVT) Subject: [Maxima] Standard maxima installation under Linux? In-Reply-To: References: Message-ID: On Mon, 13 Feb 2006, Robert Dodier wrote: >>> well, it should be, but it is not -- at odd times maxima will try >>> to read something from the console, and waits forever if noone >>> is there to type something ... but if your program already works >>> on windows, you must have solved that problem. >> >> Actually, this still worries me. So far, I've only used Maxima for >> factorization and solving equations, and I haven't had any trouble >> with either of those. I'm thinking that when I add integration, it >> will be more likely to pop up. > > so far as i know, working around this behavior is completely a mess. > however, there are several front-end programs so i guess that it > has been solved in different ways. see: > http://maxima.sf.net/relatedprojects.shtml I don't think it's really a mess. A question like Is a positive or negative? is just a special kind of prompt. A front-end program (e.g., TeXmacs) treats it like any other prompt, like, e.g., (%i123) and waits for a user input after it. This can be done easily by redefining *prompt-prefix* and *prompt-suffix*. Andrey From jamesahart79 at gmail.com Mon Feb 13 23:28:14 2006 From: jamesahart79 at gmail.com (James Hart) Date: Tue, 14 Feb 2006 00:28:14 -0500 Subject: [Maxima] Standard maxima installation under Linux? In-Reply-To: References: Message-ID: I've been looking at it. The streaming behavior is extremely low level, which is actually good news because it means I will definitely be able to catch the fact that a question has been asked, as long as the program is smart enough to consistently recognize that it is a question. (What to do with it is the next question. Passing it on to the user looks like the only option. I really prefer Mathematica's approach, but I understand why it may be a bit tricky to implement.) So, do all questions that interrupt evaluation in Maxima have at least one line ending in a question mark? (All the ones I've seen have, but I haven't been comprehensive by any stretch of the imagination.) On 2/13/06, Andrey G. Grozin wrote: > On Mon, 13 Feb 2006, Robert Dodier wrote: > >>> well, it should be, but it is not -- at odd times maxima will try > >>> to read something from the console, and waits forever if noone > >>> is there to type something ... but if your program already works > >>> on windows, you must have solved that problem. > >> > >> Actually, this still worries me. So far, I've only used Maxima for > >> factorization and solving equations, and I haven't had any trouble > >> with either of those. I'm thinking that when I add integration, it > >> will be more likely to pop up. > > > > so far as i know, working around this behavior is completely a mess. > > however, there are several front-end programs so i guess that it > > has been solved in different ways. see: > > http://maxima.sf.net/relatedprojects.shtml > I don't think it's really a mess. A question like > Is a positive or negative? > is just a special kind of prompt. A front-end program (e.g., TeXmacs) > treats it like any other prompt, like, e.g., > (%i123) > and waits for a user input after it. This can be done easily by redefining > *prompt-prefix* and *prompt-suffix*. > > Andrey > From ficmatin01 at solar.com.br Tue Feb 14 01:41:34 2006 From: ficmatin01 at solar.com.br (Jorge Barros de Abreu) Date: Tue, 14 Feb 2006 05:41:34 -0200 Subject: [Maxima] Maxima i18n In-Reply-To: <43F0CEAA.50200@mail.ru> References: <43E991CF.80005@mail.ru> <43F0CEAA.50200@mail.ru> Message-ID: <200602140541.34937.ficmatin01@solar.com.br> Hi Vadim This is a very good idea. []?s Em Mon 13 Feb 2006 16:23, Vadim V. Zhytnikov escreveu: > You may test UTF-8 by running > > cat test-utf.txt > -- Data Estelar 2453777.851377 http://www.solar.com.br/~ficmatin Desejo-lhe Paz, Vida Longa e Prosperidade. S?o Bem Vindas Mensagens no Formato Texto Gen?rico com Acentos. From A.G.Grozin at inp.nsk.su Tue Feb 14 04:15:48 2006 From: A.G.Grozin at inp.nsk.su (Andrey G. Grozin) Date: Tue, 14 Feb 2006 16:15:48 +0600 (NOVT) Subject: [Maxima] Standard maxima installation under Linux? In-Reply-To: References: Message-ID: On Tue, 14 Feb 2006, James Hart wrote: > So, do all questions that interrupt evaluation in Maxima have at least > one line ending in a question mark? (All the ones I've seen have, but > I haven't been comprehensive by any stretch of the imagination.) Oh, NO!! Please, not THIS approach again. TeXmacs, wxMaxima (and maybe other front-ends) assign some strings to *prompt-prefix* and *prompt-suffix*. If these strings contain some non-printable chars (ctrl-chars, for example), then they can unambuguously identify prompts (including questions). No need to parse maxima output (in addition to being tedious, this approach is very unreliable: what if a user writes some string ending in a question mark, or the string "(%i123)" ? Andrey From willisb at unk.edu Tue Feb 14 06:09:42 2006 From: willisb at unk.edu (Barton Willis) Date: Tue, 14 Feb 2006 06:09:42 -0600 Subject: [Maxima] transcendental zeros function Message-ID: -----Ryan Krauss wrote: ----- > Is there a Maxima function (or would it be > easy to write a simple one), that could look at > an expression and for a range of an input values know which terms will > never be 0 and factor them out for the sake of easier root searching? Delete factors that are nonzero on the real line. If you need the zeros on the complex plane, don't use this function! trashpositivefactors(e) := block([inflag : 'true], e : factor(e), e : if mapatom(e) or not(op(e) = "*") then [e] else args(e), e : map(lambda([x], if member(sign(x), ['pos, 'neg, 'pn]) then 1 else x), e), apply("*",e)); (%i2) trashpositivefactors(-(x+1)*(x+2)*(x^2+1)/42); (%o2) (x+1)*(x+2) (%i3) trashpositivefactors(1+x+x^2); (%o3) x^2+x+1 (%i4) trashpositivefactors(sinh(x) * sin(x)); (%o4) sin(x)*sinh(x) (%i5) assume(x > 0); (%o5) [x>0] (%i6) trashpositivefactors(sinh(x) * sin(x)); (%o6) sin(x) (%i7) trashpositivefactors(cosh(z) * sin(z)); (%o7) sin(z) (%i8) trashpositivefactors((1 + abs(a)) * exp(-b) * log(a)); (%o8) log(a) (1) My function trashpositivefactors is untested--it's likely that it has bugs. For one, factors with an explicit %i will cause trouble: (%i32) trashpositivefactors((1+%i*z)*(1-%i*z)); `sign' called on an imaginary argument: You might be able to fix this problem by replacing 'sign' with 'mysign': mysign(x) := (x : errcatch(sign(x)), if x = [] then 'bogus else part(x,1)); Another problem is: (%i18) trashpositivefactors(sin(z)/(z)); (%o18) sin(z) <-- spurious zero at zero. Yikes! Fixing this is harder. Maybe trashpositivefactors should accumulate a list of factors it removes and return them so that they can be tested later. (2) You'll discover that Maxima's sign function needs to be improved. (3) Maxima doesn't have a function 'sign' that takes an interval as an argument -- the only way is to use 'assume.' (4) If you don't care about multiplicities, you could do something like trashpositivefactors(e) := block([inflag : 'true], e : factor(e), e : if mapatom(e) or not(op(e) = "*") then [e] else args(e), e : map(lambda([x], if member(sign(x), ['pos, 'neg, 'pn]) then 1 else x), e), e : map(lambda([x], if not(mapatom(x)) and op(x) = "^" and sign(part(args(x),2)) = 'pos then part(args(x),1) else x),e), apply("*",e)); (%i29) trashpositivefactors((1 + 2 * z + z^2)); (%o29) z+1 The function 'factor' doesn't factor inside the %pi th power: (%i30) trashpositivefactors((1 + 2 * z + z^2)^%pi); (%o30) z^2+2*z+1 So we have to do it again: (%i31) trashpositivefactors(%); (%o31) z+1 (5) My functions might help you get started. They aren't tested -- so be careful! There are lots of other things you could do -- a factor of the form abs(e) could be changed to e, for example. That might be nicer for some numerical methods. Barton From raymond.toy at ericsson.com Tue Feb 14 07:47:25 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Tue, 14 Feb 2006 08:47:25 -0500 Subject: [Maxima] Associated Legendre P and Q functions In-Reply-To: (Barton Willis's message of "Mon, 13 Feb 2006 19:14:04 -0600") References: Message-ID: >>>>> "Barton" == Barton Willis writes: Barton> -----Raymond Toy wrote: ----- >> From looking at the documentation for orthopoly, >> it's unclear what assoc_legendre_p(a,b,z) and >> assoc_legendre_q(a,b,z) are. Is a the >> degree and b the order? Barton> For integers n, with n > -1, it should be the case that Barton> assoc_legendre_p(n,0,x) - legendre_p(n,x), Barton> assoc_legendre_q(n,0,x) - legendre_q(n,x). Is that supposed to be an equal sign? Is that conversion supposed to happen automatically? If so, it doesn't for me. >> I think the documentation should at least say so. Barton> I'll try to improve it. I can help with that. I also noticed the reference to the equation numbers for A&S don't seem to match the equation numbers in http://mintaka.sdsu.edu/faculty/wfw/ABRAMOWITZ-STEGUN/, but I'll check more closely. Ray From willisb at unk.edu Tue Feb 14 08:26:12 2006 From: willisb at unk.edu (Barton Willis) Date: Tue, 14 Feb 2006 08:26:12 -0600 Subject: [Maxima] Associated Legendre P and Q functions Message-ID: -----Raymond Toy wrote: ----- > > Barton> assoc_legendre_p(n,0,x) - legendre_p(n,x), > Barton> assoc_legendre_q(n,0,x) - legendre_q(n,x). > >Is that supposed to be an equal sign? Is that >conversion supposed to happen automatically? If so, it doesn't for me. Oh--make that assoc_legendre_p(n,0,x) - legendre_p(n,x) = 0. And no, orthopoly doesn't simplify assoc_legendre_p(n,0,x) to legendre_p(n,x) even when it has been told that n is a positive integer. Actually, orhthopoly knows very few simplifications. As hyp and friends get better, maybe all of orthopoly, except maybe the numerical stuff, can be expunged or blended in with hyp.lisp. Or maybe hyp.lisp and friends are already better than orthopoly. Barton From 99LSharkey at ormskirk.lancs.sch.uk Tue Feb 14 08:35:16 2006 From: 99LSharkey at ormskirk.lancs.sch.uk (Luke Sharkey) Date: Tue, 14 Feb 2006 14:35:16 +0000 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? Message-ID: <3E783573F8C838449803D19EAFEEA835014DE5C1@orm-ex-001.ormskirk.internal> "You would presumably want log10(a*b) to simplify to log10(a)+log10(b), etc., which would mean duplicating the log simplifier. You would want logcontract, integrate, limit, realpart, etc. to operate on log10. You would want comparison to know that log10(x)1, etc. etc." " yeah. well, it could happen with sufficient effort, but i'm not willing to invest the weeks or months necessary, so it won't happen any year soon ..." Point taken. Thank you anyway LS. -----Original Message----- From: Stavros Macrakis [mailto:macrakis at gmail.com] Sent: 13 February 2006 14:59 To: Robert Dodier Cc: Luke Sharkey; maxima at math.utexas.edu Subject: Re: [Maxima] log10, was: bug report, or am I doing something wrong? > actually, i'm in favor of this, although i would call it log10. > the difficulty with log10(x) := log(x)/log(10); is that log10 > goes away as soon as it is entered (and in its place, log appears). > what i want to see is log10 acting as a distinct function, > which doesn't simplify to log automatically. Reducing things to quasi-canonical form is one of the ways Maxima works; having more than one representation for the same or very similar things (e.g. x! vs. gamma(x+1)) tends to cause complications. Maxima does support some simple extensions for arbitrary functions (notably grad), but once you get beyond those, you essentially have to build a whole infrastructure from scratch, and modify functions all over the system. -s *************************************************************************** This e-mail is confidential and privileged. If you are not the intended recipient do not disclose, copy or distribute information in this e-mail or take any action in reliance on its content. *************************************************************************** *************************************************************************** This email has been checked for known viruses. *************************************************************************** From raymond.toy at ericsson.com Tue Feb 14 09:16:07 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Tue, 14 Feb 2006 10:16:07 -0500 Subject: [Maxima] Associated Legendre P and Q functions In-Reply-To: (Barton Willis's message of "Tue, 14 Feb 2006 08:26:12 -0600") References: Message-ID: >>>>> "Barton" == Barton Willis writes: Barton> -----Raymond Toy wrote: ----- >> Barton> assoc_legendre_p(n,0,x) - legendre_p(n,x), Barton> assoc_legendre_q(n,0,x) - legendre_q(n,x). >> >> Is that supposed to be an equal sign? Is that >> conversion supposed to happen automatically? If so, it doesn't for me. Barton> Oh--make that assoc_legendre_p(n,0,x) - legendre_p(n,x) = 0. And Barton> no, orthopoly doesn't simplify assoc_legendre_p(n,0,x) to legendre_p(n,x) Barton> even when it has been told that n is a positive integer. Actually, Barton> orhthopoly knows very few simplifications. Oh, ok. Barton> As hyp and friends get better, maybe all of orthopoly, except maybe Barton> the numerical stuff, can be expunged or blended in with hyp.lisp. Barton> Or maybe hyp.lisp and friends are already better than orthopoly. I think think orthopoly and hyp serve two different purposes. hyp is (currently) meant to simplify hypergeometric functions into "simpler" functions like Legendre and other orthogonal polynomials. It knows very little else. Ray From robert.dodier at gmail.com Tue Feb 14 09:27:03 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Tue, 14 Feb 2006 08:27:03 -0700 Subject: [Maxima] Maxima i18n In-Reply-To: <200602140541.34937.ficmatin01@solar.com.br> References: <43E991CF.80005@mail.ru> <43F0CEAA.50200@mail.ru> <200602140541.34937.ficmatin01@solar.com.br> Message-ID: jorge, i found this file on the web -- http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt which has a lot of interesting characters in it. it's a nice test to see if your display knows how to handle UTF-8. hth robert From fabrizio.caruso at math.univ-rennes1.fr Tue Feb 14 09:29:25 2006 From: fabrizio.caruso at math.univ-rennes1.fr (fabrizio.caruso at math.univ-rennes1.fr) Date: Tue, 14 Feb 2006 16:29:25 +0100 (CET) Subject: [Maxima] compiling Maxima code with arrays Message-ID: <37461.193.144.183.8.1139930965.squirrel@webmail.math.univ-rennes1.fr> Hi! When I compile: foo(x) := block([r], r : make_array('fixnum,2), r[0]:x,r[1]:x+1, return(r)); or foo(x) := block([r:make_array('fixnum,2)], r[0]:x,r[1]:x+1, return(r)); foo stops working and gives the following error message: " Maxima encountered a Lisp error: not a valid array reference to #(0 0) Automatically continuing. To reenable the Lisp debugger set *debugger-hook* to nil. " Is there a way to fix this problem? Is it possible to compile code that uses arrays? Fabrizio From robert.dodier at gmail.com Tue Feb 14 09:42:33 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Tue, 14 Feb 2006 08:42:33 -0700 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: <3E783573F8C838449803D19EAFEEA835014DE5C1@orm-ex-001.ormskirk.internal> References: <3E783573F8C838449803D19EAFEEA835014DE5C1@orm-ex-001.ormskirk.internal> Message-ID: i wrote: > " yeah. well, it could happen with sufficient effort, but i'm not > willing to invest the weeks or months necessary, so it won't happen any > year soon ..." i take it back. i don't think it's such a big deal after all. since log10 is typically used for calculations only, i don't see any need to reproduce all of the algebraic machinery already in place for log base e. i'll bet that this much is almost enough: log10 (a*b) => log10(a) + log10(b), log10(a^b) => b log10(a), log10(1) = 0, log10(a) > 0 iff a > 1, ev (log10(a), numer) => ev(log(a)/log(10), numer), log10(a) > log10(b) iff a > b, and expand_log10(expr) => expr with all log10(x) replaced by log(x)/log(10). that mostly covers the calculations and provides an avenue to reach the algebraic stuff (namely by converting to log's) should it ever be needed. for what it's worth, robert dodier From macrakis at alum.mit.edu Tue Feb 14 10:53:53 2006 From: macrakis at alum.mit.edu (Stavros Macrakis) Date: Tue, 14 Feb 2006 11:53:53 -0500 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: References: <3E783573F8C838449803D19EAFEEA835014DE5C1@orm-ex-001.ormskirk.internal> Message-ID: <8b356f880602140853j6fe39bc7nbf5379526203d37e@mail.gmail.com> > i take it back. i don't think it's such a big deal after all. I think we all agree that it's not a big deal to add it. The question is whether it is a good idea to add it *incompletely*. Of course it's easy to do a basic simplifier for log10 -- you make a copy of the simplog and modify it a bit (or -- better software engineering practice -- you have a common subfunction with a parameter and even better, add a 2-argument log). I think the only new case to add (maybe) is recognizing factors of 10, so that log10(2100) => 2+log10(21) and log10(23/120)=>log10(23/12)-1. > since log10 is typically used for calculations only, > i don't see any need to reproduce all of the algebraic > machinery already in place for log base e. Then why add it at all? > i'll bet that this much is almost enough:... So you would find it acceptable that log10(x)/log(x) not simplify? etc. Remember RJF's point: the main way that Maxima simplifies things is by standardizing their form. -s From raymond.toy at ericsson.com Tue Feb 14 11:22:31 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Tue, 14 Feb 2006 12:22:31 -0500 Subject: [Maxima] compiling Maxima code with arrays In-Reply-To: <37461.193.144.183.8.1139930965.squirrel@webmail.math.univ-rennes1.fr> References: <37461.193.144.183.8.1139930965.squirrel@webmail.math.univ-rennes1.fr> Message-ID: <43F211D7.6010703@ericsson.com> fabrizio.caruso at math.univ-rennes1.fr wrote: > Hi! > > When I compile: > foo(x) := block([r], r : make_array('fixnum,2), r[0]:x,r[1]:x+1, return(r)); > or > foo(x) := block([r:make_array('fixnum,2)], r[0]:x,r[1]:x+1, return(r)); > > foo stops working and gives the following error message: > This bug is caused by essentially the same bug that makes your previous compiled array reference example fail. In src/trans2.lisp, you can add a new clause like so to make it work: (defun maset1 (val ar &rest inds &aux ) ... (cond ((typep ar 'cl:array) ; <--- new stuff (setf (apply #'aref ar inds) val)) ((one-of-types .type. (make-array 3)) ...))) Ray From willisb at unk.edu Tue Feb 14 13:24:24 2006 From: willisb at unk.edu (Barton Willis) Date: Tue, 14 Feb 2006 13:24:24 -0600 Subject: [Maxima] transcendental zeros function In-Reply-To: Message-ID: One more thing: I noticed that one of your proposed equations mixes (beta=(w^2*m*L^4/EI)^0.25) a float with non-floats. Try not to do that --- especially if you apply a function similar to trashpositivefactors: (%i87) product((x-k),k,1,23)$ (%i88) allroots(expand(float(%))); ,x=0.42824723478225118*%i+13.437402218704808, Yikes! look at the imaginary part. Barton From van.Nek at gmx.net Tue Feb 14 14:04:13 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Tue, 14 Feb 2006 21:04:13 +0100 Subject: [Maxima] compiling Maxima code with arrays In-Reply-To: <43F211D7.6010703@ericsson.com> References: <37461.193.144.183.8.1139930965.squirrel@webmail.math.univ-rennes1.fr> Message-ID: <43F245CD.9430.2A3EBF6@localhost> Am 14 Feb 2006 um 12:22 hat Raymond Toy geschrieben: > fabrizio.caruso at math.univ-rennes1.fr wrote: > > Hi! > > > > When I compile: > > foo(x) := block([r], r : make_array('fixnum,2), r[0]:x,r[1]:x+1, return(r)); > > or > > foo(x) := block([r:make_array('fixnum,2)], r[0]:x,r[1]:x+1, return(r)); > > > > foo stops working and gives the following error message: > > > This bug is caused by essentially the same bug that makes your previous > compiled array reference example fail. Hello Ray, it was me the last time, not Fabrizio. And you answered the following. Ray> I think this is a bug in maref1 in src/trans2.lisp. I think the Ray> method it's using to figure the type of AR is confused wrt to Common Ray> Lisp. Ray> Ray> If I insert a new clause for cond like so: Ray> Ray> (cond Ray> ((typep ar 'cl:array) Ray> (apply #'aref ar inds)) ;; <- new stuff Ray> ((one-of-types .type. (make-array 3)) (apply #'aref ar inds)) Ray> Ray> the compiled version actually works. I did THIS change and everything is fine. Now your fix is a little bit different, especially for a different function. ??? Volker van Nek > > In src/trans2.lisp, you can add a new clause like so to make it work: > > (defun maset1 (val ar &rest inds &aux ) > ... > (cond > ((typep ar 'cl:array) ; <--- new stuff > (setf (apply #'aref ar inds) val)) > ((one-of-types .type. (make-array 3)) > ...))) > > Ray > > > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From raymond.toy at ericsson.com Tue Feb 14 14:09:01 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Tue, 14 Feb 2006 15:09:01 -0500 Subject: [Maxima] compiling Maxima code with arrays In-Reply-To: <43F245CD.9430.2A3EBF6@localhost> (van Nek's message of "Tue, 14 Feb 2006 21:04:13 +0100") References: <37461.193.144.183.8.1139930965.squirrel@webmail.math.univ-rennes1.fr> <43F245CD.9430.2A3EBF6@localhost> Message-ID: >>>>> "Volker" == van Nek writes: Volker> Am 14 Feb 2006 um 12:22 hat Raymond Toy geschrieben: >> fabrizio.caruso at math.univ-rennes1.fr wrote: >> > Hi! [snip] >> This bug is caused by essentially the same bug that makes your previous >> compiled array reference example fail. Volker> it was me the last time, not Fabrizio. And you answered the following. Oops. Sorry! [snip] Volker> I did THIS change and everything is fine. Now your fix is Volker> a little bit different, especially for a different Volker> function. ??? Actually, yes. Both functions need fixes. Yours was accessing an element. Fabrizio's was setting an element. I'm going to check in these (and other related) changes soon, once I give them some tests. Ray From jamesahart79 at gmail.com Tue Feb 14 14:15:14 2006 From: jamesahart79 at gmail.com (James Hart) Date: Tue, 14 Feb 2006 15:15:14 -0500 Subject: [Maxima] Standard maxima installation under Linux? In-Reply-To: References: Message-ID: On 2/14/06, Andrey G. Grozin wrote: > On Tue, 14 Feb 2006, James Hart wrote: > > So, do all questions that interrupt evaluation in Maxima have at least > > one line ending in a question mark? (All the ones I've seen have, but > > I haven't been comprehensive by any stretch of the imagination.) > Oh, NO!! Please, not THIS approach again. That's why I asked, instead of doing it. I wasn't sure if Maxima allowed ? to be used in other places. Since it can, I'd better not.:) > > TeXmacs, wxMaxima (and maybe other front-ends) assign some strings to > *prompt-prefix* and *prompt-suffix*. If these strings contain some > non-printable chars (ctrl-chars, for example), then they can unambuguously > identify prompts (including questions). No need to parse maxima output (in > addition to being tedious, this approach is very unreliable: what if a > user writes some string ending in a question mark, or the string "(%i123)" > ? This looks a whole lot more promising. I'll see how it does. > > Andrey > From gcalhoun at ucsd.edu Tue Feb 14 13:20:23 2006 From: gcalhoun at ucsd.edu (Gray Calhoun) Date: Tue, 14 Feb 2006 11:20:23 -0800 Subject: [Maxima] How to create a matrix? Message-ID: Hi, I'm working with terms like "transpose(X) . X" where X is an unspecified n-by-p matrix. How can I define a matrix X without specifying the terms x_ij? I invert X'X and take derivatives of terms like X . b with respect to b (b is a p-by-1 vector), and would like to keep everything in matrix notation. I didn't find this in the documentation; is there another resource that I should look at? I'm using xMaxima 5.9.2 on windows XP. -- Gray Calhoun Economics Department UC San Diego From qwert2003 at users.sourceforge.net Tue Feb 14 15:10:14 2006 From: qwert2003 at users.sourceforge.net (qwert2003) Date: Tue, 14 Feb 2006 22:10:14 +0100 Subject: [Maxima] maxima --server 9734 Message-ID: <200602142210.14439.qwert2003@gmx.ch> Hello When I try the command > maxima --server 9734 I get the following error messages and it enters the Lisp debugger. > WARNING: *FOREIGN-ENCODING*: reset to ASCII > jfa: starting server on port 9734 > Maxima encountered a Lisp error: > > UNIX error 111 (ECONNREFUSED): Connection refused > > Automatically continuing. > To reenable the Lisp debugger set *debugger-hook* to nil. > > *** - THROW: there is no CATCHer for tag MAXIMA::RETURN-FROM-DEBUGGER > Break 1 [1]> > [2]> I am trying this on a linux computer (SuSE 9.3), Maxima 5.9.2. On a different WindowsXP computer, same Maxima version, I get a similar error. Can anyone tell me how to start maxima in server mode? I only need to access the Maxima server on localhost. The message "Connection refused" sounds like a firewall problem. But > yacas --server 9734 does work. The warning about UTF-8 encoding is not related. I want to test if it is possible to use Maxima from Mavscript. (This would allow to use Maxima commands in OpenOffice text documents). Thanks Adrian V. From andrej.vodopivec at gmail.com Tue Feb 14 15:44:26 2006 From: andrej.vodopivec at gmail.com (Andrej Vodopivec) Date: Tue, 14 Feb 2006 13:44:26 -0800 Subject: [Maxima] maxima --server 9734 In-Reply-To: <200602142210.14439.qwert2003@gmx.ch> References: <200602142210.14439.qwert2003@gmx.ch> Message-ID: <7775b21a0602141344s38760736w7a4c7541e59ac0d9@mail.gmail.com> Hi, the --server command line option is misleading. Running 'maxima --server port' does not start a maxima server. Maxima will try to connect to a server running on that port (and since there is no server on that port you get connection refused error). HTH, Andrej On 2/14/06, qwert2003 wrote: > Hello > > When I try the command > > maxima --server 9734 > I get the following error messages and it enters the Lisp debugger. > > WARNING: *FOREIGN-ENCODING*: reset to ASCII > > jfa: starting server on port 9734 > > Maxima encountered a Lisp error: > > > > UNIX error 111 (ECONNREFUSED): Connection refused > > > > Automatically continuing. > > To reenable the Lisp debugger set *debugger-hook* to nil. > > > > *** - THROW: there is no CATCHer for tag MAXIMA::RETURN-FROM-DEBUGGER > > Break 1 [1]> > > [2]> > > I am trying this on a linux computer (SuSE 9.3), Maxima 5.9.2. > On a different WindowsXP computer, same Maxima version, I get a similar error. > > Can anyone tell me how to start maxima in server mode? I only need to access > the Maxima server on localhost. > The message "Connection refused" sounds like a firewall problem. But > > yacas --server 9734 > does work. The warning about UTF-8 encoding is not related. > I want to test if it is possible to use Maxima from Mavscript. (This would > allow to use Maxima commands in OpenOffice text documents). > > Thanks > > Adrian V. > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From fateman at cs.berkeley.edu Tue Feb 14 15:47:37 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Tue, 14 Feb 2006 13:47:37 -0800 Subject: [Maxima] How to create a matrix? In-Reply-To: References: Message-ID: <43F24FF9.4000408@cs.berkeley.edu> You don't have to define X at all; you do have to say what you want from transpose(X).X Maxima does know about "non-commutative multiplicative inverse" so that X . X^^(-1) is changed to 1. If you make a list of the simplifications or other operations you expect to work, it might be possible to do them via tellsimp, or rules. There are papers on non-explicit symbolic matrix operations, but they probably won't do what you want without some help from you. Gray Calhoun wrote: >Hi, > > I'm working with terms like "transpose(X) . X" where X is an >unspecified n-by-p matrix. How can I define a matrix X without >specifying the terms x_ij? I invert X'X and take derivatives of terms >like X . b with respect to b (b is a p-by-1 vector), and would like to >keep everything in matrix notation. I didn't find this in the >documentation; is there another resource that I should look at? > >I'm using xMaxima 5.9.2 on windows XP. > >-- >Gray Calhoun > >Economics Department >UC San Diego > >_______________________________________________ >Maxima mailing list >Maxima at math.utexas.edu >http://www.math.utexas.edu/mailman/listinfo/maxima > > From ficmatin01 at solar.com.br Wed Feb 15 01:17:55 2006 From: ficmatin01 at solar.com.br (Jorge Barros de Abreu) Date: Wed, 15 Feb 2006 05:17:55 -0200 Subject: [Maxima] Maxima i18n In-Reply-To: References: <43E991CF.80005@mail.ru> <200602140541.34937.ficmatin01@solar.com.br> Message-ID: <200602150517.55875.ficmatin01@solar.com.br> Hi Robert and All. If anyone find something about utf-8 and openoffice please send me. The problem is the character ('c) and the character (,c) that do not solved ( not that i know ). Openoffice only support ('c) that do not exist in portuguese language. []'s Em Tue 14 Feb 2006 13:27, Robert Dodier escreveu: > jorge, > > i found this file on the web -- > > http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt > > which has a lot of interesting characters in it. > it's a nice test to see if your display knows how to handle UTF-8. > > hth > robert -- Data Estelar 2453778.834132 http://www.solar.com.br/~ficmatin Desejo-lhe Paz, Vida Longa e Prosperidade. S?o Bem Vindas Mensagens no Formato Texto Gen?rico com Acentos. From caruso at posso.dm.unipi.it Wed Feb 15 06:14:27 2006 From: caruso at posso.dm.unipi.it (Fabrizio Caruso) Date: Wed, 15 Feb 2006 13:14:27 +0100 (CET) Subject: [Maxima] univariate Karatsuba in Maxima In-Reply-To: Message-ID: Hi! I am still trying to implement Karatsuba for univariate polynomials in Maxima (I am not using Common Lisp because I am not familiar with Lisp) Sofar what I did is way too much slower than ratexpand for any size of polynomials I have tried. I wonder whether ratexpand uses something better than "school" multiplication. I had previously implemented Karatsuba in C++ and it worked quite well: template univariateDensePolynomial _Karatsuba(const univariateDensePolynomial &lhs, const univariateDensePolynomial &rhs, const long degree) { if (lhs.degree() <= THRESHOLD || rhs.degree() <= THRESHOLD) { return lhs * rhs; }; univariateDensePolynomial lhsL; ... univariateDensePolynomial prodH; univariateDensePolynomial res; lhsL = lhs.truncatePower(degree/2); lhsH = lhs.extractHighPower(degree/2); rhsL = rhs.truncatePower(degree/2); rhsH = rhs.extractHighPower(degree/2); prodL = _Karatsuba(lhsL,rhsL,degree/2); prodH = _Karatsuba(lhsH,rhsH,degree/2); prodM = _Karatsuba((lhsL+lhsH),(rhsL+rhsH),degree/2) - prodL - prodH; res = prodL+prodM.shiftPower(degree/2)+prodH.shiftPower(degree); return res; }; Note: the C++ version beats "school multiplication" with a trade-off THRESHOLD starting from about 100. My first attempt in Maxima is: karatsuba(lhs,rhs,var,deg) := block([lhsL,lhsH,rhsL,rhsH,prodL,prodM,prodH,res], lhsDeg : degree(lhs,var), rhsDeg : degree(rhs,var), if lhsDeg <= KARATSUBA_THRESHOLD or rhsDeg <= KARATSUBA_THRESHOLD then return(ratexpand(lhs*rhs)), lhsL : truncatePol(lhs,var,deg/2-1,0), lhsH : truncatePol(lhs,var,lhsDeg,deg/2)/x^(deg/2), rhsL : truncatePol(rhs,var,deg/2-1,0), rhsH : truncatePol(rhs,var,rhsDeg,deg/2)/x^(deg/2), prodL : karatsuba(lhsL,rhsL,var,deg/2), prodH : karatsuba(lhsH,rhsH,var,deg/2), return(ratexpand(prodL+(karatsuba((lhsL+lhsH), (rhsL+rhsH),var,deg/2) - prodL - prodH)*var^(deg/2)+prodH*var^deg)) ); The algorithm is quite simple and I don't understand what I should do to make it faster than ratexpand. Should I use arrays to implement polynomials? Is someone planning to have it in the next Maxima version? Fabrizio From alexandre at emc.ufsc.br Wed Feb 15 07:18:46 2006 From: alexandre at emc.ufsc.br (Alexandre Campos) Date: Wed, 15 Feb 2006 14:18:46 +0100 Subject: [Maxima] Use ALLOCATE to expand the space Message-ID: <43F32A36.2090000@emc.ufsc.br> hi, I'm running the subset function from nset, that works for "short" values but doesn't works for certain "large" values of g=30 and n=26, I have the following error and sugestion: ------------------------------------------------------------------ (%i1) load("/home/alex/hibrido/nset")$ (%i2) g:30$ (%i3) n:26$ (%i4) M:subset(integer_partitions((2*g),n), lambda([s], not member(0,s)))$ Maxima encountered a Lisp error: Error in FUNCALL [or a callee]: The storage for CONS is exhausted. Currently, 117445 pages are allocated. Use ALLOCATE to expand the space. ------------------------------------------------------------------------- So, How can I use ALLOCATE to expand the space ? alexandre -- "For I am convinced that neither death, nor life, nor angels, nor principalities, nor things present, nor things to come, nor powers, nor height, nor depth, nor any other created thing, shall be able to separate us from the love of God, which is in Christ Jesus our Lord." Romans 8:38,39 From robert.dodier at gmail.com Wed Feb 15 09:16:41 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 15 Feb 2006 08:16:41 -0700 Subject: [Maxima] Maxima i18n In-Reply-To: <43F0CEAA.50200@mail.ru> References: <43E991CF.80005@mail.ru> <43EE35C3.2090500@mail.ru> <43F0CEAA.50200@mail.ru> Message-ID: hi vadim, thanks for your help on the utf-8 stuff. i found that LC_CTYPE=pt_BR.UTF-8 \ xterm -fn '-Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1' and then export LANG=pt_BR.UTF-8 in the new xterm causes maxima to display the info docs with the special characters, as hoped. hurray! i was able to build maxima / sbcl + language packages via rpmbuild and then view utf-8 (es & pt) and also latin-1 (es & pt) successfully. however i am not very familiar w/ the font & encoding problems so sometimes it works for me and sometimes i goof it up. maxima i18n is really exciting -- the first thing i tried is to create strings and symbols containing non-ascii characters. sbcl is entirely happy with strings and mostly happy with symbols, but i had 2 problems with symbols. (1) need to execute declare ("", alphabetic); but that does not invert case. :lisp alphabet shows the declared alphabetic characters so i copied the inverted-case char from there ... what we really want is to be able to declare a whole range of characters as alphabetic. i realize also that "upper / lower case" doesn't mean anything for some character sets. (2) :lisp ' caused sbcl to fall into an endless loop -- "the octet sequence (195 39) cannot be decoded". that is pretty annoying! i don't mind if it complains once, but complaining forever? nope. well, i am sure that you are already thinking about ways to work with different character sets in maxima. let's consider that in more detail post-5.9.3. thanks so much for all your work on i18n. internationally yrs, robert From robert.dodier at gmail.com Wed Feb 15 09:29:14 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 15 Feb 2006 08:29:14 -0700 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: <8b356f880602140853j6fe39bc7nbf5379526203d37e@mail.gmail.com> References: <3E783573F8C838449803D19EAFEEA835014DE5C1@orm-ex-001.ormskirk.internal> <8b356f880602140853j6fe39bc7nbf5379526203d37e@mail.gmail.com> Message-ID: hello stavros, > I think we all agree that it's not a big deal to add it. The question > is whether it is a good idea to add it *incompletely*. completely enough for computational problems, is what i'm proposing. > > since log10 is typically used for calculations only, > > i don't see any need to reproduce all of the algebraic > > machinery already in place for log base e. > > Then why add it at all? the motivating desideratum is to express problems and their solutions in the language customary in the problem domain. log10 is a function which appears in problems in some nontrivial domains (high school math, engineering, maybe others). > So you would find it acceptable that log10(x)/log(x) not simplify? yes. best, robert From petegus at spaceshipone.engin.umich.edu Wed Feb 15 10:01:37 2006 From: petegus at spaceshipone.engin.umich.edu (Peter Gustafson) Date: Wed, 15 Feb 2006 11:01:37 -0500 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: References: <3E783573F8C838449803D19EAFEEA835014DE5C1@orm-ex-001.ormskirk.internal> <8b356f880602140853j6fe39bc7nbf5379526203d37e@mail.gmail.com> Message-ID: <1140019297.27710.16.camel@spaceshipone.engin.umich.edu> I'm leaning towards Robert's arguments here...for non-technical reasons. We want young people to find maxima useful for their problems, so that they learn it early and move towards open source tools. The biggest obstacle I face in using open source in my research is opposition from those who use other tools. They often make this choice due to some obscure or trivial difference (like log10). Choices made early in life often become the default later (that is why marking people target the young, even though they don't have much $$$) This addition would not be detrimental to the "professional" users, since we would never use it on our "real" problems. (Although I think there is some bias baked into those terms.) Pete On Wed, 2006-02-15 at 08:29 -0700, Robert Dodier wrote: > hello stavros, > > > I think we all agree that it's not a big deal to add it. The question > > is whether it is a good idea to add it *incompletely*. > > completely enough for computational problems, is what i'm proposing. > > > > since log10 is typically used for calculations only, > > > i don't see any need to reproduce all of the algebraic > > > machinery already in place for log base e. > > > > Then why add it at all? > > the motivating desideratum is to express problems and > their solutions in the language customary in the problem > domain. > > log10 is a function which appears in problems in some > nontrivial domains (high school math, engineering, maybe others). > > > So you would find it acceptable that log10(x)/log(x) not simplify? > > yes. > > best, > robert > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima From yhonda at mac.com Wed Feb 15 10:11:15 2006 From: yhonda at mac.com (Yasuaki Honda) Date: Thu, 16 Feb 2006 01:11:15 +0900 Subject: [Maxima] Maxima 5.9.3 release schedule In-Reply-To: References: <4446344F-C87D-4AD7-937F-D61449699271@mac.com> Message-ID: <9EDF73F0-3CB2-428D-B81F-27AA8D4B35C7@mac.com> Hi Robert san, Thanks for included the patch in the source tree. I will contact you for being a developer of maxima. Thanks for inviting me. Yasuaki Honda On 2006/02/13, at 2:11 AM, Robert Dodier wrote: > Hello Yasuaki, > >> To fix this issue is simple. The following patch allows that the >> newest clisp (2.38) compiles things correctly while older clisp >> ignores >> things safely. > > I have committed the patch to src/clmacs.lisp. > run_testsuite doesn't report any new errors with > clisp 2.34, sbcl 0.9.4, and gcl 2.6.7 on linux. > > Since you are clearly a careful and competent programmer, > I would like to ask you to become a Maxima developer > so that in the future you can commit patches directly to cvs. > If you wish to do so, please make a login at SourceForge > (if you do not already have one) and email it to me. > > Thanks for your contribution to Maxima, > > Robert Dodier > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima From fateman at cs.berkeley.edu Wed Feb 15 09:44:18 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 15 Feb 2006 07:44:18 -0800 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? References: <3E783573F8C838449803D19EAFEEA835014DE5C1@orm-ex-001.ormskirk.internal> <8b356f880602140853j6fe39bc7nbf5379526203d37e@mail.gmail.com> Message-ID: <033a01c6324b$b954db80$13d09888@windsor> I think that log10 is typically used in a few areas e.g. decibel units for noise, where a logarithmic scale seems to make sense. Its most common educational use is in helping students do multiplication of numbers by adding their logs, and in the use of a slide rule. Either of these seems to me to be a plausible "application" of computer algebra as an educational lesson, but one that could be removed, as training wheels on a bicycle, when one graduates from this lesson. Oh, in such a lesson one would never ever encounter natural log, since the exponential function and anything to do with it is YEARS in the future. So you would never have log10(x)/log(x) ever in such a lesson. Similarly, unless you were a sound engineer, (or ??) you would have no need to use log10. So the world contexts may be pretty much separate. Someone who wants log10 could add a rule to rewrite log(x) into log10. Sure it would break integration, differentiation, etc. But that's of no concern. Just a thought. From frank.palazzolo at mcm1.com Wed Feb 15 10:21:51 2006 From: frank.palazzolo at mcm1.com (Frank Palazzolo) Date: Wed, 15 Feb 2006 11:21:51 -0500 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: Message-ID: <001d01c6324b$ef816b10$1600100a@mcmrnd> >log10 is a function which appears in problems in some nontrivial domains >(high school math, engineering, maybe others). >> So you would find it acceptable that log10(x)/log(x) not simplify? >yes. Hi, I'm just curious if there are other functions that exist in Maxima that fall into this same category - i.e. "Function implemented enough for calculational work but symbolically separate from most of the rest of the machinery of Maxima". (log10(x)/log(x) or integral(log10(x),x) does nothing.) At mimimum, I would definitely like to be warned in the documentation to "stay away from these functions for symbolic work." Thanks, Frank From fateman at cs.berkeley.edu Wed Feb 15 10:40:15 2006 From: fateman at cs.berkeley.edu (Richard Fateman) Date: Wed, 15 Feb 2006 08:40:15 -0800 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? References: <001d01c6324b$ef816b10$1600100a@mcmrnd> Message-ID: <034901c6324e$846642d0$13d09888@windsor> there are many functions that exist only for translation into other forms (e.g. we COULD integrate in terms of classical orthonormal polynomials, but probably they are converted to ordinary polynomials; we COULD integrate in terms of sec(x), but that might be changed to 1/(cos(x))), and there are some functions that are only good for numerical evaluation. With more work some of them might become symbolically available, so it is possible any list could change. For the most part, anything you define yourself cannot be handled symbolically except if it returns a symbolic expression. e.g. let f(x):= block([sum:0], for i:0 thru x do(print(i), sum:sum^2*(i^2)), sum); can you differentiate or integrate f? Can you simplify f(x)*f(x+1)? Some functions can be evaluated only in floating-point, too. I agree that an initial characterization of what can be done with which functions might be useful; this information is, I think, in the (commercial) Macsyma documentation, but spread over all the functions. RJF ----- Original Message ----- From: "Frank Palazzolo" To: "'Robert Dodier'" Cc: Sent: Wednesday, February 15, 2006 8:21 AM Subject: RE: [Maxima] log10, was: bug report, or am I doing something wrong? > >>log10 is a function which appears in problems in some nontrivial domains >>(high school math, engineering, maybe others). > >>> So you would find it acceptable that log10(x)/log(x) not simplify? > >>yes. > > Hi, > > I'm just curious if there are other functions that exist in Maxima that > fall > into this same category - i.e. "Function implemented enough for > calculational work but symbolically separate from most of the rest of the > machinery of Maxima". (log10(x)/log(x) or integral(log10(x),x) does > nothing.) > > At mimimum, I would definitely like to be warned in the documentation to > "stay away from these functions for symbolic work." > > Thanks, > Frank > > _______________________________________________ > Maxima mailing list > Maxima at math.utexas.edu > http://www.math.utexas.edu/mailman/listinfo/maxima > From raymond.toy at ericsson.com Wed Feb 15 10:41:13 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Wed, 15 Feb 2006 11:41:13 -0500 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: <1140019297.27710.16.camel@spaceshipone.engin.umich.edu> (Peter Gustafson's message of "Wed, 15 Feb 2006 11:01:37 -0500") References: <3E783573F8C838449803D19EAFEEA835014DE5C1@orm-ex-001.ormskirk.internal> <8b356f880602140853j6fe39bc7nbf5379526203d37e@mail.gmail.com> <1140019297.27710.16.camel@spaceshipone.engin.umich.edu> Message-ID: >>>>> "Peter" == Peter Gustafson writes: Peter> We want young people to find maxima useful for their Peter> problems, so that they learn it early and move towards open Peter> source tools. I never thought one of maxima's goals was to encourage open source tools. Peter> This addition would not be detrimental to the Peter> "professional" users, since we would never use it on our Peter> "real" problems. (Although I think there is some bias Peter> baked into those terms.) On the contrary, I do find it detrimental. There are only a few people with the desire and/or knowledge to work on maxima. Taking time to implement this is time taken from other work. Just look at the list of bugs. However, if the person requesting such features were to learn to make the changes himself, that would be beneficial to everyone. Ray From willisb at unk.edu Wed Feb 15 11:01:35 2006 From: willisb at unk.edu (Barton Willis) Date: Wed, 15 Feb 2006 11:01:35 -0600 Subject: [Maxima] catching errors Message-ID: Does this function look OK? The special declaration always makes me a bit uncomfortable. ;; Apply the Maxima function f to x. If an error is signaled, return nil; otherwise ;; return (list (mfuncall f x)). (defun ignore-errors-mfuncall (f x) (let ((errcatch t)) (declare (special errcatch)) (errset (mfuncall f x) lisperrprint))) Barton From raymond.toy at ericsson.com Wed Feb 15 11:02:42 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Wed, 15 Feb 2006 12:02:42 -0500 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: <001d01c6324b$ef816b10$1600100a@mcmrnd> (Frank Palazzolo's message of "Wed, 15 Feb 2006 11:21:51 -0500") References: <001d01c6324b$ef816b10$1600100a@mcmrnd> Message-ID: >>>>> "Frank" == Frank Palazzolo writes: Frank> I'm just curious if there are other functions that exist in Maxima that fall Frank> into this same category - i.e. "Function implemented enough for Frank> calculational work but symbolically separate from most of the rest of the Frank> machinery of Maxima". (log10(x)/log(x) or integral(log10(x),x) does Frank> nothing.) There are probably others, but here are a few of them that I know about: %he[n] (z) Hermite polynomial (Nota bene: `he', not `h'. See A&S 22.5.18) hstruve[n] (z) Struve H function lstruve[n] (z) Struve L function %f[p,q] ([], [], expr) Generalized Hypergeometric function gammagreek(a,z) Incomplete gamma function gammaincomplete(a,z) Tail of incomplete gamma function slommel %m[u,k] (z) Whittaker function, 1st kind %w[u,k] (z) Whittaker function, 2nd kind erfc (z) Complement of the erf function ei (z) Exponential integral (?) kelliptic (z) Complete elliptic integral of the first kind (K) %d [n] (z) Parabolic cylinder function These are taken from the help for specint. (There are many others in the source code for specint.) Actually, I don't think maxima can currently evaluate any of these numerically. What maxima knows about these functions is very limited or non-existent. Ray From van.Nek at gmx.net Wed Feb 15 11:55:20 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Wed, 15 Feb 2006 18:55:20 +0100 Subject: [Maxima] compilation of tail recursive functions Message-ID: <43F37918.13676.F2FFBB@localhost> Hello all, I have recognized, that at Maxima-level the compiler does not make a tail recursive call optimization, at Lisp-level the compiler does. Is there a switch I can set to aim a tail recursive call optimization when compiling? (I use Windows-Maxima with GCL) Thanks Volker van Nek From robert.dodier at gmail.com Wed Feb 15 13:26:00 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 15 Feb 2006 12:26:00 -0700 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: <1140019297.27710.16.camel@spaceshipone.engin.umich.edu> References: <3E783573F8C838449803D19EAFEEA835014DE5C1@orm-ex-001.ormskirk.internal> <8b356f880602140853j6fe39bc7nbf5379526203d37e@mail.gmail.com> <1140019297.27710.16.camel@spaceshipone.engin.umich.edu> Message-ID: hello peter, > We want young people to find maxima useful for their problems, so that > they learn it early and move towards open source tools. agreed in general that getting people started on open source tools is a good idea, and in particular about maxima. i would like to see maxima become the solution of first resort for students. > This addition would not be detrimental to the "professional" users, > since we would never use it on our "real" problems. (Although I think > there is some bias baked into those terms.) real vs unreal can only be decided in specific cases, i guess. in reference to log10, it certainly is real enough. i've seen it plenty of times in engineering problems. thanks for your interest in maxima, robert dodier From robert.dodier at gmail.com Wed Feb 15 13:31:04 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 15 Feb 2006 12:31:04 -0700 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: <3E783573F8C838449803D19EAFEEA835014DE5C1@orm-ex-001.ormskirk.internal> References: <3E783573F8C838449803D19EAFEEA835014DE5C1@orm-ex-001.ormskirk.internal> Message-ID: luke, i have made an attempt at a log10 implementation. you can get it here: http://cvs.sf.net/viewcvs.py/maxima/maxima/share/contrib/log10.mac click on the "(download)" link. copy it to a file and then enter load("path/to/my/file"); this script establishes some of the well-known properties of log10. i hope it's enough to help you solve whatever problems you have. hth robert dodier From dlakelan at street-artists.org Wed Feb 15 16:39:22 2006 From: dlakelan at street-artists.org (Daniel Lakeland) Date: Wed, 15 Feb 2006 14:39:22 -0800 Subject: [Maxima] mersenne twister status? Message-ID: <20060215223922.GB11712@mooch> What's the status of the mersenne twister code from the wiki? Is it available in the 5.9.2 release? Will it be included in the 5.9.3 release? I think it seems like an excellent choice for the default random number generator. -- Daniel Lakeland dlakelan at street-artists.org http://www.street-artists.org/~dlakelan From robert.dodier at gmail.com Wed Feb 15 17:23:08 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 15 Feb 2006 16:23:08 -0700 Subject: [Maxima] mersenne twister status? In-Reply-To: <20060215223922.GB11712@mooch> References: <20060215223922.GB11712@mooch> Message-ID: hi dan, > What's the status of the mersenne twister code from the wiki? Is it > available in the 5.9.2 release? Will it be included in the 5.9.3 > release? I think it seems like an excellent choice for the default > random number generator. actually it is in the 5.9.2 release. i'll put a note on the wiki to say that. the functions related to it are make_random_state, set_random_state, and random. hth robert dodier From biomates at telefonica.net Wed Feb 15 17:33:39 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Thu, 16 Feb 2006 00:33:39 +0100 Subject: [Maxima] Proposal about the share texi files Message-ID: <1140046419.11967.19.camel@localhost.localdomain> Dear all, I propose to store the new share texi files in maxima/doc/info, together with the rest of the documentation, creating a new section in maxima.texi which could be called 'Share packages', 'Contributed packages' or something like that. I see three advantages in doing so: a) It would be easier to maintain; in the present status, when you include a new texi file you must make some changes in the configure and Makefiles. b) In order to see if there were new changes (for example, when we want to translate them), it's easier if they are all together in the same place, instead of diving in the directory tree. c) At least, if we want this information to be accesible from the 'describe' function, why not to include it in the reference manual (pdf and html)? Best wishes. -- Mario Rodriguez Riotorto www.biomates.net From biomates at telefonica.net Wed Feb 15 17:37:37 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Thu, 16 Feb 2006 00:37:37 +0100 Subject: [Maxima] mersenne twister status? In-Reply-To: References: <20060215223922.GB11712@mooch> Message-ID: <1140046657.11967.23.camel@localhost.localdomain> > actually it is in the 5.9.2 release. i'll put a note on the wiki to say that. > the functions related to it are make_random_state, set_random_state, > and random. In fact, it is extensively used in package 'distrib'. -- Mario Rodriguez Riotorto www.biomates.net From robert.dodier at gmail.com Wed Feb 15 23:04:52 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Wed, 15 Feb 2006 22:04:52 -0700 Subject: [Maxima] Proposal about the share texi files In-Reply-To: <1140046419.11967.19.camel@localhost.localdomain> References: <1140046419.11967.19.camel@localhost.localdomain> Message-ID: hi mario, > I propose to store the new share texi files in maxima/doc/info, together > with the rest of the documentation, creating a new section in > maxima.texi which could be called 'Share packages', 'Contributed > packages' or something like that. OK by me. in a way it is nice to have the texinfo for a package in the same place with any other files in the package. but i can see that makes it clumsy to handle the share package texinfos in aggregate. so it's OK with me if you want to move the texi files, but please wait til after the 5.9.3 release (real soon now) to do so. best, robert From vvzhy at mail.ru Thu Feb 16 12:02:19 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Thu, 16 Feb 2006 21:02:19 +0300 Subject: [Maxima] Proposal about the share texi files In-Reply-To: References: <1140046419.11967.19.camel@localhost.localdomain> Message-ID: <43F4BE2B.1040200@mail.ru> Robert Dodier writes: > hi mario, > >> I propose to store the new share texi files in maxima/doc/info, together >> with the rest of the documentation, creating a new section in >> maxima.texi which could be called 'Share packages', 'Contributed >> packages' or something like that. > > OK by me. +1 > in a way it is nice to have the texinfo for a package > in the same place with any other files in the package. > but i can see that makes it clumsy to handle the > share package texinfos in aggregate. Notice that maxima.texi already contains several chapters describing share packages. > so it's OK with me if you want to move the texi files, > but please wait til after the 5.9.3 release (real soon now) to do so. > Absolutely. -- Vadim V. Zhytnikov From vvzhy at mail.ru Thu Feb 16 12:16:59 2006 From: vvzhy at mail.ru (Vadim V. Zhytnikov) Date: Thu, 16 Feb 2006 21:16:59 +0300 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: References: <001d01c6324b$ef816b10$1600100a@mcmrnd> Message-ID: <43F4C19B.7050004@mail.ru> Raymond Toy writes: >>>>>> "Frank" == Frank Palazzolo writes: > > Frank> I'm just curious if there are other functions that exist in Maxima that fall > Frank> into this same category - i.e. "Function implemented enough for > Frank> calculational work but symbolically separate from most of the rest of the > Frank> machinery of Maxima". (log10(x)/log(x) or integral(log10(x),x) does > Frank> nothing.) > > There are probably others, but here are a few of them that I know > about: > > %he[n] (z) Hermite polynomial (Nota bene: `he', not `h'. See A&S 22.5.18) > hstruve[n] (z) Struve H function > lstruve[n] (z) Struve L function > %f[p,q] ([], [], expr) Generalized Hypergeometric function > gammagreek(a,z) Incomplete gamma function > gammaincomplete(a,z) Tail of incomplete gamma function > slommel > %m[u,k] (z) Whittaker function, 1st kind > %w[u,k] (z) Whittaker function, 2nd kind > erfc (z) Complement of the erf function > ei (z) Exponential integral (?) > kelliptic (z) Complete elliptic integral of the first kind (K) > %d [n] (z) Parabolic cylinder function > Off-topic. I strongly dislike erratic the way these function are named. Probably specint and corresponding documentation needs some revision. -- Vadim V. Zhytnikov From van.Nek at gmx.net Thu Feb 16 12:42:26 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Thu, 16 Feb 2006 19:42:26 +0100 Subject: [Maxima] compilation of tail recursive functions In-Reply-To: <43F37918.13676.F2FFBB@localhost> Message-ID: <43F4D5A2.10926.126155D@localhost> Am 15 Feb 2006 um 18:55 hat van.Nek at gmx.net geschrieben: > Hello all, > I have recognized, that at Maxima-level the compiler does not make a tail recursive call > optimization, at Lisp-level the compiler does. > Is there a switch I can set to aim a tail recursive call optimization when compiling? > (I use Windows-Maxima with GCL) > Thanks > Volker van Nek No answer? OK, I try to be more precise: (C1) n_sum_1(n,res):= if n=0 then res else n_sum_1(n-1,n+res)$ (C2) n_sum_1(1000,0); ---> Bind stack overflow. (C3) compile_file( "C:\\home\\maxima\\test.mc"); (C4) load( "C:\\home\\maxima\\test.o"); (C6) n_sum_1(10000,0); ---> Bind stack overflow. That means: Compiling doesn't help. No tail call optimization occurred. I looked at the translated code: (PROGN (DEFPROP $N_SUM_1 T TRANSLATED) (ADD2LNC '$N_SUM_1 $PROPS) (DEFMTRFUN ($N_SUM_1 $ANY MDEFINE NIL NIL) ($N $RES) (DECLARE (SPECIAL $RES $N)) (COND ((LIKE $N 0) $RES) (T ;(SIMPLIFY <--- I commented out SIMPLIFY (MFUNCTION-CALL $N_SUM_1 (ADD* $N -1) (ADD* $N $RES))))));) ( NOW this is a tail recursive function again ) and compiled again ---> Tail-recursive call of $N_SUM_1 was replaced by iteration. loaded again (C12) n_sum_1(100000000,0); ---> no problem (D12) 5000000050000000 any ideas?? what is the need of SIMPLIFY there? is there any possibility to aim tail recursion optimization? Thanks Volker van Nek From jamesahart79 at gmail.com Thu Feb 16 12:57:32 2006 From: jamesahart79 at gmail.com (James Hart) Date: Thu, 16 Feb 2006 13:57:32 -0500 Subject: [Maxima] Standard maxima installation under Linux? In-Reply-To: References: Message-ID: Well, it worked on Linux. Everything maxima-related seems to be running just fine. (Threading issues have come up, but that's not even remotely related to maxima.) Thank you everyone for your feedback. On 2/14/06, James Hart wrote: > On 2/14/06, Andrey G. Grozin wrote: > > On Tue, 14 Feb 2006, James Hart wrote: > > > So, do all questions that interrupt evaluation in Maxima have at least > > > one line ending in a question mark? (All the ones I've seen have, but > > > I haven't been comprehensive by any stretch of the imagination.) > > Oh, NO!! Please, not THIS approach again. > That's why I asked, instead of doing it. I wasn't sure if Maxima > allowed ? to be used in other places. Since it can, I'd better not.:) > > > > > TeXmacs, wxMaxima (and maybe other front-ends) assign some strings to > > *prompt-prefix* and *prompt-suffix*. If these strings contain some > > non-printable chars (ctrl-chars, for example), then they can unambuguously > > identify prompts (including questions). No need to parse maxima output (in > > addition to being tedious, this approach is very unreliable: what if a > > user writes some string ending in a question mark, or the string "(%i123)" > > ? > This looks a whole lot more promising. I'll see how it does. > > > > > Andrey > > > From raymond.toy at ericsson.com Thu Feb 16 13:05:04 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Thu, 16 Feb 2006 14:05:04 -0500 Subject: [Maxima] log10, was: bug report, or am I doing something wrong? In-Reply-To: <43F4C19B.7050004@mail.ru> (Vadim V. Zhytnikov's message of "Thu, 16 Feb 2006 21:16:59 +0300") References: <001d01c6324b$ef816b10$1600100a@mcmrnd> <43F4C19B.7050004@mail.ru> Message-ID: >>>>> "Vadim" == Vadim V Zhytnikov writes: Vadim> Raymond Toy writes: >>>>>>> "Frank" == Frank Palazzolo writes: Frank> I'm just curious if there are other functions that exist >> in Maxima that fall Frank> into this same category - i.e. "Function implemented enough for Frank> calculational work but symbolically separate from most of the rest of the Frank> machinery of Maxima". (log10(x)/log(x) or integral(log10(x),x) does Frank> nothing.) >> There are probably others, but here are a few of them that I know >> about: >> %he[n] (z) Hermite polynomial (Nota bene: >> `he', not `h'. See A&S 22.5.18) >> hstruve[n] (z) Struve H function >> lstruve[n] (z) Struve L function >> %f[p,q] ([], [], expr) Generalized Hypergeometric function >> gammagreek(a,z) Incomplete gamma function >> gammaincomplete(a,z) Tail of incomplete gamma function >> slommel >> %m[u,k] (z) Whittaker function, 1st kind >> %w[u,k] (z) Whittaker function, 2nd kind >> erfc (z) Complement of the erf function >> ei (z) Exponential integral (?) >> kelliptic (z) Complete elliptic integral of the first kind (K) >> %d [n] (z) Parabolic cylinder function >> Vadim> Off-topic. I strongly dislike erratic the way these Vadim> function are named. Probably specint and corresponding Vadim> documentation needs some revision. Yes, I have plans for that, but since maxima doesn't know anything about these functions, I haven't done anything about them. specint used to use %j[n](x), %y[n](x), and so on, but we've changed these to bessel_j(n,x) and bessel_y(n,x). specint also produces assoc_legendre_p instead of %p, but I think it still wants %p on input. These will get fixed someday. Ray From jkoski11 at comcast.net Thu Feb 16 14:04:36 2006 From: jkoski11 at comcast.net (Joe Koski) Date: Thu, 16 Feb 2006 13:04:36 -0700 Subject: [Maxima] Installation of maxima-5.9.2 on Mac OS X Message-ID: I'm rejoining the list after successfully installing maxima-5.9.2 with clisp-2.38 on my G5 Mac with OS X 10.3.9. Here is a quick summary of what I found. Getting clisp-2.38 to install and make check successfully on my Mac required a patch for the clisp routine socket.d (or alternatively, stream.d). The clisp mail list folks have a handle on that, and they did assist me. Installing maxima-5.9.2 went without problems through configure, make and make check. When I tried make install (actually sudo make install), I got an error, something like, "no target to make contrib/gentran/man/MANUAL.ps.gz. When I looked in the /contrib/gentran/man directory, I saw only contrib/gentran/man/MANUAL.ps without the .gz. This may be a case of the Mac automatically un-gzipping a file. When I edited line 354 of /share/Makefile to read contrib/gentran/man/MANUAL.ps\, my make install completed without error, and when I run the tests in the xmaxima Wish shell, which includes tests of the share library, I get no errors. I notice that I now have gnuplot/AquaTerm plotting with maxima. Is gnuplot now the default for maxima? It's OK for 99% of plots, but AquaTerm doesn't allow mouse rotations of 3d graphics, and all I see is wire frames. If there is a better way, please point me in the correct direction. I still have a working copy of geomview. Is there a resource file or environment variable that I can use to set geomview or X11 graphics when I'm using X11? I got geomview to work with maxima in an X11 window with [plot_format,geomview] in the plot3d command, but other methods didn't set the default plots to geomview. Any suggestions are welcome. I have used Macsyma/maxima on-and-off (mostly off) since 1982, after hearing about it from a professor (MIT graduate) in grad school during the mid-1960s. After 40 years I still find it an amazing piece of software. Thanks for keeping it going. Joe From richard at exstrom.com Thu Feb 16 14:05:43 2006 From: richard at exstrom.com (Richard Hollos) Date: Thu, 16 Feb 2006 13:05:43 -0700 Subject: [Maxima] Robert Dodier's read_list function In-Reply-To: References: <20060210201853.GA19918@exstrom.com> Message-ID: <20060216200543.GA20657@exstrom.com> Robert, Thanks for the pointer to the latest numericalio code. The updated code that I unknowingly already had installed in maxima/share/contrib/numericalio/numericalio.lisp worked great. Thanks for all your good work in Maxima. And thanks to everyone else who has been improving Maxima. Richard Hollos On Fri, Feb 10, 2006 at 01:30:03PM -0700, Robert Dodier wrote: > hello richard, > > thanks for your interest in maxima. > > > http://riso.sourceforge.net/maxima/read_write_data-0.1.tar.gz > > sorry, that's an experimental version that is long since superseded. > i should have erased it long ago. sorry for the confusion. > > the most recent version is in the 5.9.2 tarball, which i guess you > must have since you mention recompiling maxima. ... > please try again and let us know how it turns out. From biomates at telefonica.net Thu Feb 16 14:56:48 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Thu, 16 Feb 2006 21:56:48 +0100 Subject: [Maxima] compilation of tail recursive functions In-Reply-To: <43F4D5A2.10926.126155D@localhost> References: <43F4D5A2.10926.126155D@localhost> Message-ID: <1140123408.8320.7.camel@localhost.localdomain> Hallo Volker, > > (C1) n_sum_1(n,res):= > if n=0 then res > else n_sum_1(n-1,n+res)$ > (C2) n_sum_1(1000,0); ---> Bind stack overflow. > I don't see any problems here: Maxima 5.9.2.19cvs http://maxima.sourceforge.net Using Lisp CLISP () Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. This is a development version of Maxima. The function bug_report() provides bug reporting information. (%i1) n_sum_1(n,res):= if n=0 then res else n_sum_1(n-1,n+res)$ (%i2) n_sum_1(1000,0); (%o2) 500500 could that be a GCL specific problem? By the way, which Maxima version are you running? Bis bald. -- Mario Rodriguez Riotorto www.biomates.net From biomates at telefonica.net Thu Feb 16 15:26:54 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Thu, 16 Feb 2006 22:26:54 +0100 Subject: [Maxima] Proposal about the share texi files In-Reply-To: <43F4BE2B.1040200@mail.ru> References: <1140046419.11967.19.camel@localhost.localdomain> <43F4BE2B.1040200@mail.ru> Message-ID: <1140125214.8320.24.camel@localhost.localdomain> > > in a way it is nice to have the texinfo for a package > > in the same place with any other files in the package. I had the same thought. But I think it's more practical to have all the documentation in one directory. > > Notice that maxima.texi already contains > several chapters describing share packages. I know. In any case, I'll keep you informed before changes are made. > > > so it's OK with me if you want to move the texi files, > > but please wait til after the 5.9.3 release (real soon now) to do so. Ok. -- Mario Rodriguez Riotorto www.biomates.net From van.Nek at gmx.net Thu Feb 16 16:30:13 2006 From: van.Nek at gmx.net (van.Nek at gmx.net) Date: Thu, 16 Feb 2006 23:30:13 +0100 Subject: [Maxima] compilation of tail recursive functions Message-ID: <43F50B05.28463.1F6A1BB@localhost> --Alt-Boundary-6156.32940475 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body Am 16 Feb 2006 um 21:56 hat Mario Rodriguez geschrieben: Hello Mario, I am using Windows-Maxima 5.9.2 with GCL. Are you able to calculate n_sum_1(1000000,0); without compilation? My interest is concentrated on the compilation behaviour. What does clisp do, when you compile n-sum-1? Is there a tail recursive optimization? If I compile Lisp code with GCL, there is a tail recursive optimization. I would like to have it under Maxima as well. The problem seems to be, that the translated function is wrapped with the additional SIMPLIFY . After this the compiler is not able to recognize the function as tail recursive. (PROGN (DEFPROP $N_SUM_1 T TRANSLATED) (ADD2LNC '$N_SUM_1 $PROPS) (DEFMTRFUN ($N_SUM_1 $ANY MDEFINE NIL NIL) ($N $RES) (DECLARE (SPECIAL $RES $N)) (COND ((LIKE $N 0) $RES) (T ;(SIMPLIFY (MFUNCTION-CALL $N_SUM_1 (ADD* $N -1) (ADD* $N $RES))))));) The translation is done by Maxima. So I expect, that you have the same code and I expect, that clisp will not optimize too. The optimization is a conceptual thing. Will Maxima generally miss this or is there a way to realize it? Volker > Hallo Volker, > > > > > > > (C1) n_sum_1(n,res):= > > if n=0 then res > > else n_sum_1(n-1,n+res)$ > > (C2) n_sum_1(1000,0); ---> Bind stack overflow. > > > > I don't see any problems here: > > Maxima 5.9.2.19cvs http://maxima.sourceforge.net > Using Lisp CLISP () > Distributed under the GNU Public License. See the file COPYING. > Dedicated to the memory of William Schelter. > This is a development version of Maxima. The function bug_report() > provides bug reporting information. > (%i1) n_sum_1(n,res):= > if n=0 then res > else n_sum_1(n-1,n+res)$ > (%i2) n_sum_1(1000,0); > (%o2) 500500 > > > > could that be a GCL specific problem? > > By the way, which Maxima version are you running? > > Bis bald. > -- > Mario Rodriguez Riotorto > www.biomates.net > --Alt-Boundary-6156.32940475 Content-type: text/html; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body
Am 16 Feb 2006 um 21:56 hat Mario Rodriguez geschrieben:

Hello Mario,
I am using Windows-Maxima 5.9.2 with GCL.

Are you able to calculate n_sum_1(1000000,0); 
without compilation?

My interest is concentrated on the compilation behaviour. What does clisp do, when you compile n-sum-1?
Is there a tail recursive optimization?

If I compile Lisp code with GCL, there is a tail recursive optimization.
I would like to have it under Maxima as well. 

The problem seems to be, that the translated function is wrapped with the additional 
SIMPLIFY . After this the compiler is not able to recognize the function as tail recursive.

(PROGN
  (DEFPROP $N_SUM_1 T TRANSLATED)
  (ADD2LNC '$N_SUM_1 $PROPS)
  (DEFMTRFUN ($N_SUM_1 $ANY MDEFINE NIL NIL) ($N $RES)
      (DECLARE (SPECIAL $RES $N))
      (COND
        ((LIKE $N 0) $RES)
        (T ;(SIMPLIFY
               (MFUNCTION-CALL $N_SUM_1 (ADD* $N -1) (ADD* $N $RES))))));)

The translation is done by Maxima. So I expect, that you have the same code and I expect, that clisp will not optimize too.

The optimization is a conceptual thing. Will Maxima generally miss this or is there a way to realize it?

Volker

> Hallo Volker,
> > 
> > (C1) n_sum_1(n,res):=
> >   if n=0 then res
> >   else n_sum_1(n-1,n+res)$
> > (C2) n_sum_1(1000,0);       --->  Bind stack overflow.
> > 
> I don't see any problems here:
> Maxima 5.9.2.19cvs http://maxima.sourceforge.net
> Using Lisp CLISP ()
> Distributed under the GNU Public License. See the file COPYING.
> Dedicated to the memory of William Schelter.
> This is a development version of Maxima. The function bug_report()
> provides bug reporting information.
> (%i1) n_sum_1(n,res):=
>   if n=0 then res
>   else n_sum_1(n-1,n+res)$
> (%i2) n_sum_1(1000,0);
> (%o2)                               500500
> could that be a GCL specific problem?
> By the way, which Maxima version are you running?
> Bis bald.
> -- 
> Mario Rodriguez Riotorto
> www.biomates.net

--Alt-Boundary-6156.32940475-- From raymond.toy at ericsson.com Thu Feb 16 16:48:44 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Thu, 16 Feb 2006 17:48:44 -0500 Subject: [Maxima] compilation of tail recursive functions In-Reply-To: <43F50B05.28463.1F6A1BB@localhost> (van Nek's message of "Thu, 16 Feb 2006 23:30:13 +0100") References: <43F50B05.28463.1F6A1BB@localhost> Message-ID: >>>>> "Volker" == van Nek writes: Volker> My interest is concentrated on the compilation Volker> behaviour. What does clisp do, when you compile n-sum-1? Volker> Is there a tail recursive optimization? I think that with Common Lisp, you can't depend on tail recursion happening, unlike Scheme. So even if it were tail-recursive, the implementation doesn't have to take advantage of that. Of course, I think just about all Common Lisp implementations will do that for the simpler cases. Volker> (T ;(SIMPLIFY Volker> (MFUNCTION-CALL $N_SUM_1 (ADD* $N -1) (ADD* $N $RES))))));) Volker> The translation is done by Maxima. So I expect, that you have the same code and I Volker> expect, that clisp will not optimize too. I'd have to look at the translator to see why the call to simplify is there. However, even with the interpreted code, simplification is done on each recursive call, right? If so, the compiled code needs to preserve that behavior and then it's no longer tail recursive. Ray From biomates at telefonica.net Thu Feb 16 17:15:12 2006 From: biomates at telefonica.net (Mario Rodriguez) Date: Fri, 17 Feb 2006 00:15:12 +0100 Subject: [Maxima] compilation of tail recursive functions In-Reply-To: <43F50B05.28463.1F6A1BB@localhost> References: <43F50B05.28463.1F6A1BB@localhost> Message-ID: <1140131712.13479.0.camel@localhost.localdomain> > > Are you able to calculate n_sum_1(1000000,0); > without compilation? > Oh no. Maxima crashes. -- Mario Rodriguez Riotorto www.biomates.net From robert.dodier at gmail.com Thu Feb 16 17:54:28 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Thu, 16 Feb 2006 16:54:28 -0700 Subject: [Maxima] compilation of tail recursive functions In-Reply-To: <43F50B05.28463.1F6A1BB@localhost> References: <43F50B05.28463.1F6A1BB@localhost> Message-ID: hello volker, is it possible to detect tail recursion in the maxima expression so that the maxima translator can help the lisp compiler see it? the call to SIMPLIFY is there because maxima simplifies function call return values. maybe the translator can change (SIMPLIFY (MFUNCTION-CALL FOO ...)) into (MFUNCTION-CALL FOO-SIMPLIFY-COMPOSITION ...) inventing a function which exists just to do (SIMPLIFY (MFUNCTION-CALL FOO ...)). can that help the lisp compiler? it is possible that tail recursion is not considered by the maxima translator (i didn't look at the code). if you have some ideas about that, i would be interested to hear it. best, robert From dp2 at cise.ufl.edu Fri Feb 17 00:07:15 2006 From: dp2 at cise.ufl.edu (Dileep) Date: Fri, 17 Feb 2006 01:07:15 -0500 Subject: [Maxima] FW: Why is this rule not working in this scenario? Message-ID: <20060217060706.F320C1FB@mail.cise.ufl.edu> This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C6335E.7E14C2B0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi all, I am trying to extract any product which is found after first d(i,j) in the following sum. sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n) I tried the following thing: matchdeclare([i,j,k,l,q],all); (%i15) apply(defrule,[rd5,intosum('sum(d(i,j)*q,j,1,k)),1*q]); k ==== \ (%o15) rd5 : > d(i, j) q -> q / ==== j = 1 (%i16) apply(apply1,[eq2,rd5]); (%o16) g(i2) f(i2, i3) It works till here but as soon as I have product having another d; it doesn't work. May be I am not using the right way. (%i17) eq2:'sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n); n ==== \ (%o17) > d(i1, i2) g(i2) d(i2, i3) f(i2, i3) / ==== i2 = 1 (%i18) apply(apply1,[eq2,rd5]); n ==== \ (%o18) > d(i1, i2) g(i2) d(i2, i3) f(i2, i3) / ==== i2 = 1 Please suggest any alternative to do this. Regards Dileep ------=_NextPart_000_0000_01C6335E.7E14C2B0 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hi all,

 

I am trying to extract any product which is found = after first d(i,j) in the following sum.

 

sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n)

 

I tried the following = thing:

 

matchdeclare([i,j,k,l,q],all);

 

(%i15)   = apply(defrule,[rd5,intosum('sum(d(i,j)*q,j,1,k)),1*q]);=

         =             &= nbsp;           &n= bsp;           &nb= sp;   k

         =             &= nbsp;           &n= bsp;           &nb= sp;  =3D=3D=3D=3D

         =             &= nbsp;           &n= bsp;           &nb= sp;  \

(%o15)             &= nbsp;              rd5 :  >    d(i, j) q -> = q

         =             &= nbsp;           &n= bsp;           &nb= sp;  /

         =             &= nbsp;           &n= bsp;           &nb= sp;  =3D=3D=3D=3D

         =             &= nbsp;           &n= bsp;           &nb= sp;  j =3D 1

(%i16) = apply(apply1,[eq2,rd5]);

(%o16)             &= nbsp;                    g(i2) f(i2, = i3)

 

 

It works till here but as soon as I have product = having another d; it doesn’t work. May be I am not using the right = way.

 

(%i17) = eq2:'sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n);

         =             &= nbsp;     n

         =             &= nbsp;    =3D=3D=3D=3D

         =             &= nbsp;    \

(%o17)                 >       d(i1, i2) = g(i2) d(i2, i3) f(i2, i3)

         =             &= nbsp;    /

         =             &= nbsp;    =3D=3D=3D=3D

         =             &= nbsp;    i2 =3D 1

 

(%i18) = apply(apply1,[eq2,rd5]);

         =             &= nbsp;     n

         =             &= nbsp;    =3D=3D=3D=3D

         =             &= nbsp;    \

(%o18)                 >       d(i1, i2) = g(i2) d(i2, i3) f(i2, i3)

         =             &= nbsp;    /

         =             &= nbsp;    =3D=3D=3D=3D

         =             &= nbsp;    i2 =3D 1

 

Please suggest any alternative to do = this.

 

Regards

Dileep

------=_NextPart_000_0000_01C6335E.7E14C2B0-- From dp2 at cise.ufl.edu Fri Feb 17 00:09:22 2006 From: dp2 at cise.ufl.edu (Dileep) Date: Fri, 17 Feb 2006 01:09:22 -0500 Subject: [Maxima] Why is this rule not working in this scenario? Message-ID: <20060217060913.0A57029@mail.cise.ufl.edu> This is a multi-part message in MIME format. ------=_NextPart_000_0007_01C6335E.C93390A0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi all, I am trying to extract any product which is found after first d(i,j) in the following sum. sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n) I tried the following thing: matchdeclare([i,j,k,l,q],all); (%i15) apply(defrule,[rd5,intosum('sum(d(i,j)*q,j,1,k)),1*q]); k ==== \ (%o15) rd5 : > d(i, j) q -> q / ==== j = 1 (%i16) apply(apply1,[eq2,rd5]); (%o16) g(i2) f(i2, i3) It works till here but as soon as I have product having another d; it doesn't work. May be I am not using the right way. (%i17) eq2:'sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n); n ==== \ (%o17) > d(i1, i2) g(i2) d(i2, i3) f(i2, i3) / ==== i2 = 1 (%i18) apply(apply1,[eq2,rd5]); n ==== \ (%o18) > d(i1, i2) g(i2) d(i2, i3) f(i2, i3) / ==== i2 = 1 Please suggest any alternative to do this. Regards Dileep ------=_NextPart_000_0007_01C6335E.C93390A0 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

 

Hi all,

 

I am trying to extract any product which is found = after first d(i,j) in the following sum.

 

sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n)

 

I tried the following = thing:

 

matchdeclare([i,j,k,l,q],all);

 

(%i15)   = apply(defrule,[rd5,intosum('sum(d(i,j)*q,j,1,k)),1*q]);=

         =             &= nbsp;           &n= bsp;           &nb= sp;   k

         =             &= nbsp;           &n= bsp;           &nb= sp;  =3D=3D=3D=3D

         =             &= nbsp;           &n= bsp;           &nb= sp;  \

(%o15)             &= nbsp;              rd5 :  >    d(i, j) q -> = q

         =             &= nbsp;           &n= bsp;           &nb= sp;  /

         =             &= nbsp;           &n= bsp;           &nb= sp;  =3D=3D=3D=3D

         =             &= nbsp;           &n= bsp;           &nb= sp;  j =3D 1

(%i16) = apply(apply1,[eq2,rd5]);

(%o16)             &= nbsp;                    g(i2) f(i2, = i3)

 

 

It works till here but as soon as I have product = having another d; it doesn’t work. May be I am not using the right = way.

 

(%i17) = eq2:'sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n);

         =             &= nbsp;     n

         =             &= nbsp;    =3D=3D=3D=3D

         =             &= nbsp;    \

(%o17)                 >       d(i1, i2) = g(i2) d(i2, i3) f(i2, i3)

         =             &= nbsp;    /

         =             &= nbsp;    =3D=3D=3D=3D

         =             &= nbsp;    i2 =3D 1

 

(%i18) = apply(apply1,[eq2,rd5]);

         =             &= nbsp;     n

         =             &= nbsp;    =3D=3D=3D=3D

         =             &= nbsp;    \

(%o18)                 >       d(i1, i2) = g(i2) d(i2, i3) f(i2, i3)

         =             &= nbsp;    /

         =             &= nbsp;    =3D=3D=3D=3D

         =             &= nbsp;    i2 =3D 1

 

Please suggest any alternative to do = this.

 

Regards

Dileep

------=_NextPart_000_0007_01C6335E.C93390A0-- From dp2 at cise.ufl.edu Fri Feb 17 00:10:36 2006 From: dp2 at cise.ufl.edu (dp2 at cise.ufl.edu) Date: Fri, 17 Feb 2006 01:10:36 -0500 (EST) Subject: [Maxima] Plz suggest Message-ID: <12793.10.228.0.31.1140156636.squirrel@webmail.cise.ufl.edu> Hi all, I am trying to extract any product which is found after first d(i,j) in the following sum. sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n) I tried the following thing: matchdeclare([i,j,k,l,q],all); (%i15) apply(defrule,[rd5,intosum('sum(d(i,j)*q,j,1,k)),1*q]); k ==== \ (%o15) rd5 : > d(i, j) q -> q / ==== j = 1 (%i16) apply(apply1,[eq2,rd5]); (%o16) g(i2) f(i2, i3) It works till here but as soon as I have product having another d; it doesn?t work. May be I am not using the right way. (%i17) eq2:'sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n); n ==== \ (%o17) > d(i1, i2) g(i2) d(i2, i3) f(i2, i3) / ==== i2 = 1 (%i18) apply(apply1,[eq2,rd5]); n ==== \ (%o18) > d(i1, i2) g(i2) d(i2, i3) f(i2, i3) / ==== i2 = 1 Please suggest any alternative to do this. Regards Dileep From robert.dodier at gmail.com Fri Feb 17 09:01:23 2006 From: robert.dodier at gmail.com (Robert Dodier) Date: Fri, 17 Feb 2006 08:01:23 -0700 Subject: [Maxima] Plz suggest In-Reply-To: <12793.10.228.0.31.1140156636.squirrel@webmail.cise.ufl.edu> References: <12793.10.228.0.31.1140156636.squirrel@webmail.cise.ufl.edu> Message-ID: hello dileep, > I am trying to extract any product which is found after first d(i,j) in > the following sum. > > sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n) my advice at this point is to back up and try something other than defrule. it appears that you don't need to handle this problem in any generality. if so how about something like this? summand (e) := if atom(e) then e else if op(e) = verbify(sum) or op(e) = nounify(sum) then summand (first (args (e))) else e; expr: sum(d(i1,i2)*g(i2)*f(i2,i3)*d(i2,i3),i2,1,n); summand (expr) / d (i1, i2); => g(i2) d(i2, i3) f(i2, i3) i.e. grab the summand and divide out the d(i1,i2). or maybe you are working with products of matrices and vectors or something. in that case maybe you can forget the summations and work directly with multiplication of symbols. stuff like A' . A = I is a lot more compact than an equivalent statement in terms of summation. finally two more bits of unsolicited advice. about maxima in particular, display2d : false; before generating stuff to paste into an email helps. in general, other people might be able to help more if you give them some clue about what you're trying to accomplish. hope this helps & sorry i can't be more helpful, robert dodier From raymond.toy at ericsson.com Fri Feb 17 09:35:15 2006 From: raymond.toy at ericsson.com (Raymond Toy) Date: Fri, 17 Feb 2006 10:35:15 -0500 Subject: [Maxima] Archiving somewhat important docs? Message-ID: As you may know, I've been looking at some of the integration bugs. Most of the integration routines are documented in MIT technical reports by Moses and Wang; these are available for download from MIT. This is quite nice. However, the scans of these reports have pages that are totally black, and the pages are usually rather important, describing key parts of the algorithm. Richard Fateman, using his copy of the originals, has scanned some of the missing pages for me. Since they're important references for maxima, is there some place I could place these scans? It seems a shame that only I have these. :-) Ray