Skip to content

Commit 7506950

Browse files
committed
Upgrade if needed
1 parent e9d393a commit 7506950

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/generic/UnivPoly.jl

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -957,8 +957,13 @@ end
957957

958958
_change_univ_poly_ring(R, Rx, cached::Bool) = universal_polynomial_ring(R, symbols(Rx); internal_ordering=internal_ordering(Rx), cached)[1]
959959

960-
function change_base_ring(R::Ring, p::UnivPoly{T}; cached::Bool=true, parent::UniversalPolyRing = _change_univ_poly_ring(R, parent(p), cached)) where {T <: RingElement}
961-
return UnivPoly(change_base_ring(R, data(p); parent = mpoly_ring(parent)), parent)
960+
function change_base_ring(R::Ring, p::UnivPoly{T}; cached::Bool=true, new_parent::UniversalPolyRing = _change_univ_poly_ring(R, parent(p), cached)) where {T <: RingElement}
961+
if nvars(parent(p)) > nvars(parent(data(p)))
962+
pp = upgrade(parent(p), data(p))
963+
else
964+
pp = data(p)
965+
end
966+
return UnivPoly(change_base_ring(R, pp; parent = mpoly_ring(new_parent)), new_parent)
962967
end
963968

964969
function change_coefficient_ring(R::Ring, p::UnivPoly{T}; cached::Bool=true, parent::UniversalPolyRing = _change_univ_poly_ring(R, parent(p), cached)) where {T <: RingElement}
@@ -971,8 +976,13 @@ end
971976
#
972977
################################################################################
973978

974-
function map_coefficients(f::T, p::UnivPoly; cached::Bool=true, parent::UniversalPolyRing = _change_univ_poly_ring(parent(f(zero(base_ring(p)))), parent(p), cached)) where T
975-
return UnivPoly(map_coefficients(f, data(p); parent = mpoly_ring(parent)), parent)
979+
function map_coefficients(f::T, p::UnivPoly; cached::Bool=true, new_parent::UniversalPolyRing = _change_univ_poly_ring(parent(f(zero(base_ring(p)))), parent(p), cached)) where T
980+
if nvars(parent(p)) > nvars(parent(data(p)))
981+
pp = upgrade(parent(p), data(p))
982+
else
983+
pp = data(p)
984+
end
985+
return UnivPoly(map_coefficients(f, pp; parent = mpoly_ring(new_parent)), new_parent)
976986
end
977987

978988
###############################################################################

0 commit comments

Comments
 (0)