def map_call(self, expr): name = expr.function.name if name == "fromreal": arg, = expr.parameters base_dtype = self.rec(arg) tgt_real_dtype = (np.float32(0) + base_dtype.type(0)).dtype assert tgt_real_dtype.kind == "f" if tgt_real_dtype == np.float32: return np.dtype(np.complex64) elif tgt_real_dtype == np.float64: return np.dtype(np.complex128) else: raise RuntimeError("unexpected complex type") elif name in ["imag", "real", "abs", "dble"]: arg, = expr.parameters base_dtype = self.rec(arg) if base_dtype == np.complex128: return np.dtype(np.float64) elif base_dtype == np.complex64: return np.dtype(np.float32) else: return base_dtype else: return CombineMapper.map_call(self, expr)
def map_call(self, expr): if self.include_calls == "descend_args": return self.combine( [self.rec(child) for child in expr.parameters]) elif self.include_calls: return set([expr]) else: return CombineMapper.map_call(self, expr)