Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: JuliaSparse/SparseArrays.jl
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: JuliaSparse/SparseArrays.jl
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: release-1.12
Choose a head ref
  • 12 commits
  • 9 files changed
  • 7 contributors

Commits on May 11, 2025

  1. Fix issymmetric for matrices with empty columns (#606)

    The `issymmetric` check tracks an `offset` that it uses to go from (row,
    col) to (col, row). However, currently this doesn't account for the fact
    that if a column is empty, entries in `colptr` will be identical. E.g.,
    in #605, we have
    ```julia
    julia> S = sparse([2, 3, 1], [1, 1, 3], [1, 1, 1], 3, 3)
    3×3 SparseMatrixCSC{Int64, Int64} with 3 stored entries:
     ⋅  ⋅  1
     1  ⋅  ⋅
     1  ⋅  ⋅
    
    julia> SparseArrays.getcolptr(S)
    4-element Vector{Int64}:
     1
     3
     3
     4
    ```
    The offset `3` corresponds to rows in the third column, as the second
    column is empty. This PR checks for empty columns, in which case we may
    exit the call immediately.
    
    Fixes #605
    jishnub authored and dkarrasch committed May 11, 2025
    Configuration menu
    Copy the full SHA
    7ec2889 View commit details
    Browse the repository at this point in the history
  2. Replace v == zero(v) with _iszero (#610)

    The purpose of this PR is to not call `==` directly, and use `_iszero`
    instead. This is to help integration with
    [IntervalArithmetic.jl](https://github.com/JuliaIntervals/IntervalArithmetic.jl)
    since `==` for our `Interval` type does not always return a Boolean.
    
    Closes #609.
    
    I did not change two checks using `===` since this would break the
    behaviour for `-0.0`.
    OlivierHnt authored and dkarrasch committed May 11, 2025
    Configuration menu
    Copy the full SHA
    08a15ca View commit details
    Browse the repository at this point in the history
  3. ldiv! for Diagonal and a sparse vector (#613)

    This improves performance:
    ```julia
    julia> using LinearAlgebra, SparseArrays
    
    julia> D = Diagonal(rand(3000));
    
    julia> S = sprand(size(D,1), 0.01);
    
    julia> @Btime ldiv!($D, $S);
      30.053 μs (0 allocations: 0 bytes) # master
      1.585 μs (0 allocations: 0 bytes) # PR
    ```
    jishnub authored and dkarrasch committed May 11, 2025
    Configuration menu
    Copy the full SHA
    2ae8768 View commit details
    Browse the repository at this point in the history
  4. Relax eltype in Diagonal ldiv!/rdiv! (#616)

    These methods do not require the `eltype`s to match exactly, and should
    work as long as the values may be stored in the destination.
    jishnub authored and dkarrasch committed May 11, 2025
    Configuration menu
    Copy the full SHA
    66d65cc View commit details
    Browse the repository at this point in the history
  5. Use libsuitesparseconfig from JLL (#620)

    This prevents us from being influenced by things like `LD_LIBRARY_PATH`,
    and ensures that we always load the correct `libsuitesparseconfig` that
    came with our JLL.
    staticfloat authored and dkarrasch committed May 11, 2025
    Configuration menu
    Copy the full SHA
    b38f273 View commit details
    Browse the repository at this point in the history
  6. Clarify pros, cons and limitations of Cholesky and LDLt (#621)

    I find it worth pointing out explicitly in the docs that LDLt, which
    mathematically looks like a drop-in replacement for Cholesky that does
    away with the positive definiteness requirement, comes with the
    following caveats:
    
    * It fails for a lot of matrices (for example,
    `ldlt(Symmetric(sprandn(1000, 1000, p)))` basically never succeeds for
    any relevant sparsity `p`) due to the requirement that all leading
    principal minors be well-conditioned
    * In CHOLMOD, `ldlt` is significantly slower than `cholesky` as it does
    not have a supernodal implementation
    
    So I made some docstring edits to clarify the relationship and tradeoffs
    between `cholesky` and `ldlt`.
    
    Citation for these claims: pages 106-107 in the CHOLMOD user guide at
    https://github.com/DrTimothyAldenDavis/SuiteSparse/blob/v7.10.3/CHOLMOD/Doc/CHOLMOD_UserGuide.pdf
    danielwe authored and dkarrasch committed May 11, 2025
    Configuration menu
    Copy the full SHA
    e1817e8 View commit details
    Browse the repository at this point in the history
  7. Backports for v1.12 (#624)

    dkarrasch authored May 11, 2025
    Configuration menu
    Copy the full SHA
    d1b0cd0 View commit details
    Browse the repository at this point in the history

Commits on Jun 11, 2025

  1. Configuration menu
    Copy the full SHA
    fa9736c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f51dace View commit details
    Browse the repository at this point in the history
  3. fix libsuitesparseconfig bug

    (cherry picked from commit 75eaa18, PR #625)
    IanButterworth authored and fredrikekre committed Jun 11, 2025
    Configuration menu
    Copy the full SHA
    d921308 View commit details
    Browse the repository at this point in the history
  4. [release-1.12] Run CI with Julia 1.12 (#635)

    Run CI with Julia 1.12 on the release-1.12 branch and backport #625.
    fredrikekre authored Jun 11, 2025
    Configuration menu
    Copy the full SHA
    415bc9e View commit details
    Browse the repository at this point in the history
  5. Delete lock interface implementation from UmfpackLU (#617)

    (cherry picked from commit 70921fb, PR #617)
    fredrikekre committed Jun 11, 2025
    Configuration menu
    Copy the full SHA
    cdbad55 View commit details
    Browse the repository at this point in the history
Loading