Re: [Rd] Extending deriv3()

From: Prof Brian Ripley <>
Date: Mon, 15 Oct 2007 10:13:11 +0100 (BST)

On Mon, 15 Oct 2007, Thomas Yee wrote:

> Hello,
> I was wondering if the functions deriv3(), deriv() etc. could be extended
> to handle psigamma() and its special cases (digamma(), trigamma()
> etc.). From the error message it seems that 'psigamma' needs to be
> added to the derivatives table.
> This might be easy since psigamma() has a deriv argument.

If you look at ?deriv you will see that it only knows about functions *of one argument* and operators. So it would be easy to add digamma(x) and psigamma(x) (and I will do so shortly), it would not be so easy to add psigamma(x, deriv).

> Additionally, this error message is also obtained when requesting for
> the Hessian of the gamma and lgamma functions:
> d3 = deriv(~ gamma(y), namev="y", hessian= TRUE)
> d3 = deriv(~ lgamma(y), namev="y", hessian= TRUE)
> Another class of special functions worth adding are the Bessel functions.

Well, you can always submit a patch ....

Note that deriv() in R differs from that in S in being done in C and hence not being user-extensible. A long time ago that had an advantage: S's deriv could be very slow and take a lot of memory by the standards of the early 1990's. Rather than work on adding yet more special cases it would seem better to work on making it user-extensible.

Brian D. Ripley,        
Professor of Applied Statistics,
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________ mailing list
Received on Mon 15 Oct 2007 - 09:27:33 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 25 Oct 2007 - 11:37:11 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.