Skip to content

Commit

Permalink
removing old :AMPLITUDE initarg references in qvm-app (#221)
Browse files Browse the repository at this point in the history
* changing the qvm make-instance calls to use the :state initarg as opposed to the amplitudes initarg.

* changing dqvm test to use :state initarg instead of :amplitudes initarg when make-instance-ing a pure state qvm.

* finalizing state instead of qvm object for qvm-app
  • Loading branch information
sophiaponte authored and Robert Smith committed Dec 12, 2019
1 parent 997becf commit 0dd2132
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 32 deletions.
68 changes: 38 additions & 30 deletions app/src/configure-qvm.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,14 @@
(cond
;; Are we using the persistent wavefunction?
(**persistent-wavefunction**
(make-instance 'qvm:pure-state-qvm
:number-of-qubits num-qubits
:classical-memory-subsystem (make-instance 'qvm:classical-memory-subsystem
:classical-memory-model
classical-memory-model)
:amplitudes **persistent-wavefunction**))
(let* ((amplitudes **persistent-wavefunction**)
(state (make-instance 'qvm:pure-state :num-qubits num-qubits
:amplitudes amplitudes))
(memory-subsystem (make-instance 'qvm:classical-memory-subsystem :classical-memory-model classical-memory-model)))
(make-instance 'qvm:pure-state-qvm
:number-of-qubits num-qubits
:classical-memory-subsystem memory-subsystem
:state state)))
(t
(qvm:make-qvm num-qubits :classical-memory-model classical-memory-model
:allocation (funcall **default-allocation**
Expand All @@ -63,34 +65,38 @@
(error "Cannot simultaneously support Pauli error model and Kraus channels."))

(multiple-value-bind (amps fin) (make-wavefunction (expt 2 num-qubits))
(let ((q
(make-instance 'qvm:noisy-qvm
:number-of-qubits num-qubits
:noisy-gate-definitions kraus-ops
:readout-povms readout-povms
:classical-memory-subsystem (make-instance 'qvm:classical-memory-subsystem
:classical-memory-model
classical-memory-model)
:amplitudes amps)))
(when fin (tg:finalize q fin))
(let* ((state (make-instance 'qvm:pure-state :num-qubits num-qubits
:amplitudes amps))
(q
(make-instance 'qvm:noisy-qvm
:number-of-qubits num-qubits
:noisy-gate-definitions kraus-ops
:readout-povms readout-povms
:classical-memory-subsystem (make-instance 'qvm:classical-memory-subsystem
:classical-memory-model
classical-memory-model)
:state state)))
(when fin (tg:finalize state fin))
q)))
(t
(let ((gate-noise (or gate-noise '(0.0 0.0 0.0)))
(measurement-noise (or measurement-noise '(0.0 0.0 0.0))))
(multiple-value-bind (amps fin) (make-wavefunction (expt 2 num-qubits))
(let ((q (make-instance 'qvm:depolarizing-qvm
:number-of-qubits num-qubits
:classical-memory-subsystem (make-instance 'qvm:classical-memory-subsystem
:classical-memory-model
classical-memory-model)
:x (elt gate-noise 0)
:y (elt gate-noise 1)
:z (elt gate-noise 2)
:measure-x (elt measurement-noise 0)
:measure-y (elt measurement-noise 1)
:measure-z (elt measurement-noise 2)
:amplitudes amps)))
(when fin (tg:finalize q fin))
(let* ((state (make-instance 'qvm:pure-state :num-qubits num-qubits
:amplitudes amps))
(q (make-instance 'qvm:depolarizing-qvm
:number-of-qubits num-qubits
:classical-memory-subsystem (make-instance 'qvm:classical-memory-subsystem
:classical-memory-model
classical-memory-model)
:x (elt gate-noise 0)
:y (elt gate-noise 1)
:z (elt gate-noise 2)
:measure-x (elt measurement-noise 0)
:measure-y (elt measurement-noise 1)
:measure-z (elt measurement-noise 2)
:state state)))
(when fin (tg:finalize state fin))
q)))))))


Expand Down Expand Up @@ -128,7 +134,9 @@
:noisy-gate-definitions kraus-ops
:readout-povms readout-povms
:classical-memory-subsystem memory
:amplitudes **persistent-wavefunction**)
:state (make-instance 'qvm:density-matrix-state
:num-qubits num-qubits
:elements-vector **persistent-wavefunction**))
(qvm::make-density-qvm num-qubits
:noisy-gate-definitions kraus-ops
:readout-povms readout-povms
Expand Down
6 changes: 4 additions & 2 deletions dqvm/tests/program-tests.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@
"Run PARSED-PROGRAM on a PURE-STATE-QVM with qubit size NUMBER-OF-QUBITS and return the wavefunction."
(let* ((qvm:*compile-before-running* nil)
(number-of-amplitudes (expt 2 number-of-qubits))
(state (make-instance 'qvm:pure-state :num-qubits number-of-qubits
:amplitudes (or initial-wavefunction
(make-debug-wavefunction number-of-amplitudes))))
(qvm (make-instance 'qvm:pure-state-qvm
:number-of-qubits number-of-qubits
:amplitudes (or initial-wavefunction
(make-debug-wavefunction number-of-amplitudes)))))
:state state)))
(qvm:load-program qvm parsed-program)
(qvm:run qvm)
(qvm::amplitudes qvm)))
Expand Down

0 comments on commit 0dd2132

Please sign in to comment.