On Sat, 2023-04-15 at 19:11 -0700, Nils Bruin wrote: > > I fail to see what the reasonable expectations are here. As soon as you > multiply by "0.5" you now have an "imprecise" result. When people learn to > use a scientific calculator properly they are very quickly confronted with > the reality that "dots in numbers" lead to arithmetic that isn't quite what > we learn in the lower grades of primary school.
It's reasonable to expect that multiplying by one won't cause a viable alternative to Mathematica et al. to go bonkers. I haven't declared a float variable, and I haven't type-cast anything to float. The expression "0.5" is, a priori, quite equal to 1/2. Mathematica knows it, my old Casio calculator knows it, and in fact, Sage knows it: sage: 2 * 0.5 == ZZ(1) True We're pre-parsing the user's input, so there is an opportunity to do the right thing. But instead, we silently convert 2*0.5 to float, and then silently convert the entire matrix to a float matrix, on which half the methods in sage are completely meaningless. > Do you think we should have "B == A" return false? ... > A more reasonably solution might be to have B.rank() return an error Yes, ultimately, I think it would be better to have a class hierarchy that can distinguish between inexact rings where these operations are meaningful and those where they're not. But these are Sage library issues and that's not my main complaint. If you're writing python code, you should expect 2*0.5 to return a float. But if you're learning linear algebra for the first time and typing a matrix into the Sage notebook, typing 0.5 instead of 1/2 should not ruin the entire assignment without so much as a warning. -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/caa19202f0a1dc1eef92dbab1df231efb1f2741c.camel%40orlitzky.com.