Thanks- I was hoping I wouldn't have to loop, but using abs() is better than comparing Re()s and Im()s, which was my original thought. I have to compare all the roots, so I used something like this:
> for (i in 1:length(z1)) if(any(abs(z1[i]-z2[1:length(z2)])<1e-15)) > print("ouch") ... thanks again for your help. Duncan Murdoch-2 wrote: > > On 7/11/2008 11:51 AM, David Stoffer wrote: >> Is there an easy way to compare complex numbers? >> >> Here is a small example: >> >>> (z1=polyroot(c(1,-.4,-.45))) >> [1] 1.111111-0i -2.000000+0i >>> (z2=polyroot(c(1,1,.25))) >> [1] -2+0i -2+0i >>> x=0 >>> if(any(identical(z1,z2))) x=99 >>> x >> [1] 0 >> >> # real and imaginary parts: >> >>> Re(z1); Im(z1) >> [1] 1.111111 -2.000000 >> [1] -8.4968e-21 8.4968e-21 >> >>> Re(z2); Im(z2) >> [1] -2 -2 >> [1] 0 0 >> >> Both z1 and z2 have a root of -2, but I guess Im(z1) >> isn't close enough to zero for identical(). > > == is the test you had in mind, I think, but like identical it requires > exact equality. identical() wants the whole vector to be identical. > all.equal() checks for element by element approximate equality. > > So you can get element by element approximate equality by something like > > > for (i in 1:length(z1)) print(all.equal(z1[i], z2[i])) > [1] "Mean relative Mod difference: 2.8" > [1] TRUE > > The trouble with this approach is that it will use a different scale for > each comparison. I think you really need to fashion your own test, e.g. > > > abs(z1-z2) < 1e-15 > [1] FALSE TRUE > > Duncan Murdoch > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > ----- The power of accurate observation is commonly called cynicism by those who have not got it. George Bernard Shaw -- View this message in context: http://www.nabble.com/Comparing-complex-numbers-tp18406924p18411302.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.