From maechler at stat.math.ethz.ch  Mon Apr 21 18:40:43 2008
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Mon, 21 Apr 2008 18:40:43 +0200
Subject: [Rd] prod(0, 1:1000) ;  0 * Inf  etc
Message-ID: <18444.50059.714864.992037@stat.math.ethz.ch>


I think most of us would expect  prod(0:1000)  to return 0, and ...


... it does.

However, many of us also expect  
  prod(x1, x2)    to be equivalent to
  prod(c(x1,x2))
the same as we can expect that for min(), max(), sum() and such
members of the "Summary" group.

Consequently, prod(0, 1:1000) should also return 0,
but as you see, it gives  NaN  which may be a bit puzzling...
The explanation is relatively simple:

1) The internal implementation uses

     prod(x1, x2) := prod(x1) * prod(x2)

   which in this case is

2)  0 * Inf    and that is not 0, but NaN;

  not necessarily because we would want that, but I think just
  because the underlying C math library does so.


I would personally like to change both behaviors,
but am currently only proposing to change  prod() such as to
return 0 in such cases.
This would be S-plus compatible, in case that matters.

Opinions?

Martin Maechler, ETH Zurich & R-core



[Rd] prod(0, 1:1000) ; 0 * Inf etc
Martin Maechler