Singular Value Decomposition

julia> t = Tensor(rand(2,2,2,2), [:i,:j,:k,:l]);
julia> u, s, v = tensor_svd_thin( t; inds_u = Index.([:i, :k]), inds_v = Index.([:j, :l]), ind_s = Index(:x) );
julia> u2×2×4 Tensor{Float64, 3, Array{Float64, 3}}: [:, :, 1] = -0.291333 -0.64942 -0.568165 -0.412998 [:, :, 2] = 0.915735 0.0223202 -0.309864 -0.254785 [:, :, 3] = 0.23575 -0.613823 0.0336105 0.752671 [:, :, 4] = -0.144831 0.448303 -0.761606 0.444977
julia> s4-element Tensor{Float64, 1, Vector{Float64}}: 2.0922519886959807 0.9258359072228243 0.21450673050213467 0.09635861141253553
julia> v2×2×4 Tensor{Float64, 3, Base.ReshapedArray{Float64, 3, LinearAlgebra.Transpose{Float64, Matrix{Float64}}, Tuple{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64}}}}: [:, :, 1] = -0.572246 -0.300512 -0.198957 -0.736643 [:, :, 2] = -0.349542 0.930807 -0.0490428 -0.0949409 [:, :, 3] = -0.28405 -0.100633 -0.821747 0.483653 [:, :, 4] = -0.685325 -0.18211 0.531736 0.463058