[R] Matrix Multiplication, Floating-Point, etc.
topkatz at msn.com
Mon Jul 30 19:54:54 CEST 2007
Thank you for responding!
I realize that floating point operations are often inexact, and indeed, the
difference between the two answers is within the all.equal tolerance, as
mentioned in FAQ 7.31 (cited by Charles):
I suppose that's good enough for numerical computation. But I was still
surprised to see that matrix multiplication (ev1%*%ev2) doesn't give the
exact right answer, whereas sum(ev1*ev2) does give the exact answer. I
would've expected them to perform the same two multiplications and one
addition. But I guess that's not the case.
However, I did find that if I multiplied the two vectors by 10, making the
entries integers (although the class was still "numeric" rather than
"integer"), both computations gave equal answers of 0:
Perhaps the moral of the story is that one should exercise caution and keep
track of significant digits.
-- TMK --
>From: "Charles C. Berry" <cberry at tajo.ucsd.edu>
>To: Talbot Katz <topkatz at msn.com>
>CC: r-help at stat.math.ethz.ch
>Subject: Re: [R] Matrix Multiplication, Floating-Point, etc.
>Date: Mon, 30 Jul 2007 09:27:42 -0700
>7.31 Why doesn't R think these numbers are equal?
>On Fri, 27 Jul 2007, Talbot Katz wrote:
>>I recently tried the following in R 2.5.1 on Windows XP:
>>(I got the same result with R 2.4.1 on a different Windows XP machine.)
>>I expect this issue is very familiar and probably has been discussed in
>>forum before. Can someone please point me to some documentation or
>>discussion about this? Is there some standard way to get the "correct"
>>answer from %*%?
>>-- TMK --
>>R-help at stat.math.ethz.ch mailing list
>>PLEASE do read the posting guide
>>and provide commented, minimal, self-contained, reproducible code.
>Charles C. Berry (858) 534-2098
> Dept of Family/Preventive
>E mailto:cberry at tajo.ucsd.edu UC San Diego
>http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901
More information about the R-help