Minimal Example:
using SymEngine
@vars x
real(x) # returns x, instead of keeping `real(x)`
imag(x) # gives `InexactError(::Symbol, ::Any, ::Any)`
reim(x) # gives `InexactError(::Symbol, ::Any, ::Any)`
I notice that by construction SymEngine.Basic <: Number but NOT subtype of Real or Complex. So I really do not understand the logic here: why real(x) simply gives x?
OK, even if the the symbol x is assumed to be real, then why is complex(x) not defined?