-
-
Notifications
You must be signed in to change notification settings - Fork 35
Fix copy for partly initialized unit triangular #1350
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #1350 +/- ##
==========================================
+ Coverage 93.12% 93.75% +0.62%
==========================================
Files 34 34
Lines 16705 15761 -944
==========================================
- Hits 15557 14776 -781
+ Misses 1148 985 -163 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just one minor comment, otherwise LGTM.
Currently, we forward copy for unit triangular matrices to the parents.
This also copies the diagonal, which may not be initialized in the
parent. This PR fixes this.
After this, the following works again
```julia
julia> M = Matrix{BigFloat}(undef,2,2);
julia> M[2,1] = 3;
julia> M'
2×2 adjoint(::Matrix{BigFloat}) with eltype BigFloat:
#undef 3.0
#undef #undef
julia> U = UnitUpperTriangular(M')
2×2 UnitUpperTriangular{BigFloat, Adjoint{BigFloat, Matrix{BigFloat}}}:
1.0 3.0
⋅ 1.0
julia> copyto!(similar(M), U)
2×2 Matrix{BigFloat}:
1.0 3.0
0.0 1.0
```
After this, scaling unit triangular matrices with parents that don't
have the diagonal initialized works.
```julia
julia> M = Matrix{BigFloat}(undef,2,2);
julia> M[1,2] = 3;
julia> U = UnitUpperTriangular(M)
2×2 UnitUpperTriangular{BigFloat, Matrix{BigFloat}}:
1.0 3.0
⋅ 1.0
julia> U * 2
2×2 UpperTriangular{BigFloat, Matrix{BigFloat}}:
2.0 6.0
⋅ 2.0
```
Probably needs #1350
for tests to pass.
Backported PRs: - [x] #1209 <!-- Remove `LinearAlgebra` qualifications in `cholesky.jl` --> - [x] #1230 <!-- Avoid materializing `diag` in `Diagonal` `kron` --> - [x] #1240 <!-- Reduce `stable_muladdmul` branches in `generic matvecmul!` --> - [x] #1247 <!-- fix dispatch to herk --> - [x] #1255 <!-- use smaller matrix size in `peakflops` on 32-bit --> - [x] #1310 <!-- Only `@noinline` error path in `matmul_size_check` --> - [x] #1267 <!-- Refine column ranges in `_isbanded_impl` --> - [x] #1320 <!-- Copy matrices in `triu`/`tril` if no zero exists for the `eltype` --> - [x] #1324 <!-- Fix empty `Tridiagonal` broadcast --> - [x] #1327 <!-- `iszero` check in hessenberg setindex --> - [x] #1326 <!-- Fix multiplication with empty `HessenbergQ` --> - [x] #1332 <!-- Unwrap triangular matrices in broadcast --> - [x] #1337 <!-- Change `1:size` to `axes` in bidiag mul --> - [x] #1342 <!-- `Char` uplo in `Bidiagonal` constructor --> - [x] #1344 <!-- Update the docstring of ldiv! --> - [x] #1335 <!-- Test: prune old LA based on ENV variable --> - [x] #1346 <!-- Fix scaling unit triangular matrices --> - [x] #1355 <!-- Add compat notice for `diagview` --> - [x] #1349 <!-- Prune `LinearAlgebra` module in ambiguity test --> Contains multiple commits, manual intervention needed: - [x] #1238 <!-- Ensure positive-definite matrix in lapack posv test --> - [x] #1298 <!-- Add `diagm` example --> - [x] #1312 <!-- WIP: Try use method deletion instead of custom sysimage --> - [x] #1333 <!-- Make `fillstored!` public --> - [x] #1331 <!-- Document SingularException throw for inv(::AbstractMatrix) --> - [x] #1350 <!-- Fix copy for partly initialized unit triangular --> Non-merged PRs with backport label: - [x] #1352 <!-- log for dense diagonal matrix with negative elements --> - [ ] #1305 <!-- Bounds-checking in triangular indexing branches --> --------- Co-authored-by: Mateus Araújo <[email protected]> Co-authored-by: Jeff Bezanson <[email protected]> Co-authored-by: Steven G. Johnson <[email protected]> Co-authored-by: WalterMadelim <[email protected]> Co-authored-by: Kristoffer Carlsson <[email protected]> Co-authored-by: Daniel Karrasch <[email protected]> Co-authored-by: Michael Abbott <[email protected]>
Currently, we forward copy for unit triangular matrices to the parents. This also copies the diagonal, which may not be initialized in the parent. This PR fixes this.
After this, the following works again