Skip to content

Commit a5767f7

Browse files
Rik Huijzerdlfivefifty
andauthored
Switch to _copy_oftype (#88)
* Change to _copy_oftype With this, tests still pass on Julia 1.7.2. It doesn't fix 1.8-beta1 yet because there is some other problem too. * Add StableRNGs * 1.5 -> 1.6 * Require Julia v1.6 * Update test_muladd.jl * Fix typo (fix broken test) * Fix another test by allowing minor differences * tests pass Co-authored-by: Sheehan Olver <[email protected]>
1 parent 11aa76e commit a5767f7

File tree

9 files changed

+104
-72
lines changed

9 files changed

+104
-72
lines changed

.github/workflows/ci.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
name: CI
22
on:
3-
- push
4-
- pull_request
3+
push:
4+
branches:
5+
- master
6+
pull_request:
57
jobs:
68
test:
79
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
@@ -10,9 +12,9 @@ jobs:
1012
fail-fast: false
1113
matrix:
1214
version:
13-
- '1.5'
15+
- '1.6'
1416
- '1'
15-
- '^1.7.0-0'
17+
- '^1.8.0-0'
1618
os:
1719
- ubuntu-latest
1820
- macOS-latest
@@ -62,4 +64,4 @@ jobs:
6264
- run: julia --project=docs docs/make.jl
6365
env:
6466
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
65-
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }}
67+
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }}

Project.toml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
name = "ArrayLayouts"
22
uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "0.7.10"
4+
version = "0.8"
55

66
[deps]
77
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"
88
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
99
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
1010

1111
[compat]
12-
FillArrays = "0.12.6, 0.13"
13-
julia = "1.5"
12+
FillArrays = "0.13.1"
13+
julia = "1.6"
1414

1515
[extras]
1616
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
1717
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"
1818
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
19+
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
1920
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
2021

2122
[targets]
22-
test = ["Test", "Random", "Base64", "Compat"]
23+
test = ["Base64", "Compat", "Random", "StableRNGs", "Test"]

src/ArrayLayouts.jl

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import Base: AbstractArray, AbstractMatrix, AbstractVector,
2222
AbstractMatrix, AbstractArray, checkindex, unsafe_length, OneTo, one, zero,
2323
to_shape, _sub2ind, print_matrix, print_matrix_row, print_matrix_vdots,
2424
checkindex, Slice, @propagate_inbounds, @_propagate_inbounds_meta,
25-
_in_range, _range, _rangestyle, Ordered,
25+
_in_range, _range, Ordered,
2626
ArithmeticWraps, floatrange, reverse, unitrange_last,
2727
AbstractArray, AbstractVector, axes, (:), _sub2ind_recurse, broadcast, promote_eltypeof,
2828
similar, @_gc_preserve_end, @_gc_preserve_begin,
@@ -35,12 +35,12 @@ import Base.Broadcast: BroadcastStyle, AbstractArrayStyle, Broadcasted, broadcas
3535
materialize!, eltypes
3636

3737
import LinearAlgebra: AbstractTriangular, AbstractQ, checksquare, pinv, fill!, tilebufsize, factorize, qr, lu, cholesky,
38-
norm2, norm1, normInf, normMinusInf, qr, lu, qr!, lu!, AdjOrTrans, HermOrSym, copy_oftype,
39-
AdjointAbsVec, TransposeAbsVec, cholcopy, checknonsingular, _apply_ipiv_rows!, ipiv2perm, RealHermSymComplexHerm, chkfullrank
38+
norm2, norm1, normInf, normMinusInf, qr, lu, qr!, lu!, AdjOrTrans, HermOrSym, AdjointAbsVec,
39+
TransposeAbsVec, cholcopy, checknonsingular, _apply_ipiv_rows!, ipiv2perm, RealHermSymComplexHerm, chkfullrank
4040

4141
import LinearAlgebra.BLAS: BlasFloat, BlasReal, BlasComplex
4242

43-
import FillArrays: AbstractFill, getindex_value, axes_print_matrix_row
43+
import FillArrays: AbstractFill, getindex_value, axes_print_matrix_row, _copy_oftype
4444

4545
import Base: require_one_based_indexing
4646

@@ -58,6 +58,14 @@ if VERSION < v"1.7-"
5858
const RowMaximum = Val{true}
5959
const NoPivot = Val{false}
6060
end
61+
62+
if VERSION < v"1.8-"
63+
const CRowMaximum = Val{true}
64+
const CNoPivot = Val{false}
65+
else
66+
const CRowMaximum = RowMaximum
67+
const CNoPivot = NoPivot
68+
end
6169

6270

6371
struct ApplyBroadcastStyle <: BroadcastStyle end
@@ -81,7 +89,9 @@ strides(A::Transpose) = _transpose_strides(strides(parent(A))...)
8189
"""
8290
ConjPtr{T}
8391
84-
represents that the entry is the complex-conjugate of the pointed to entry.
92+
A memory address referring to complex conjugated data of type T. However, there is no guarantee
93+
that the memory is actually valid, or that it actually represents the complex conjugate of data of
94+
the specified type.
8595
"""
8696
struct ConjPtr{T}
8797
ptr::Ptr{T}
@@ -96,6 +106,14 @@ function unsafe_convert(::Type{ConjPtr{T}}, V::SubArray{T,2}) where {T,N,P}
96106
unsafe_convert(Ptr{T}, view(parent(V)', jr, kr))
97107
end
98108

109+
Base.elsize(::Type{<:Adjoint{<:Complex,P}}) where P<:AbstractVecOrMat = conjelsize(P)
110+
conjelsize(::Type{<:Adjoint{<:Complex,P}}) where P<:AbstractVecOrMat = Base.elsize(P)
111+
conjelsize(::Type{<:Transpose{<:Any, P}}) where {P<:AbstractVecOrMat} = conjelsize(P)
112+
conjelsize(::Type{<:PermutedDimsArray{<:Any, <:Any, <:Any, <:Any, P}}) where {P} = conjelsize(P)
113+
conjelsize(::Type{<:ReshapedArray{<:Any,<:Any,P}}) where {P} = conjelsize(P)
114+
conjelsize(::Type{<:SubArray{<:Any,<:Any,P}}) where {P} = conjelsize(P)
115+
conjelsize(A::AbstractArray) = conjelsize(typeof(A))
116+
99117
include("memorylayout.jl")
100118
include("mul.jl")
101119
include("muladd.jl")
@@ -367,4 +385,4 @@ Base.typed_vcat(::Type{T}, A::LayoutVecOrMats, B::LayoutVecOrMats, C::AbstractVe
367385
Base.typed_hcat(::Type{T}, A::LayoutVecOrMats, B::LayoutVecOrMats, C::AbstractVecOrMat...) where T = typed_hcat(T, A, B, C...)
368386
Base.typed_vcat(::Type{T}, A::AbstractVecOrMat, B::LayoutVecOrMats, C::AbstractVecOrMat...) where T = typed_vcat(T, A, B, C...)
369387
Base.typed_hcat(::Type{T}, A::AbstractVecOrMat, B::LayoutVecOrMats, C::AbstractVecOrMat...) where T = typed_hcat(T, A, B, C...)
370-
end # module
388+
end # module

src/diagonal.jl

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ copy(M::Lmul{<:DiagonalLayout,<:TridiagonalLayout}) = M.A * convert(Tridiagonal,
5656
copy(M::Rmul{<:SymTridiagonalLayout,<:DiagonalLayout}) = convert(SymTridiagonal, M.A) * M.B
5757
copy(M::Lmul{<:DiagonalLayout,<:SymTridiagonalLayout}) = M.A * convert(SymTridiagonal, M.B)
5858

59-
copy(M::Lmul{DiagonalLayout{OnesLayout}}) = copy_oftype(M.B, eltype(M))
60-
copy(M::Lmul{DiagonalLayout{OnesLayout},<:DiagonalLayout}) = Diagonal(copy_oftype(diagonaldata(M.B), eltype(M)))
61-
copy(M::Lmul{<:DiagonalLayout,DiagonalLayout{OnesLayout}}) = Diagonal(copy_oftype(diagonaldata(M.A), eltype(M)))
62-
copy(M::Lmul{DiagonalLayout{OnesLayout},DiagonalLayout{OnesLayout}}) = copy_oftype(M.B, eltype(M))
63-
copy(M::Rmul{<:Any,DiagonalLayout{OnesLayout}}) = copy_oftype(M.A, eltype(M))
59+
copy(M::Lmul{DiagonalLayout{OnesLayout}}) = _copy_oftype(M.B, eltype(M))
60+
copy(M::Lmul{DiagonalLayout{OnesLayout},<:DiagonalLayout}) = Diagonal(_copy_oftype(diagonaldata(M.B), eltype(M)))
61+
copy(M::Lmul{<:DiagonalLayout,DiagonalLayout{OnesLayout}}) = Diagonal(_copy_oftype(diagonaldata(M.A), eltype(M)))
62+
copy(M::Lmul{DiagonalLayout{OnesLayout},DiagonalLayout{OnesLayout}}) = _copy_oftype(M.B, eltype(M))
63+
copy(M::Rmul{<:Any,DiagonalLayout{OnesLayout}}) = _copy_oftype(M.A, eltype(M))
6464

6565
copy(M::Lmul{<:DiagonalLayout{<:AbstractFillLayout}}) = getindex_value(diagonaldata(M.A)) * M.B
6666
copy(M::Lmul{<:DiagonalLayout{<:AbstractFillLayout},<:DiagonalLayout}) = getindex_value(diagonaldata(M.A)) * M.B
@@ -74,9 +74,9 @@ copy(M::Rmul{<:SymTridiagonalLayout,<:DiagonalLayout{<:AbstractFillLayout}}) = M
7474
copy(M::Lmul{<:DiagonalLayout{<:AbstractFillLayout},<:SymTridiagonalLayout}) = getindex_value(diagonaldata(M.A)) * M.B
7575

7676

77-
copy(M::Rmul{<:BidiagonalLayout,DiagonalLayout{OnesLayout}}) = copy_oftype(M.A, eltype(M))
78-
copy(M::Lmul{DiagonalLayout{OnesLayout},<:BidiagonalLayout}) = copy_oftype(M.B, eltype(M))
79-
copy(M::Rmul{<:TridiagonalLayout,DiagonalLayout{OnesLayout}}) = copy_oftype(M.A, eltype(M))
80-
copy(M::Lmul{DiagonalLayout{OnesLayout},<:TridiagonalLayout}) = copy_oftype(M.B, eltype(M))
81-
copy(M::Rmul{<:SymTridiagonalLayout,DiagonalLayout{OnesLayout}}) = copy_oftype(M.A, eltype(M))
82-
copy(M::Lmul{DiagonalLayout{OnesLayout},<:SymTridiagonalLayout}) = copy_oftype(M.B, eltype(M))
77+
copy(M::Rmul{<:BidiagonalLayout,DiagonalLayout{OnesLayout}}) = _copy_oftype(M.A, eltype(M))
78+
copy(M::Lmul{DiagonalLayout{OnesLayout},<:BidiagonalLayout}) = _copy_oftype(M.B, eltype(M))
79+
copy(M::Rmul{<:TridiagonalLayout,DiagonalLayout{OnesLayout}}) = _copy_oftype(M.A, eltype(M))
80+
copy(M::Lmul{DiagonalLayout{OnesLayout},<:TridiagonalLayout}) = _copy_oftype(M.B, eltype(M))
81+
copy(M::Rmul{<:SymTridiagonalLayout,DiagonalLayout{OnesLayout}}) = _copy_oftype(M.A, eltype(M))
82+
copy(M::Lmul{DiagonalLayout{OnesLayout},<:SymTridiagonalLayout}) = _copy_oftype(M.B, eltype(M))

src/factorizations.jl

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -305,20 +305,32 @@ _qr!(layout, axes, A, args...; kwds...) = error("Overload _qr!(::$(typeof(layout
305305
_lu(layout, axes, A; kwds...) = Base.invoke(lu, Tuple{AbstractMatrix{eltype(A)}}, A; kwds...)
306306
_lu(layout, axes, A, pivot::P; kwds...) where P = Base.invoke(lu, Tuple{AbstractMatrix{eltype(A)},P}, A, pivot; kwds...)
307307
_lu!(layout, axes, A, args...; kwds...) = error("Overload _lu!(::$(typeof(layout)), axes, A)")
308-
_cholesky(layout, axes, A, ::Val{false}=Val(false); check::Bool = true) = cholesky!(cholcopy(A); check = check)
309-
_cholesky(layout, axes, A, ::Val{true}; tol = 0.0, check::Bool = true) = cholesky!(cholcopy(A), Val(true); tol = tol, check = check)
308+
_cholesky(layout, axes, A, ::CNoPivot=CNoPivot(); check::Bool = true) = cholesky!(cholcopy(A); check = check)
309+
_cholesky(layout, axes, A, ::CRowMaximum; tol = 0.0, check::Bool = true) = cholesky!(cholcopy(A), CRowMaximum(); tol = tol, check = check)
310310
_factorize(layout, axes, A) = qr(A) # Default to QR
311311

312312

313313
_factorize(::AbstractStridedLayout, axes, A) = lu(A)
314-
function _lu!(::AbstractColumnMajor, axes, A::AbstractMatrix{T}, pivot::Union{NoPivot, RowMaximum} = RowMaximum();
315-
check::Bool = true) where T<:BlasFloat
316-
if pivot === NoPivot()
317-
return generic_lufact!(A, pivot; check = check)
314+
if VERSION < v"1.8-"
315+
function _lu!(::AbstractColumnMajor, axes, A::AbstractMatrix{T}, pivot::Union{NoPivot, RowMaximum} = RowMaximum();
316+
check::Bool = true) where T<:BlasFloat
317+
if pivot === NoPivot()
318+
return generic_lufact!(A, pivot; check = check)
319+
end
320+
lpt = LAPACK.getrf!(A)
321+
check && checknonsingular(lpt[3])
322+
return LU{T,typeof(A)}(lpt[1], lpt[2], lpt[3])
323+
end
324+
else
325+
function _lu!(::AbstractColumnMajor, axes, A::AbstractMatrix{T}, pivot::Union{NoPivot, RowMaximum} = RowMaximum();
326+
check::Bool = true) where T<:BlasFloat
327+
if pivot === NoPivot()
328+
return generic_lufact!(A, pivot; check = check)
329+
end
330+
lpt = LAPACK.getrf!(A)
331+
check && checknonsingular(lpt[3])
332+
return LU{T,typeof(A),typeof(lpt[2])}(lpt[1], lpt[2], lpt[3])
318333
end
319-
lpt = LAPACK.getrf!(A)
320-
check && checknonsingular(lpt[3])
321-
return LU{T,typeof(A)}(lpt[1], lpt[2], lpt[3])
322334
end
323335

324336
# for some reason only defined for StridedMatrix in LinearAlgebra
@@ -355,14 +367,14 @@ end
355367

356368
_chol!(_, A, UL) = LinearAlgebra._chol!(A, UL)
357369

358-
function _cholesky!(layout, axes, A::RealHermSymComplexHerm, ::Val{false}; check::Bool = true)
370+
function _cholesky!(layout, axes, A::RealHermSymComplexHerm, ::CNoPivot; check::Bool = true)
359371
C, info = _chol!(layout, A.data, A.uplo == 'U' ? UpperTriangular : LowerTriangular)
360372
check && LinearAlgebra.checkpositivedefinite(info)
361373
return Cholesky(C.data, A.uplo, info)
362374
end
363375

364376
function _cholesky!(::SymmetricLayout{<:AbstractColumnMajor}, axes, A::AbstractMatrix{<:BlasReal},
365-
::Val{true}; tol = 0.0, check::Bool = true)
377+
::CRowMaximum; tol = 0.0, check::Bool = true)
366378
AA, piv, rank, info = LAPACK.pstrf!(A.uplo, A.data, tol)
367379
C = CholeskyPivoted{eltype(AA),typeof(AA)}(AA, A.uplo, piv, rank, tol, info)
368380
check && chkfullrank(C)
@@ -390,9 +402,10 @@ end
390402

391403
macro _layoutfactorizations(Typ)
392404
esc(quote
393-
LinearAlgebra.cholesky(A::$Typ, args...; kwds...) = ArrayLayouts._cholesky(ArrayLayouts.MemoryLayout(A), axes(A), A, args...; kwds...)
394-
LinearAlgebra.cholesky!(A::LinearAlgebra.RealHermSymComplexHerm{<:Real,<:$Typ}, v::Val{false}=Val(false); check::Bool = true) = ArrayLayouts._cholesky!(ArrayLayouts.MemoryLayout(A), axes(A), A, v; check=check)
395-
LinearAlgebra.cholesky!(A::LinearAlgebra.RealHermSymComplexHerm{<:Real,<:$Typ}, v::Val{true}; check::Bool = true, tol = 0.0) = ArrayLayouts._cholesky!(ArrayLayouts.MemoryLayout(A), axes(A), A, v; check=check, tol=tol)
405+
LinearAlgebra.cholesky(A::$Typ, v::CNoPivot = CNoPivot(); kwds...) = ArrayLayouts._cholesky(ArrayLayouts.MemoryLayout(A), axes(A), A, v; kwds...)
406+
LinearAlgebra.cholesky(A::$Typ, v::CRowMaximum; kwds...) = ArrayLayouts._cholesky(ArrayLayouts.MemoryLayout(A), axes(A), A, v; kwds...)
407+
LinearAlgebra.cholesky!(A::LinearAlgebra.RealHermSymComplexHerm{<:Real,<:$Typ}, v::CNoPivot = CNoPivot(); check::Bool = true) = ArrayLayouts._cholesky!(ArrayLayouts.MemoryLayout(A), axes(A), A, v; check=check)
408+
LinearAlgebra.cholesky!(A::LinearAlgebra.RealHermSymComplexHerm{<:Real,<:$Typ}, v::CRowMaximum; check::Bool = true, tol = 0.0) = ArrayLayouts._cholesky!(ArrayLayouts.MemoryLayout(A), axes(A), A, v; check=check, tol=tol)
396409
LinearAlgebra.qr(A::$Typ, args...; kwds...) = ArrayLayouts._qr(ArrayLayouts.MemoryLayout(A), axes(A), A, args...; kwds...)
397410
LinearAlgebra.qr!(A::$Typ, args...; kwds...) = ArrayLayouts._qr!(ArrayLayouts.MemoryLayout(A), axes(A), A, args...; kwds...)
398411
LinearAlgebra.lu(A::$Typ, pivot::Union{ArrayLayouts.NoPivot,ArrayLayouts.RowMaximum}; kwds...) = ArrayLayouts._lu(ArrayLayouts.MemoryLayout(A), axes(A), A, pivot; kwds...)
@@ -424,6 +437,3 @@ end
424437

425438
LinearAlgebra.ldiv!(L::LU{<:Any,<:LayoutMatrix}, B::LayoutVector) = ArrayLayouts.ldiv!(L, B)
426439

427-
if VERSION v"1.7-"
428-
@deprecate qr(A::LayoutMatrix, ::Val{true}) qr(A, ColumnNorm())
429-
end

src/mul.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,4 +309,4 @@ for Typ in (:LayoutMatrix, :(Symmetric{<:Any,<:LayoutMatrix}), :(Hermitian{<:Any
309309
@inline -(A::$Typ, Λ::UniformScaling) = _apply(MemoryLayout(A), size(A), -, A, Λ)
310310
@inline -::UniformScaling, A::$Typ) = _apply(MemoryLayout(A), size(A), -, Λ, A)
311311
end
312-
end
312+
end

src/muladd.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ copy(M::MulAdd) = copyto!(similar(M), M)
7474
_fill_copyto!(dest, C) = copyto!(dest, C)
7575
_fill_copyto!(dest, C::Zeros) = zero!(dest) # exploit special fill! overload
7676

77-
@inline copyto!(dest::AbstractArray{T}, M::MulAdd) where T =
77+
@inline copyto!(dest::AbstractArray{T}, M::MulAdd) where T =
7878
muladd!(M.α, unalias(dest,M.A), unalias(dest,M.B), M.β, _fill_copyto!(dest, M.C))
7979

8080
# Modified from LinearAlgebra._generic_matmatmul!
@@ -420,4 +420,4 @@ end
420420
const ZerosLayouts = Union{ZerosLayout,DualLayout{ZerosLayout}}
421421
copy(M::MulAdd{<:ZerosLayouts, <:ZerosLayouts, <:ZerosLayouts}) = M.C
422422
copy(M::MulAdd{<:ZerosLayouts, <:Any, <:ZerosLayouts}) = M.C
423-
copy(M::MulAdd{<:Any, <:ZerosLayouts, <:ZerosLayouts}) = M.C
423+
copy(M::MulAdd{<:Any, <:ZerosLayouts, <:ZerosLayouts}) = M.C

test/test_layoutarray.jl

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using ArrayLayouts, LinearAlgebra, FillArrays, Base64, Test
2-
import ArrayLayouts: sub_materialize, MemoryLayout, ColumnNorm, RowMaximum
2+
import ArrayLayouts: sub_materialize, MemoryLayout, ColumnNorm, RowMaximum, CRowMaximum
33

44

55
struct MyMatrix <: LayoutMatrix{Float64}
@@ -10,6 +10,7 @@ Base.getindex(A::MyMatrix, k::Int, j::Int) = A.A[k,j]
1010
Base.setindex!(A::MyMatrix, v, k::Int, j::Int) = setindex!(A.A, v, k, j)
1111
Base.size(A::MyMatrix) = size(A.A)
1212
Base.strides(A::MyMatrix) = strides(A.A)
13+
Base.elsize(::Type{MyMatrix}) = sizeof(Float64)
1314
Base.unsafe_convert(::Type{Ptr{T}}, A::MyMatrix) where T = Base.unsafe_convert(Ptr{T}, A.A)
1415
MemoryLayout(::Type{MyMatrix}) = DenseColumnMajor()
1516
Base.copy(A::MyMatrix) = MyMatrix(copy(A.A))
@@ -22,6 +23,7 @@ Base.getindex(A::MyVector, k::Int) = A.A[k]
2223
Base.setindex!(A::MyVector, v, k::Int) = setindex!(A.A, v, k)
2324
Base.size(A::MyVector) = size(A.A)
2425
Base.strides(A::MyVector) = strides(A.A)
26+
Base.elsize(::Type{MyVector}) = sizeof(Float64)
2527
Base.unsafe_convert(::Type{Ptr{T}}, A::MyVector) where T = Base.unsafe_convert(Ptr{T}, A.A)
2628
MemoryLayout(::Type{MyVector}) = DenseColumnMajor()
2729

@@ -100,17 +102,14 @@ MemoryLayout(::Type{MyVector}) = DenseColumnMajor()
100102

101103
@test qr(A) isa LinearAlgebra.QRCompactWY
102104
@test inv(A) inv(A.A)
103-
if VERSION v"1.7-"
104-
@test qr(A, Val(true)) == qr(A, ColumnNorm())
105-
end
106105

107106
S = Symmetric(MyMatrix(reshape(inv.(1:25),5,5) + 10I))
108107
@test cholesky(S).U @inferred(cholesky!(deepcopy(S))).U
109-
@test cholesky(S,Val(true)).U cholesky(Matrix(S),Val(true)).U
108+
@test cholesky(S,CRowMaximum()).U cholesky(Matrix(S),CRowMaximum()).U
110109

111110
S = Symmetric(MyMatrix(reshape(inv.(1:25),5,5) + 10I),:L)
112111
@test cholesky(S).U @inferred(cholesky!(deepcopy(S))).U
113-
@test cholesky(S,Val(true)).U cholesky(Matrix(S),Val(true)).U
112+
@test cholesky(S,CRowMaximum()).U cholesky(Matrix(S),CRowMaximum()).U
114113
end
115114
Bin = randn(5,5)
116115
B = MyMatrix(copy(Bin))

0 commit comments

Comments
 (0)