[PARI/GP on Linux Handhelds]  [Downloads]  [Screen shots]

PARI/GP on Linux Handhelds

Preliminary Note

There are a few PDAs which come with a Linux OS (e.g. the Sharp Zaurus series), and there are others on which Linux was successfully installed (e.g. various HP iPAC ™). Actually such a gadget is a a wolf in sheep's clothing since, in principle, all open source software can be ported to and installed on it, very often with not much effort. Thus you are able to hold literally the power of modern computing in your hand. Below you find packages related to a port of PARI/GP to the Sharp Zaurus SL-5500. It is very likely that these packages can also be run on other Zaurus models or iPAC. Since we do not have access to other PDAs we shall not be able to help you installing to handhelds different from the 5500, but we are very much interested in reports on successful installs.

On our Sharp Zaurus SL-5500 (CPU: StrongARM (SA-1110), 206 MHz) the binaries from the packages opie-gp-sta_2.1.5_arm.ipk and opie-gp-dev_2.1.5_arm.ipk yield the following bench marks:

* Testing objets        for gp-sta..TIME=170    for gp-dyn..TIME=100
* Testing analyz        for gp-sta..TIME=2520   for gp-dyn..TIME=2420
* Testing number        for gp-sta..TIME=2340   for gp-dyn..TIME=2430
* Testing polyser       for gp-sta..TIME=510    for gp-dyn..TIME=450
* Testing linear        for gp-sta..TIME=420    for gp-dyn..TIME=400
* Testing elliptic      for gp-sta..TIME=1430   for gp-dyn..TIME=1530
* Testing sumiter       for gp-sta..TIME=3940   for gp-dyn..TIME=4030
* Testing graph         for gp-sta..TIME=890    for gp-dyn..TIME=900
* Testing program       for gp-sta..TIME=1440   for gp-dyn..TIME=1500
* Testing trans         for gp-sta..TIME=4590   for gp-dyn..TIME=4660
* Testing nfields       for gp-sta..TIME=24320  for gp-dyn..TIME=26050
+++ Total bench for gp-sta is 23114
+++ Total bench for gp-dyn is 23630

Hints for those who simply want to compute with gp on their handheld

Download the package opie-gp-sta_2.1.5_arm.ipk. If not already installed on your PDA you will also need to download libreadline4_4.3-1_arm.ipk. Install to your PDA. If you prefer you can combine downloading and installing as usual with your graphical installer using our feed. Then, on your handheld, launch a shell and type gp. That's it. Please send us a note if you have been successful.

If the above steps do not work (they were checked to work flawlessly only on a Zaurus SL-5500 running under OpenZaurus 3.2) you can try to download the binaries gp-sta.2.5.1 and libreadline.so straight to your handheld, copy libreadline.so to your /usr/lib, put the links ln -s libreadline.so.4.3 libreadline.so and ln -s libreadline.so.4.3 libreadline.so.4 in /usr/lib and launch ./gp-sta.2.5.1 from your shell.

If this still does not work you can try the ports of William Stein. Maybe these will work since they do not use the readline and ncurses lib or the graphical libs for plotting. However, they suffer from a certain bug introduced by the gcc compiler on the arm platform (see the concluding remarks below).

Additional hints for those who want to reproduce/improve the porting

Apart from a working arm cross compiler tool chain and the PARI/GP source tar ball you will need the packages Olinux-armv4l.tgz and plotQt.tgz. We assume that you have libreadline.so, its associated headers, and libncurses.so installed at the appropriate places in your tool chain (otherwise download readline_4.3-arm-dev.tgz and grab libncurses.so from your handheld, or compile with readline disabled). Unpack Olinux-armv4l.tgz in the directory pari-2.5.1 (you may try other versions of PARI/GP, but 2.5.1 worked for us). In essence, nothing more than a make gp-dyn has to be issued. However, as usual there might be tiny problems: The file Olinux-armv4l/README will give further details how to proceed, in particular it will tell you what to do with plotQt.tgz. Please send us your improvements.

Concluding remarks

The gp binaries were compiled using the gcc cross compiler version 2.95.2. This cross compiler has a serious bug. Under rare instances the mod function a%b gives wrong results. Accordingly, PARI/GP would sometimes yield unexpected results or error messages (e.g. if you call (3*2^30)%2 or exp(3)). We cured this a bit by patching the function divll() in the PARI/GP kernel. For us, this seems to work satisfactory, but since there are a lot more instances where PARI/GP uses the mod function we cannot give any guaranties ...

Because of the "MaximizeButton-bug" in opie a dummy MaximizeButton.xpm will automatically be installed by the mentioned ipk-packages providing PARI/GP.


PARI/GP-binaries for the arm processor
opie-gp-sta_2.1.5_arm.ipk The right choice for those who want to simply compute with gp on the PDA. The Pari/GP calculator with readline and high resolution plot enabled, tested for the Sharp Zaurus running OpenZaurus version 3.2 (see the screen shots below). You need libreadline.so.4.3. If not already installed download the libreadline package from below.
opie_gp-dev_2.1.5_arm.ipk The PARI/GP calculator with readline and high resolution plot enabled as dynamic executable, the libpari.so and its associated headers. Useful if you want both functionalities: computing with gp on your PDA and developing on your PDA using the PARI/GP library (you need gcc or so too ;-). Tested on the Sharp Zaurus 5500 with OpenZaurus version 3.2 (see the screen shots below). You need libreadline.so.4.3 (see below).
libreadline4_4.3-1_arm.ipk The libreadline4_4.3-1_arm.ipk needed by the two packages listed before. Identical with the homonymous package from the official stable OpenZaurus feed.
parigp-help_2.1.5_arm.ipk A html documentation of the gp functions which can be used on your handhelp (where gphelp is not available).
Packages for porting PARI/GP to the arm processor
Olinux-arm4l.tgz The necessary files for cross-compiling PARI/GP for the arm processor. See the included README for details.
plotQt.tgz The plotQt.c file (to be moved to $PARI/src/graph). Needed if you want to compile PARI/GP with support for high resolution plotting in a Qtopia or Opie environment on the arm. Using plotQt.c it is in general possible to make available high resolution plot on platforms not using X11. It is also a nice alternative to plotX.c under Linux :-) The future versions of PARI/GP (versions > 2.5.1) will have this integrated in their source tree.
readline_4.3-arm-dev.tgz The libreadline.so and its headers, necessary if you want to compile the PARI/GP calculator for the arm processor with readline enabled.

Screen shots