-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtesting_renaming_enums.jl
62 lines (50 loc) · 1.78 KB
/
testing_renaming_enums.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using Pkg
Pkg.activate(".")
using Test
include("src/QuEST.jl")
using ..QuEST
function test_PauliHamil()
env = createQuESTEnv()
paulies = QuEST.jpauliOpType
numQubits = rand(1:12)
numSumTerms = rand(1:20)
hamil = createPauliHamil(numQubits, numSumTerms)
@test hamil.numSumTerms == numSumTerms
@test hamil.numQubits == numQubits
destroyPauliHamil(hamil)
hamil = createPauliHamil(numQubits, numSumTerms)
codes = rand(instances(paulies), numQubits*numSumTerms)
coeffs = rand(Float64, numSumTerms)
initPauliHamil(hamil, coeffs, codes)
hamil_codes = unsafe_wrap(Vector{pauliOpType}, hamil.pauliCodes, numQubits*numSumTerms)
hamil_coeffs = unsafe_wrap(Vector{Float64}, hamil.termCoeffs, numSumTerms)
for ind =1:numSumTerms
@test coeffs[ind] ≈ hamil_coeffs[ind] atol = tolerance
for qubit = 1:numQubits
@test codes[(ind-1)*numQubits+qubit] == hamil_codes[(ind-1)*numQubits+qubit]
end
end
destroyPauliHamil(hamil)
f = open("hamil","w")
for row=1:numSumTerms
write(f, string(coeffs[row]))
write(f, " ")
for qubit =1:numQubits
write(f, string(Int(codes[(row-1)*numQubits+qubit])))
write(f, " ")
end
write(f, "\n")
end
close(f)
hamil = createPauliHamilFromFile("hamil")
hamil_codes = unsafe_wrap(Vector{pauliOpType}, hamil.pauliCodes, numQubits*numSumTerms)
hamil_coeffs = unsafe_wrap(Vector{Float64}, hamil.termCoeffs, numSumTerms)
for ind=1:numSumTerms
@test coeffs[ind] ≈ hamil_coeffs[ind] atol = tolerance
for qubit = 1:numQubits
@test codes[(ind-1)*numQubits+qubit] == hamil_codes[(ind-1)*numQubits+qubit]
end
end
rm("hamil")
destroyQuESTEnv(env)
end