From 4137b4e4bce701ef17ff44da8c0051320990cf5d Mon Sep 17 00:00:00 2001 From: Katharine Hyatt Date: Tue, 18 Aug 2026 06:53:58 -0400 Subject: [PATCH] Work around GPUArrays change in lq.jl --- src/pullbacks/lq.jl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pullbacks/lq.jl b/src/pullbacks/lq.jl index 656c3c615..1fc21c111 100644 --- a/src/pullbacks/lq.jl +++ b/src/pullbacks/lq.jl @@ -12,13 +12,15 @@ function check_and_prepare_lq_cotangents( if !iszerotangent(ΔQ) size(ΔQ) == size(Q) || throw(DimensionMismatch("ΔQ must have the same size as Q")) ΔQ₁ .= view(ΔQ, 1:p, 1:n) - if p == minmn # full rank case, ΔQ₃ contains gauge-invariant information along Q₁ - ΔQ₃ = copy(view(ΔQ, (minmn + 1):size(Q, 1), :)) # extra columns in the case of qr_full - Q₃ = view(Q, (minmn + 1):size(Q, 1), :) + Q₃ = view(Q, (minmn + 1):size(Q, 1), :) # extra rows in the case of lq_full + if p == minmn && !isempty(Q₃) # full rank case, ΔQ₃ contains gauge-invariant information along Q₁ + ΔQ₃ = copy(view(ΔQ, (minmn + 1):size(Q, 1), :)) ΔQ₃Q₁ᴴ = ΔQ₃ * Q₁' mul!(ΔQ₃, ΔQ₃Q₁ᴴ, Q₁, -1, 1) Δgauge_Q = norm(ΔQ₃, Inf) mul!(ΔQ₁, ΔQ₃Q₁ᴴ', Q₃, -1, 1) + elseif p == minmn + Δgauge_Q = abs(zero(eltype(Q))) else ΔQ₂ = view(ΔQ, (p + 1):size(ΔQ, 1), :) Δgauge_Q = norm(ΔQ₂, Inf)