code: def _icheckother(fn, self, other):
          
          self._typecheck(other) 
          if type(other) in _ALLOWED_SCALARS:
              if self.kind == 'real' and type(other) == complex:
                  raise TypeError('dtypes are incompatible')
              other = force_precision_to_match(other, self.precision)
          elif isinstance(other, type(self)) or type(other) is Array:
              if len(other) != len(self):
                  raise ValueError('lengths do not match')
              if self.kind == 'real' and other.kind == 'complex':
                  raise TypeError('dtypes are incompatible')
              if other.precision == self.precision:
                  _convert_to_scheme(other)
                  other = other._data
              else:
                  raise TypeError('precisions do not match')
          else:
              return NotImplemented
  
          return fn(self, other)
docs: Checks the input to in-place operations