37 typedef struct tla_vec_st {
47 # define TLA_V_NUM(_V, _i) \
48 (ccl_assert (1 <= (_i) && (_i) <= (_V)->size), (_V)->num[(_i) - 1])
50 # define TLA_V_DEN(_V) ((_V)->den)
53 tla_vec_init (tla_vec_t v,
int size);
55 tla_vec_resize (tla_vec_t v,
int size);
57 tla_vec_init_set (tla_vec_t v,
const tla_vec_t other);
59 tla_vec_init_neg (tla_vec_t v,
const tla_vec_t other);
61 tla_vec_clear (tla_vec_t v);
63 tla_vec_set_q (tla_vec_t v, mpq_t *vec);
65 tla_vec_set (tla_vec_t v,
const tla_vec_t x);
67 tla_vec_get (mpq_t *vec,
const tla_vec_t v);
69 tla_vec_get_num (tla_vec_t res,
const tla_vec_t v);
71 tla_vec_swap_at (tla_vec_t v,
int i,
int j);
73 tla_vec_set_unity (tla_vec_t v,
int i);
75 tla_vec_set_zero (tla_vec_t v);
77 tla_vec_canonicalize (tla_vec_t v);
79 tla_vec_get_size (
const tla_vec_t v);
81 tla_vec_is_zero (
const tla_vec_t v);
83 tla_vec_are_equal (
const tla_vec_t v1,
const tla_vec_t v2);
85 tla_vec_scalar_product (mpq_t res,
const tla_vec_t v1,
const tla_vec_t v2);
87 tla_vec_mul_2exp (tla_vec_t res,
const int exp2,
const tla_vec_t v);
89 tla_vec_q_mul (tla_vec_t res, mpq_t scale,
const tla_vec_t v);
91 tla_vec_z_mul (tla_vec_t res,
const mpz_t scale,
const tla_vec_t v);
93 tla_vec_z_mul_si (tla_vec_t res,
int scale,
const tla_vec_t v);
95 tla_vec_qz_mul (tla_vec_t res,
const tla_vec_t v,
const mpz_t num,
98 tla_vec_q_div (tla_vec_t res,
const tla_vec_t v, mpq_t d);
100 tla_vec_z_div (tla_vec_t res,
const tla_vec_t v,
const mpz_t d);
102 tla_vec_z_div_si (tla_vec_t res,
const tla_vec_t v,
int d);
104 tla_vec_qz_div (tla_vec_t res,
const tla_vec_t v,
const mpz_t num,
107 tla_vec_add (tla_vec_t res,
const tla_vec_t v1,
const tla_vec_t v2);
109 tla_vec_add_z_mul (tla_vec_t res,
const tla_vec_t x,
const mpz_t a,
112 tla_vec_sub_z_mul (tla_vec_t res,
const tla_vec_t x,
const mpz_t a,
115 tla_vec_add_si_mul (tla_vec_t res,
const tla_vec_t x,
int a,
const tla_vec_t y);
117 tla_vec_sub (tla_vec_t res,
const tla_vec_t v1,
const tla_vec_t v2);
119 tla_vec_gamma (tla_vec_t res,
const tla_vec_t v,
int b);
121 tla_vec_inv_gamma (tla_vec_t res,
const tla_vec_t v,
int b);
123 tla_vec_sub_ith_den (tla_vec_t res,
const tla_vec_t v,
int i);
125 tla_vec_div_2 (tla_vec_t res,
const tla_vec_t v);
127 tla_vec_sub_last_den_div_2 (tla_vec_t res,
const tla_vec_t v);
129 tla_vec_ith_div (tla_vec_t res,
int i);
131 tla_vec_sub_ith_mul (tla_vec_t res, tla_vec_t x,
int i, tla_vec_t y);
133 tla_vec_assign_sub_ith_mul (tla_vec_t res,
int i0, tla_vec_t y);
135 tla_vec_hash (
const tla_vec_t v);
Macros allowing to set assertions into the code.