{"id":20500565,"url":"https://github.com/juliaapproximation/recurrencerelationshiparrays.jl","last_synced_at":"2026-02-10T15:06:04.333Z","repository":{"id":252932485,"uuid":"841935907","full_name":"JuliaApproximation/RecurrenceRelationshipArrays.jl","owner":"JuliaApproximation","description":"A Julia package for caching solutions to recurrence relationships","archived":false,"fork":false,"pushed_at":"2025-01-07T20:52:20.000Z","size":44,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-06T06:06:57.973Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JuliaApproximation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-13T10:44:09.000Z","updated_at":"2025-01-07T21:13:21.000Z","dependencies_parsed_at":"2024-11-15T18:22:42.217Z","dependency_job_id":"24aca575-38f3-4750-8506-bc9e3efe8332","html_url":"https://github.com/JuliaApproximation/RecurrenceRelationshipArrays.jl","commit_stats":null,"previous_names":["juliaapproximation/recurrencerelationshiparrays.jl"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FRecurrenceRelationshipArrays.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FRecurrenceRelationshipArrays.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FRecurrenceRelationshipArrays.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FRecurrenceRelationshipArrays.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JuliaApproximation","download_url":"https://codeload.github.com/JuliaApproximation/RecurrenceRelationshipArrays.jl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FRecurrenceRelationshipArrays.jl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":258354015,"owners_count":22687536,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T18:21:35.362Z","updated_at":"2026-02-10T15:06:02.240Z","avatar_url":"https://github.com/JuliaApproximation.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RecurrenceRelationshipArrays.jl\nA Julia package for caching solutions to recurrence relationships\n\n\nThis package implements arrays associated with recurrence relationships\nas implemented in [RecurrenceRelationships.jl](https://github.com/JuliaApproximation/RecurrenceRelationships.jl). \n\n# Matrix-valued Clenshaw\n\nWe can\nconstruct multiplication matrices associated with orthogonal polynomials using `Clenshaw`. The follow represents multiplication by $U_0(x) + 2U_1(x) + 3U_2(x)$ acting on a Chebyshev-U expansion:\n```julia\njulia\u003e using RecurrenceRelationshipArrays, FillArrays, InfiniteArrays\n\njulia\u003e X = SymTridiagonal(Fill(0.0,∞), Fill(1/2,∞)) # Jacobi matrix associated with Chebyshev U\nℵ₀×ℵ₀ SymTridiagonal{Float64, Fill{Float64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}} with indices OneToInf()×OneToInf():\n 0.0  0.5   ⋅    ⋅    ⋅    ⋅    ⋅    ⋅   …  \n 0.5  0.0  0.5   ⋅    ⋅    ⋅    ⋅    ⋅      \n  ⋅   0.5  0.0  0.5   ⋅    ⋅    ⋅    ⋅      \n  ⋅    ⋅   0.5  0.0  0.5   ⋅    ⋅    ⋅      \n  ⋅    ⋅    ⋅   0.5  0.0  0.5   ⋅    ⋅      \n  ⋅    ⋅    ⋅    ⋅   0.5  0.0  0.5   ⋅   …  \n  ⋅    ⋅    ⋅    ⋅    ⋅   0.5  0.0  0.5     \n ⋮                        ⋮              ⋱  \n\njulia\u003e rec_U = Fill(2,∞), Zeros{Int}(∞), Ones{Int}(∞); # recurrence coefficients for Chebyshev U\n\njulia\u003e Clenshaw([1,2,3], rec_U..., X)\nℵ₀×ℵ₀ Clenshaw{Float64} with 3 degree polynomial:\n 1.0  2.0  3.0   ⋅    ⋅    ⋅    ⋅    ⋅   …  \n 2.0  4.0  2.0  3.0   ⋅    ⋅    ⋅    ⋅      \n 3.0  2.0  4.0  2.0  3.0   ⋅    ⋅    ⋅      \n  ⋅   3.0  2.0  4.0  2.0  3.0   ⋅    ⋅      \n  ⋅    ⋅   3.0  2.0  4.0  2.0  3.0   ⋅      \n  ⋅    ⋅    ⋅   3.0  2.0  4.0  2.0  3.0  …  \n  ⋅    ⋅    ⋅    ⋅   3.0  2.0  4.0  2.0     \n ⋮                        ⋮              ⋱  \n```\n\n\n# Minimal solutions to 3-term recurrences\n\nThe type `RecurrenceArray` allows us to represent a minimal solution\nof a recurrence relationship, i.e., the Stieltjes transform of the orthogonal polynomials. \nThis automatically combines forward and backward recurrence, and so will also will work on the support of the measure. Here is a simple example:\n```julia\njulia\u003e z = 1.0001; # point close to the support\n\njulia\u003e ξ = inv(z + sign(z)sqrt(z^2-1)); # exact formula for Stieltjes transform of sqrt(1-x^2). The next term is ξ^2.\n\njulia\u003e r = RecurrenceArray(z, rec_U, [ξ,ξ^2])\nℵ₀-element RecurrenceArray{Float64, 1, Float64, Fill{Int64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}, Zeros{Int64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}, Ones{Int64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}} with indices OneToInf():\n 0.9859575108273005\n 0.9721122131567664\n 0.9584613379288637\n 0.9450021549685467\n 0.9317319724392233\n 0.9186481363043878\n 0.9057480297968131\n ⋮\n\njulia\u003e z = [0.1+0im, 1.0001, 10.0]; # can evaluate at multiple points\n\njulia\u003e ξ = @. inv(z + sign(z)sqrt(z^2-1));\n\njulia\u003e RecurrenceArray(z, rec_U, [ξ'; ξ'.^2])\nℵ₀×3 RecurrenceArray{ComplexF64, 2, Vector{ComplexF64}, Fill{Int64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}, Zeros{Int64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}, Ones{Int64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}} with indices OneToInf()×Base.OneTo(3):\n       0.1+0.994987im  0.985958+0.0im    0.0501256+0.0im\n     -0.98+0.198997im  0.972112+0.0im   0.00251258+0.0im\n    -0.296-0.955188im  0.958461+0.0im  0.000125945-0.0im\n    0.9208-0.390035im  0.945002+0.0im   6.31305e-6-0.0im\n   0.48016+0.877181im  0.931732+0.0im   3.16446e-7+0.0im\n -0.824768+0.565471im  0.918648+0.0im    1.5862e-8-0.0im\n -0.645114-0.764087im  0.905748+0.0im  7.95095e-10-0.0im\n          ⋮                            \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliaapproximation%2Frecurrencerelationshiparrays.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliaapproximation%2Frecurrencerelationshiparrays.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliaapproximation%2Frecurrencerelationshiparrays.jl/lists"}