Skip to content

Commit 7a5cfca

Browse files
committed
Revert "Scaling for partly initialized unit triangular"
This reverts commit 28c8eca.
1 parent 28c8eca commit 7a5cfca

File tree

2 files changed

+17
-22
lines changed

2 files changed

+17
-22
lines changed

src/triangular.jl

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1323,6 +1323,15 @@ end
13231323
# Generic routines #
13241324
####################
13251325

1326+
function _set_diag!(B::UpperOrLowerTriangular, x)
1327+
# get a mutable array to modify the diagonal
1328+
Bm = parent(B) isa StridedArray ? B : copy!(similar(B), B)
1329+
for i in diagind(Bm.data, IndexStyle(Bm.data))
1330+
Bm.data[i] = x
1331+
end
1332+
Bm
1333+
end
1334+
13261335
for (t, unitt) in ((UpperTriangular, UnitUpperTriangular),
13271336
(LowerTriangular, UnitLowerTriangular))
13281337
tstrided = t{<:Any, <:StridedMaybeAdjOrTransMat}
@@ -1335,8 +1344,8 @@ for (t, unitt) in ((UpperTriangular, UnitUpperTriangular),
13351344
end
13361345

13371346
function (*)(A::$unitt, x::Number)
1338-
B = copy!(similar($t(A.data)), A)
1339-
B * x
1347+
B = $t(A.data)*x
1348+
_set_diag!(B, oneunit(eltype(A)) * x)
13401349
end
13411350

13421351
(*)(x::Number, A::$t) = $t(x*A.data)
@@ -1347,8 +1356,8 @@ for (t, unitt) in ((UpperTriangular, UnitUpperTriangular),
13471356
end
13481357

13491358
function (*)(x::Number, A::$unitt)
1350-
B = copy!(similar($t(A.data)), A)
1351-
x * B
1359+
B = x*$t(A.data)
1360+
_set_diag!(B, x * oneunit(eltype(A)))
13521361
end
13531362

13541363
(/)(A::$t, x::Number) = $t(A.data/x)
@@ -1359,8 +1368,8 @@ for (t, unitt) in ((UpperTriangular, UnitUpperTriangular),
13591368
end
13601369

13611370
function (/)(A::$unitt, x::Number)
1362-
B = copy!(similar($t(A.data)), A)
1363-
B / x
1371+
B = $t(A.data)/x
1372+
_set_diag!(B, oneunit(eltype(A)) / x)
13641373
end
13651374

13661375
(\)(x::Number, A::$t) = $t(x\A.data)
@@ -1371,8 +1380,8 @@ for (t, unitt) in ((UpperTriangular, UnitUpperTriangular),
13711380
end
13721381

13731382
function (\)(x::Number, A::$unitt)
1374-
B = copy!(similar($t(A.data)), A)
1375-
x \ B
1383+
B = x\$t(A.data)
1384+
_set_diag!(B, x \ oneunit(eltype(A)))
13761385
end
13771386
end
13781387
end

test/triangular.jl

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -944,18 +944,4 @@ end
944944
@test 2*U == 2*M
945945
end
946946

947-
@testset "scaling partly initialized unit triangular" begin
948-
for T in (UnitUpperTriangular, UnitLowerTriangular)
949-
isupper = T == UnitUpperTriangular
950-
M = Matrix{BigFloat}(undef,2,2)
951-
M[1+!isupper, 1+isupper] = 3
952-
U = T(M)
953-
C = Matrix(U)
954-
@test U * 2 == C * 2
955-
@test 2 * U == 2 * C
956-
@test U / 2 == C / 2
957-
@test 2 \ U == 2 \ C
958-
end
959-
end
960-
961947
end # module TestTriangular

0 commit comments

Comments
 (0)