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.514988 -0.499198 -0.487813 -0.497621 [:, :, 2] = 0.808864 -0.0145201 -0.427464 -0.403488 [:, :, 3] = 0.211417 -0.606767 0.704692 -0.300908 [:, :, 4] = 0.189286 -0.618404 -0.287614 0.706417
julia> s4-element Tensor{Float64, 1, Vector{Float64}}: 2.3102958050973035 0.7080279415076962 0.35749105970411915 0.2031081332601505
julia> v2×2×4 Tensor{Float64, 3, Base.ReshapedArray{Float64, 3, LinearAlgebra.Transpose{Float64, Matrix{Float64}}, Tuple{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64}}}}: [:, :, 1] = -0.357676 -0.467749 -0.393981 -0.705732 [:, :, 2] = -0.719962 0.52093 0.408474 -0.208411 [:, :, 3] = 0.351106 0.708871 -0.479196 -0.38026 [:, :, 4] = -0.480049 0.0857029 -0.669551 0.560276