@@ -129,11 +129,13 @@ INSTANTIATE_TEST_SUITE_P(
129129 QCTestCase{" NestedPow" , MQT_NAMED_BUILDER (nestedPow),
130130 MQT_NAMED_BUILDER (powSingleExponent)},
131131 // // pow(p) { g } unchanged when no simplification applies
132- // QCTestCase{"PowRxx", MQT_NAMED_BUILDER(powRxx),
133- // MQT_NAMED_BUILDER(powRxx)},
132+ QCTestCase{" PowRxx" , MQT_NAMED_BUILDER (powRxx),
133+ MQT_NAMED_BUILDER (powRxx)},
134134 // pow(-p) { g } => pow(p) { inv { g } } (NegPowToInvPow)
135135 QCTestCase{" NegPowRx" , MQT_NAMED_BUILDER (negPowRx),
136136 MQT_NAMED_BUILDER (powRxNeg)},
137+ QCTestCase{" NegPowH" , MQT_NAMED_BUILDER (negPowH),
138+ MQT_NAMED_BUILDER (negPowHRef)},
137139 // TODO should this maybe be in the inv tests?
138140 // inv { pow(p) { g } } => pow(p) { inv { g } }
139141 // (MovePowOutside)
@@ -221,6 +223,8 @@ INSTANTIATE_TEST_SUITE_P(
221223 MQT_NAMED_BUILDER (barrier)},
222224 QCTestCase{" InverseBarrier" ,
223225 MQT_NAMED_BUILDER (inverseBarrier),
226+ MQT_NAMED_BUILDER (barrier)},
227+ QCTestCase{" PowBarrier" , MQT_NAMED_BUILDER (powBarrier),
224228 MQT_NAMED_BUILDER (barrier)}));
225229// / @}
226230
@@ -271,7 +275,11 @@ INSTANTIATE_TEST_SUITE_P(
271275 MQT_NAMED_BUILDER (ecr)},
272276 QCTestCase{" InverseMultipleControlledECR" ,
273277 MQT_NAMED_BUILDER (inverseMultipleControlledEcr),
274- MQT_NAMED_BUILDER (multipleControlledEcr)}));
278+ MQT_NAMED_BUILDER (multipleControlledEcr)},
279+ QCTestCase{" PowEvenECR" , MQT_NAMED_BUILDER (powEvenEcr),
280+ MQT_NAMED_BUILDER (emptyQC)},
281+ QCTestCase{" PowOddECR" , MQT_NAMED_BUILDER (powOddEcr),
282+ MQT_NAMED_BUILDER (ecr)}));
275283// / @}
276284
277285// / \name QC/Operations/StandardGates/GphaseOp.cpp
@@ -297,7 +305,11 @@ INSTANTIATE_TEST_SUITE_P(
297305 MQT_NAMED_BUILDER (globalPhase)},
298306 QCTestCase{" InverseMultipleControlledGlobalPhase" ,
299307 MQT_NAMED_BUILDER (inverseMultipleControlledGlobalPhase),
300- MQT_NAMED_BUILDER (multipleControlledP)}));
308+ MQT_NAMED_BUILDER (multipleControlledP)},
309+ QCTestCase{" PowGphaseScaled" , MQT_NAMED_BUILDER (powGphaseScaled),
310+ MQT_NAMED_BUILDER (powGphaseScaledRef)},
311+ QCTestCase{" NegPowGphase" , MQT_NAMED_BUILDER (negPowGphase),
312+ MQT_NAMED_BUILDER (negPowGphaseRef)}));
301313// / @}
302314
303315// / \name QC/Operations/StandardGates/HOp.cpp
@@ -319,7 +331,11 @@ INSTANTIATE_TEST_SUITE_P(
319331 MQT_NAMED_BUILDER (h)},
320332 QCTestCase{" InverseMultipleControlledH" ,
321333 MQT_NAMED_BUILDER (inverseMultipleControlledH),
322- MQT_NAMED_BUILDER (multipleControlledH)}));
334+ MQT_NAMED_BUILDER (multipleControlledH)},
335+ QCTestCase{" PowEvenH" , MQT_NAMED_BUILDER (powEvenH),
336+ MQT_NAMED_BUILDER (emptyQC)},
337+ QCTestCase{" PowOddH" , MQT_NAMED_BUILDER (powOddH),
338+ MQT_NAMED_BUILDER (h)}));
323339// / @}
324340
325341// / \name QC/Operations/StandardGates/IdOp.cpp
@@ -345,6 +361,8 @@ INSTANTIATE_TEST_SUITE_P(
345361 MQT_NAMED_BUILDER (identity)},
346362 QCTestCase{" InverseMultipleControlledIdentity" ,
347363 MQT_NAMED_BUILDER (inverseMultipleControlledIdentity),
364+ MQT_NAMED_BUILDER (identity)},
365+ QCTestCase{" PowId" , MQT_NAMED_BUILDER (powId),
348366 MQT_NAMED_BUILDER (identity)}));
349367// / @}
350368
@@ -370,7 +388,9 @@ INSTANTIATE_TEST_SUITE_P(
370388 MQT_NAMED_BUILDER (inverseIswap)},
371389 QCTestCase{" InverseMultipleControllediSWAP" ,
372390 MQT_NAMED_BUILDER (inverseMultipleControlledIswap),
373- MQT_NAMED_BUILDER (inverseMultipleControlledIswap)}));
391+ MQT_NAMED_BUILDER (inverseMultipleControlledIswap)},
392+ QCTestCase{" PowHalfiSWAP" , MQT_NAMED_BUILDER (powHalfIswap),
393+ MQT_NAMED_BUILDER (powHalfIswapRef)}));
374394// / @}
375395
376396// / \name QC/Operations/StandardGates/POp.cpp
@@ -414,7 +434,9 @@ INSTANTIATE_TEST_SUITE_P(
414434 MQT_NAMED_BUILDER (r)},
415435 QCTestCase{" InverseMultipleControlledR" ,
416436 MQT_NAMED_BUILDER (inverseMultipleControlledR),
417- MQT_NAMED_BUILDER (multipleControlledR)}));
437+ MQT_NAMED_BUILDER (multipleControlledR)},
438+ QCTestCase{" PowRScaled" , MQT_NAMED_BUILDER (powRScaled),
439+ MQT_NAMED_BUILDER (powRScaledRef)}));
418440// / @}
419441
420442// / \name QC/Operations/StandardGates/RxOp.cpp
@@ -437,7 +459,9 @@ INSTANTIATE_TEST_SUITE_P(
437459 MQT_NAMED_BUILDER (rx)},
438460 QCTestCase{" InverseMultipleControlledRX" ,
439461 MQT_NAMED_BUILDER (inverseMultipleControlledRx),
440- MQT_NAMED_BUILDER (multipleControlledRx)}));
462+ MQT_NAMED_BUILDER (multipleControlledRx)},
463+ QCTestCase{" PowRxScaled" , MQT_NAMED_BUILDER (powRxScaled),
464+ MQT_NAMED_BUILDER (rxScaled)}));
441465// / @}
442466
443467// / \name QC/Operations/StandardGates/RxxOp.cpp
@@ -605,7 +629,14 @@ INSTANTIATE_TEST_SUITE_P(
605629 MQT_NAMED_BUILDER (sdg)},
606630 QCTestCase{" InverseMultipleControlledS" ,
607631 MQT_NAMED_BUILDER (inverseMultipleControlledS),
608- MQT_NAMED_BUILDER (multipleControlledSdg)}));
632+ MQT_NAMED_BUILDER (multipleControlledSdg)},
633+ QCTestCase{" PowTwoS" , MQT_NAMED_BUILDER (powTwoS), MQT_NAMED_BUILDER (z)},
634+ QCTestCase{" PowFourSErase" , MQT_NAMED_BUILDER (powFourS),
635+ MQT_NAMED_BUILDER (emptyQC)},
636+ QCTestCase{" PowHalfSToT" , MQT_NAMED_BUILDER (powHalfS),
637+ MQT_NAMED_BUILDER (t_)},
638+ QCTestCase{" PowThirdSToP" , MQT_NAMED_BUILDER (powThirdS),
639+ MQT_NAMED_BUILDER (powThirdSRef)}));
609640// / @}
610641
611642// / \name QC/Operations/StandardGates/SdgOp.cpp
@@ -630,7 +661,13 @@ INSTANTIATE_TEST_SUITE_P(
630661 MQT_NAMED_BUILDER (s)},
631662 QCTestCase{" InverseMultipleControlledSdg" ,
632663 MQT_NAMED_BUILDER (inverseMultipleControlledSdg),
633- MQT_NAMED_BUILDER (multipleControlledS)}));
664+ MQT_NAMED_BUILDER (multipleControlledS)},
665+ QCTestCase{" PowTwoSdg" , MQT_NAMED_BUILDER (powTwoSdg),
666+ MQT_NAMED_BUILDER (z)},
667+ QCTestCase{" PowHalfSdgToTdg" , MQT_NAMED_BUILDER (powHalfSdg),
668+ MQT_NAMED_BUILDER (tdg)},
669+ QCTestCase{" PowThirdSdgToP" , MQT_NAMED_BUILDER (powThirdSdg),
670+ MQT_NAMED_BUILDER (powThirdSdgRef)}));
634671// / @}
635672
636673// / \name QC/Operations/StandardGates/SwapOp.cpp
@@ -655,7 +692,11 @@ INSTANTIATE_TEST_SUITE_P(
655692 MQT_NAMED_BUILDER (swap)},
656693 QCTestCase{" InverseMultipleControlledSWAP" ,
657694 MQT_NAMED_BUILDER (inverseMultipleControlledSwap),
658- MQT_NAMED_BUILDER (multipleControlledSwap)}));
695+ MQT_NAMED_BUILDER (multipleControlledSwap)},
696+ QCTestCase{" PowEvenSWAP" , MQT_NAMED_BUILDER (powEvenSwap),
697+ MQT_NAMED_BUILDER (emptyQC)},
698+ QCTestCase{" PowOddSWAP" , MQT_NAMED_BUILDER (powOddSwap),
699+ MQT_NAMED_BUILDER (swap)}));
659700// / @}
660701
661702// / \name QC/Operations/StandardGates/SxOp.cpp
@@ -678,32 +719,40 @@ INSTANTIATE_TEST_SUITE_P(
678719 MQT_NAMED_BUILDER (sxdg)},
679720 QCTestCase{" InverseMultipleControlledSX" ,
680721 MQT_NAMED_BUILDER (inverseMultipleControlledSx),
681- MQT_NAMED_BUILDER (multipleControlledSxdg)}));
722+ MQT_NAMED_BUILDER (multipleControlledSxdg)},
723+ QCTestCase{" PowTwoSX" , MQT_NAMED_BUILDER (powTwoSx),
724+ MQT_NAMED_BUILDER (powTwoSxRef)},
725+ QCTestCase{" PowThirdSxGeneral" , MQT_NAMED_BUILDER (powThirdSx),
726+ MQT_NAMED_BUILDER (powThirdSxRef)}));
682727// / @}
683728
684729// / \name QC/Operations/StandardGates/SxdgOp.cpp
685730// / @{
686731INSTANTIATE_TEST_SUITE_P (
687732 QCSXdgOpTest, QCTest,
688- testing::Values (QCTestCase{" SXdg" , MQT_NAMED_BUILDER (sxdg),
689- MQT_NAMED_BUILDER (sxdg)},
690- QCTestCase{" SingleControlledSXdg" ,
691- MQT_NAMED_BUILDER (singleControlledSxdg),
692- MQT_NAMED_BUILDER (singleControlledSxdg)},
693- QCTestCase{" MultipleControlledSXdg" ,
694- MQT_NAMED_BUILDER (multipleControlledSxdg),
695- MQT_NAMED_BUILDER (multipleControlledSxdg)},
696- QCTestCase{" NestedControlledSXdg" ,
697- MQT_NAMED_BUILDER (nestedControlledSxdg),
698- MQT_NAMED_BUILDER (multipleControlledSxdg)},
699- QCTestCase{" TrivialControlledSXdg" ,
700- MQT_NAMED_BUILDER (trivialControlledSxdg),
701- MQT_NAMED_BUILDER (sxdg)},
702- QCTestCase{" InverseSXdg" , MQT_NAMED_BUILDER (inverseSxdg),
703- MQT_NAMED_BUILDER (sx)},
704- QCTestCase{" InverseMultipleControlledSXdg" ,
705- MQT_NAMED_BUILDER (inverseMultipleControlledSxdg),
706- MQT_NAMED_BUILDER (multipleControlledSx)}));
733+ testing::Values (
734+ QCTestCase{" SXdg" , MQT_NAMED_BUILDER (sxdg), MQT_NAMED_BUILDER (sxdg)},
735+ QCTestCase{" SingleControlledSXdg" ,
736+ MQT_NAMED_BUILDER (singleControlledSxdg),
737+ MQT_NAMED_BUILDER (singleControlledSxdg)},
738+ QCTestCase{" MultipleControlledSXdg" ,
739+ MQT_NAMED_BUILDER (multipleControlledSxdg),
740+ MQT_NAMED_BUILDER (multipleControlledSxdg)},
741+ QCTestCase{" NestedControlledSXdg" ,
742+ MQT_NAMED_BUILDER (nestedControlledSxdg),
743+ MQT_NAMED_BUILDER (multipleControlledSxdg)},
744+ QCTestCase{" TrivialControlledSXdg" ,
745+ MQT_NAMED_BUILDER (trivialControlledSxdg),
746+ MQT_NAMED_BUILDER (sxdg)},
747+ QCTestCase{" InverseSXdg" , MQT_NAMED_BUILDER (inverseSxdg),
748+ MQT_NAMED_BUILDER (sx)},
749+ QCTestCase{" InverseMultipleControlledSXdg" ,
750+ MQT_NAMED_BUILDER (inverseMultipleControlledSxdg),
751+ MQT_NAMED_BUILDER (multipleControlledSx)},
752+ QCTestCase{" PowTwoSXdg" , MQT_NAMED_BUILDER (powTwoSxdg),
753+ MQT_NAMED_BUILDER (powTwoSxdgRef)},
754+ QCTestCase{" PowThirdSxdgGeneral" , MQT_NAMED_BUILDER (powThirdSxdg),
755+ MQT_NAMED_BUILDER (powThirdSxdgRef)}));
707756// / @}
708757
709758// / \name QC/Operations/StandardGates/TOp.cpp
@@ -725,7 +774,10 @@ INSTANTIATE_TEST_SUITE_P(
725774 MQT_NAMED_BUILDER (tdg)},
726775 QCTestCase{" InverseMultipleControlledT" ,
727776 MQT_NAMED_BUILDER (inverseMultipleControlledT),
728- MQT_NAMED_BUILDER (multipleControlledTdg)}));
777+ MQT_NAMED_BUILDER (multipleControlledTdg)},
778+ QCTestCase{" PowTwoT" , MQT_NAMED_BUILDER (powTwoT), MQT_NAMED_BUILDER (s)},
779+ QCTestCase{" PowThirdTToP" , MQT_NAMED_BUILDER (powThirdT),
780+ MQT_NAMED_BUILDER (powThirdTRef)}));
729781// / @}
730782
731783// / \name QC/Operations/StandardGates/TdgOp.cpp
@@ -750,7 +802,11 @@ INSTANTIATE_TEST_SUITE_P(
750802 MQT_NAMED_BUILDER (t_)},
751803 QCTestCase{" InverseMultipleControlledTdg" ,
752804 MQT_NAMED_BUILDER (inverseMultipleControlledTdg),
753- MQT_NAMED_BUILDER (multipleControlledT)}));
805+ MQT_NAMED_BUILDER (multipleControlledT)},
806+ QCTestCase{" PowTwoTdg" , MQT_NAMED_BUILDER (powTwoTdg),
807+ MQT_NAMED_BUILDER (sdg)},
808+ QCTestCase{" PowThirdTdgToP" , MQT_NAMED_BUILDER (powThirdTdg),
809+ MQT_NAMED_BUILDER (powThirdTdgRef)}));
754810// / @}
755811
756812// / \name QC/Operations/StandardGates/U2Op.cpp
@@ -817,7 +873,13 @@ INSTANTIATE_TEST_SUITE_P(
817873 MQT_NAMED_BUILDER (x)},
818874 QCTestCase{" InverseMultipleControlledX" ,
819875 MQT_NAMED_BUILDER (inverseMultipleControlledX),
820- MQT_NAMED_BUILDER (multipleControlledX)}));
876+ MQT_NAMED_BUILDER (multipleControlledX)},
877+ QCTestCase{" PowHalfX" , MQT_NAMED_BUILDER (powHalfX),
878+ MQT_NAMED_BUILDER (powHalfXRef)},
879+ QCTestCase{" PowNegHalfXToSXdg" , MQT_NAMED_BUILDER (powNegHalfX),
880+ MQT_NAMED_BUILDER (sxdg)},
881+ QCTestCase{" PowThirdXGeneral" , MQT_NAMED_BUILDER (powThirdX),
882+ MQT_NAMED_BUILDER (powThirdXRef)}));
821883// / @}
822884
823885// / \name QC/Operations/StandardGates/XxMinusYyOp.cpp
@@ -843,7 +905,9 @@ INSTANTIATE_TEST_SUITE_P(
843905 MQT_NAMED_BUILDER (xxMinusYY)},
844906 QCTestCase{" InverseMultipleControlledXXMinusYY" ,
845907 MQT_NAMED_BUILDER (inverseMultipleControlledXxMinusYY),
846- MQT_NAMED_BUILDER (multipleControlledXxMinusYY)}));
908+ MQT_NAMED_BUILDER (multipleControlledXxMinusYY)},
909+ QCTestCase{" PowXxMinusYYScaled" , MQT_NAMED_BUILDER (powXxMinusYYScaled),
910+ MQT_NAMED_BUILDER (powXxMinusYYScaledRef)}));
847911// / @}
848912
849913// / \name QC/Operations/StandardGates/XxPlusYyOp.cpp
@@ -869,7 +933,9 @@ INSTANTIATE_TEST_SUITE_P(
869933 MQT_NAMED_BUILDER (xxPlusYY)},
870934 QCTestCase{" InverseMultipleControlledXXPlusYY" ,
871935 MQT_NAMED_BUILDER (inverseMultipleControlledXxPlusYY),
872- MQT_NAMED_BUILDER (multipleControlledXxPlusYY)}));
936+ MQT_NAMED_BUILDER (multipleControlledXxPlusYY)},
937+ QCTestCase{" PowXxPlusYYScaled" , MQT_NAMED_BUILDER (powXxPlusYYScaled),
938+ MQT_NAMED_BUILDER (powXxPlusYYScaledRef)}));
873939// / @}
874940
875941// / \name QC/Operations/StandardGates/YOp.cpp
@@ -891,7 +957,9 @@ INSTANTIATE_TEST_SUITE_P(
891957 MQT_NAMED_BUILDER (y)},
892958 QCTestCase{" InverseMultipleControlledY" ,
893959 MQT_NAMED_BUILDER (inverseMultipleControlledY),
894- MQT_NAMED_BUILDER (multipleControlledY)}));
960+ MQT_NAMED_BUILDER (multipleControlledY)},
961+ QCTestCase{" PowHalfY" , MQT_NAMED_BUILDER (powHalfY),
962+ MQT_NAMED_BUILDER (powHalfYRef)}));
895963// / @}
896964
897965// / \name QC/Operations/StandardGates/ZOp.cpp
@@ -913,7 +981,13 @@ INSTANTIATE_TEST_SUITE_P(
913981 MQT_NAMED_BUILDER (z)},
914982 QCTestCase{" InverseMultipleControlledZ" ,
915983 MQT_NAMED_BUILDER (inverseMultipleControlledZ),
916- MQT_NAMED_BUILDER (multipleControlledZ)}));
984+ MQT_NAMED_BUILDER (multipleControlledZ)},
985+ QCTestCase{" PowHalfZ" , MQT_NAMED_BUILDER (powHalfZ),
986+ MQT_NAMED_BUILDER (s)},
987+ QCTestCase{" NormalizeAngleWrapZ" , MQT_NAMED_BUILDER (powThreeHalvesZ),
988+ MQT_NAMED_BUILDER (sdg)},
989+ QCTestCase{" PowThirdZToP" , MQT_NAMED_BUILDER (powThirdZ),
990+ MQT_NAMED_BUILDER (powThirdZRef)}));
917991// / @}
918992
919993// / \name QC/QubitManagement/QubitManagement.cpp
0 commit comments