> (-6.66133814775094e-16, -1.00000000000000) > <---------------------------------------??? > > Why isn't the first coordinate 0??? In theory it should be...
Such things are basically inevitable with floating point whenever any number involved can't be perfectly represented-- and in this case sqrt(2) is irrational to boot. Sometimes you luck out and sometimes you don't. help(RR) gives a brief warning. Here I think you can avoid the problem by working not in RR (2^(-53) ~ 1e-16) but the symbolic ring SR. sage: V=VectorSpace(RR,2,inner_product_matrix=[[1, -sqrt(2)/2], [- sqrt(2)/2, 1]]) sage: V.basis() [ (1.00000000000000, 0.000000000000000), (0.000000000000000, 1.00000000000000) ] sage: V=VectorSpace(SR,2,inner_product_matrix=[[1, -sqrt(2)/2], [- sqrt(2)/2, 1]]) sage: a,b = V.basis() sage: a,b ((1, 0), (0, 1)) sage: r1=Sigma(a,b);r1 (sqrt(2), 1) sage: r2=Sigma(r1,a);r2 (-1, -sqrt(2)) sage: r3=Sigma(r2,r1);r3 (0, -1) If you really want to work in floating point you're going to have to loosen your definition of equality -- see, e.g., http://floating-point-gui.de/errors/comparison/ -- possibly doing so rigorously with interval arithmetic. Doug -- Department of Earth Sciences University of Hong Kong -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org