Skip to content

Commit f4cc567

Browse files
committed
Update Apply
1 parent 0b4cd45 commit f4cc567

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

math/vector/vector.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,9 @@ func (v *Vector) Apply(m *matrix.Matrix) *Vector {
114114

115115
data := make([]complex128, p)
116116
for i := range p {
117+
row := m.Row(i)
117118
for j := range q {
118-
data[i] += m.At(i, j) * v.Data[j]
119+
data[i] += row[j] * v.Data[j]
119120
}
120121
}
121122

quantum/qubit/qubit.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,14 @@ func (q *Qubit) Apply(g ...*matrix.Matrix) *Qubit {
162162

163163
// G applies a gate to the qubit at the given index.
164164
func (q *Qubit) G(g *matrix.Matrix, idx int) {
165+
g0, g1, g2, g3 := g.Data[0], g.Data[1], g.Data[2], g.Data[3]
166+
165167
stride := 1 << (q.NumQubits() - 1 - idx)
166168
for i := 0; i < q.Dim(); i += 2 * stride {
167169
for j := range stride {
168170
a, b := q.state.Data[i+j], q.state.Data[i+j+stride]
169-
q.state.Data[i+j] = g.At(0, 0)*a + g.At(0, 1)*b
170-
q.state.Data[i+j+stride] = g.At(1, 0)*a + g.At(1, 1)*b
171+
q.state.Data[i+j] = g0*a + g1*b
172+
q.state.Data[i+j+stride] = g2*a + g3*b
171173
}
172174
}
173175
}
@@ -366,6 +368,7 @@ func (q *Qubit) Controlled(g *matrix.Matrix, control []int, target int) *Qubit {
366368
}
367369
tmask := 1 << (n - 1 - target)
368370

371+
g0, g1, g2, g3 := g.Data[0], g.Data[1], g.Data[2], g.Data[3]
369372
for i := range q.Dim() {
370373
if (i & cmask) != cmask {
371374
continue
@@ -377,8 +380,8 @@ func (q *Qubit) Controlled(g *matrix.Matrix, control []int, target int) *Qubit {
377380
}
378381

379382
a, b := q.state.Data[i], q.state.Data[j]
380-
q.state.Data[i] = g.At(0, 0)*a + g.At(0, 1)*b
381-
q.state.Data[j] = g.At(1, 0)*a + g.At(1, 1)*b
383+
q.state.Data[i] = g0*a + g1*b
384+
q.state.Data[j] = g2*a + g3*b
382385
}
383386

384387
return q

0 commit comments

Comments
 (0)