diff --git a/Project.toml b/Project.toml index 23fc5e15f..cad05b539 100644 --- a/Project.toml +++ b/Project.toml @@ -34,7 +34,7 @@ HalfIntegers = "1.6.0" KrylovKit = "0.8.3, 0.9.2, 0.10" LinearAlgebra = "1.6" LoggingExtras = "~1.0" -MatrixAlgebraKit = "0.5.0" +MatrixAlgebraKit = "0.6.0" OhMyThreads = "0.7, 0.8" OptimKit = "0.3.1, 0.4" Pkg = "1" @@ -42,7 +42,7 @@ Plots = "1.40" Printf = "1" Random = "1" RecipesBase = "1.1" -TensorKit = "0.15.1" +TensorKit = "0.16.0" TensorKitManifolds = "0.7" TensorOperations = "5" Test = "1" @@ -60,3 +60,6 @@ TestExtras = "5ed8adda-3752-4e41-b88a-e8b09835ee3a" [targets] test = ["Aqua", "Pkg", "Test", "TestExtras", "Plots", "Combinatorics"] + +[sources] +TensorKitManifolds = {url="https://github.com/Jutho/TensorKitManifolds.jl", rev="main"} diff --git a/src/utility/utility.jl b/src/utility/utility.jl index 418e0cd68..d33b2c7ec 100644 --- a/src/utility/utility.jl +++ b/src/utility/utility.jl @@ -153,26 +153,34 @@ end # temporary workaround for the fact that left_orth and right_orth are poorly designed: function _left_orth!(t; alg::MatrixAlgebraKit.AbstractAlgorithm, trunc::MatrixAlgebraKit.TruncationStrategy = notrunc()) if alg isa LAPACK_HouseholderQR - return left_orth!(t; kind = :qr, alg_qr = alg, trunc) + left_orth_alg = MatrixAlgebraKit.select_algorithm(left_orth!, t, Val(:qr); alg.kwargs...) + return left_orth!(t, left_orth_alg) elseif alg isa LAPACK_HouseholderLQ - return left_orth!(t; kind = :qr, alg_qr = LAPACK_HouseholderQR(; alg.kwargs...), trunc) + left_orth_alg = MatrixAlgebraKit.select_algorithm(left_orth!, t, Val(:qr); alg.kwargs...) + return left_orth!(t, left_orth_alg) elseif alg isa PolarViaSVD - return left_orth!(t; kind = :polar, alg_polar = alg, trunc) + left_orth_alg = MatrixAlgebraKit.select_algorithm(left_orth!, t, Val(:polar); alg.kwargs...) + return left_orth!(t, left_orth_alg) elseif alg isa LAPACK_SVDAlgorithm - return left_orth!(t; kind = :svd, alg_svd = alg, trunc) + left_orth_alg = MatrixAlgebraKit.select_algorithm(left_orth!, t, Val(:svd); trunc, alg.kwargs...) + return left_orth!(t, left_orth_alg) else error(lazy"unkown algorithm $alg") end end function _right_orth!(t; alg::MatrixAlgebraKit.AbstractAlgorithm, trunc::TruncationStrategy = notrunc()) if alg isa LAPACK_HouseholderLQ - return right_orth!(t; kind = :lq, alg_lq = alg, trunc) + right_orth_alg = MatrixAlgebraKit.select_algorithm(right_orth!, t, Val(:lq); alg.kwargs...) + return right_orth!(t, right_orth_alg) elseif alg isa LAPACK_HouseholderQR - return right_orth!(t; kind = :lq, alg_lq = LAPACK_HouseholderLQ(; alg.kwargs...), trunc) + right_orth_alg = MatrixAlgebraKit.select_algorithm(right_orth!, t, Val(:lq); alg.kwargs...) + return right_orth!(t, right_orth_alg) elseif alg isa PolarViaSVD - return right_orth!(t; kind = :polar, alg_polar = alg, trunc) + right_orth_alg = MatrixAlgebraKit.select_algorithm(right_orth!, t, Val(:polar); alg.kwargs...) + return right_orth!(t, right_orth_alg) elseif alg isa LAPACK_SVDAlgorithm - return right_orth!(t; kind = :svd, alg_svd = alg, trunc) + right_orth_alg = MatrixAlgebraKit.select_algorithm(right_orth!, t, Val(:svd); trunc, alg.kwargs...) + return right_orth!(t, right_orth_alg) else error(lazy"unkown algorithm $alg") end