(self, x, a, b)
return B - A
Returns evaluation over an interval.  For most functions this is:

        self.subs(x, b) - self.subs(x, a),

        possibly using limit() if NaN is returned from subs.

        If b or a is None, it only evaluates -self.subs(x, a) or self.subs(b, x),
        respectively.
Returns evaluation over an interval.  For most functions this is:
Returns evaluation over an interval . For most functions this is :
def _eval_interval(self, x, a, b):
        """
        Returns evaluation over an interval.  For most functions this is:

        self.subs(x, b) - self.subs(x, a),

        possibly using limit() if NaN is returned from subs.

        If b or a is None, it only evaluates -self.subs(x, a) or self.subs(b, x),
        respectively.

        """
        from sympy.series import limit
        if (a is None and b is None):
            raise ValueError('Both interval ends cannot be None.')

        if a is None:
            A = 0
        else:
            A = self.subs(x, a)
            if A.has(S.NaN) or A.has(S.Infinity):
                A = limit(self, x, a)
                if A is S.NaN:
                    return A

        if b is None:
            B = 0
        else:
            B = self.subs(x, b)
            if B.has(S.NaN) or B.has(S.Infinity):
                B = limit(self, x, b)

        return B - A
def _eval_interval ( self , x , a , b ) : from sympy . series import limit if ( a is None and b is None ) : raise ValueError ( 'Both interval ends cannot be None.' ) if a is None : A = 0 else : A = self . subs ( x , a ) if A . has ( S . NaN ) or A . has ( S . Infinity ) : A = limit ( self , x , a ) if A is S . NaN : return A if b is None : B = 0 else : B = self . subs ( x , b ) if B . has ( S . NaN ) or B . has ( S . Infinity ) : B = limit ( self , x , b ) return B - A