# simplifying out negative signs in exponents

Hello all!

I can't for the life of me find a way to force sage to return terms with only positive coefficient variable exponents. For example, if I enter something like

assume(n, 'integer', n>10)
c = 2^(-n)


I would like the output to be something like 1/(2^n), but instead I can only get something like 2^(-n). Is there a way to force the output to display only positive coefficients in front of the n?

In general I'd like some magicFunc function which I could feed some expression g(x,n) and have it return a rational expression with no negatives; eg.

var('x,n')
assume(x,'real')
assume(n,'integer',n>10)
g(x,n) = 2^(-n)*x^(-3*n)*3^n
magicFunc(g(x,n))


Would return 3^n/(2^n*x^(3n))

Is this possible? This seems like it should be an existent simplification method, but nothing I've tried seems to work.

Thanks!

edit retag close merge delete

What version of Sage are you using? Type version() at the Sage prompt.

Sort by » oldest newest most voted

Isn't this the case already ? On my laptop (SageMath version 8.3.rc2), i have:

sage: var('x,n')
....: assume(x,'real')
....: assume(n,'integer',n>10)
....: g(x,n) = 2^(-n)*x^(-3*n)*3^n
(x, n)
sage: g
(x, n) |--> 3^n/(2^n*x^(3*n))

sage: c = 2^(-n)
sage: c
1/(2^n)

more