[Rd] "Math" group generics for S4, and a bug
Martin Maechler
maechler at stat.math.ethz.ch
Tue Jun 26 19:15:40 CEST 2007
>>>>> "MM" == Martin Maechler <maechler at stat.math.ethz.ch>
>>>>> on Sat, 23 Jun 2007 00:36:43 +0200 writes:
{on R-help}
[.....................]
[.....................]
>> Duncan Murdoch
DM> You might have better luck with
DM> log1p(tasa)
MM> {very good point, thank you, Duncan!}
DM> if the authors of the Matrix package have written a
DM> method for log1p(); if not, you'll probably have to do
DM> it yourself.
MM> They have not yet.
MM> Note however that this - and expm1() - would
MM> automagically work for sparse matrices if these two
MM> functions were part of the "Math" S4 group generic.
MM> I'd say that there's only historical reason for them
MM> *not* to be part of "Math", and I am likely going to
MM> propose to change this ....
I'm now going to propose ...
As I found, expm1() and log1p() already *HAVE BEEN*
in the S3 "Math" group generic
``automagically by implementation''.
Just the documentation for this fact has been missing.
Hence, I've added that doc (uncommitted) and I'm about to add
them to the S4 Math group as well. When doing so, I'd like to
add few more functions to make S3 and S4 "Math" a bit more compatible :
Consequently, I'm proposing to add the following functions to the S4 Math
group generic :
- log1p, expm1
- cummax, cummin {S3 has them; cumprod(), cumsum() are already}
- digamma, trigamma {S3 has them; gamma(), lgamma() are already}
----
When trying to do the above,
I'm pretty quickly successful for cummax & cummin,
most probably because they are primitive functions.
But I currently have problems for the other four,
and in exploring these problems,
I've found that
log10()
does not S4- dispatch on "Math" neither,
which I think is a pretty peculiar bug;
I think if that was fixed, then my code changes would also work
to make log1p(), expm1(), digamma() and trigamma() correctly
part of "S4 - Math Group".
Martin
More information about the R-devel
mailing list