6565
6666Base. getindex (Δ:: StiefelTangent ) = Δ. W * Δ. A + Δ. Z
6767base (Δ:: StiefelTangent ) = Δ. W
68- checkbase (Δ₁:: StiefelTangent , Δ₂:: StiefelTangent ) = Δ₁. W === Δ₂. W ? Δ₁. W :
68+ checkbase (Δ₁:: StiefelTangent , Δ₂:: StiefelTangent ) = Δ₁. W == Δ₂. W ? Δ₁. W :
6969 throw (ArgumentError (" tangent vectors with different base points" ))
7070
7171function Base. getproperty (Δ:: StiefelTangent , sym:: Symbol )
@@ -228,7 +228,7 @@ project_canonical(X, W) = project_canonical!(copy(X), W)
228228# geodesic retraction for canonical metric using exponential
229229# can be computed efficiently: O(np^2) + O(p^3)
230230function retract_exp (W:: AbstractTensorMap , Δ:: StiefelTangent , α:: Real )
231- W === base (Δ) || throw (ArgumentError (" not a valid tangent vector at base point" ))
231+ W == base (Δ) || throw (ArgumentError (" not a valid tangent vector at base point" ))
232232 A, Z, U, S, V, A2 = Δ. A, Δ. Z, Δ. U, Δ. S, Δ. V, Δ. A2
233233 UU = catdomain (W* V' , U)
234234 VV = catcodomain (V, zero (V))
248248# can be computed efficiently: O(np^2) + O(p^3)
249249function transport_exp! (Θ:: StiefelTangent , W:: AbstractTensorMap ,
250250 Δ:: StiefelTangent , α:: Real , W′)
251- W === checkbase (Δ,Θ) || throw (ArgumentError (" not a valid tangent vector at base point" ))
251+ W == checkbase (Δ,Θ) || throw (ArgumentError (" not a valid tangent vector at base point" ))
252252 U, S, V, A2 = Δ. U, Δ. S, Δ. V, Δ. A2
253253 UU = catdomain (W* V' , U)
254254 P = catcodomain (zero (S), one (S))
@@ -264,7 +264,7 @@ transport_exp(Θ::StiefelTangent, W::AbstractTensorMap, Δ::StiefelTangent, α::
264264# Cayley retraction, slightly more efficient than above?
265265# can be computed efficiently: O(np^2) + O(p^3)
266266function retract_cayley (W:: AbstractTensorMap , Δ:: StiefelTangent , α:: Real )
267- W === base (Δ) || throw (ArgumentError (" not a valid tangent vector at base point" ))
267+ W == base (Δ) || throw (ArgumentError (" not a valid tangent vector at base point" ))
268268 A, Z = Δ. A, Δ. Z
269269 ZdZ = Z' * Z
270270 X = axpy! (α^ 2 / 4 , ZdZ, axpy! (- α/ 2 , A, one (A)))
281281# can be computed efficiently: O(np^2) + O(p^3)
282282function transport_cayley! (Θ:: StiefelTangent , W:: AbstractTensorMap , Δ:: StiefelTangent ,
283283 α:: Real , W′)
284- W === checkbase (Δ,Θ) || throw (ArgumentError (" not a valid tangent vector at base point" ))
284+ W == checkbase (Δ,Θ) || throw (ArgumentError (" not a valid tangent vector at base point" ))
285285 A, Z = Δ. A, Δ. Z
286286 X = axpy! (α^ 2 / 4 , Z' * Z, axpy! (- α/ 2 , A, one (A)))
287287 A′ = Θ. A
0 commit comments