diff --git a/src/operators.jl b/src/operators.jl index bb95ec40..5b0ad34d 100644 --- a/src/operators.jl +++ b/src/operators.jl @@ -101,9 +101,14 @@ end LinearAlgebra.adjoint(v::AbstractVariable) = v LinearAlgebra.adjoint(m::AbstractMonomial) = m -LinearAlgebra.adjoint(t::T) where {T <: AbstractTerm} = LinearAlgebra.adjoint(coefficient(t)) * monomial(t) +LinearAlgebra.adjoint(t::AbstractTerm) = LinearAlgebra.adjoint(coefficient(t)) * monomial(t) LinearAlgebra.adjoint(p::AbstractPolynomialLike) = polynomial(map(LinearAlgebra.adjoint, terms(p))) +LinearAlgebra.transpose(v::AbstractVariable) = v +LinearAlgebra.transpose(m::AbstractMonomial) = m +LinearAlgebra.transpose(t::AbstractTerm) = LinearAlgebra.transpose(coefficient(t)) * monomial(t) +LinearAlgebra.transpose(p::AbstractPolynomialLike) = polynomial(map(LinearAlgebra.transpose, terms(p))) + LinearAlgebra.dot(p1::AbstractPolynomialLike, p2::AbstractPolynomialLike) = p1' * p2 LinearAlgebra.dot(x, p::AbstractPolynomialLike) = x' * p LinearAlgebra.dot(p::AbstractPolynomialLike, x) = p' * x diff --git a/test/monomial.jl b/test/monomial.jl index b1bf963a..8407aa86 100644 --- a/test/monomial.jl +++ b/test/monomial.jl @@ -46,4 +46,9 @@ const MP = MultivariatePolynomials @test monic(x^2) == x^2 @test MP._div(2x^2*y[1]^3, x*y[1]^2) == 2x*y[1] + + @test transpose(x) == x + @test adjoint(x) == x + @test transpose(x^2) == x^2 + @test adjoint(x^2) == x^2 end diff --git a/test/polynomial.jl b/test/polynomial.jl index 38ba5146..c460fcc8 100644 --- a/test/polynomial.jl +++ b/test/polynomial.jl @@ -104,6 +104,8 @@ const MP = MultivariatePolynomials end @test (x + y)' == x + y + @test transpose(x + y) == x + y + @test transpose([1 2; 3 4] * x) == [1 3; 2 4] * x @test removemonomials(4x^2*y + x*y + 2x, [x*y]) == 4x^2*y + 2x