[Rd] Bug in Deriv? (PR#1119)

Peter Dalgaard BSA p.dalgaard@biostat.ku.dk
07 Oct 2001 12:42:34 +0200


dieter.menne@menne-biomed.de writes:

> deriv seems to have problems with a minus-sign before a bracket.
> Below are four examples of the same function, the top one
> is wrong, all others are correct (hopefully).
> 
> 
> Rest of expression not shown, it is the same for all versions.
> 
>          _
> platform i386-pc-mingw32
> arch     x86
> os       Win32
> system   x86, Win32
> status
> major    1
> minor    3.0
> year     2001
> month    06
> day      22
> language R
> 
> -----------------------------------------------------------------
> > deriv(~offv+Asym/(1+exp(-(x-xmid)/scal)),"x")
> expression({
>     .expr4 <- exp(-x - xmid/scal)  #### Wrong !!!!


Actually, only the deparsing of the expression is wrong, cf:

> deriv(~offv+Asym/(1+exp(-(x-xmid)/scal)),"x")[[1]][[2]][[3]]
exp(-x - xmid/scal)
> deriv(~offv+Asym/(1+exp(-(x-xmid)/scal)),"x")[[1]][[2]][[3]][[2]]
-x - xmid/scal
> deriv(~offv+Asym/(1+exp(-(x-xmid)/scal)),"x")[[1]][[2]][[3]][[2]][[2]]
-x - xmid
> deriv(~offv+Asym/(1+exp(-(x-xmid)/scal)),"x")[[1]][[2]][[3]][[2]][[2]][[2]]
x - xmid

I.e. the expression is really exp((-(x - xmid))/scal). It is a
well-known problem with the deparser that it doesn't parenthesize
properly based on operator hierarchy. Similarly, the parser should
probably drop parentheses in most cases. 

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)             FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._