[GiNaC-list] to_polynomial function does not return a polynomial

Feng Feng f.feng at outlook.com
Tue Jan 11 08:10:40 CET 2022


Dear Vladimir V. Kisil,

Thanks very much for suggestion to use expand() method on e3 first.

And I have given a look at the source code at power::to_polynomial

https://www.ginac.de/reference/normal_8cpp_source.html#l02688


 2688  ex power::to_polynomial(exmap & repl) const
 2689 {
 2690     if (exponent.info(info_flags::posint))
 2691         return pow(basis.to_rational(repl), exponent);
 2692     else if (exponent.info(info_flags::negint))
 2693     {
 2694         ex basis_pref = collect_common_factors(basis);
 2695         if (is_exactly_a<mul>(basis_pref) || is_exactly_a<power>(basis_pref)) {
 2696             // (A*B)^n will be automagically transformed to A^n*B^n
 2697             ex t = pow(basis_pref, exponent);
 2698             return t.to_polynomial(repl);
 2699         }
 2700         else
 2701             return pow(replace_with_symbol(pow(basis, _ex_1), repl), -exponent);
 2702     }
 2703     else
 2704         return replace_with_symbol(*this, repl);
 2705 }

and I wonfer if there is a typo on line 2691, the basis.to_rational can be replaced with basis.to_polynomial?

Best regards!
Feng
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ginac.de/pipermail/ginac-list/attachments/20220111/35e1511b/attachment.htm>


More information about the GiNaC-list mailing list