# Quantum Fourier Transformation and Phase Estimation

Let's use Yao first

using Yao

## Quantum Fourier Transformation

The Quantum Fourier Transformation (QFT) circuit is to repeat two kinds of blocks repeatly:

The basic building block control phase shift gate is defined as

$$$R(k)=\begin{bmatrix} 1 & 0\\ 0 & \exp\left(\frac{2\pi i}{2^k}\right) \end{bmatrix}$$$

Let's define block A and block B, block A is actually a control block.

A(i, j) = control(i, j=>shift(2π/(1<<(i-j+1))))
A (generic function with 1 method)

Once you construct the blockl you can inspect its matrix using mat function. Let's construct the circuit in dash box A, and see the matrix of $R_4$ gate.

R4 = A(4, 1)
(n -> control(n, 4, 1 => shift(0.39269908169872414)))

If you have read about preparing GHZ state, you probably know that in Yao, we could just leave the number of qubits, and it will be evaluated when possible.

R4(5)
nqubits: 5
control(4)
└─ (1,) shift(0.39269908169872414)

its matrix will be

mat(R4(5))
32×32 LinearAlgebra.Diagonal{ComplexF64, Vector{ComplexF64}}:
1.0+0.0im      ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅      1.0+0.0im      ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅      1.0+0.0im      ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅      1.0+0.0im      ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅      1.0+0.0im      ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅      1.0+0.0im      ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅      1.0+0.0im      ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅      1.0+0.0im      ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅      1.0+0.0im          ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅      0.92388+0.382683im      ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅           1.0+0.0im          ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅      0.92388+0.382683im      ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅           1.0+0.0im          ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅      0.92388+0.382683im      ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅           1.0+0.0im          ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅      0.92388+0.382683im      ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅           1.0+0.0im      ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅      1.0+0.0im      ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅      1.0+0.0im      ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅      1.0+0.0im      ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅      1.0+0.0im      ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅      1.0+0.0im      ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅      1.0+0.0im      ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅      1.0+0.0im      ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅      1.0+0.0im          ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅      0.92388+0.382683im      ⋅              ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅           1.0+0.0im          ⋅               ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅      0.92388+0.382683im      ⋅              ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅           1.0+0.0im          ⋅               ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅      0.92388+0.382683im      ⋅              ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅           1.0+0.0im          ⋅
⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅          ⋅              ⋅               ⋅              ⋅               ⋅              ⋅               ⋅      0.92388+0.382683im

Then we repeat this control block over and over on different qubits, and put a Hadamard gate to ith qubit to construct i-th B block.

B(n, k) = chain(n, j==k ? put(k=>H) : A(j, k) for j in k:n)
B (generic function with 1 method)

We need to input the total number of qubits n here because we have to iterate through from k-th location to the last.

Now, let's construct the circuit by chaining all the B blocks together

qft(n) = chain(B(n, k) for k in 1:n)
qft(4)
nqubits: 4
chain
├─ chain
│  ├─ put on (1)
│  │  └─ H
│  ├─ control(2)
│  │  └─ (1,) shift(1.5707963267948966)
│  ├─ control(3)
│  │  └─ (1,) shift(0.7853981633974483)
│  └─ control(4)
│     └─ (1,) shift(0.39269908169872414)
├─ chain
│  ├─ put on (2)
│  │  └─ H
│  ├─ control(3)
│  │  └─ (2,) shift(1.5707963267948966)
│  └─ control(4)
│     └─ (2,) shift(0.7853981633974483)
├─ chain
│  ├─ put on (3)
│  │  └─ H
│  └─ control(4)
│     └─ (3,) shift(1.5707963267948966)
└─ chain
└─ put on (4)
└─ H


## Wrap QFT to an external block

In most cases, functions are enough to wrap quantum circuits, like A and B we defined above, but sometimes, we need to dispatch specialized methods on certain kinds of quantum circuit, or we want to define an external block to export, thus, it's useful to be able to wrap circuit to custom blocks.

First, we define a new type as subtype of PrimitiveBlock since we are not going to use the subblocks of QFT, if you need to use its subblocks, it'd be better to define it under CompositeBlock.

struct QFT{N} <: PrimitiveBlock{N} end
QFT(n::Int) = QFT{n}()
Main.##276.QFT

Now, let's define its circuit

circuit(::QFT{N}) where N = qft(N)
circuit (generic function with 1 method)

And forward mat to its circuit's matrix

YaoBlocks.mat(::Type{T}, x::QFT) where T = mat(T, circuit(x))

You may notice, it is a little ugly to print QFT at the moment, this is because we print the type summary by default, you can define your own printing by overloading print_block

YaoBlocks.print_block(io::IO, x::QFT{N}) where N = print(io, "QFT($N)") Since it is possible to use FFT to simulate the results of QFT (like cheating), we could define our custom apply! method: using FFTW, LinearAlgebra function YaoBlocks.apply!(r::ArrayReg, x::QFT) α = sqrt(length(statevec(r))) invorder!(r) lmul!(α, ifft!(statevec(r))) return r end Now let's check if our apply! method is correct: r = rand_state(5) r1 = r |> copy |> QFT(5) r2 = r |> copy |> circuit(QFT(5)) r1 ≈ r2 true We can get iQFT (inverse QFT) directly by calling adjoint QFT(5)'  [†]QFT(5) QFT and iQFT are different from FFT and IFFT in three ways, 1. they are different by a factor of$\sqrt{2^n}$with$n$the number of qubits. 2. the bit numbering will exchange after applying QFT or iQFT. 3. due to the convention, QFT is more related to IFFT rather than FFT. ## Phase Estimation Since we have QFT and iQFT blocks we can then use them to realize phase estimation circuit, what we want to realize is the following circuit: using Yao First we call Hadamard gates repeatly on first n qubits. Hadamards(n) = repeat(H, 1:n) Hadamards (generic function with 1 method) Then in dashed box B, we have controlled unitaries: ControlU(n, m, U) = chain(n+m, control(k, n+1:n+m=>matblock(U^(2^(k-1)))) for k in 1:n) ControlU (generic function with 1 method) each of them is a U of power$2^(k-1)$. Since we will only apply the qft and Hadamard on first n qubits, we could use Subroutine, which creates a context of a sub-scope of the qubits. PE(n, m, U) = chain(n+m, # total number of the qubits subroutine(Hadamards(n), 1:n), # apply H in local scope ControlU(n, m, U), subroutine(QFT(n)', 1:n)) PE (generic function with 1 method) we use the first n qubits as the output space to store phase$ϕ$, and the other m qubits as the input state which corresponds to an eigenvector of oracle matrix U. The concentrator here uses focus! and relax! to manage a local scope of quantum circuit, and only active the first n qubits while applying the block inside the concentrator context, and the scope will be relax!ed back, after the context. This is equivalent to manually focus! then relax! fullly activated r = rand_state(5) ArrayReg{1, ComplexF64, Array...} active qubits: 5/5 first 3 qubits activated focus!(r, 1:3) ArrayReg{1, ComplexF64, Array...} active qubits: 3/5 relax back to the original relax!(r, 1:3) ArrayReg{1, ComplexF64, Array...} active qubits: 5/5 In this way, we will be able to apply small operator directly on the subset of the qubits. Details about the algorithm can be found here: Quantum Phase Estimation Algorithm Now let's check the results of our phase estimation. First we need to set up a unitary with known phase, we set the phase to be 0.75, which is 0.75 * 2^3 == 6 == 0b110 . # using LinearAlgebra N, M = 3, 5 P = eigen(rand_unitary(1<<M)).vectors θ = Int(0b110) / 1<<N phases = rand(1<<M) phases[0b010+1] = θ U = P * Diagonal(exp.(2π * im * phases)) * P' 32×32 Matrix{ComplexF64}: -0.00684444+0.132532im -0.0600257-0.0213615im 0.0646327-0.137385im -0.0198606+0.034341im 0.0375189-0.160245im -0.116358-0.0669152im -0.0376042-0.252527im 0.255985-0.124631im -0.288782-0.159022im -0.116135-0.102959im -0.113774+0.19034im -0.217952-0.170227im 0.0502484-0.207222im 0.165646+0.0365452im -0.0279379-0.276573im -0.202591-0.0600873im 0.0695064-0.121207im 0.00877106+0.144709im -0.0225591+0.0398238im -0.0225734-0.00385587im -0.11166+0.102305im 0.109347-0.0715527im -0.18815-0.226955im -0.0381662+0.0266477im -0.00450923+0.0635274im -0.122583-0.0779381im -0.0472708-0.0534873im -0.0676551+0.0304775im 0.0989087-0.0784105im 0.00600368-0.0396667im -0.211639+0.0971571im 0.0983034+0.135364im 0.0836657-0.274103im -0.200187+0.126721im 0.0582521-0.0762007im -0.0263351+0.0279837im 0.131111+0.200417im 0.0794958-0.0739868im -0.0131076+0.0282892im 0.0456875-0.0981776im -0.0641389+0.126138im -0.157021-0.0827344im 0.0672108-0.0819505im 0.0606214-0.11497im -0.000475433-0.141567im -0.114725+0.0321432im 0.0529168-0.131006im 0.100667-0.102025im 0.206757-0.125975im 0.0411196-0.249361im -0.0571546+0.102081im -0.184515-0.0247621im 0.0991232-0.245737im 0.0734807+0.0571364im 0.077197-0.0193977im 0.000966595+0.0617681im 0.0726127+0.375311im -0.0456986+0.0577736im -0.157986-0.121829im 0.00177983+0.156203im 0.170275-0.0381603im 0.0744669-0.0779532im 0.243183+0.185058im -0.0276985-0.0544714im 0.151468-0.0369252im -0.0711099-0.163441im 0.0305907+0.0719839im 0.180513-0.0549365im -0.0969033+0.0571137im -0.115346-0.118877im -0.0364621-0.260126im 0.0227602+0.18147im -0.0269726+0.14164im 0.213859+0.0414385im -0.0759343+0.0769258im -0.055467+0.189806im 0.160419-0.0260461im 0.0099259+0.156558im 0.0878494-0.0542123im -0.0313216-0.0646091im -0.116534+0.0374747im 0.0464655-0.155746im -0.191821+0.204628im -0.145188+0.00512984im -0.238829-0.0824809im -0.0780599-0.0435415im -0.0856782+0.0120303im 0.226923+0.0554807im 0.131781+0.0683833im 0.165048-0.0767114im 0.20913+0.217169im -0.0715684-0.146093im -0.032159+0.00648416im 0.136727+0.0881867im 0.208325+0.0705899im 0.222993+0.0236222im -0.151871+0.103761im -0.328995+0.121126im 0.172598+0.261111im -0.211222-0.098989im 0.0525847-0.119349im -0.0635754-0.00733153im 0.0628737+0.0208977im -0.0576188-0.0233886im -0.00889473+0.0625927im -0.128329+0.165563im -0.0339528-0.0677509im 0.149061+0.0709701im 0.151607-0.0745767im -0.088414-0.0493263im -0.0251705+0.0553727im -0.158172-0.0912688im 0.14656-0.0275013im -0.114339+0.158433im 0.10387+0.292636im 0.0752444-0.169199im -0.0654131-0.19262im -0.123098-0.0546266im -0.133678+0.088844im 0.0407664+0.0631938im -0.192542-0.0926508im -0.119405+0.115655im -0.0332567+0.0537507im 0.00576125-0.134713im -0.0847275-0.181936im 0.131575+0.213032im -0.0366958+0.0889742im -0.0559157-0.109104im 0.121009-0.0840061im -0.0473713-0.00295677im 0.0892104-0.00196892im -0.037403-0.0316992im -0.0140275-0.0451918im -0.115637-0.0158163im -0.133918-0.154011im 0.00556488-0.073072im -0.0063154+0.0208171im -0.192587-0.0810579im 0.214919+0.0759241im -0.0408043-0.0295429im 0.0195401+0.0362291im -0.114745+0.0575578im -0.10319-0.230483im 0.0782671-0.0497117im -0.0236094+0.182799im -4.61149e-5+0.187198im -0.0715681-0.0709782im 0.212481+0.0488125im -0.189464-0.184807im -0.224566+0.280503im -0.0445058-0.0854525im 0.15375-0.056456im -0.212911-0.0818986im 0.306082+0.141229im -0.0947036-0.0231322im 0.219643+0.112251im -0.070689+0.20758im -0.16339-0.0383486im 0.114168-0.0731053im -0.111478+0.092597im 0.191524-0.0412069im 0.0387405-0.00455705im 0.00310467-0.0835701im 0.145622+0.023193im 0.0661093-0.104489im -0.117172-0.0788801im 0.0894174+0.0240916im 0.0366082+0.0587676im -0.0158039-0.0822691im 0.149284+0.355255im 0.171569-0.220331im 0.123952-0.190512im 0.1926+0.142572im 0.044633-0.170008im -0.0513835-0.101435im -0.018711-0.0237922im -0.0879704+0.140738im -0.0904103+0.0782611im 0.233449+0.159994im -0.0187629-0.140828im 0.188654-0.0368664im -0.0973297+0.0280911im -0.160663-0.00752432im -0.00680889-0.0811645im 0.0513576-0.051164im -0.0727247-0.201255im 0.0475797+0.116331im 0.0107612+0.353232im 0.120141-0.0288341im -0.028168-0.14139im 0.0802233+0.0882736im 0.0733138+0.161903im 0.337553+0.175138im -0.228069+0.0668216im 0.108576+0.0231395im -0.104473-0.13472im 0.275022+0.217357im 0.112806-0.105748im -0.176309+0.0169055im 0.104891-0.0764573im 0.0374407+0.063107im 0.0418142+0.0640757im -0.170025-0.00271186im -0.254016+0.0316099im -0.0173102+0.112224im -0.025346-0.0666435im 0.061049-0.00683866im -0.0314366-0.0230626im -0.186549+0.160131im 0.0521951-0.014224im 0.0298507-0.0444131im -0.158218-0.0712666im -0.0541852-0.0337767im 0.107301+0.0538893im 0.0708108+0.236346im -0.0265781-0.0146706im -0.0194411-0.105161im 0.0166498+0.0312205im -0.178873+0.175249im -0.102424-0.0647269im 0.154345-0.148661im -0.164891-0.1318im -0.145954-0.204323im -0.102912+0.0521921im -0.0398152-0.00585453im 0.232899+0.115645im 0.0810233-0.12239im 0.0915953-0.113593im 0.0312074+0.0832244im -0.0667307+0.0217031im -0.149443+0.119352im 0.0940945+0.0677777im -0.0718838+0.0410693im 0.00321541+0.14915im -0.00156824+0.0951488im 0.00967169-0.0724701im 0.14534+0.213488im 0.14884+0.229275im -0.107529-0.0306318im 0.102423-0.0948021im 0.0287056+0.0828503im -0.134436+0.0392326im -0.108789-0.0898777im -0.0362165-0.218714im -0.128152+0.156971im -0.0876816-0.233824im 0.192455+0.0351838im 0.0948611+0.14278im -0.239216-0.1015im -0.151086+0.10981im -0.0578932-0.251158im 0.0698621-0.1721im 0.120649-0.167039im -0.0296633-0.114076im 0.234004+0.15632im 0.0327879-0.0274977im -0.0365712-0.187676im -0.0422708-0.24388im -0.00114098-0.161484im 0.0835251-0.027249im -0.113429-0.0755448im 0.0970366-0.0647922im -0.00835344-0.0543348im 0.0730832-0.0624172im 0.115451+0.250505im -0.0658587-0.0384415im 0.115921-0.189806im -0.0781191+0.0164479im 0.100784+0.0775206im -0.0935347+0.119062im -0.000133438-0.125292im 0.0301512-0.0093871im 0.250372-0.0694277im 0.0888158+0.20535im 0.18255-0.0505444im 0.0635966-0.127005im -0.0504526-0.0464495im -0.0135563-0.275044im 0.139066+0.046133im -0.216919-0.0513507im 0.1164-0.197079im 0.236376+0.110693im -0.103627+0.0772686im -0.2579-0.0435577im -0.0148219-0.012113im 0.174343-0.170151im -0.149696-0.0324402im 0.117948-0.0487627im 0.0525629+0.0404256im 0.071238-0.0758197im -0.00147825-0.204793im -0.136759-0.146454im -0.00780598-0.0404784im -0.217568-0.00781283im 0.00115212+0.167964im 0.114926+0.238496im 0.0695642+0.0225215im -0.177145-0.036507im -0.0897224-0.105699im -0.0692363+0.00115389im 0.136274+0.0181378im 0.0575641-0.131346im 0.0490112+0.102531im -0.106073+0.177523im 0.0609233-0.0403671im 0.00181317-0.267784im 0.122051-0.0545971im 0.323335+0.139875im -0.0522656-0.0388915im 0.140339+0.155909im -0.151418-0.0238186im -0.0434918+0.327972im -0.105306+0.00113909im 0.040195+0.270643im 0.0929961+0.0727593im -0.189834+0.0230847im 0.152835-0.00995194im 0.0111468-0.0247im 0.149724-0.0355059im 0.0932646+0.0692211im 0.0933529+0.12648im 0.186086+0.00545934im 0.0557867+0.132482im -0.0614956-0.0140949im -0.158853+0.0695591im -0.35232-0.0725102im -0.132987+0.0122157im 0.0639554-0.0361781im 0.0411811-0.268945im -0.0111227+0.0690567im -0.135472-0.15464im -0.0712655+6.83832e-5im 0.0772923-0.0972881im -0.315934+0.0293428im -0.0889711-0.039287im 0.0486037+0.0418934im 0.0109427-0.189571im -0.0371878-0.162885im -0.141538+0.256517im 0.0606064+0.0396263im 0.110389+0.082462im -0.074711+0.0391237im 0.226795+0.0881668im -0.127589-0.294026im 0.10415-0.0751929im 0.0832216+0.11058im -0.175563-0.123953im -0.0591453-0.0106027im -0.0707243-0.0476401im -0.1052+0.0161645im -0.0363999+0.0981139im 0.132206+0.0420487im 0.135152-0.147892im -0.152005-0.00662321im 0.110785-0.16758im -0.0549528+0.0978226im -0.0261878-0.0757374im 0.0635338-0.0132202im -0.107414-0.0794882im 0.080073+0.0604007im 0.236289-0.185712im -0.0321782+0.0028518im -0.0144037-0.153529im -0.0377862+0.104686im -0.00601416+0.185686im 0.147592-0.0639433im -0.0169531-0.0909041im -0.110284-0.00493333im -0.215455-0.132039im -0.0669227-0.114858im 0.131001-0.293386im -0.119033-0.0307798im 0.124801-0.105419im 0.000265931-0.0146765im -0.080927-0.136828im 0.113545-0.152268im -0.0327704-0.0912703im -0.0112848-0.00961224im -0.208196-0.224072im 0.0180468-0.141366im -0.0834947+0.00529693im 0.122185+0.407342im 0.0588214+0.0400516im 0.170454-0.0544695im -0.122232+0.0465171im -0.105934+0.119168im 0.0653712-0.241311im -0.0679235-0.351541im -0.0887947-0.0916216im -0.0340139+0.148079im 0.0593521+0.202558im -0.144468+0.0545172im -0.0597988+0.0203938im -0.0205521-0.212505im -0.0282664-0.0738485im -0.132986-0.0682561im -0.2951+0.134848im -0.240715+0.0545515im 0.21979+0.0451802im -0.00566514-0.0891086im -0.0574883-0.0280933im -0.122667+0.11766im -0.188377-0.0102066im -0.163357-0.125555im 0.00730669+0.0811309im -0.128145-0.0303055im -0.105051-0.0473399im 0.0740548-0.202427im -0.0475041-0.0191976im 0.0236608+0.0192015im 0.0931278+0.108966im -0.117124+0.197269im 0.1282-0.0107871im 0.0355473+0.087854im 0.0584286+0.0335442im 0.174632+0.155874im 0.111723+0.0744848im 0.0663822+0.178256im -0.124271+0.00945653im -0.119754-0.189127im -0.0622127-0.0356061im -0.142147+0.213425im 0.0954565-0.114614im 0.0243046-0.194866im 0.134946+0.121629im 0.177743-0.149322im 0.0565683-0.216799im 0.0734857+0.0304555im 0.0279693+0.0908201im -0.0251247-0.190302im -0.0113218-0.0707506im -0.0115203-0.000813068im -0.201825+0.151741im 0.0124099+0.0244867im -0.0820103+0.056469im 0.00815573-0.15465im -0.151806+0.00101895im 0.164303+0.0493991im 0.0144054-0.342868im -0.154108+0.121459im 0.195285+0.0325556im 0.131698-0.0144142im 0.0149638-0.140745im -0.00755202-0.161217im 0.00866363-0.114103im 0.0712116-0.0503576im -0.0297967+0.24332im -0.24218-0.0666235im 0.206194+0.035685im -0.142281-0.254062im 0.0681794-0.245025im -0.0240287-0.0852933im -0.0732468-0.222036im -0.0074692-0.0822344im 0.124872+0.0203709im 0.0154736+0.014206im 0.00575142-0.0901407im -0.156581+0.052141im -0.0470142-0.126762im -0.158311+0.126454im -0.0605936-0.140879im 0.0439199+0.179985im -0.133792+0.300728im -0.0813352-0.137915im -0.0313941+0.148969im 0.0443316-0.0398547im -0.126248+0.0338931im 0.0660543+0.0243303im 0.00234137+0.0208722im 0.0640413-0.0416433im 0.140222+0.0855661im 0.0733194-0.0563213im 0.0799221-0.0247145im -0.121751-0.0715536im 0.043168-0.140678im 0.164056+0.141119im -0.167606-0.0549697im 0.25276-0.124916im 0.0806344+0.0408268im -0.354794+0.0612149im -0.244497+0.144437im 0.0515967-0.0941111im -0.0131307-0.159989im 0.246449+0.129602im -0.0922696+0.282444im 0.0618634-0.0029504im 0.0461542-0.00163993im -0.0805372+0.000723118im 0.104298+0.0493868im -0.0131356-0.135087im 0.0444441+0.0892442im -0.137095+0.195338im 0.08183-0.042827im -0.0333259-0.112415im -0.0658522-0.0473672im -0.182027+0.129288im -0.0406853+0.0982042im -0.168787-0.134684im 0.166311+0.107283im -0.0353663-0.0639323im -0.11563-0.235695im 0.0439764-0.0900341im 0.0173298-0.000356459im -0.109056-0.246099im -0.26178+0.0913753im 0.068437-0.0365419im 0.0883846-0.114905im -0.025892+0.0829028im 0.0112611-0.21964im -0.0921127+0.0575791im 0.0089876+0.0641679im -0.18267+0.251216im -0.0713692-0.165625im 0.0776543-0.0245796im 0.191124+0.364253im -0.0355634-0.129322im -0.130535-0.0198948im -0.00996467-0.022961im 0.112923+0.324796im 0.079359+0.0165344im 0.0366111-0.124188im 0.198186-0.0116595im 0.170131+0.0391681im -0.10147+0.190524im -0.123966-0.011256im 0.0645532+0.0982016im 0.00463911-0.190481im -0.030058+0.120659im -0.119072-0.00690073im 0.250738-0.0556512im 0.000794266+0.0356384im -0.00912202-0.0481321im -0.129433-0.0772601im 0.00277197-0.0370119im -0.0868577-0.0311137im 0.00210233+0.16288im -0.0247073+0.0390553im -0.0567033-0.0133923im -0.215806-0.159884im 0.0483765+0.17651im 0.00693662-0.108075im 0.211024-0.106586im -0.0881299-0.192983im 0.0690494+0.211838im 0.188677-0.00841418im 0.0735921-0.227942im -0.185201-0.00324989im -0.0393334-0.17337im -0.174219-0.119331im 0.0143508+0.0182727im -0.0575348+0.0189619im -0.0932005-0.000519583im 0.137955-0.121708im 0.0185511+0.0738739im 0.146879+0.0648325im 0.10013-0.168651im -0.14854+0.1278im -0.0258968+0.141889im 0.025903-0.161693im -0.051762-0.0156117im 0.0567321-0.0992977im -0.144345-0.182527im 0.00419548+0.0486486im -0.102657-0.0718901im -0.244609-0.163611im 0.20278+0.00676562im -0.099837+0.0270665im -0.00371248-0.0901414im -0.204558+0.132081im -0.292803+0.034253im -0.0375114+0.15623im -0.111375-0.0292378im -0.217729+0.0545329im -0.182547-0.11394im -0.113765+0.0105046im -0.0738433-0.241525im 0.102574-0.214404im 0.0798371-0.0898724im 0.135843-0.170036im 0.0132095+0.0672348im 0.00193048+0.0967847im 0.134724-0.19963im 0.0261635-0.112585im -0.00263601-0.215504im 0.198468+0.0681815im 0.0130558-0.0545888im -0.0871801+0.05981im 0.145729-0.0521015im 0.0515505+0.0662533im -0.0792669+0.0339533im -0.103782+0.276278im 0.0223959+0.306206im -0.172055-0.220747im -0.0296203+0.235825im -0.210596+0.245903im 0.0228203-0.12168im -0.124793-0.000115674im -0.0403966+0.14842im -0.047459-0.112052im -0.0211679+0.0781297im -0.00791095-0.0355948im -0.23017+0.117304im 0.0892441-0.0775033im 0.0221328+0.0995586im 0.137289-0.0381241im -0.0272175+0.0696725im -0.0971031-0.147605im 0.0798031+0.0128695im -0.0727693-0.0474504im 0.0459527+0.0229523im 0.0235186+0.0683812im 0.0363511-0.0701897im -0.11077-0.397668im 0.209975-0.142579im -0.163436-0.270083im -0.0581506+0.137409im -0.317521+0.0492568im 0.00411427-0.140208im -0.0461873-0.108548im 0.160006+0.170005im 0.0201372+0.0474656im 0.0447944-0.119584im 0.0528826-0.00969215im 0.0593513-0.0347214im -0.138126-0.108858im -0.0683646-0.121597im 0.0471147+0.0761536im -0.0395991-0.146367im -0.0388913+0.186836im 0.0885528+0.115801im 0.155891+0.110908im -0.179688+0.0800731im -0.141546+0.0365928im 0.111199-0.0163723im -0.132715-0.0427602im -0.0586564+0.20871im -0.000690619-0.142807im -0.114414+0.060475im 0.13953-0.158037im -0.0797751-0.0298802im 0.0248527+0.140253im 0.0739728+0.0681774im 0.0482976+0.0903504im 0.283487+0.0270495im -0.222148-0.147128im -0.0626613-0.00869873im 0.078448-0.0315039im 0.0381418-0.336698im 0.183331-0.197364im -0.135316+0.013063im -0.128895+0.000182725im -0.108308+0.179195im -0.121114+0.125523im 0.0929065-0.00625524im -0.0114977+0.0622902im -0.0146561-0.13061im 0.210757+0.239343im -0.120618+0.03598im 0.156138+0.09379im -0.226372-0.015311im 0.00594218-0.0385807im -0.0417206+0.0866145im 0.0686015+0.0508551im 0.0332758+0.22278im 0.0605255+0.125487im 0.0304382+0.136595im 0.0224002-0.0409516im -0.0844741+0.0692615im 0.249709+0.204261im -0.0171868+0.0882153im 0.0166941-0.092562im 0.076066-0.135133im -0.030999-0.152245im 0.063326+0.0321605im 0.011453-0.0730048im 0.033733-0.141247im -0.0919911+0.046726im 0.178247-0.03459im 0.132388-0.0367077im 0.166085-0.100092im -0.116873-0.0773248im -0.103092+0.187349im 0.0777946-0.0195764im 0.213753-0.155309im -0.0743672-0.145544im -0.194419+0.155912im 0.0763561+0.0937772im -0.358815-0.0854964im -0.238103+0.249924im 0.177634-0.139416im 0.0500934-0.0672321im 0.0992723+0.0995455im -0.0571408+0.0239972im -0.22124-0.132261im -0.0544129+0.0635935im -0.0734447+0.0386153im 0.074323+0.0819363im 0.111229+0.0137832im 0.0200949-0.124591im -0.136643-0.0897012im 0.0590422-0.0949001im -0.268682+0.14061im -0.0579644-0.0156511im 0.0277726-0.0753432im 0.0863323+0.21684im -0.178657+0.0322626im 0.0808478+0.0493623im 0.0967812+0.114402im -0.077061-0.135131im 0.225296-0.0768309im -0.211728+0.314328im 0.130818-0.138313im -0.0833972-0.0883195im 0.126906-0.0820353im -0.0203415+0.0118231im 0.137775-0.163542im 0.053627+0.138801im 0.132569+0.13748im 0.00489576+0.16311im 0.0360433+0.0697993im 0.178881-0.0171264im -0.0209989-0.129389im -0.0793481+0.00837212im -0.0347455+0.0101143im -0.0272843-0.0927578im 0.0268734+0.00897809im -0.24537-0.126716im -0.109153-0.0968387im 0.124261-0.0644708im 0.323285+0.137161im 0.172351-0.064688im 0.151884+0.01607im -0.136775-0.209266im -0.0722271-0.0830358im 0.0381024+0.0260847im 0.0573704-0.00924598im 0.0553838+0.085013im -0.152103-0.156224im 0.0274555-0.0878152im -0.118646+0.293091im -0.193072-0.0279532im -0.157751-0.0733291im 0.118158+0.0495618im -0.0650973+0.0441138im -0.0201092+0.0145815im 0.0393544+0.119631im 0.134057-0.130997im 0.163567+0.0231572im -0.244419-0.213471im 0.0261619+0.00631828im 0.00746277-0.178716im 0.275411+0.0246375im 0.0159791+0.0811906im -0.0522857+0.123109im -0.126947-0.080555im -0.191589+0.231882im -0.0813739-0.00846761im -0.00122392+0.0543667im -0.0233975+0.00294623im -0.132052+0.0673773im -0.0644328-0.184301im -0.05674-0.0144809im 0.0467449-0.0467034im -0.148874-0.16618im 0.24726-0.274953im -0.10159+0.0691525im 0.137434-0.0917256im -0.0524749+0.0426782im 0.0731087-0.0272328im 0.14566+0.0165994im 0.0663812+0.129071im -0.0421551+0.110229im 0.145587+0.0132142im -0.184513-0.0780255im -0.105385-0.0669426im -0.0294489+0.208881im -0.10816+0.0428076im -0.0457581-0.0535524im 0.0033956-0.326582im -0.074738-0.00267352im -0.211723-0.0130061im 0.0862717-0.0216095im 0.0814164+0.254267im -0.155402+0.220313im 0.0433018+0.0848733im -0.0172065+0.170357im -0.0641694+0.0710108im -0.111996+0.0928552im -0.0433543-0.179364im 0.0591836-0.309171im -0.0283031-0.127273im 0.113562-0.0321707im -0.201314+0.0952133im 0.17875-0.120686im -0.0369124-0.13122im 0.0270045+0.0936365im 0.0569123+0.0414704im -0.094463-0.130171im -0.0882755-0.00903152im 0.0733322-0.295216im -0.0366908+0.0771518im 0.0204308+0.17771im 0.12713-0.20836im -0.19183-0.216438im -0.0977292+0.0113285im 0.20754+0.00910904im -0.0897997-0.135041im -0.110243+0.0469896im -0.0586644-0.0620411im 0.100509+0.269468im -0.0206181+0.0303257im -0.192412+0.0161508im 0.0387874-0.0857345im 0.0319698-0.103812im -0.159272-0.0101233im 0.434774+0.00314304im 0.0597747+0.0916832im 0.0493265-0.137406im 0.019343+0.134635im 0.0772649+0.0581852im 0.0144347-0.206698im -0.0708482-0.246377im -0.042335-0.217158im -0.0636253+0.00939803im 0.018002+0.0764425im -0.0239174-0.01898im 0.12525-0.115009im -0.0932986+0.0214899im -0.0665949+0.131858im -0.0249376+0.0708591im -0.0887835-0.234185im 0.0227136-0.037634im 0.150222-0.0785445im -0.03387+0.20323im -0.099522+0.168815im 0.0414351-0.0899344im -0.22842-0.0244782im 0.0910684-0.109466im 0.221636-0.035452im 0.101656+0.33106im 0.135649+0.0305874im -0.0869645-0.129703im -0.0395795+0.25489im -0.0675034-0.134802im -0.074065-0.138095im 0.130061+0.0237198im -0.224898+0.193946im 0.156353+0.0996155im 0.066766+0.119514im -0.00678468+0.0217103im 0.127016-0.0186434im 0.0831747-0.0810706im -0.0538801+0.0194212im -0.0237253+0.0446464im 0.0380533-0.132839im 0.0430774-0.226843im 0.0647434-0.0505117im 0.0256741-0.0220826im -0.238193+0.184726im -0.0397553+0.0392508im 0.175892-0.185941im -0.0425735+0.0617176im 0.0136797+0.16942im 0.0214162-0.0991472im -0.178647+0.0791655im -0.02707-0.0408657im 0.0229186-0.0648067im -0.170882-0.167512im 0.0422956-0.102129im -0.174118-0.0280639im 0.0543019-0.136916im 0.182932-0.0855027im 0.132986+0.091986im 0.239879+0.0113947im -0.00955385+0.252238im 0.20808+0.00476336im -0.0176061+0.155558im 0.0439927+0.115922im -0.142508+0.173739im 0.0448728-0.0282522im 0.011039-0.0641448im 0.0742772+0.107475im -0.0469967-0.0046402im -0.0455474+0.189276im 0.112398-0.192075im 0.271797-0.125462im -0.106012+0.278926im -0.0491819-0.0215631im -0.0328231+0.0129158im 0.157449-0.112512im -0.194292-0.100519im -0.103222+0.113834im 0.072664+0.160171im -0.115717+0.0822669im 0.118684+0.132349im -0.0392497+0.143884im -0.0279887+0.052295im 0.0291375-0.0576544im 0.212347+0.0380873im 0.0240175+0.0675314im -0.00907545+0.0848666im 0.0468536+0.0652118im 0.0123801+0.0451685im -0.171493+0.0364762im 0.159576+0.187462im -0.00519704+0.200727im -0.154156+0.0450794im 0.0510351+0.00946317im 0.075962-0.192428im 0.179848-0.161234im 0.209805-0.056335im -0.0832895-0.202914im 0.0139715+0.16498im 0.0644771+0.0464045im -0.209542-0.11165im 0.0778711-0.0257532im -0.232932+0.083233im 0.212196-0.000814025im -0.0164166-0.0320191im -0.169584-0.156349im 0.100802-0.0933568im -0.0751778+0.184561im -0.118846-0.0858013im 0.0208937+0.35863im -0.0954659+0.106647im -0.0993624+0.0662243im 0.0630666+0.106581im 0.18966-0.124036im -0.187175+0.0597392im -0.148207-0.000782073im -0.0236227-0.147094im -0.00956714+0.124833im -0.0486686+0.0374136im 0.0581559-0.0108454im -0.0234851+0.157068im 0.166576+0.187178im -0.165369-0.151547im -0.00840857+0.0298209im 0.175695+0.100126im -0.120155+0.0455509im 0.0284233+0.166603im -0.215585-0.18025im -0.0214864+0.0666588im -0.0810743+0.0823697im 0.0647133+0.0378998im 0.157543+0.152295im 0.00679422+0.120217im -0.101502-0.0753573im -0.183408-0.103799im 0.128069+0.174623im 0.229202-0.0787646im 0.15855+0.170515im 0.248035-0.16766im -0.0982621-0.149517im -0.0633773-0.0833028im -0.153283+0.0302673im -0.194223+0.0684403im -0.205787+0.025927im 0.125267+0.0705993im 0.0524857-0.132554im -0.0316046-0.0274105im -0.241388-0.0353964im 0.1353+0.113763im -0.00160268+0.150611im -0.0266422-0.138297im -0.126656+0.0945874im 0.0818083-0.128506im -0.13808+0.0323168im 0.0743694+0.162692im 0.0512011+0.139427im 0.14906+0.229475im -0.22558-0.0962718im 0.185442+0.193821im -0.320054+0.0170672im -0.000166931+0.2206im -0.0633709-0.00887153im 0.00632239+0.0201205im -0.170128-0.210346im -0.0030689-0.130624im -0.0812311+0.142338im -0.0154458+0.228901im -0.0600238+0.0536155im -0.0787786-0.162643im -0.164925+0.0250754im -0.0782012+0.0998814im -0.00042487-0.102543im -0.103824-0.178803im -0.015022-0.00522454im 0.0693172-0.03498im 0.0513528-0.198729im -0.048688-0.103535im 0.056408-0.0944217im 0.066732-0.0193876im 0.0289049+0.0885818im -0.0213481-0.0598754im 0.090721+0.0526828im 0.0616999+0.00137757im -0.317411+0.253596im 0.0304525-0.0624747im -0.046158+0.226195im -0.0770796+0.043557im -0.176885-0.0889821im 0.0793061+0.0930074im 0.138491-0.0472853im 0.122552-0.00403438im 0.125265+0.0670686im -0.0998003+0.0433484im -0.0353633+0.0554101im 0.0757481-0.00905945im 0.104346-0.163911im -0.160819-0.075207im -0.295738-0.287547im 0.028774-0.155727im -0.134206-0.0433198im -0.0955369+0.117452im -0.119167+0.0395995im 0.226933-0.132038im -0.00744768+0.115888im 0.00605175-0.0544755im -0.0455494+0.107125im -0.0434248+0.0257766im -0.0457605+0.139514im -0.222587-0.272741im -0.178096+0.045116im and then generate the state$ψ\$

psi = P[:, 3]
32-element Vector{ComplexF64}:
0.06572046484748441 + 0.03033399331542282im
-0.09316743260941532 - 0.05499305334884531im
-0.19295376340763387 + 0.008794219528556801im
0.1519807818081928 - 0.18341334908343118im
-0.0776482080882592 - 0.07812379430054915im
-0.2270578329633753 + 0.2271620000661688im
-0.033667697751459495 - 0.11740060235063257im
-0.02949042179947227 + 0.021335258751960098im
0.023348975051573545 - 0.003676057252883125im
0.322565752894367 + 0.0im
0.019676625518665763 + 0.07584919803016502im
-0.036703519156378296 + 0.10146397783035672im
0.013967173800133187 - 0.08276595346022156im
0.2224923508603629 - 0.09946219125149904im
-0.1828606016540513 - 0.10192880561326835im
-0.012405908120425666 + 0.06417434528021553im
0.17660913833513373 - 0.0650660986661203im
-0.09229656077695102 - 0.061559311658767636im
0.10310209664974068 + 0.06809602020662116im
0.06783411163054594 - 0.26592842952108764im
0.011730981426506781 + 0.12048565581707726im
-0.09912242773786759 - 0.07933607791232293im
-0.006906331555686479 + 0.1951869058916554im
-0.15223970558356872 + 0.2657277711510408im
0.09932382647983888 + 0.05403241520911994im
-0.20145931150458277 + 0.03990831128076797im
0.1197846154605415 + 0.15000407575812355im
-0.06806751724692221 + 0.04546936578235509im
0.21899425216677607 - 0.015847285823220907im
-0.06888626301251857 - 0.04262962763428157im
0.06159815992773677 + 0.10133743645348332im
0.21900256387796108 - 0.06487638099810054im

In the phase estimation process, we will feed the state to circuit and measure the first n qubits processed by iQFT.

r = join(ArrayReg(psi), zero_state(N))
r |> PE(N, M, U)
ArrayReg{1, ComplexF64, Array...}
active qubits: 8/8

Since our phase can be represented by 3 qubits precisely, we only need to measure once

results = measure(r, 1:N; nshots=1)
1-element Vector{BitBasis.BitStr64{3}}:
011 ₍₂₎

Recall that our QFT's bit numbering is reversed, let's reverse it back

using BitBasis
estimated_phase = bfloat(results[]; nbits=N)
0.75

the phase is exactly 0.75!