Skip to content

Commit b6fa0b4

Browse files
authored
Add extension for PDMats (#303)
* Add extension for PDMats * Fix typo * Make PDMats a dependency on Julia < 1.9 * Revert changes to Aqua tests * Fix imports
1 parent 1be2e11 commit b6fa0b4

File tree

4 files changed

+32
-4
lines changed

4 files changed

+32
-4
lines changed

Project.toml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,29 @@
11
name = "FillArrays"
22
uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
3-
version = "1.7.0"
3+
version = "1.8.0"
44

55
[deps]
66
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
7+
PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150"
78
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
89
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
910
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
1011

1112
[weakdeps]
13+
PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150"
1214
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
1315
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
1416

1517
[extensions]
18+
FillArraysPDMatsExt = "PDMats"
1619
FillArraysSparseArraysExt = "SparseArrays"
1720
FillArraysStatisticsExt = "Statistics"
1821

1922
[compat]
2023
Aqua = "0.8"
2124
Base64 = "1.6"
2225
LinearAlgebra = "1.6"
26+
PDMats = "0.11.17"
2327
Random = "1.6"
2428
ReverseDiff = "1"
2529
SparseArrays = "1.6"
@@ -31,11 +35,12 @@ julia = "1.6"
3135
[extras]
3236
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
3337
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
38+
PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150"
3439
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
3540
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
3641
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
3742
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
3843
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
3944

4045
[targets]
41-
test = ["Aqua", "Test", "Base64", "ReverseDiff", "SparseArrays", "StaticArrays", "Statistics"]
46+
test = ["Aqua", "Test", "Base64", "PDMats", "ReverseDiff", "SparseArrays", "StaticArrays", "Statistics"]

ext/FillArraysPDMatsExt.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module FillArraysPDMatsExt
2+
3+
import FillArrays
4+
import FillArrays.LinearAlgebra
5+
import PDMats
6+
7+
function PDMats.AbstractPDMat(a::LinearAlgebra.Diagonal{T,<:FillArrays.AbstractFill{T,1}}) where {T<:Real}
8+
dim = size(a, 1)
9+
return PDMats.ScalMat(dim, FillArrays.getindex_value(a.diag))
10+
end
11+
12+
end # module

src/FillArrays.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,8 @@ include("fillalgebra.jl")
669669
include("fillbroadcast.jl")
670670
include("trues.jl")
671671

672-
@static if !isdefined(Base, :get_extension)
672+
if !isdefined(Base, :get_extension)
673+
include("../ext/FillArraysPDMatsExt.jl")
673674
include("../ext/FillArraysSparseArraysExt.jl")
674675
include("../ext/FillArraysStatisticsExt.jl")
675676
end

test/runtests.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using FillArrays, LinearAlgebra, SparseArrays, StaticArrays, ReverseDiff, Random, Base64, Test, Statistics
1+
using FillArrays, LinearAlgebra, PDMats, SparseArrays, StaticArrays, ReverseDiff, Random, Base64, Test, Statistics
22
import FillArrays: AbstractFill, RectDiagonal, SquareEye
33

44
using Aqua
@@ -2193,3 +2193,13 @@ end
21932193
@test ReverseDiff.gradient(x -> sum(abs2.((Zeros{eltype(x)}(5) .+ zeros(5)) ./ x)), rand(5)) == zeros(5)
21942194
@test ReverseDiff.gradient(x -> sum(abs2.((zeros(5) .+ Zeros{eltype(x)}(5)) ./ x)), rand(5)) == zeros(5)
21952195
end
2196+
2197+
@testset "FillArraysPDMatsExt" begin
2198+
for diag in (Ones(5), Fill(4.1, 8))
2199+
a = @inferred(AbstractPDMat(Diagonal(diag)))
2200+
@test a isa ScalMat
2201+
@test a.dim == length(diag)
2202+
@test a.value == first(diag)
2203+
end
2204+
end
2205+

0 commit comments

Comments
 (0)