From ripley at stats.ox.ac.uk  Wed Jul 26 07:15:01 2006
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Wed, 26 Jul 2006 06:15:01 +0100 (BST)
Subject: [Rd] pari/gp interface
In-Reply-To: <59d7961d0607251333n3f074f9aof1ae28722331f20e@mail.gmail.com>
References: <996C788E-4632-4BB5-A9F4-83AB02C0CE3D@soc.soton.ac.uk>
	<59d7961d0607251333n3f074f9aof1ae28722331f20e@mail.gmail.com>
Message-ID: <Pine.LNX.4.64.0607260607170.29157@gannet.stats.ox.ac.uk>

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()

> 
> 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
Prof Brian Ripley