Function for calculating rank

This commit is contained in:
Nuwan Yapa 2024-12-30 18:21:45 -05:00
parent 2715191ee5
commit f51c0f32e6
1 changed files with 8 additions and 0 deletions

View File

@ -71,3 +71,11 @@ function gram_schmidt(vecs, ws, precision=1e-10, verbose=false)
end
return vecs[mask]
end
"Rank of a basis set (pre-normalized) under c-product"
function c_rank(vecs, ws, threshold=1e-8)
basis = hcat(vecs...)
N = transpose(basis) * spdiagm(ws) * basis
abs_singular_values = eigvals(N) .|> abs .|> sqrt
return count(abs_singular_values .> threshold)
end