Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,5 @@ jobs:
- uses: julia-actions/julia-processcoverage@v1
- uses: codecov/codecov-action@v5
with:
file: lcov.info
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
file: lcov.info
4 changes: 2 additions & 2 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "ContinuumArrays"
uuid = "7ae1f121-cc2c-504b-ac30-9b923412ae5c"
version = "0.19.4"
version = "0.19.5"

[deps]
AbstractFFTs = "621f4979-c628-5d54-868e-fcf4e3e8185c"
Expand Down Expand Up @@ -38,7 +38,7 @@ Infinities = "0.1"
IntervalSets = "0.7"
LazyArrays = "2"
Makie = "0.20, 0.21, 0.22, 0.24"
QuasiArrays = "0.12"
QuasiArrays = "0.12.2"
RecipesBase = "1.0"
StaticArrays = "1.0"
julia = "1.10"
Expand Down
24 changes: 13 additions & 11 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,38 +68,40 @@ plotgrid
```@docs
ContinuumArrays.TransformFactorization
```

```@docs
ContinuumArrays.AbstractConcatBasis
```
```@docs
ContinuumArrays.MulPlan
ContinuumArrays.basis
```
```@docs
ContinuumArrays.PiecewiseBasis
ContinuumArrays.HvcatBasis
```
```@docs
ContinuumArrays.Map
ContinuumArrays.InvPlan
```
```@docs
ContinuumArrays.MappedFactorization
ContinuumArrays.KronExpansionLayout
```
```@docs
ContinuumArrays.basis
ContinuumArrays.Map
```
```@docs
ContinuumArrays.InvPlan
ContinuumArrays.MappedFactorization
```
```@docs
ContinuumArrays.VcatBasis
ContinuumArrays.MulPlan
```
```@docs
ContinuumArrays.WeightedFactorization
ContinuumArrays.PiecewiseBasis
```
```@docs
ContinuumArrays.HvcatBasis
ContinuumArrays.ProjectionFactorization
```
```@docs
ContinuumArrays.ProjectionFactorization
ContinuumArrays.VcatBasis
```
```@docs
ContinuumArrays.WeightedFactorization
```

2 changes: 1 addition & 1 deletion src/ContinuumArrays.jl
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import QuasiArrays: cardinality, checkindex, QuasiAdjoint, QuasiTranspose, Inclu
ApplyQuasiArray, ApplyQuasiMatrix, LazyQuasiArrayApplyStyle, AbstractQuasiArrayApplyStyle, AbstractQuasiLazyLayout,
LazyQuasiArray, LazyQuasiVector, LazyQuasiMatrix, LazyLayout, LazyQuasiArrayStyle, _factorize, _cutdim,
AbstractQuasiFill, UnionDomain, sum_size, sum_layout, _cumsum, cumsum_layout, applylayout, equals_layout, layout_broadcasted, PolynomialLayout, dot_size,
diff_layout, diff_size, AbstractQuasiVecOrMat
diff_layout, diff_size, AbstractQuasiVecOrMat, vec_layout
import InfiniteArrays: Infinity, InfAxes
import AbstractFFTs: Plan

Expand Down
11 changes: 11 additions & 0 deletions src/bases/bases.jl
Original file line number Diff line number Diff line change
Expand Up @@ -793,6 +793,17 @@ function copy(M::Mul{<:AdjointMappedBasisLayouts, <:MappedBasisLayouts})
end


#######
# reshape/vec
#######

function vec_layout(::ExpansionLayout, f)
P,c = basis(f), coefficients(f)
@assert isone(size(c,2))
P * vec(c)
end



include("basisconcat.jl")
include("basiskron.jl")
Expand Down
12 changes: 11 additions & 1 deletion src/bases/basiskron.jl
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
struct KronBasisLayout <: AbstractBasisLayout end

QuasiArrays.kronlayout(::AbstractBasisLayout...) = KronBasisLayout()
QuasiArrays.kronlayout(::AbstractBasisLayout...) = KronBasisLayout()

"""
KronExpansionLayout
is a MemoryLayout corresponding to a quasi-matrix corresponding to the 2D expansion K[x,y] == A[x]*X*B[y]'
"""
struct KronExpansionLayout{LayA, LayB} <: AbstractLazyLayout end
applylayout(::Type{typeof(*)}, ::LayA, ::CoefficientLayouts, ::AdjointBasisLayout{LayB}) where {LayA <: AbstractBasisLayout, LayB <: AbstractBasisLayout} = KronExpansionLayout{LayA,LayB}()
sublayout(::KronExpansionLayout, inds) = sublayout(ApplyLayout{typeof(*)}(), inds)
sum_layout(::KronExpansionLayout, F, dims...) = sum_layout(ApplyLayout{typeof(*)}(), F, dims...)
1 change: 1 addition & 0 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ end
include("test_splines.jl")
include("test_chebyshev.jl")
include("test_basisconcat.jl")
include("test_basiskron.jl")

@testset "Grids/values" begin
L = LinearSpline(1:5)
Expand Down
12 changes: 11 additions & 1 deletion test/test_basiskron.jl
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@ using ContinuumArrays, QuasiArrays, StaticArrays, Test

xy = axes(K,1)
f = xy -> ((x,y) = xy; exp(x*cos(y)))
K \ f.(xy)
@test_broken K \ f.(xy)
end

@testset "KronExpansion" begin
L = LinearSpline(range(0,1; length=4))
C = reshape(Vector(1:16), 4, 4)
F = L * C * L'
@test sum(F) ≈ 8.5
@test sum(F; dims=1)[1,0.1] ≈ 3.7
@test sum(F; dims=2)[0.1,1] ≈ 7.3

@test F[0.1,:][0.2] ≈ F[:,0.2][0.1] ≈ F[0.1,0.2]
end
6 changes: 6 additions & 0 deletions test/test_splines.jl
Original file line number Diff line number Diff line change
Expand Up @@ -654,4 +654,10 @@ import ContinuumArrays: basis, AdjointBasisLayout, ExpansionLayout, BasisLayout,
f = x -> abs(x) ≤ 1 ? 1 : "hi"
@test expand(L,f)[0.1] ≈ 1
end

@testset "vec" begin
L = LinearSpline([-1,0,1])
F = L * randn(3,1)
@test vec(F)[0.1] == F[0.1,1]
end
end
Loading