Currently, [ldexp](https://numpy.org/doc/stable/reference/generated/numpy.ldexp.html) throws a TypeError on a complex input:
```python3 import numpy as np def naive_ldexp(x, n): return x * 2**n def new_ldexp(x, n): if np.iscomplex(x): y = np.empty_like(x) y.real = np.ldexp(x.real, n) y.imag = np.ldexp(x.imag, n) return y else: return np.ldexp(x, n) def main(): x = 2.2 + 3.3j n = 3 print(naive_ldexp(x, n)) print(new_ldexp(x, n)) print(np.ldexp(x, n)) if __name__ == "__main__": main() ``` ``` (17.6+26.4j) (17.6+26.4j) Traceback (most recent call last): File "test.py", line 34, in <module> main() File "test.py", line 30, in main print(np.ldexp(x, n)) ^^^^^^^^^^^^^^ TypeError: ufunc 'ldexp' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' ``` This can easily be solved by applying ldexp to the real and imaginary parts of the input, as shown in the function new_ldexp above. _______________________________________________ NumPy-Discussion mailing list -- numpy-discussion@python.org To unsubscribe send an email to numpy-discussion-le...@python.org https://mail.python.org/mailman3/lists/numpy-discussion.python.org/ Member address: arch...@mail-archive.com