code: def _call(self, x, out=None):
          
          if self.domain.is_real:
              return self._call_real(x, out)
  
          elif self.domain.is_complex:
              result_parts = [
                  self._call_real(x.real, getattr(out, 'real', None)),
                  self._call_real(x.imag, getattr(out, 'imag', None))]
  
              if out is None:
                  out = self.range.element()
                  out.real = result_parts[0]
                  out.imag = result_parts[1]
  
              return out
  
          else:
              raise RuntimeError('bad domain {!r}'.format(self.domain))
docs: Return ``self(x[, out])``.