Hi, Sage happily coerces floating-point numbers (e.g., elements of RR) into intervals (e.g., elements of RIF), subject to some conditions on the precision of the source and destination rings.
The relevant portion of the coercion graph looks like this: ( +---> RDF ) | | Exact v real ---> RLF ---> RR fields | | v +---> RIF The coercions RLF --> RIF and RLF --> RR --> RIF violate the requirement that coercions should form a commutative diagram. Right now, it is not too much of an issue in practice, because coercions X --> RIF are constructed based on the existing coercions X --> RR and direct coercions like RLF --> RIF always(?) end up being preferred to variants going through RR. But this is of course pretty fragile to changes in the coercion system. If a coercion path of the form X --> RR --> RIF is ever chosen for some exact ring X (whose elements are not exactly representable by elements of RR!), arithmetic operations between elements of X and intervals will yield mathematically incorrect results. Besides, things like sage: iv = 1 + 2^(-55) + 0. + RIF(1) sage: iv.lower(), iv.upper() (2.00000000000000, 2.00000000000000) can already make for subtle bugs in the current situation. The same issue exists for CC, CIF and friends. I see little value in having mixed operations between floating-point numbers and intervals work automatically, so I would be in favor of removing the coercions from floating-point rings to interval rings altogether. What do you think? -- Marc -- 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 post to this group, send email to sage-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/groups/opt_out.