From r.hankin at noc.soton.ac.uk  Fri Apr 27 16:13:09 2007
From: r.hankin at noc.soton.ac.uk (Robin Hankin)
Date: Fri, 27 Apr 2007 15:13:09 +0100
Subject: [Rd] system() in packages
Message-ID: <3E7A71D7-49A5-4C2E-A365-9D2387D76D3B@soc.soton.ac.uk>

Hello

Quite often I need higher precision, or larger numbers,
  than IEEE double precision allows.  One strategy I sometimes
use is to use system() to call pari/gp, which is not constrained by  
IEEE.

[pari/gp is a GPL high-level mathematical programming language
geared towards pure mathematics]

Two of my packages contain lines like the following:

 > system(" echo '1.12^66' | gp -q f",intern=TRUE)
[1]  
"1771.697189476241729649767636564084681203806302318041262248838950177194 
116346432205160921568393661760"

Note the high precision of the answer.

My question is, how to deal with the possibility that pari/gp is not
installed?

If the system cannot find gp for some reason, I get:

 > system(" echo '1.12^66' | gp -q f",intern=TRUE)
sh: line 1: gp: command not found
character(0)
 >

What's the recommended way to handle this eventuality gracefully?  The
functions that do use pari/gp have "pure" R equivalents (but much
slower and less accurate)  so I want users to be able to install the
package without pari/gp.


--
Robin Hankin
Uncertainty Analyst
National Oceanography Centre, Southampton
European Way, Southampton SO14 3ZH, UK
  tel  023-8059-7743



[Rd] system() in packages
Robin Hankin