From hb at stat.berkeley.edu  Wed Jul 26 19:07:50 2006
From: hb at stat.berkeley.edu (Henrik Bengtsson)
Date: Wed, 26 Jul 2006 10:07:50 -0700
Subject: [Rd] pari/gp interface
In-Reply-To: <Pine.LNX.4.64.0607260607170.29157@gannet.stats.ox.ac.uk>
References: <996C788E-4632-4BB5-A9F4-83AB02C0CE3D@soc.soton.ac.uk>
	<59d7961d0607251333n3f074f9aof1ae28722331f20e@mail.gmail.com>
	<Pine.LNX.4.64.0607260607170.29157@gannet.stats.ox.ac.uk>
Message-ID: <59d7961d0607261007o1c212b5en351700d328d00337@mail.gmail.com>

On 7/25/06, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
> The issue is that system() on Windows does not run a shell, so piping is
> not going to be available: used shell() instead.   Then the problem is
> that the shell available is OS-specific, and pretty minimal on Windows
> 95/98/ME.  If you can ignore those (and they are getting rarer), cmd.exe
> can be assumed for use of shell().
>
> echo is not a standard system command on Windows either, and in a shell
> does not do what it does on Unix.
>
> On Tue, 25 Jul 2006, Henrik Bengtsson wrote:
>
> > On 7/25/06, Robin Hankin <r.hankin at noc.soton.ac.uk> wrote:
> > > Hi
> > >
> > > I'm developing an R package that
> > > needs to execute some code written in pari/gp.
> > >
> > > I've used this before from an R package (elliptic) but the interface
> > > is very
> > > basic: the R function creates a string such as the following:
> > >
> > > string <- echo ' ellwp ([ 2+0*I , 0+2*I ], 1+0*I )' | gp -q
> > >
> > > And then
> > >
> > > system(string)
> > >
> > > returns the output from gp which then needs to be text processed
> > > (translating "I"
> > > to "i", etc).
> > >
> > > I don't think this approach would work under Windows.
> >
> > I know nothing about pari/gp, but I believe it does work on Windows
> > too.  There is system() command available on the Windows version too,
> > but with slightly different arguments (than on Linux say).
> >
> > Piping is available on Windows too, e.g. "dir | sort", although you
> > should be able to get around that by writing to file instead and using
> > ">" and "<".
>
> Did you try that?  dir is not an executable under Windows (a shell
> command), and it does not work even if you use an executable.  You do need
> to use shell()

Too quick there - I didn't do this using system() but from the Windows
command prompt;

> system("dir | sort")
Warning message:
dir not found

> shell("dir | sort")
              10 Dir(s)   4,458,024,960 bytes free
...
07/26/2006  09:56 AM    <DIR>          .
07/26/2006  09:56 AM    <DIR>          ..
07/26/2006  10:00 AM            15,055 .Rhistory

What I wanted to get through though is that it is possible to obtain
the same thing in Windows.  You might have to modify the code to be
sensitive to .Platform$OS.type.  When I do these kind of things I
often write a BAT script that I call using system("foo.bat").

/Henrik

>
> >
> > You should be careful if your 'string' gets really long.  Then it is
> > much better to have a BAT file (and an sh file on Linux) to run your
> > external calls, alternatively you call system() multiple times.
> > However, I would be suprised if 'ellwp' wouldn't accept files as input
> > too.
> >
> > /Henrik
> >
> > > Does anyone have any experience of calling pari/gp from R?
> > >
> > > Or any ideas for a more portable method than the one above?
> > >
> > >
> > >
> > >
> > > [
> > > PARI/GP is a widely used computer algebra system designed for fast
> > > computations
> > > in number theory.  It is freely available at
> > >
> > >   http://pari.math.u-bordeaux.fr/
> > > ]
> > >
> > >
> > > --
> > > Robin Hankin
> > > Uncertainty Analyst
> > > National Oceanography Centre, Southampton
> > > European Way, Southampton SO14 3ZH, UK
> > >   tel  023-8059-7743
> > >
> > > ______________________________________________
> > > R-devel at r-project.org mailing list
> > > https://stat.ethz.ch/mailman/listinfo/r-devel
> > >
> > >
> >
> > ______________________________________________
> > R-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
> >
>
> --
> Brian D. Ripley,                  ripley at stats.ox.ac.uk
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
>



[Rd] pari/gp interface
Henrik Bengtsson