void prim_state_init(struct aps_controller *aps) { tx_default_kbytes(aps); aps->cur_prim_state = PRIM_START_UP; ring_print(aps->node_id, "init prim, state = %sn", prim_state_name(aps->cur_prim_state)); }
void test_divexact(flint_rand_t state, const ring_t ring, const long * size, long iters) { long iter; for (iter = 0; iter < iters; iter++) { elem_ptr A, B, C, Q; A = elem_new(ring); B = elem_new(ring); C = elem_new(ring); Q = elem_new(ring); elem_randtest(A, state, size, ring); elem_randtest_not_zero(B, state, size, ring); elem_mul(C, A, B, ring); elem_divexact(Q, C, B, ring); if (!elem_equal(Q, A, ring)) { printf("FAIL: (A * B) / B = A\n"); ring_print(ring); printf("\n\n"); elem_print(A, ring); printf("\n\n"); elem_print(B, ring); printf("\n\n"); elem_print(C, ring); printf("\n\n"); elem_print(Q, ring); printf("\n\n"); abort(); } elem_randtest_not_zero(A, state, size, ring); elem_set(B, A, ring); elem_divexact(C, A, A, ring); elem_divexact(Q, A, B, ring); if (!elem_equal(C, Q, ring) || !elem_is_one(Q, ring)) { printf("FAIL: aliasing A, B\n"); ring_print(ring); printf("\n\n"); elem_print(A, ring); printf("\n\n"); elem_print(B, ring); printf("\n\n"); elem_print(C, ring); printf("\n\n"); elem_print(Q, ring); printf("\n\n"); abort(); } elem_randtest(A, state, size, ring); elem_randtest_not_zero(B, state, size, ring); elem_mul(A, A, B, ring); elem_divexact(Q, A, B, ring); elem_divexact(A, A, B, ring); if (!elem_equal(A, Q, ring)) { printf("FAIL: aliasing Q, A\n"); ring_print(ring); printf("\n\n"); elem_print(A, ring); printf("\n\n"); elem_print(B, ring); printf("\n\n"); elem_print(C, ring); printf("\n\n"); elem_print(Q, ring); printf("\n\n"); abort(); } elem_randtest(A, state, size, ring); elem_randtest_not_zero(B, state, size, ring); elem_mul(A, A, B, ring); elem_divexact(Q, A, B, ring); elem_divexact(B, A, B, ring); if (!elem_equal(B, Q, ring)) { printf("FAIL: aliasing Q, A\n"); ring_print(ring); printf("\n\n"); elem_print(A, ring); printf("\n\n"); elem_print(B, ring); printf("\n\n"); elem_print(C, ring); printf("\n\n"); elem_print(Q, ring); printf("\n\n"); abort(); } elem_randtest_not_zero(B, state, size, ring); elem_divexact(Q, B, B, ring); elem_divexact(B, B, B, ring); if (!elem_equal(B, Q, ring)) { printf("FAIL: aliasing Q, A, B\n"); ring_print(ring); printf("\n\n"); elem_print(A, ring); printf("\n\n"); elem_print(B, ring); printf("\n\n"); elem_print(C, ring); printf("\n\n"); elem_print(Q, ring); printf("\n\n"); abort(); } elem_del(A, ring); elem_del(B, ring); elem_del(C, ring); elem_del(Q, ring); } }