I am writing a calculator for various 'q' quantities, and often find that I need to manipulate symbols more flexibly. For example, I have to deal with the expression
( q + q^(-1) ) ^ (1/2) ------------------ (*)
But currently I could not find any way to achieve this. A naive attempt gives a failure:
sage: q = Frac(ZZ['q']).gen()
sage: q ^ (1/2)
---> ValueError: not a 2nd power
sage: power(q, 1/2)
NotImplementedError: non-integral exponents not supported
Leave alone the expression I need! Indeed, one might have to define a larger parent for the expression (*) to live in. So this might require implementing a new algebraic structure. If that's the case, I'm willing to write it. The problem is that implementing a new structure seems a bit complicated to me.. I might take some time, and need some guides. Thank you so much!
PS. Weirdly enough, exp(sin(q)) is already implemented as in the class <class 'sage.symbolic.expression.Expression'>. Perhaps what I need might not be too hard to implement?