MCPcopy Create free account
hub / github.com/ElementsProject/elements / run_field_misc

Function run_field_misc

src/secp256k1/src/tests.c:3187–3292  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3185}
3186
3187static void run_field_misc(void) {
3188 secp256k1_fe x;
3189 secp256k1_fe y;
3190 secp256k1_fe z;
3191 secp256k1_fe q;
3192 int v;
3193 secp256k1_fe fe5 = SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 5);
3194 int i, j;
3195 for (i = 0; i < 1000 * COUNT; i++) {
3196 secp256k1_fe_storage xs, ys, zs;
3197 if (i & 1) {
3198 random_fe(&x);
3199 } else {
3200 random_fe_test(&x);
3201 }
3202 random_fe_non_zero(&y);
3203 v = secp256k1_testrand_bits(15);
3204 /* Test that fe_add_int is equivalent to fe_set_int + fe_add. */
3205 secp256k1_fe_set_int(&q, v); /* q = v */
3206 z = x; /* z = x */
3207 secp256k1_fe_add(&z, &q); /* z = x+v */
3208 q = x; /* q = x */
3209 secp256k1_fe_add_int(&q, v); /* q = x+v */
3210 CHECK(check_fe_equal(&q, &z));
3211 /* Test the fe equality and comparison operations. */
3212 CHECK(secp256k1_fe_cmp_var(&x, &x) == 0);
3213 CHECK(secp256k1_fe_equal_var(&x, &x));
3214 z = x;
3215 secp256k1_fe_add(&z,&y);
3216 /* Test fe conditional move; z is not normalized here. */
3217 q = x;
3218 secp256k1_fe_cmov(&x, &z, 0);
3219#ifdef VERIFY
3220 CHECK(!x.normalized);
3221 CHECK((x.magnitude == q.magnitude) || (x.magnitude == z.magnitude));
3222 CHECK((x.magnitude >= q.magnitude) && (x.magnitude >= z.magnitude));
3223#endif
3224 x = q;
3225 secp256k1_fe_cmov(&x, &x, 1);
3226 CHECK(!fe_identical(&x, &z));
3227 CHECK(fe_identical(&x, &q));
3228 secp256k1_fe_cmov(&q, &z, 1);
3229#ifdef VERIFY
3230 CHECK(!q.normalized);
3231 CHECK((q.magnitude == x.magnitude) || (q.magnitude == z.magnitude));
3232 CHECK((q.magnitude >= x.magnitude) && (q.magnitude >= z.magnitude));
3233#endif
3234 CHECK(fe_identical(&q, &z));
3235 q = z;
3236 secp256k1_fe_normalize_var(&x);
3237 secp256k1_fe_normalize_var(&z);
3238 CHECK(!secp256k1_fe_equal_var(&x, &z));
3239 secp256k1_fe_normalize_var(&q);
3240 secp256k1_fe_cmov(&q, &z, (i&1));
3241#ifdef VERIFY
3242 CHECK(q.normalized && q.magnitude == 1);
3243#endif
3244 for (j = 0; j < 6; j++) {

Callers 1

mainFunction · 0.85

Calls 15

random_fe_testFunction · 0.85
secp256k1_testrand_bitsFunction · 0.85
check_fe_equalFunction · 0.85
fe_identicalFunction · 0.85
secp256k1_fe_mul_intFunction · 0.85
secp256k1_fe_negateFunction · 0.85
random_feFunction · 0.70
random_fe_non_zeroFunction · 0.70
secp256k1_fe_set_intFunction · 0.70
secp256k1_fe_addFunction · 0.70
secp256k1_fe_add_intFunction · 0.70

Tested by

no test coverage detected