a Maxima program running under the Windows implementation but not under Linux implementation of Maxima / wxMaxima
Subject: a Maxima program running under the Windows implementation but not under Linux implementation of Maxima / wxMaxima
From: Volker van Nek
Date: Fri, 6 Apr 2012 20:19:09 +0200
Hello Jochen,
I attached a file containing some comments on your paper and also
containing my personal view on Ubuntu.
I noticed that you are interested in number theory. Chinese remainder and
primroot computation in (Z/nZ)* will be in src in version 5.27.
Since 2008 there is already a share package about finite fields.
load(gf);
will load the package and tell you about the directory containing it. There
you will also find a pdf documentation about this package. But be warned.
It is not bug free and produces side effects to variables in top level. I
plan to revise gf.mac this year.
Greetings from Aachen
Volker van Nek
2012/4/6 Jochen Ziegenbalg <ziegenbalg at ph-karlsruhe.de>
> Sorry, the correct address for the introductory manual is:
>
>
> http://www.ziegenbalg.ph-karlsruhe.de/materialien-homepage-jzbg/Manuskripte/Erste-Hinweise-zu-Maxima.pdf
>
> All the best,
> Jochen
>
> ---------- Forwarded message ----------
> From: Jochen Ziegenbalg <ziegenbalg at ph-karlsruhe.de>
> Date: Fri, Apr 6, 2012 at 7:05 AM
> Subject: Re: [Maxima] a Maxima program running under the Windows
> implementation but not under Linux implementation of Maxima / wxMaxima
> To: Volker van Nek <volkervannek at googlemail.com>
>
>
> Hello Volker,
>
> thank you for the references and for your help, alltogether. I wholly
> appreciate the work done by the Maxima and the ubuntu and Linux
> developers ... and certainly, I don't want the old version back.
>
> As for upgrading ubuntu, I work with several computers, some of them
> pretty old, some not quite so old, but none of them very new. For a
> while, I worked with ubuntu version 10.4 on all of them. Then I
> upgraded one of them to the newer version (11.04) of ubuntu. But I
> didn't like the new user interface. One of my students showed me how
> to keep the newer version but have it run under the old user
> interface. That's what I did - and as for ubuntu I didn't change
> anything else, so far - keeping in mind Jerry Pournelle's dictum
> "Don't fix it if it ain't broken".
>
> Now I am somewhat at loss on if and when to upgrade ubuntu once again.
>
> Thank you, again,
> wishing you happy Easter holidays,
> Jochen
>
>
> P.S.: Having had to struggle quite a bit to get used to Maxima
> (although it certainly is worthwhile the effort) I wrote a tiny
> tutorial for the very first beginners focussing on programming
> features for my students - alas in German. If you read German (with
> your first name being Volker, there is some probability speaking for
> it) and if are interested, you can find it here:
> http://www.ziegenbalg.ph-karlsruhe.de/Erste-Hinweise-zu-Maxima
>
>
>
> On Thu, Apr 5, 2012 at 8:45 PM, Volker van Nek
> <volkervannek at googlemail.com> wrote:
> > Hello Jochen,
> >
> > I am happy to read that you got it work.
> >
> > I found two pages in http://wiki.ubuntuusers.de about ppa. Perhaps
> these can
> > give a little bit more understanding on software sources and ppa.
> >
> > http://wiki.ubuntuusers.de/Paketquellen_freischalten/PPA?highlight=ppa
> >
> > http://wiki.ubuntuusers.de/Launchpad/PPA?highlight=ppa
> >
> > I believe Ubuntu is not supplied via sourceforge because it is simply
> one of
> > hundreds of Linux distributions. The distributions maintainers are doing
> a
> > great job in resolving all dependencies. This should not be a task to the
> > Maxima developers.
> >
> > Yes, the old version is overwritten. If you want it back, unflag the
> > repository from Istvan Blahota in synaptic and reinstall. But I guess you
> > won't.
> >
> > Why don't you upgrade your Ubuntu?
> >
> > Best
> > Volker van Nek
> >
> > PS: Please always cc to this list. Thank you.
> >
> >
> >
> >
> > 2012/4/5 Jochen Ziegenbalg <ziegenbalg at ph-karlsruhe.de>
> >>
> >> Hello Volker van Nek,
> >>
> >> this worked (i.e. doing the PPA-stuff, downloading the Maxima 5.26
> >> packages, installing them and running my program) thank you.
> >>
> >> But installing the PPA stuff and everything was rather like a "blind
> >> flight"
> >> due to big holes in the documentation and instructions.
> >>
> >> Why is the ubuntu version of Maxima 5.26 not supplied via sourceforge?
> >>
> >> And: The older version of Maxima seems to be deleted or overwritten.
> >> Is this OK?
> >>
> >> Thank you very much,
> >> Jochen
> >>
> >>
> >> On Wed, Apr 4, 2012 at 1:40 PM, Volker van Nek
> >> <volkervannek at googlemail.com> wrote:
> >> > Or maybe a better source for maxima deb files is
> >> >
> >> > https://code.launchpad.net/~blahota/+archive/wxmaxima<https://code.launchpad.net/%7Eblahota/+archive/wxmaxima>
> >> >
> >> > Here packages for Ubuntu versions down to lucid are available.
> >> >
> >> > To use them you need to follow the instructions under
> >> >
> >> > Adding this PPA to your system
> >> >
> >> >
> >> > HTH
> >> > Volker van Nek
> >> >
> >> >
> >> >
> >> > 2012/4/4 Volker van Nek <volkervannek at googlemail.com>
> >> >>
> >> >> Hello,
> >> >>
> >> >> I would download a newer version from debian (Ubuntu uses debian
> files)
> >> >>
> >> >> http://packages.debian.org/sid/maxima
> >> >>
> >> >> and double click on the deb file. A graphical interface should open
> and
> >> >> it
> >> >> will check if all the necessary dependencies are fullfilled.
> >> >>
> >> >> In case that works I guess you have to download the maxima-emacs
> >> >> package
> >> >> as well. A grep-search tells me that wxdraw2d is defined in
> >> >> interfaces/emacs/imaxima/imaxima.lisp.
> >> >>
> >> >> Let me know what you experience.
> >> >>
> >> >> Volker van Nek
> >> >>
> >> >>
> >> >>
> >> >> 2012/4/4 Jochen Ziegenbalg <ziegenbalg at ph-karlsruhe.de>
> >> >>>
> >> >>> Hello Volker van Nek,
> >> >>>
> >> >>> thank you for your quick response. As you suggest, the program
> "runs
> >> >>> through" without an error message if I replace the wxdraw2d command
> by
> >> >>> returning just 1. Also, if I return the graphics list LG it works
> and
> >> >>> contentwise the list LG seems to be OK. So, the problem is with the
> >> >>> wxdraw2d command. Replacing the wxdraw2d commond by just draw2d
> does
> >> >>> not help, either.
> >> >>>
> >> >>> As I mentioned in my first mail, the ubuntu-based system is running
> >> >>> Maxima version 5.22.1. Of course, before writing to
> >> >>> maxima at math.utexas.edu, I tried to update my ubuntu Maxima system,
> >> >>> first. Not being very experienced with ubuntu, I tried to do this
> >> >>> using the Synaptic Package Manager. But whatever I tried, it did
> not
> >> >>> result in a newer version of Maxima. So I thought, version 5.22.1
> was
> >> >>> the most recent version.
> >> >>>
> >> >>> Of course, if the problem would be solved if I used a more recent
> >> >>> version of Maxima, this would be the thing to do (instead of trying
> to
> >> >>> repair version 5.22.1). But how do I get my 5.22.1 version updated
> >> >>> under ubuntu? I would be grateful for a hint.
> >> >>>
> >> >>> Thank you for your help,
> >> >>> Jochen
> >> >>>
> >> >>>
> >> >>>
> >> >>> On Wed, Apr 4, 2012 at 1:21 AM, Volker van Nek
> >> >>> <volkervannek at googlemail.com> wrote:
> >> >>> > Hallo Jochen Ziegenbalg,
> >> >>> >
> >> >>> > I can confirm that your wxm file runs on Ubuntu with Maxima 5.26.0
> >> >>> > and
> >> >>> > 5.25.1 but fails with 5.20.1. I can't tell about the version
> 5.22.1.
> >> >>> >
> >> >>> > The wxdraw2d function is a quite recent development if I am not
> >> >>> > mistaken. In
> >> >>> > a first step I would just replace the last line in your
> >> >>> > StringToGraphic
> >> >>> > function
> >> >>> > by a simple return value like 1 or so and check if it works
> without
> >> >>> > errors.
> >> >>> >
> >> >>> > StringToGraphic(Str, c0, c1) :=
> >> >>> > ...
> >> >>> > LG : append(LG, [Gbit]) ),
> >> >>> > 1) ;
> >> >>> >
> >> >>> > Let us know what the result is.
> >> >>> >
> >> >>> > Volker van Nek
> >> >>> >
> >> >>> > 2012/4/3 Jochen Ziegenbalg <ziegenbalg at ph-karlsruhe.de>
> >> >>> >>
> >> >>> >> Ladies and gentlemen,
> >> >>> >>
> >> >>> >> in the appendix I send you a small Maxima program running without
> >> >>> >> any
> >> >>> >> problem under wxMaxima for Windows (wxMaxima 11.08.0 / Maxima
> >> >>> >> 5.25.1)
> >> >>> >> but not running under the (Ubuntu-) Linux implementation
> (wxMaxima
> >> >>> >> 0.85 / Maxima 5.22.1).
> >> >>> >>
> >> >>> >> The purpose of the program is to convert a string into its bit
> >> >>> >> structure (using the ASCII-code) and display this bit structure
> >> >>> >> graphically.
> >> >>> >>
> >> >>> >> Under Windows the program runs as expected.
> >> >>> >>
> >> >>> >> Under Linux (after defining the "helper"-functions like Byte),
> >> >>> >> calling
> >> >>> >> the procedure
> >> >>> >> StringToGraphic("Karlsruhe", yellow, black)
> >> >>> >> results in the error message
> >> >>> >>
> >> >>> >> Maxima encountered a Lisp error:
> >> >>> >> Error in Apply [or a callee]:The function NIL is undefined.
> >> >>> >> Automatically continuing.
> >> >>> >> ...
> >> >>> >>
> >> >>> >> I would be grateful for some clarification on why this is so ...
> >> >>> >> and a
> >> >>> >> hint on how to run the program under Linux.
> >> >>> >>
> >> >>> >> Thank you very much,
> >> >>> >> Jochen Ziegenbalg
> >> >>> >>
> >> >>> >> _______________________________________________
> >> >>> >> Maxima mailing list
> >> >>> >> Maxima at math.utexas.edu
> >> >>> >> http://www.math.utexas.edu/mailman/listinfo/maxima
> >> >>> >>
> >> >>> >
> >> >>
> >> >>
> >> >
> >
> >
>
>
>
> --
> ***********************************************************
> Prof. Dr. Jochen Ziegenbalg
> Institut fuer Mathematik und Informatik
> Paedagogische Hochschule Karlsruhe
> University of Education, Karlsruhe (Germany)
> ----------------------------------------------------------------------
> ziegenbalg at ph-karlsruhe.de
> www.ziegenbalg.ph-karlsruhe.de
> ----------------------------------------------------------------------
> Tel. privat: 030-21237725
> ***********************************************************
>
>
> --
> ***********************************************************
> Prof. Dr. Jochen Ziegenbalg
> Institut fuer Mathematik und Informatik
> Paedagogische Hochschule Karlsruhe
> University of Education, Karlsruhe (Germany)
> ----------------------------------------------------------------------
> ziegenbalg at ph-karlsruhe.de
> www.ziegenbalg.ph-karlsruhe.de
> ----------------------------------------------------------------------
> Tel. privat: 030-21237725
> ***********************************************************
>
-------------- next part --------------
Seite 1:
- Der System-Kern von Maxima enth?lt ein komplettes Lisp-System.
Nein. Es wird zwar in die Windows-Maxima-Executable ein GCL mit hinein kompiliert,
Maxima selbst aber enth?lt kein Lisp System, sondern verwendet eins.
Sie k?nnen sich den Installationsprozess unter Ubuntu mal genauer ansehen.
Wenn sie in Synaptic maxima ausw?hlen, dann werden die Abh?ngigkeiten aufgel?st und
es wird zuerst ein Lisp installiert.
Wer aus dem Quellcode Maxima kompiliert, kann vorher mehrere Lisps installieren und
Maxima bef?higen, zur Ausf?hrung wahlweise dieses oder jenes Lisp zu verwenden.
Bis Anfang der 80er lief Macsyma nur am MIT und nur auf Maclisp und wurde erst
dann nach Berkeley auf Franz Lisp portiert. Danach auch auf andere Lisps.
Common Lisp wurde in den 90ern standardisiert, trotzdem findet man im Quelltext
von Maxima noch viele Fallunterscheidungen bzgl. der einzelnen Varianten.
- wxMaxima-Interface trotz einiger Eigenheiten
Vielleicht teilen sie dem Entwickler mit, was ihnen nicht gef?llt.
wxMaxima hat ein eigenes Forum und Bug-Tracking. Im Prinzip ein separates Projekt.
Entwickler haben immer eine sehr eingeschr?nkte Sicht auf ihr Produkt.
Deswegen sind wir auf Feedback angewiesen. Das geh?rt zu den Prinzipien der
Open Source Enntwicklung.
- Urspr?nglich sollte das Programm Newplot hei?en
Interessant! Wusste ich gar nicht.
Seite 2:
- Tastenkombination [Shift-Return].
Schreibt man im Wesentlichen nur einzeilige Audr?cke, kann man das auch
auf [Return] umstellen. [Shift-Return] macht dann den Umbruch ohne Auswertung.
- Bemerkung:
Maxima/Lisp arbeiten mit Ausdr?cken. Und jeder Ausdruck hat einen Wert. Es gibt kein void.
Es geht nicht darum, Befehle abzuarbeiten. Das w?re der prozedurale Ans?tz.
(foo : 42, bar : foo, baz : bar) ist z.B. ein einziger Ausdruck mit einem einzigen Wert.
Dem Wert des letzten Arguments. Man kann diese 3 durch Kommata separierte Ausdr?cke
als Argumente einer Block-Funktion auffassen.
(%i1) (foo : 42, bar : foo, baz : bar);
(%o1) 42
(%i2) :lisp $_
((MPROGN) ((MSETQ) $FOO 42) ((MSETQ) $BAR $FOO) ((MSETQ) $BAZ $BAR))
Mehr zu diesem Thema in dem ausgezeichneten
http://maxima.sourceforge.net/docs/tutorial/en/minimal-maxima.pdf
Seite 5:
- Der Ausgabewert 22.5 ist nur scheinbar korrekt
22.5 l?sst sich doch exakt abbilden, oder vertue ich mich da?
Sollte man nicht besser ein Beispiel nehmen, wo z.B. .3 am Ende steht?
Jedenfalls ist das ein immer wiederkehrendes Thema. Oft sind Einsteiger
bei Antworten wie 0.3000000000000004 irritiert und fragen, ob das ein Bug sei.
Seite 6:
- beim Aufruf hugo(5) eine Fehlermeldung
Warum sollte das ?berhaupt ein Fehler sein? Maxima kann ja gar nicht wissen,
was hugo(5) f?r den Programmierer bedeutet. hugo(5) ist hugo(5), wenn keine
weiteren Informationen vorliegen. Das ist symbolische Programmierung.
Zitat aus dem minimal-maxima.pdf:
Maxima is not much worried about the meaning of an expression. Whether
an expression is meaningful is for the user to decide.
- Beschreibung des printf-Befehls
Der stammt von mir. Ich hatte seinerzeit dieser Funktion in einem CAS keine so hohe
Bedeutung beigemessen und wollte dieses Thema eher nicht ?bertreiben. Mittlerweile
haben mich jedoch schon mehrere Kommentare davon ?berzeugt, dass ich besser noch
etwas ausf?hrlicher werden sollte.
printf ist jedoch nichts weiter als ein Frontend f?r die Lisp-Funktion format,
erweitert um die nicht Standard-Lisp-konforme Direktive ~h f?r Bigfloats.
Zur Zeit muss man also nach format googeln. Mein Tipp:
http://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html
22.3.3. Formatted Output to Character Streams
- wxMaxima XML Dokument: Dateikennung: wxmx
vielleicht noch erg?nzen, dass es komprimierte XML-Dokumente sind.
(Man muss die noch entpacken, bevor man sie im Text-Editor ?ffnen kann.
Vorteil von wxmx: Unicode. Kein Problem mehr mit Umlauten beim Transport
von Windows nach Linux.)
Seite 8:
- Wert done
done ist der Wert der Funktion do. done ist ein Symbol mit sich selbst als Wert.
Man kann z.B. wie folgt testen, ob die Schleife ganz durchgelaufen ist.
getan : do ( foo, bar, if test then return(), baz )$
if getan = 'done then
Seite 9:
- Euklid_Subtraktionsform(a, b) :=
block([x : a, y : b],
while x*y # 0 do /* solange x und y von Null verschieden sind */
(if x>y then x : x-y else y : y-x),
return(x+y) );
Es ist nicht notwendig, neue Variablen zu verwenden. Sind a und b 32 Bit Fixnums,
dann geschieht eh nur ein Call-By-Value. Andernfalls sind es Bignums, die zwar
als Objekte (Lisp-Listen) gespeichert werden, es findet aber an keiner Stelle eine
Dereferenzierung statt, so dass man sich keine Sorgen um die an a und b ?bergebenen
Bignums machen muss. x*y, x-y, y-x erzeugt wiederum neue Objekte. Die alten bleiben
wie sie sind. Man muss hier im funktionalen Sinn denken. Die Entwickler verwenden
nur an Stellen Dereferenzierungen, wo es gefahrlos ist und echten Zeitvorteil bringt.
Maxima ist dadurch etwas langsamer aber grunds?tzlich sehr sicher.
Sie schrieben ja selbst, dass am Ende ein return keinen Sinn macht.
Bitte ?ndern sie das ab. Danke.
Euklid_Subtraktionsform(x, y) := (
while x*y # 0 do /* solange x und y von Null verschieden sind */
(if x>y then x : x-y else y : y-x),
x+y )$
- Eratosthenes(UpperLimit) :=
...
while i*i <= UpperLimit do
...
Effizienter ist wohl
isqrtUL : isqrt(UpperLimit),
while i <= isqrtUL do
Seite 10:
- sublist(E, lambda([x], not(is(x=0)))) );
sublist erwartet eine Pr?dikatfunktion. Deshalb kann man kurz schreiben
sublist(E, lambda([x], x#0)) )$
Seite 11:
- (%i1) :lisp (car '(A B));
:q;
A
Da bin ich platt! Wie bekomme sie das hin?
volker at uvw32:~$ maxima
Maxima 5.25.1 http://maxima.sourceforge.net
using Lisp CLISP 2.49 (2010-07-07)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) :lisp (car '(A B))
A
(%i1)
Sie ben?tigen kein ; am Ende. Das mit dem :q kann ich nicht nachvollziehen.
Seite 12:
- Die Beschreibung des Befehls set_display(ascii) ist im Hilfe-System leider ziemlich gut
versteckt.
set_display ist auch keine Maxima- sondern eine wxMaxima-Funktion.
--> wxMaxima/Men? Maxima/Format 2D Anzeige
- Initialisierungs- oder setup-Datei
Das ist die maxima-init.lisp.
(%i1) load("maxima-init.lisp");
(%o1) /usr/local/share/maxima/5.25.1/share/maxima-init.lisp
Dies f?hrt mich zu dem entsprechenden Verzeichnis.
Unter Windows liegt sie an ?hnlicher Stelle.
Hier k?nnen sie Lisp-Befehle ablegen.
Sie k?nnen zus?tzlich an gleicher Stelle eine maxima-init.mac erzeugen
und dort Maxima Befehle rein schreiben.
Sie k?nnen alternativ auch das Home-Verzeichnis verwenden.
(%i2) :lisp *maxima-userdir*
/home/volker/.maxima
In Windows wird das so lauten:
(%i2) :lisp *maxima-userdir*
C:/Users/volker/maxima
Dieses Verzeichnis anlegen und dort eine init-Datei ablegen.
Diese Datei hat dann Vorrang vor gleichnamigen in /share/.
Ubuntu:
Abschlie?end eine Bemerkung zu diesem Thema (geh?rt ja nicht auf die Maxima Liste).
F?r alte Computer gibt es Lubuntu. Ich spreche da aus Erfahrung.
Ich administriere ein System mit 22 Clients, einem File/Ldap-Server und einem
Proxy. Die Hardware ist 6 Jahre alt. Die Rechner sind mit Lubuntu superschnell
und absolut zuverl?ssig. Und ich bin sehr sehr zufrieden damit.
Zu Hause verwende ich Xubuntu und Lubuntu. Ich mag auch den neuen Gnome3/Unity-Style nicht.
Wesentlich ist f?r mich auch, dass Ubuntu seit einiger Zeit Release Upgrades ohne
Neuinstallation anbietet. Lief bisher unproblematisch.
Ich habe sicherlich ein weinig an Zeit in den Umstieg von Windows investiert,
aber ich kann nur sagen, dass es sich wirklich sehr gelohnt hat. Nicht nur, dass in
Linux alles viel einfacher ist, es ist auch sicher, schnell und zuverl?ssig.