include("Engine.jl") using SparseArrays using Random # initialize the partial gram matrix for a sphere inscribed in a regular # tetrahedron J = Int64[] K = Int64[] values = BigFloat[] for j in 1:5 for k in 1:5 push!(J, j) push!(K, k) if j == k push!(values, 1) elseif (j <= 4 && k <= 4) push!(values, -1/BigFloat(3)) else push!(values, -1) end end end gram = sparse(J, K, values) # set initial guess Random.seed!(99230) guess = sqrt(1/BigFloat(3)) * BigFloat[ 1 1 -1 -1 0 1 -1 1 -1 0 1 -1 -1 1 0 1 1 1 1 -2 1 1 1 1 1 ] + 0.2*Engine.rand_on_shell(fill(BigFloat(-1), 5)) # complete the gram matrix #= L, history = Engine.realize_gram_newton(gram, guess) =# L, success, history = Engine.realize_gram(gram, guess) completed_gram = L'*Engine.Q*L println("Completed Gram matrix:\n") display(completed_gram) if success println("\nTarget accuracy achieved!") else println("\nFailed to reach target accuracy") end println("Steps: ", size(history.scaled_loss, 1)) println("Loss: ", history.scaled_loss[end], "\n")