@@ -87,7 +87,17 @@ def signature(self) -> 'Signature':
8787 def on_classical_vals (
8888 self , x : 'ClassicalValT' , y : 'ClassicalValT'
8989 ) -> Dict [str , 'ClassicalValT' ]:
90- return {'x' : x , 'y' : (x + y ) % self .mod }
90+ if not (0 <= x < self .mod ):
91+ raise ValueError (
92+ f'{ x = } is outside the valid interval for modular addition [0, { self .mod } )'
93+ )
94+ if not (0 <= y < self .mod ):
95+ raise ValueError (
96+ f'{ y = } is outside the valid interval for modular addition [0, { self .mod } )'
97+ )
98+
99+ y = (x + y ) % self .mod
100+ return {'x' : x , 'y' : y }
91101
92102 def build_composite_bloq (self , bb : 'BloqBuilder' , x : Soquet , y : Soquet ) -> Dict [str , 'SoquetT' ]:
93103 if is_symbolic (self .bitsize ):
@@ -307,6 +317,12 @@ def on_classical_vals(
307317 return {'ctrl' : 0 , 'x' : x }
308318
309319 assert ctrl == 1 , 'Bad ctrl value.'
320+
321+ if not (0 <= x < self .mod ):
322+ raise ValueError (
323+ f'{ x = } is outside the valid interval for modular addition [0, { self .mod } )'
324+ )
325+
310326 x = (x + self .k ) % self .mod
311327 return {'ctrl' : ctrl , 'x' : x }
312328
@@ -492,7 +508,17 @@ def on_classical_vals(
492508 if ctrl != self .cv :
493509 return {'ctrl' : ctrl , 'x' : x , 'y' : y }
494510
495- return {'ctrl' : ctrl , 'x' : x , 'y' : (x + y ) % self .mod }
511+ if not (0 <= x < self .mod ):
512+ raise ValueError (
513+ f'{ x = } is outside the valid interval for modular addition [0, { self .mod } )'
514+ )
515+ if not (0 <= y < self .mod ):
516+ raise ValueError (
517+ f'{ y = } is outside the valid interval for modular addition [0, { self .mod } )'
518+ )
519+
520+ y = (x + y ) % self .mod
521+ return {'ctrl' : ctrl , 'x' : x , 'y' : y }
496522
497523 def build_composite_bloq (
498524 self , bb : 'BloqBuilder' , ctrl , x : Soquet , y : Soquet
0 commit comments