3838from qualtran .bloqs .arithmetic .bitwise import BitwiseNot , XorK
3939from qualtran .bloqs .arithmetic .comparison import LinearDepthHalfGreaterThan
4040from qualtran .bloqs .arithmetic .controlled_addition import CAdd
41- from qualtran .bloqs .basic_gates import CNOT , TwoBitCSwap , XGate
41+ from qualtran .bloqs .basic_gates import CNOT , CSwap , TwoBitCSwap , XGate
4242from qualtran .bloqs .mcmt import And , MultiAnd
4343from qualtran .bloqs .mod_arithmetic .mod_multiplication import ModDbl
44- from qualtran .bloqs .swap_network import CSwapApprox
45- from qualtran .resource_counting import BloqCountDictT
46- from qualtran .resource_counting ._call_graph import SympySymbolAllocator
4744from qualtran .symbolics import HasLength , is_symbolic
4845
4946if TYPE_CHECKING :
50- from qualtran .resource_counting import BloqCountDictT
47+ from qualtran .resource_counting import BloqCountDictT , SympySymbolAllocator
5148 from qualtran .simulation .classical_sim import ClassicalValT
5249 from qualtran .symbolics import SymbolicInt
5350
@@ -260,14 +257,12 @@ def on_classical_vals(
260257 def build_composite_bloq (
261258 self , bb : 'BloqBuilder' , u : Soquet , v : Soquet , r : Soquet , s : Soquet , a : Soquet
262259 ) -> Dict [str , 'SoquetT' ]:
263- # CSwapApprox is a CSWAP with a phase flip.
264- # Since we are doing two SWAPs the overal phase is correct.
265- a , u , v = bb .add (CSwapApprox (self .bitsize ), ctrl = a , x = u , y = v )
266- a , r , s = bb .add (CSwapApprox (self .bitsize ), ctrl = a , x = r , y = s )
260+ a , u , v = bb .add (CSwap (self .bitsize ), ctrl = a , x = u , y = v )
261+ a , r , s = bb .add (CSwap (self .bitsize ), ctrl = a , x = r , y = s )
267262 return {'u' : u , 'v' : v , 'r' : r , 's' : s , 'a' : a }
268263
269- def build_call_graph (self , ssa : SympySymbolAllocator ) -> 'BloqCountDictT' :
270- return {CSwapApprox (self .bitsize ): 2 }
264+ def build_call_graph (self , ssa : ' SympySymbolAllocator' ) -> 'BloqCountDictT' :
265+ return {CSwap (self .bitsize ): 2 }
271266
272267
273268@frozen
@@ -379,8 +374,8 @@ def build_composite_bloq(
379374
380375 r = bb .add (ModDbl (QMontgomeryUInt (self .bitsize ), self .mod ), x = r )
381376
382- a , u , v = bb .add (CSwapApprox (self .bitsize ), ctrl = a , x = u , y = v )
383- a , r , s = bb .add (CSwapApprox (self .bitsize ), ctrl = a , x = r , y = s )
377+ a , u , v = bb .add (CSwap (self .bitsize ), ctrl = a , x = u , y = v )
378+ a , r , s = bb .add (CSwap (self .bitsize ), ctrl = a , x = r , y = s )
384379
385380 s_arr = bb .split (s )
386381 s_arr [- 1 ] = bb .add (XGate (), q = s_arr [- 1 ])
@@ -395,7 +390,7 @@ def build_call_graph(self, ssa: 'SympySymbolAllocator') -> 'BloqCountDictT':
395390 CNOT (): 3 ,
396391 XGate (): 2 ,
397392 ModDbl (QMontgomeryUInt (self .bitsize ), self .mod ): 1 ,
398- CSwapApprox (self .bitsize ): 2 ,
393+ CSwap (self .bitsize ): 2 ,
399394 TwoBitCSwap (): self .bitsize - 1 ,
400395 }
401396
0 commit comments