@@ -263,8 +263,18 @@ void bench_group_jacobi_var(void* arg, int iters) {
263
263
264
264
for (i = 0 ; i < iters ; i ++ ) {
265
265
j += secp256k1_gej_has_quad_y_var (& data -> gej [0 ]);
266
+ /* Vary the Y and Z coordinates of the input (the X coordinate doesn't matter to
267
+ secp256k1_gej_has_quad_y_var). Note that the resulting coordinates will
268
+ generally not correspond to a point on the curve, but this is not a problem
269
+ for the code being benchmarked here. Adding and normalizing have less
270
+ overhead than EC operations (which could guarantee the point remains on the
271
+ curve). */
272
+ secp256k1_fe_add (& data -> gej [0 ].y , & data -> fe [1 ]);
273
+ secp256k1_fe_add (& data -> gej [0 ].z , & data -> fe [2 ]);
274
+ secp256k1_fe_normalize_var (& data -> gej [0 ].y );
275
+ secp256k1_fe_normalize_var (& data -> gej [0 ].z );
266
276
}
267
- CHECK (j = = iters );
277
+ CHECK (j < = iters );
268
278
}
269
279
270
280
void bench_ecmult_wnaf (void * arg , int iters ) {
@@ -347,14 +357,15 @@ void bench_context_sign(void* arg, int iters) {
347
357
void bench_num_jacobi (void * arg , int iters ) {
348
358
int i , j = 0 ;
349
359
bench_inv * data = (bench_inv * )arg ;
350
- secp256k1_num nx , norder ;
360
+ secp256k1_num nx , na , norder ;
351
361
352
362
secp256k1_scalar_get_num (& nx , & data -> scalar [0 ]);
353
363
secp256k1_scalar_order_get_num (& norder );
354
- secp256k1_scalar_get_num (& norder , & data -> scalar [1 ]);
364
+ secp256k1_scalar_get_num (& na , & data -> scalar [1 ]);
355
365
356
366
for (i = 0 ; i < iters ; i ++ ) {
357
367
j += secp256k1_num_jacobi (& nx , & norder );
368
+ secp256k1_num_add (& nx , & nx , & na );
358
369
}
359
370
CHECK (j <= iters );
360
371
}
0 commit comments