I don't quite see the point of using `pure_complex`. It would just give me `(re, im)` of `r1*root` while I only want the imaginary part for which I am using `im()`.

As an example:
```
In [42]: z = 23.234542525 + I*3653.34653636

In [43]: pure_complex(z)
Out[43]: (23.2345425250000, 3653.34653636000)

In [44]: re
Out[44]: sympy.functions.elementary.complexes.re

In [45]: re(z), im(z)
Out[45]: (23.2345425250000, 3653.34653636000)

```