From 8524ff9e7306cb1afc23b4c0886dfd42fdeeb11c Mon Sep 17 00:00:00 2001 From: Elias Jarlebring Date: Thu, 27 May 2021 08:44:58 +0200 Subject: [PATCH 1/2] allocation reduction in lyapc --- src/sylvlyap_bartstew.jl | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/sylvlyap_bartstew.jl b/src/sylvlyap_bartstew.jl index eeb767c..2744dd8 100644 --- a/src/sylvlyap_bartstew.jl +++ b/src/sylvlyap_bartstew.jl @@ -93,11 +93,18 @@ function lyapc(A, Q, ::Val{:bartstew}) At2, U = schur(A') - Q2 = U'*Q*U + # Compute Q2=U'*Q*U + QU = Q*U + Q2 = U'*QU; - Y = _sylvc_schur!(Matrix(At2'), At2, lmul!(-1, Q2), Val(:lyap)) + Y = _sylvd_schur!(Matrix(At2'), At2, lmul!(-1, Q2), Val(:lyap)) - X = mul!(Y, U, Y*U') + YUt = QU # Recycle mem + + mul!(YUt,Y,U') + + X = mul!(Y, U, YUt) + end function lyapc(A, Q, E, ::Val{:bartstew}) From 83af4626efe0c6147d96531ef61dcbdb4ca45311 Mon Sep 17 00:00:00 2001 From: Elias Jarlebring Date: Thu, 27 May 2021 08:48:53 +0200 Subject: [PATCH 2/2] typo --- src/sylvlyap_bartstew.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/sylvlyap_bartstew.jl b/src/sylvlyap_bartstew.jl index 2744dd8..3ea13f0 100644 --- a/src/sylvlyap_bartstew.jl +++ b/src/sylvlyap_bartstew.jl @@ -97,8 +97,9 @@ function lyapc(A, Q, ::Val{:bartstew}) QU = Q*U Q2 = U'*QU; - Y = _sylvd_schur!(Matrix(At2'), At2, lmul!(-1, Q2), Val(:lyap)) + Y = _sylvc_schur!(Matrix(At2'), At2, lmul!(-1, Q2), Val(:lyap)) + # Compute X = Y*U*Y' YUt = QU # Recycle mem mul!(YUt,Y,U')