@@ -138,22 +138,19 @@ void mlk_polyvec_basemul_acc_montgomery_cached(
138
138
invariant (array_abs_bound (r -> coeffs , 0 , 2 * i , INT16_MAX /2 )))
139
139
{
140
140
unsigned k ;
141
- int32_t t0 = 0 , t1 = 0 ;
141
+ int32_t t [ 2 ] = { 0 } ;
142
142
for (k = 0 ; k < MLKEM_K ; k ++ )
143
143
__loop__ (
144
- invariant (k <= MLKEM_K && i <= MLKEM_N / 2 &&
145
- t0 <= ((int32_t ) k * 2 * MLKEM_UINT12_LIMIT * MLK_NTT_BOUND ) &&
146
- t0 >= - ((int32_t ) k * 2 * MLKEM_UINT12_LIMIT * MLK_NTT_BOUND ) &&
147
- t1 <= ((int32_t ) k * 2 * MLKEM_UINT12_LIMIT * MLK_NTT_BOUND ) &&
148
- t1 >= - ((int32_t ) k * 2 * MLKEM_UINT12_LIMIT * MLK_NTT_BOUND )))
144
+ invariant (k <= MLKEM_K && i <= MLKEM_N / 2 )
145
+ invariant (array_abs_bound (t , 0 , 2 , k * 2 * MLKEM_UINT12_LIMIT * MLK_NTT_BOUND + 1 )))
149
146
{
150
- t0 += (int32_t )a -> vec [k ].coeffs [2 * i + 1 ] * b_cache -> vec [k ].coeffs [i ];
151
- t0 += (int32_t )a -> vec [k ].coeffs [2 * i ] * b -> vec [k ].coeffs [2 * i ];
152
- t1 += (int32_t )a -> vec [k ].coeffs [2 * i ] * b -> vec [k ].coeffs [2 * i + 1 ];
153
- t1 += (int32_t )a -> vec [k ].coeffs [2 * i + 1 ] * b -> vec [k ].coeffs [2 * i ];
147
+ t [ 0 ] += (int32_t )a -> vec [k ].coeffs [2 * i + 1 ] * b_cache -> vec [k ].coeffs [i ];
148
+ t [ 0 ] += (int32_t )a -> vec [k ].coeffs [2 * i ] * b -> vec [k ].coeffs [2 * i ];
149
+ t [ 1 ] += (int32_t )a -> vec [k ].coeffs [2 * i ] * b -> vec [k ].coeffs [2 * i + 1 ];
150
+ t [ 1 ] += (int32_t )a -> vec [k ].coeffs [2 * i + 1 ] * b -> vec [k ].coeffs [2 * i ];
154
151
}
155
- r -> coeffs [2 * i + 0 ] = mlk_montgomery_reduce (t0 );
156
- r -> coeffs [2 * i + 1 ] = mlk_montgomery_reduce (t1 );
152
+ r -> coeffs [2 * i + 0 ] = mlk_montgomery_reduce (t [ 0 ] );
153
+ r -> coeffs [2 * i + 1 ] = mlk_montgomery_reduce (t [ 1 ] );
157
154
}
158
155
}
159
156
0 commit comments