@@ -530,6 +530,41 @@ def test_euler_decomposition_zsx_2(self):
530
530
result = passmanager .run (circuit )
531
531
self .assertEqual (circuit , result , f"Circuit:\n { circuit } \n Result:\n { result } " )
532
532
533
+ def test_optimize_run_of_u_to_single_u_on_target_no_error (self ):
534
+ """U(pi/3, 0, 0) * U(pi/3, 0, 0) * U(pi/3, 0, 0) -> U(pi, 0, 0)."""
535
+ qr = QuantumRegister (1 , "qr" )
536
+ circuit = QuantumCircuit (qr )
537
+ for _ in range (3 ):
538
+ circuit .append (UGate (np .pi / 3 , 0.0 , 0.0 ), [qr [0 ]])
539
+
540
+ expected = QuantumCircuit (qr )
541
+ expected .append (UGate (np .pi , 0.0 , 0.0 ), [qr [0 ]])
542
+
543
+ passmanager = PassManager ()
544
+ passmanager .append (Optimize1qGatesDecomposition (target = target_rz_ry_u_noerror ))
545
+ result = passmanager .run (circuit )
546
+
547
+ msg = f"expected:\n { expected } \n result:\n { result } "
548
+ self .assertEqual (expected , result , msg = msg )
549
+
550
+ def test_optimize_run_of_u_to_single_u_no_target (self ):
551
+ """U(pi/3, 0, 0) * U(pi/3, 0, 0) * U(pi/3, 0, 0) -> U(pi, 0, 0)."""
552
+ qr = QuantumRegister (1 , "qr" )
553
+ circuit = QuantumCircuit (qr )
554
+ for _ in range (3 ):
555
+ circuit .append (UGate (np .pi / 3 , 0.0 , 0.0 ), [qr [0 ]])
556
+
557
+ expected = QuantumCircuit (qr )
558
+ expected .append (UGate (np .pi , 0.0 , 0.0 ), [qr [0 ]])
559
+
560
+ basis = ["u" ]
561
+ passmanager = PassManager ()
562
+ passmanager .append (Optimize1qGatesDecomposition (basis ))
563
+ result = passmanager .run (circuit )
564
+
565
+ msg = f"expected:\n { expected } \n result:\n { result } "
566
+ self .assertEqual (expected , result , msg = msg )
567
+
533
568
def test_optimize_u_to_phase_gate (self ):
534
569
"""U(0, 0, pi/4) -> p(pi/4). Basis [p, sx]."""
535
570
qr = QuantumRegister (2 , "qr" )
0 commit comments