Communative Matrix Multiplcation
Thanks to you both. I'm not sure all.equal() was right for this situation, is it? If the differences were to the right of the decimal and differed as a function of precision, then I see all.equal() being the right function. But, the differences in the reproducible code were to the left of the decimal, but a lot, so I thought identical was perhaps better.
You are right that the difference was dramatic, and hence your posting was well in place, well, would have, iff it had been earlier, when that version of Matrix was current (... looking it up: the next version after the one you used, was 0.999375-47, CRAN-released: 2011-02-23; and there were *many* releases since, notably 1.0-0 & 1.0-1 the latter released 2011-10-18.) However, using identical() for comparisons of the results of double precision computations is almost always "wrong", in principle: identical() very often can give FALSE notably from such simple changes as algebraical shuffling (commutative, associative, distributive laws), and indeed these things are covered by the BFMFAQ (By Far Most Frequently Asked Question) 7.31.
Martin, there seem to be some issues with calculations in the updated Matrix package. I'll send an email to matrix authors. It seems some calculations that were almost instantaneous with older versions are now causing R to hang. I'll provide reproducible examples.
Thank you in advance! Martin
________________________________________ From: Martin Maechler [maechler at stat.math.ethz.ch] Sent: Thursday, August 16, 2012 3:42 AM To: David Reiner Cc: Doran, Harold; 'r-help at r-project.org' Subject: Re: [R] Communative Matrix Multiplcation
David Reiner <David.Reiner at xrtrading.com>
on Wed, 15 Aug 2012 09:59:10 -0500 writes:
> As a mathematician, I have to correct the subject line
> to 'Distributive Matrix operations' -- David
Yes, indeed; that was *really* disturbing to me as well, about this thread!
{in addition to the fact that he should have used all.equal()
and not identical() as someone had pointed out already ..}
And at last: Yes, some of the methods for Diagonal() matrices in the 'Matrix' package did have bugs, in earlier versions.
NOTE: You can (and often should) update packages also if for
some reason you cannot update your version of R!
Martin Maechler, ETH Zurich
.... ....
>>
>> On 14-08-2012, at 19:26, Doran, Harold wrote:
>>
>> >
>> > I'm not seeing why the following occurs:
>> >
>> > T1 <- (A1 - A2) %*% D
>> > T2 <- (A1 %*% D) - (A2 %*% D)
>> > identical(T1, T2)
>> [1] FALSE
>>