Closed devmotion closed 10 months ago
All modified lines are covered by tests :white_check_mark:
Files | Coverage Δ | |
---|---|---|
ext/PDMatsFillArraysExt.jl | 100.00% <100.00%> (ø) |
|
src/PDMats.jl | 100.00% <ø> (ø) |
:loudspeaker: Thoughts on this report? Let us know!.
Closing since FillArrays would increase loading times significantly: https://github.com/JuliaStats/PDMats.jl/pull/182#issuecomment-1736061820
This PR adds FillArrays as a weak dependency on Julia >= 1.9 and as a proper dependency on Julia < 1.9 (the latter might not be completely desirable, see https://github.com/JuliaStats/PDMats.jl/pull/182#issuecomment-1736061820, and alternatives would be to use Requires or reduce features on older Julia versions).
Currently, the only method in the extension is a definition of
AbstractPDMat
forDiagonal
matrices with anFillArray
as diagonal. This is motivated by the constructors ofMvNormal
in Distributions in https://github.com/JuliaStats/Distributions.jl/blob/87aebc29b2b9608801b70aae09fbc1d2dad56e3f/src/multivariate/mvnormal.jl#L201-L210: With the definition in this PR they could be simplified toThis pattern is more generally useful, I imagine: Downstream packages that deal with pd matrices could be encouraged to use
AbstractPDMat(...)
for converting user-provided matrices to an optimized representation. The PR here adds such optimizations also forDiagonal
withFillArray
s as diagonal.This is an alternative to #184 that keeps support for Julia 1.0. The issues with
Pkg.test
(incompatibilities of test dependencies with already installed package dependencies) can be avoided by enforcing the use of FillArrays 0.10 on Julia 1.0. Julia 1.0 is also supported by FillArrays 0.11 and 0.12 and hence I added them to the compat entry as well; however, the test dependencies BandedMatrices and ArrayLayouts can't be installed together with these more recent versions on Julia 1.0, hence I explicitly downgraded FillArrays to 0.10 in CI on Julia 1.0.