class_docstr: Representation for a range of values. 
class_docstr_tok: ["Representation","for","a","range","of","values","."]
docstr: Combiner for Multiplication operation.
  
  >>> Interval(1, 5) * Interval(-5, -4)
  Interval(low=-25, high=-4)
  >>> Interval(-1, 5) * Interval(-5, 3)
  Interval(low=-25, high=15)
  >>> Interval(1, 5) * Interval(3, 8)
  Interval(low=3, high=40)
docstr_tok: ["Combiner","for","Multiplication","operation",".",">",">",">","Interval","(","1",",","5",")","*","Interval","(","-5",",","-4",")","Interval","(","low=-25",",","high=-4",")",">",">",">","Interval","(","-1",",","5",")","*","Interval","(","-5",",","3",")","Interval","(","low=-25",",","high=15",")",">",">",">","Interval","(","1",",","5",")","*","Interval","(","3",",","8",")","Interval","(","low=3",",","high=40",")"]
code: def __mul__(self, other):
      """
      Combiner for Multiplication operation.
  
      >>> Interval(1, 5) * Interval(-5, -4)
      Interval(low=-25, high=-4)
      >>> Interval(-1, 5) * Interval(-5, 3)
      Interval(low=-25, high=15)
      >>> Interval(1, 5) * Interval(3, 8)
      Interval(low=3, high=40)
      """
  
      def all_bounds():
          return itertools.chain(self.bounds(), other.bounds())
  
      if any(map(isinf, all_bounds())) and any(
          x == 0 for x in all_bounds()
      ):
          return UNKNOWN_RANGE
  
      res = [
          v1 * v2
          for v1, v2 in itertools.product(self.bounds(), other.bounds())
      ]
      return Interval(min(res), max(res))
  
imports: from math import isinf, isnan
  import itertools
  import numpy
label_desc: Use image node_id 11 for calling the Interval obj's underlying member method code with example usage: obj.__mul__(other) and returns: Interval, itertools, UNKNOWN_RANGE