parameters: (self, *args)
docstring: Find the appropriate pair (in_dtype, out_dtype) according to
             vigranumpy typecasting rules. in_dtype is the type into which
             the arguments will be casted before performing the operation
             (to prevent possible overflow), out_type is the type the output
             array will have (unless an explicit out-argument is provided).
  
             See ufunc.vigraTypecastingRules for detailed information on coercion rules.
docstring_summary: Find the appropriate pair (in_dtype, out_dtype) according to
             vigranumpy typecasting rules. in_dtype is the type into which
             the arguments will be casted before performing the operation
             (to prevent possible overflow), out_type is the type the output
             array will have (unless an explicit out-argument is provided).
docstring_tokens: Find the appropriate pair ( in_dtype out_dtype ) according to vigranumpy typecasting rules . in_dtype is the type into which the arguments will be casted before performing the operation ( to prevent possible overflow ) out_type is the type the output array will have ( unless an explicit out - argument is provided ) .
function: def common_type(self, *args):
          '''Find the appropriate pair (in_dtype, out_dtype) according to
             vigranumpy typecasting rules. in_dtype is the type into which
             the arguments will be casted before performing the operation
             (to prevent possible overflow), out_type is the type the output
             array will have (unless an explicit out-argument is provided).
  
             See ufunc.vigraTypecastingRules for detailed information on coercion rules.
          '''
          if self.is_abs and args[0].dtype.kind == "c" and args[1] is None:
              dtype = args[0].dtype
              if dtype == numpy.complex64:
                  return dtype, numpy.float32
              if dtype == numpy.complex128:
                  return dtype, numpy.float64
              if dtype == numpy.clongdouble:
                  return dtype, numpy.longdouble
          arrayTypes = [(self.kindToNumber[x.dtype.kind], x.dtype.itemsize, x.dtype) for x in args if hasattr(x, 'dtype')]
          arrayTypes.sort()
          if arrayTypes[0] != arrayTypes[-1] and arrayTypes[-1][0] == 2:
              if arrayTypes[-1][1] <= 4:
                  highestArrayType = (2, 4, numpy.int32)
              else:
                  highestArrayType = (2, 8, numpy.int64)
          else:
              highestArrayType = arrayTypes[-1]
  
          if self.is_bool:
              return (highestArrayType[-1], numpy.bool8)
  
          scalarType = [numpy.dtype(type(x)) for x in args if numpy.isscalar(x)]
          if not scalarType:
              return (highestArrayType[-1], highestArrayType[-1])
          scalarType = (self.kindToNumber[scalarType[0].kind], scalarType[0].itemsize, scalarType[0])
          if highestArrayType[0] >= scalarType[0]:
              return (highestArrayType[-1], highestArrayType[-1])
          elif scalarType[0] == 3 and highestArrayType[1] <= 4:
              return (highestArrayType[-1], numpy.float32)
          else:
              return (highestArrayType[-1], scalarType[-1])
function_tokens: def common_type ( self , * args ) : if self . is_abs and args [ 0 ] . dtype . kind == "c" and args [ 1 ] is None : dtype = args [ 0 ] . dtype if dtype == numpy . complex64 : return dtype , numpy . float32 if dtype == numpy . complex128 : return dtype , numpy . float64 if dtype == numpy . clongdouble : return dtype , numpy . longdouble arrayTypes = [ ( self . kindToNumber [ x . dtype . kind ] , x . dtype . itemsize , x . dtype ) for x in args if hasattr ( x , 'dtype' ) ] arrayTypes . sort ( ) if arrayTypes [ 0 ] != arrayTypes [ - 1 ] and arrayTypes [ - 1 ] [ 0 ] == 2 : if arrayTypes [ - 1 ] [ 1 ] <= 4 : highestArrayType = ( 2 , 4 , numpy . int32 ) else : highestArrayType = ( 2 , 8 , numpy . int64 ) else : highestArrayType = arrayTypes [ - 1 ] if self . is_bool : return ( highestArrayType [ - 1 ] , numpy . bool8 ) scalarType = [ numpy . dtype ( type ( x ) ) for x in args if numpy . isscalar ( x ) ] if not scalarType : return ( highestArrayType [ - 1 ] , highestArrayType [ - 1 ] ) scalarType = ( self . kindToNumber [ scalarType [ 0 ] . kind ] , scalarType [ 0 ] . itemsize , scalarType [ 0 ] ) if highestArrayType [ 0 ] >= scalarType [ 0 ] : return ( highestArrayType [ - 1 ] , highestArrayType [ - 1 ] ) elif scalarType [ 0 ] == 3 and highestArrayType [ 1 ] <= 4 : return ( highestArrayType [ - 1 ] , numpy . float32 ) else : return ( highestArrayType [ - 1 ] , scalarType [ - 1 ] )