diff --git a/mat_eig.jl b/mat_eig.jl new file mode 100644 index 0000000..6c7213a --- /dev/null +++ b/mat_eig.jl @@ -0,0 +1,42 @@ +include("CPU.jl") + +T=Float32 + +function V_test(r2) + return -4 * exp(-r2 / 4) +end + +d = 1 +n = 3 +N = 8 +L::T = 16 +n_imag = 0 +μ::T = 0.5 + +H = HOperator{T}(V_test, d, n, N, L, μ, n_imag) +dim = N ^ (d * (n - 1)) +H_mat = zeros(Complex{T}, dim, dim) +iter = CartesianIndices(vectorDims(H)) + +open("temp/mat_dump.csv", "w") do f + # this can be heavily optimized by getting rid of 'bi' vector + for i in 1 : dim + bi = zeros(Complex{T}, vectorDims(H)...) + bi[iter[i]] = 1 + + for j in 1 : dim + bj = zeros(Complex{T}, vectorDims(H)...) + bj[iter[j]] = 1 + + Hbj = similar(bj) + Hbj = mul!(Hbj, H, bj) + + H_mat[i, j] = dot(bi, Hbj) + end + end +end + +evals, _ = eigen(H_mat) +evals = real.(evals) + +print(evals)