예제 #1
0
 def test_shor_no_factors(self, n_v):
     """shor no factors test"""
     backend = Aer.get_backend("qasm_simulator")
     shor = Shor(quantum_instance=QuantumInstance(backend, shots=1000))
     result = shor.factor(N=n_v)
     self.assertTrue(result.factors == [])
     self.assertTrue(result.successful_counts == 0)
예제 #2
0
 def test_shor_factoring(self, n_v, backend, factors):
     """shor factoring test"""
     shor = Shor(quantum_instance=QuantumInstance(Aer.get_backend(backend),
                                                  shots=1000))
     result = shor.factor(N=n_v)
     self.assertListEqual(result.factors[0], factors)
     self.assertTrue(result.total_counts >= result.successful_counts)
예제 #3
0
 def test_shor_power(self, base, power):
     """shor power test"""
     n_v = int(math.pow(base, power))
     backend = Aer.get_backend("qasm_simulator")
     shor = Shor(quantum_instance=QuantumInstance(backend, shots=1000))
     result = shor.factor(N=n_v)
     self.assertTrue(result.factors == [base])
     self.assertTrue(result.total_counts >= result.successful_counts)
예제 #4
0
 def test_shor_no_factors(self, n_v):
     """ shor no factors test """
     shor = Shor(n_v)
     backend = BasicAer.get_backend('qasm_simulator')
     quantum_instance = QuantumInstance(backend, shots=1000)
     ret = shor.run(quantum_instance)
     self.assertTrue(ret['factors'] == [])
     self.assertTrue(ret["successful_counts"] == 0)
예제 #5
0
 def test_shor_factoring(self, n_v, backend, factors):
     """ shor factoring test """
     shor = Shor(n_v)
     result_dict = shor.run(
         QuantumInstance(BasicAer.get_backend(backend), shots=1000))
     self.assertListEqual(result_dict['factors'][0], factors)
     self.assertTrue(
         result_dict["total_counts"] >= result_dict["successful_counts"])
예제 #6
0
 def test_shor_power(self, base, power):
     """ shor power test """
     n_v = int(math.pow(base, power))
     shor = Shor(n_v)
     backend = BasicAer.get_backend('qasm_simulator')
     quantum_instance = QuantumInstance(backend, shots=1000)
     ret = shor.run(quantum_instance)
     self.assertTrue(ret['factors'] == [base])
     self.assertTrue(ret["total_counts"] >= ret["successful_counts"])
예제 #7
0
 def test_shor_factoring(self):
     """shor factoring test"""
     n_v = 15
     factors = [3, 5]
     qasm_simulator = QuantumInstance(
         self._qasm, shots=1000, seed_simulator=self.seed, seed_transpiler=self.seed
     )
     shor = Shor(quantum_instance=qasm_simulator)
     result = shor.factor(N=n_v)
     self.assertListEqual(result.factors[0], factors)
     self.assertTrue(result.total_counts >= result.successful_counts)
예제 #8
0
# Code blocks for qiskit notebook

## Block 1 - Setup
import math
import numpy as np
from qiskit import Aer
from qiskit.utils import QuantumInstance
from qiskit.algorithms import Shor


## Block 2 - Run 
N = 15
backend = Aer.get_backend('aer_simulator')
quantum_instance = QuantumInstance(backend, shots=1024)
shor = Shor(quantum_instance=quantum_instance)
result = shor.factor(N)
print(f"The list of factors of {N} as computed by the Shor's algorithm is {result.factors[0]}.")

## Block 3 - Eval Perf
print(f'Computed of qubits for circuit: {4 * math.ceil(math.log(N, 2)) + 2}')
print(f'Actual number of qubits of circuit: {shor.construct_circuit(N).num_qubits}')

## Block 4 - Version Info
import qiskit.tools.jupyter
%qiskit_version_table
%qiskit_copyright
예제 #9
0
 def test_shor_modinv(self, a_v, m_v, expected):
     """shor modular inverse test"""
     modinv = Shor.modinv(a_v, m_v)
     self.assertTrue(modinv == expected)
예제 #10
0
 def test_shor_bad_input(self, n_v):
     """shor bad input test"""
     with self.assertRaises(ValueError):
         _ = Shor().factor(N=n_v)
예제 #11
0
 def test_shor_bad_input(self, n_v):
     """ shor bad input test """
     with self.assertRaises(ValueError):
         Shor(n_v)
예제 #12
0
 def setUp(self):
     super().setUp()
     backend = Aer.get_backend("qasm_simulator")
     self.instance = Shor(
         quantum_instance=QuantumInstance(backend, shots=1000))