MultivariatePolynomials.jl icon indicating copy to clipboard operation
MultivariatePolynomials.jl copied to clipboard

Compatibility with OffsetMatrix?

Open NAThompson opened this issue 1 year ago • 1 comments

In Polynomials.jl, we can use an OffsetArray to easily construct Laurent polynomials:

julia> using OffsetArrays
julia> using Polynomials
julia> o = OffsetArrays{Float64}(ones(5), -1:3)
julia> p = LaurentPolynomial(o)
LaurentPolynomial(1.0*x⁻¹ + 1.0 + 1.0*x + 1.0*x² + 1.0*x³)

However, I cannot do the same for an OffsetMatrix with MultivariatePolynomials. Reading through the documentation, it appears the this library is more focuses on very sophisticated manipulations on polynomials that you could type out by hand, rather than large polynomials whose coefficients are stored in a matrix-so hopefully this issue is not too annoying. However, I felt like it might be natural to type something like the following, as well as increase compatibility with the univariate case:

julia> using OffsetArrays
julia> using MultivariatePolynomials
julia> o = OffsetMatrix{Float64}(ones(5), ones(5), -1:1, -1:1)
julia> p = MultivariateLaurentPolynomial(o, x, y)
MultivariateLaurentPolynomial(1.0*x⁻¹ y⁻¹ + 1.0x⁻¹ + 1.0*y⁻¹ + 1.0 + 1.0*x + 1.0*y + 1.0*xy)

NAThompson avatar Apr 20 '24 21:04 NAThompson

Negative exponents is currently not supported in this package, e.g., it will make printing fail but it's probably not too hard to add support for it. Then you could easily do sum(o[i, j] * x[i] * y[j] for i in axes(o, 1), j in axes(o, 2))

blegat avatar Apr 23 '24 10:04 blegat