I am strongly against conversion from floating-point to interval
field. Floatting point arithmetic is approximate whereas interval
arithmetic is guaranteed. Moreover, the conversion between non exact
rings in Sage are always from "more precision" to "less precision".
For these reasons the conversion should be from RIF to RR and from CIF
to CC and not the other way around.

I agree that there are trivial conversions from RR to RIF and CC to
CIF but I do not want them as coercions.

An example: if I is an interval and try {{{sage: I.cos()}}} you know
that the image of I by the (mathematical) function cos is contained in
the result. Now if you allow the coercion to the real numbers you
assume that {{{sage: RR(I).cos()}}} is a good answer for the same
computation which is not! It might even be out of the image of I by
the (mathematical) function cos.

A counter example: If x is a real number and I is an interval what do
we want for the result of I+x? I would prefer to obtain an interval,
but I think of this operation as a right action of RR on RIF by
translations of the intervals and **not** as an addition.

Best,
Vincent

2013/8/26 Marco Streng <marco.str...@gmail.com>:
>
>
>
> 2013/8/26 Marc Mezzarobba <m...@mezzarobba.net>
>>
>> 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?
>
>
> +1
> When I use interval arithmetic, I do that because I want a proof that a
> number is in an interval. But I also know that I can make a mistake of the
> form of your example above. We can allow explicit conversions both ways, but
> it makes more sense to me if automatic coercions don't go from RealField to
> RealIntervalField.
>
>>
>>
>> --
>> 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.
>
>
> --
> 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.

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

Reply via email to