Re: [Rd] minor flaw in integrate()

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Tue, 03 Jul 2007 13:42:54 -0400

If integrate is changed it would be nice at the same time to make it into an S3 generic. deriv already is an S3 generic but strangely integrate is not. Ryacas provides a deriv method but for integrate Ryacas inconsistently provides Integrate since integrate is not generic.

On 6/28/07, Peter Ruckdeschel <Peter.Ruckdeschel_at_uni-bayreuth.de> wrote:
> Hi,
>
> I noticed a minor flaw in integrate() from package stats:
>
> Taking up arguments lower and upper from integrate(),
>
> if (lower == Inf) && (upper == Inf)
>
> or
>
> if (lower == -Inf) && (upper == -Inf)
>
> integrate() calculates the value for (lower==-Inf) && (upper==Inf).
>
> Rather, it should return 0.
>
> Quick fix:
>
> ### old code ###
> ### [snip]
> else {
> if (is.na(lower) || is.na(upper))
> stop("a limit is missing")
> if (is.finite(lower)) {
> inf <- 1
> bound <- lower
> }
> else if (is.finite(upper)) {
> inf <- -1
> bound <- upper
> }
> else {
> inf <- 2
> bound <- 0
> }
> wk <- .External("call_dqagi", ff, rho = environment(),
> as.double(bound), as.integer(inf), as.double(abs.tol),
> as.double(rel.tol), limit = limit, PACKAGE = "base")
> }
> ### [snip]
>
> ### new code to replace the old one ###
>
> ### [snip]
> else {
> if (is.na(lower) || is.na(upper))
> stop("a limit is missing")
>
> if (lower == upper){
>
> wk <- list("value" = 0, "abs.error" = 0,
> "subdivisions" = subdivisions,
> "ierr" = 0 )
>
> } else {
> if (is.finite(lower)) {
> inf <- 1
> bound <- lower
> }
> else if (is.finite(upper)) {
> inf <- -1
> bound <- upper
> }
> else {
> inf <- 2
> bound <- 0
> }
> wk <- .External("call_dqagi", ff, rho = environment(),
> as.double(bound), as.integer(inf),
> as.double(abs.tol), as.double(rel.tol),
> limit = limit, PACKAGE = "base")
>
> }
> }
> ### [snip]
>
> Best, Peter
>
> ______________________________________________
> 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 Received on Tue 03 Jul 2007 - 17:47:15 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 Wed 04 Jul 2007 - 06:36:01 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.