@@ -265,6 +265,7 @@ from sage.arith.constants cimport LOG_TEN_TWO_PLUS_EPSILON
265265
266266cimport sage.structure.element
267267from sage.structure.element cimport RingElement, Element, ModuleElement
268+ from sage.structure.element cimport have_same_parent
268269from sage.structure.parent cimport Parent
269270from sage.structure.richcmp cimport richcmp
270271
@@ -285,6 +286,7 @@ import operator
285286
286287from sage.cpython.string cimport char_to_str, bytes_to_str
287288
289+ from sage.misc.superseded import deprecation
288290import sage.rings.infinity
289291
290292# *****************************************************************************
@@ -2568,6 +2570,107 @@ cdef class RealIntervalFieldElement(RingElement):
25682570 # Basic Arithmetic
25692571 # #######################
25702572
2573+ def __add__ (left , right ):
2574+ r """
2575+ TESTS::
2576+
2577+ sage: RIF( 1) + RR( 1)
2578+ doctest:... :
2579+ DeprecationWarning: automatic conversions from floating-point numbers to intervals are deprecated
2580+ See http://trac. sagemath. org/15114 for details.
2581+ 2
2582+ sage: import warnings; warnings. resetwarnings( )
2583+ """
2584+ cdef RealIntervalFieldElement _left = (< RealIntervalFieldElement> left)
2585+ if have_same_parent(left, right):
2586+ return _left._add_(right)
2587+ if (type (right) is RealNumber
2588+ and _left._parent.prec() <= right.parent().prec()):
2589+ deprecation(15114 , " automatic conversions from floating-point "
2590+ " numbers to intervals are deprecated" )
2591+ return left + _left._parent(right)
2592+ elif isinstance (left, RealIntervalFieldElement):
2593+ return Element.__add__ (left, right)
2594+ else :
2595+ return Element.__radd__ (right, left)
2596+
2597+ def __sub__ (left , right ):
2598+ r """
2599+ TESTS::
2600+
2601+ sage: RIF( 2) - RR( 1)
2602+ doctest:... :
2603+ DeprecationWarning: automatic conversions from floating-point numbers to intervals are deprecated
2604+ See http://trac. sagemath. org/15114 for details.
2605+ 1
2606+ sage: import warnings; warnings. resetwarnings( )
2607+ """
2608+ cdef RealIntervalFieldElement _left = (< RealIntervalFieldElement> left)
2609+ if have_same_parent(left, right):
2610+ return _left._sub_(right)
2611+ if (type (right) is RealNumber
2612+ and _left._parent.prec() <= right.parent().prec()):
2613+ deprecation(15114 , " automatic conversions from floating-point "
2614+ " numbers to intervals are deprecated" )
2615+ return left - _left._parent(right)
2616+ elif isinstance (left, RealIntervalFieldElement):
2617+ return Element.__sub__ (left, right)
2618+ else :
2619+ return Element.__rsub__ (right, left)
2620+
2621+ def __mul__ (left , right ):
2622+ r """
2623+ TESTS::
2624+
2625+ sage: RIF( 1) * RR( 1)
2626+ doctest:... :
2627+ DeprecationWarning: automatic conversions from floating-point numbers to intervals are deprecated
2628+ See http://trac. sagemath. org/15114 for details.
2629+ 1
2630+ sage: import warnings; warnings. resetwarnings( )
2631+ """
2632+ cdef RealIntervalFieldElement _left = (< RealIntervalFieldElement> left)
2633+ if have_same_parent(left, right):
2634+ return _left._mul_(right)
2635+ if (type (right) is RealNumber
2636+ and _left._parent.prec() <= right.parent().prec()):
2637+ deprecation(15114 , " automatic conversions from floating-point "
2638+ " numbers to intervals are deprecated" )
2639+ return left * _left._parent(right)
2640+ elif isinstance (left, RealIntervalFieldElement):
2641+ return Element.__mul__ (left, right)
2642+ else :
2643+ return Element.__rmul__ (right, left)
2644+
2645+ def __truediv__ (left , right ):
2646+ r """
2647+ TESTS::
2648+
2649+ sage: RIF( 1) / RR( 1/2)
2650+ doctest:... :
2651+ DeprecationWarning: automatic conversions from floating-point numbers to intervals are deprecated
2652+ See http://trac. sagemath. org/15114 for details.
2653+ 2
2654+ sage: import warnings; warnings. resetwarnings( )
2655+ """
2656+ cdef RealIntervalFieldElement _left = (< RealIntervalFieldElement> left)
2657+ if have_same_parent(left, right):
2658+ return _left._div_(right)
2659+ if (type (right) is RealNumber
2660+ and _left._parent.prec() <= right.parent().prec()):
2661+ deprecation(15114 , " automatic conversions from floating-point "
2662+ " numbers to intervals are deprecated" )
2663+ return left / _left._parent(right)
2664+ elif (type (left) is RealNumber
2665+ and left.parent().prec() >= right.parent().prec()):
2666+ deprecation(15114 , " automatic conversions from floating-point "
2667+ " numbers to intervals are deprecated" )
2668+ return right.parent()(left)/ right
2669+ elif isinstance (left, RealIntervalFieldElement):
2670+ return Element.__truediv__ (left, right)
2671+ else :
2672+ return Element.__rtruediv__ (right, left)
2673+
25712674 cpdef _add_(self , other):
25722675 """
25732676 Add two real intervals with the same parent.
0 commit comments