@@ -46,7 +46,7 @@ for f! in (
4646end
4747
4848# Handle these separately because single output instead of tuple
49- for f! in (:qr_null! , :lq_null! )
49+ for f! in (:qr_null! , :lq_null! , :project_hermitian! , :project_antihermitian! , :project_isometric! )
5050 @eval function MAK. $f! (t:: AbstractTensorMap , N, alg:: AbstractAlgorithm )
5151 MAK. check_input ($ f!, t, N, alg)
5252
@@ -444,14 +444,24 @@ end
444444
445445# Projections
446446# -----------
447- function MAK. check_input (:: typeof (project_hermitian!), tsrc:: AbstractTensorMap , tdst:: AbstractTensorMap )
447+ function MAK. check_input (:: typeof (project_hermitian!), tsrc:: AbstractTensorMap , tdst:: AbstractTensorMap , :: AbstractAlgorithm )
448448 domain (tsrc) == codomain (tsrc) || throw (ArgumentError (" Hermitian projection requires square input tensor" ))
449449 tsrc === tdst || @check_space (tdst, space (tsrc))
450450 return nothing
451451end
452452
453- MAK. check_input (:: typeof (project_antihermitian!), tsrc:: AbstractTensorMap , tdst:: AbstractTensorMap ) =
454- MAK. check_input (project_hermitian!, tsrc, tdst)
453+ MAK. check_input (:: typeof (project_antihermitian!), tsrc:: AbstractTensorMap , tdst:: AbstractTensorMap , alg :: AbstractAlgorithm ) =
454+ MAK. check_input (project_hermitian!, tsrc, tdst, alg )
455455
456- MAK. initialize_output (:: typeof (project_hermitian!), tsrc:: AbstractTensorMap ) = tsrc
457- MAK. initialize_output (:: typeof (project_antihermitian!), tsrc:: AbstractTensorMap ) = tsrc
456+ function MAK. check_input (:: typeof (project_isometric!), t:: AbstractTensorMap , W:: AbstractTensorMap , alg:: AbstractAlgorithm )
457+ codomain (t) ≿ domain (t) || throw (ArgumentError (" Isometric projection requires `codomain(t) ≿ domain(t)`" ))
458+ @check_space W space (t)
459+ @check_scalar (W, t)
460+
461+ return nothing
462+ end
463+
464+
465+ MAK. initialize_output (:: typeof (project_hermitian!), tsrc:: AbstractTensorMap , :: AbstractAlgorithm ) = tsrc
466+ MAK. initialize_output (:: typeof (project_antihermitian!), tsrc:: AbstractTensorMap , :: AbstractAlgorithm ) = tsrc
467+ MAK. initialize_output (:: typeof (project_isometric!), tsrc:: AbstractTensorMap , :: AbstractAlgorithm ) = similar (tsrc)
0 commit comments