@@ -164,11 +164,15 @@ function deflation(p::AbstractPolynomialLike)
164
164
return s, d
165
165
end
166
166
167
+ function _zero_to_one_exp (defl:: AbstractMonomial )
168
+ # TODO Make it faster by calling something like `mapexponents`.
169
+ return prod (variables (defl).^ map (d -> iszero (d) ? one (d) : d, exponents (defl)))
170
+ end
167
171
function deflate (p:: AbstractPolynomialLike , shift, defl)
168
172
if isconstant (shift) && all (d -> isone (d) || iszero (d), exponents (defl))
169
173
return p
170
174
end
171
- q = MA. operate (deflate, p, shift, defl)
175
+ q = MA. operate (deflate, p, shift, _zero_to_one_exp ( defl) )
172
176
return q
173
177
end
174
178
function inflate (α, shift, defl)
@@ -178,7 +182,7 @@ function inflate(p::AbstractPolynomialLike, shift, defl)
178
182
if isconstant (shift) && all (d -> isone (d) || iszero (d), exponents (defl))
179
183
return p
180
184
end
181
- q = MA. operate (inflate, p, shift, defl)
185
+ q = MA. operate (inflate, p, shift, _zero_to_one_exp ( defl) )
182
186
return q
183
187
end
184
188
193
197
194
198
# Inspired from to `AbstractAlgebra.deflate`
195
199
function MA. operate (op:: Union{typeof(deflate), typeof(inflate)} , p:: AbstractPolynomialLike , shift, defl)
196
- defl = prod (variables (defl).^ map (d -> iszero (d) ? one (d) : d, exponents (defl)))
197
200
return polynomial (map (terms (p)) do t
198
201
return term (coefficient (t), MA. operate (op, monomial (t), shift, defl))
199
202
end )
0 commit comments