> (-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

Reply via email to