Skip to content

Commit e4737e2

Browse files
authored
Implement explicit_basis_covering for same basis (#48)
* Implement explicit_basis_covering for same basis * Fix format
1 parent 67ae0a6 commit e4737e2

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/monomial.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ function Base.getindex(basis::SubBasis{B,M}, value::Polynomial{B,M}) where {B,M}
6464
return mono
6565
end
6666

67+
function explicit_basis_covering(::FullBasis{B}, target::SubBasis{B}) where {B}
68+
return SubBasis{B}(target.monomials)
69+
end
70+
6771
const MonomialIndexedBasis{B,M} = Union{SubBasis{B,M},FullBasis{B,M}}
6872

6973
MP.monomial_type(::Type{<:SubBasis{B,M}}) where {B,M} = M
@@ -295,6 +299,14 @@ function explicit_basis_covering(
295299
return SubBasis{B}(target.monomials)
296300
end
297301

302+
# To break ambiguity
303+
function explicit_basis_covering(
304+
::FullBasis{B},
305+
target::SubBasis{B},
306+
) where {B<:AbstractMonomial}
307+
return SubBasis{B}(target.monomials)
308+
end
309+
298310
function Base.adjoint(p::Polynomial{B}) where {B<:AbstractMonomialIndexed}
299311
return Polynomial{B}(adjoint(p.monomial))
300312
end

test/runtests.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ function api_test(B::Type{<:MB.AbstractMonomialIndexed}, degree)
5656
full_basis,
5757
MB.SubBasis{ScaledMonomial}(monomials(x, 0:degree)),
5858
),
59+
explicit_basis_covering(
60+
full_basis,
61+
MB.SubBasis{B}(monomials(x, 0:degree)),
62+
),
5963
]
6064
_test_basis(basis)
6165
@test basis isa MB.explicit_basis_type(typeof(full_basis))

0 commit comments

Comments
 (0)