Skip to content

Commit

Permalink
Add QuotientBasis
Browse files Browse the repository at this point in the history
  • Loading branch information
blegat committed May 24, 2024
1 parent e393c55 commit 98bafd6
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
1 change: 1 addition & 0 deletions src/MultivariateBases.jl
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,6 @@ include("hermite.jl")
include("laguerre.jl")
include("legendre.jl")
include("chebyshev.jl")
include("quotient.jl")

end # module
9 changes: 6 additions & 3 deletions src/monomial.jl
Original file line number Diff line number Diff line change
Expand Up @@ -265,12 +265,15 @@ function MP.polynomial(Q::AbstractMatrix, mb::SubBasis{Monomial}, T::Type)
return MP.polynomial(Q, mb.monomials, T)
end

function MP.coefficients(p, basis::SubBasis{Monomial})
function MP.coefficients(
p::MP.AbstractPolynomialLike,
basis::SubBasis{Monomial},
)
return MP.coefficients(p, basis.monomials)
end

function MP.coefficients(p, ::FullBasis{Monomial})
return MP.coefficients(p)
function MP.coefficients(p::MP.AbstractPolynomialLike, ::FullBasis{Monomial})
return p
end

# Overload some of the `MP` interface for convenience
Expand Down
10 changes: 10 additions & 0 deletions src/quotient.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
struct QuotientBasis{T,I,B<:SA.AbstractBasis{T,I},D} <: SA.ExplicitBasis{T,I}
basis::B
divisor::D
end

Base.length(basis::QuotientBasis) = length(basis.basis)

function MP.coefficients(p, basis::QuotientBasis)
return MP.coefficients(rem(p, basis.divisor), basis.basis)
end

0 comments on commit 98bafd6

Please sign in to comment.