@@ -61,10 +61,10 @@ function qr_pullback!(
6161
6262 ΔQ, ΔR = ΔQR
6363
64- Q1 = view (Q, :, 1 : p)
65- R11 = UpperTriangular (view (R, 1 : p, 1 : p))
66- ΔA1 = view (ΔA, :, 1 : p)
67- ΔA2 = view (ΔA, :, (p + 1 ): n)
64+ Q₁ = view (Q, :, 1 : p)
65+ R₁₁ = UpperTriangular (view (R, 1 : p, 1 : p))
66+ ΔA₁ = view (ΔA, :, 1 : p)
67+ ΔA₂ = view (ΔA, :, (p + 1 ): n)
6868
6969 check_qr_cotangents (Q, R, ΔQ, ΔR, p; gauge_atol)
7070
@@ -73,36 +73,36 @@ function qr_pullback!(
7373 ΔQ₁ = view (ΔQ, :, 1 : p)
7474 copy! (ΔQ̃, ΔQ₁)
7575 if minmn < size (Q, 2 )
76- ΔQ3 = view (ΔQ, :, (minmn + 1 ): size (ΔQ, 2 )) # extra columns in the case of qr_full
77- Q3 = view (Q, :, (minmn + 1 ): size (Q, 2 ))
78- Q1ᴴΔQ3 = Q1 ' * ΔQ3
79- ΔQ̃ = mul! (ΔQ̃, Q3, Q1ᴴΔQ3 ' , - 1 , 1 )
76+ ΔQ₃ = view (ΔQ, :, (minmn + 1 ): size (ΔQ, 2 )) # extra columns in the case of qr_full
77+ Q₃ = view (Q, :, (minmn + 1 ): size (Q, 2 ))
78+ Q₁ᴴΔQ₃ = Q₁ ' * ΔQ₃
79+ ΔQ̃ = mul! (ΔQ̃, Q₃, Q₁ᴴΔQ₃ ' , - 1 , 1 )
8080 end
8181 end
8282 if ! iszerotangent (ΔR) && n > p
83- R12 = view (R, 1 : p, (p + 1 ): n)
84- ΔR12 = view (ΔR, 1 : p, (p + 1 ): n)
85- ΔQ̃ = mul! (ΔQ̃, Q1, ΔR12 * R12 ' , - 1 , 1 )
86- # Adding ΔA2 contribution
87- ΔA2 = mul! (ΔA2, Q1, ΔR12 , 1 , 1 )
83+ R₁₂ = view (R, 1 : p, (p + 1 ): n)
84+ ΔR₁₂ = view (ΔR, 1 : p, (p + 1 ): n)
85+ ΔQ̃ = mul! (ΔQ̃, Q₁, ΔR₁₂ * R₁₂ ' , - 1 , 1 )
86+ # Adding ΔA₂ contribution
87+ ΔA₂ = mul! (ΔA₂, Q₁, ΔR₁₂ , 1 , 1 )
8888 end
8989
9090 # construct M
9191 M = zero! (similar (R, (p, p)))
9292 if ! iszerotangent (ΔR)
93- ΔR11 = UpperTriangular (view (ΔR, 1 : p, 1 : p))
94- M = mul! (M, ΔR11, R11 ' , 1 , 1 )
93+ ΔR₁₁ = UpperTriangular (view (ΔR, 1 : p, 1 : p))
94+ M = mul! (M, ΔR₁₁, R₁₁ ' , 1 , 1 )
9595 end
96- M = mul! (M, Q1 ' , ΔQ̃, - 1 , 1 )
96+ M = mul! (M, Q₁ ' , ΔQ̃, - 1 , 1 )
9797 view (M, lowertriangularind (M)) .= conj .(view (M, uppertriangularind (M)))
9898 if eltype (M) <: Complex
9999 Md = diagview (M)
100100 Md .= real .(Md)
101101 end
102- rdiv! (M, R11 ' ) # R11 is upper triangular
103- rdiv! (ΔQ̃, R11 ' )
104- ΔA1 = mul! (ΔA1, Q1 , M, + 1 , 1 )
105- ΔA1 .+ = ΔQ̃
102+ rdiv! (M, R₁₁ ' ) # R₁₁ is upper triangular
103+ rdiv! (ΔQ̃, R₁₁ ' )
104+ ΔA₁ = mul! (ΔA₁, Q₁ , M, + 1 , 1 )
105+ ΔA₁ .+ = ΔQ̃
106106 return ΔA
107107end
108108
0 commit comments