diff --git a/dirichlet.h b/dirichlet.h index 62b6229a..01d0cfca 100644 --- a/dirichlet.h +++ b/dirichlet.h @@ -18,7 +18,6 @@ #define DIRICHLET_INLINE static __inline__ #endif -#include "acb.h" #include "dlog.h" #ifdef __cplusplus @@ -74,22 +73,22 @@ ulong dirichlet_ui_conductor(const dirichlet_group_t G, ulong a); int dirichlet_ui_parity(const dirichlet_group_t G, ulong a); ulong dirichlet_ui_order(const dirichlet_group_t G, ulong a); -/* elements of the group, keep both number and log */ +/* characters, keep both number and log */ typedef struct { ulong n; /* number */ ulong * log; /* s.t. prod generators[k]^log[k] = number */ } -dirichlet_conrey_struct; +dirichlet_char_struct; -typedef dirichlet_conrey_struct dirichlet_conrey_t[1]; +typedef dirichlet_char_struct dirichlet_char_t[1]; -void dirichlet_conrey_init(dirichlet_conrey_t x, const dirichlet_group_t G); -void dirichlet_conrey_clear(dirichlet_conrey_t x); -void dirichlet_conrey_print(const dirichlet_group_t G, const dirichlet_conrey_t x); +void dirichlet_char_init(dirichlet_char_t x, const dirichlet_group_t G); +void dirichlet_char_clear(dirichlet_char_t x); +void dirichlet_char_print(const dirichlet_group_t G, const dirichlet_char_t x); DIRICHLET_INLINE void -dirichlet_conrey_set(dirichlet_conrey_t x, const dirichlet_group_t G, const dirichlet_conrey_t y) +dirichlet_char_set(dirichlet_char_t x, const dirichlet_group_t G, const dirichlet_char_t y) { slong k; x->n = y->n; @@ -98,38 +97,38 @@ dirichlet_conrey_set(dirichlet_conrey_t x, const dirichlet_group_t G, const diri } DIRICHLET_INLINE int -dirichlet_conrey_eq(const dirichlet_conrey_t x, const dirichlet_conrey_t y) +dirichlet_char_eq(const dirichlet_char_t x, const dirichlet_char_t y) { return (x->n == y->n); } -int dirichlet_conrey_eq_deep(const dirichlet_group_t G, const dirichlet_conrey_t x, const dirichlet_conrey_t y); -int dirichlet_conrey_parity(const dirichlet_group_t G, const dirichlet_conrey_t x); -ulong dirichlet_conrey_conductor(const dirichlet_group_t G, const dirichlet_conrey_t x); -ulong dirichlet_conrey_order(const dirichlet_group_t G, const dirichlet_conrey_t x); +int dirichlet_char_eq_deep(const dirichlet_group_t G, const dirichlet_char_t x, const dirichlet_char_t y); +int dirichlet_char_parity(const dirichlet_group_t G, const dirichlet_char_t x); +ulong dirichlet_char_conductor(const dirichlet_group_t G, const dirichlet_char_t x); +ulong dirichlet_char_order(const dirichlet_group_t G, const dirichlet_char_t x); -void dirichlet_conrey_log(dirichlet_conrey_t x, const dirichlet_group_t G, ulong m); -ulong dirichlet_conrey_exp(dirichlet_conrey_t x, const dirichlet_group_t G); +void dirichlet_char_log(dirichlet_char_t x, const dirichlet_group_t G, ulong m); +ulong dirichlet_char_exp(dirichlet_char_t x, const dirichlet_group_t G); -void dirichlet_conrey_index(dirichlet_conrey_t x, const dirichlet_group_t G, ulong j); -ulong dirichlet_index_conrey(const dirichlet_group_t G, const dirichlet_conrey_t x); +void dirichlet_char_index(dirichlet_char_t x, const dirichlet_group_t G, ulong j); +ulong dirichlet_index_char(const dirichlet_group_t G, const dirichlet_char_t x); -void dirichlet_conrey_one(dirichlet_conrey_t x, const dirichlet_group_t G); -void dirichlet_conrey_first_primitive(dirichlet_conrey_t x, const dirichlet_group_t G); +void dirichlet_char_one(dirichlet_char_t x, const dirichlet_group_t G); +void dirichlet_char_first_primitive(dirichlet_char_t x, const dirichlet_group_t G); -int dirichlet_conrey_next(dirichlet_conrey_t x, const dirichlet_group_t G); -int dirichlet_conrey_next_primitive(dirichlet_conrey_t x, const dirichlet_group_t G); +int dirichlet_char_next(dirichlet_char_t x, const dirichlet_group_t G); +int dirichlet_char_next_primitive(dirichlet_char_t x, const dirichlet_group_t G); -void dirichlet_conrey_mul(dirichlet_conrey_t c, const dirichlet_group_t G, const dirichlet_conrey_t a, const dirichlet_conrey_t b); -void dirichlet_conrey_pow(dirichlet_conrey_t c, const dirichlet_group_t G, const dirichlet_conrey_t a, ulong n); -void dirichlet_conrey_primitive(dirichlet_conrey_t y, const dirichlet_group_t G, const dirichlet_conrey_t x, ulong cond); +void dirichlet_char_mul(dirichlet_char_t c, const dirichlet_group_t G, const dirichlet_char_t a, const dirichlet_char_t b); +void dirichlet_char_pow(dirichlet_char_t c, const dirichlet_group_t G, const dirichlet_char_t a, ulong n); +void dirichlet_char_primitive(dirichlet_char_t y, const dirichlet_group_t G, const dirichlet_char_t x, ulong cond); #define DIRICHLET_CHI_NULL UWORD_MAX -ulong dirichlet_ui_pairing_conrey(const dirichlet_group_t G, const dirichlet_conrey_t a, const dirichlet_conrey_t b); +ulong dirichlet_ui_pairing_char(const dirichlet_group_t G, const dirichlet_char_t a, const dirichlet_char_t b); ulong dirichlet_ui_pairing(const dirichlet_group_t G, ulong m, ulong n); -void dirichlet_pairing_conrey(acb_t res, const dirichlet_group_t G, const dirichlet_conrey_t a, const dirichlet_conrey_t b, slong prec); +void dirichlet_pairing_char(acb_t res, const dirichlet_group_t G, const dirichlet_char_t a, const dirichlet_char_t b, slong prec); void dirichlet_pairing(acb_t res, const dirichlet_group_t G, ulong m, ulong n, slong prec); /* introducing character type */ @@ -139,39 +138,39 @@ typedef struct { ulong q; /* modulus */ nmod_t order; /* order */ - dirichlet_conrey_t x; + dirichlet_char_t x; ulong * expo; /* reduced exponents ( log[k] * PHI[k] / gcd( ) ) */ int parity; /* 0 for even char, 1 for odd */ ulong conductor; } -dirichlet_char_struct; +dirichlet_fullchar_struct; -typedef dirichlet_char_struct dirichlet_char_t[1]; +typedef dirichlet_fullchar_struct dirichlet_fullchar_t[1]; DIRICHLET_INLINE ulong -dirichlet_char_order(const dirichlet_char_t chi) +dirichlet_fullchar_order(const dirichlet_fullchar_t chi) { return chi->order.n; } DIRICHLET_INLINE ulong -dirichlet_char_conductor(const dirichlet_char_t chi) +dirichlet_fullchar_conductor(const dirichlet_fullchar_t chi) { return chi->conductor; } DIRICHLET_INLINE int -dirichlet_char_parity(const dirichlet_char_t chi) +dirichlet_fullchar_parity(const dirichlet_fullchar_t chi) { return chi->parity; } -void dirichlet_char_init(dirichlet_char_t chi, const dirichlet_group_t G); -void dirichlet_char_clear(dirichlet_char_t chi); -void dirichlet_char_print(const dirichlet_group_t G, const dirichlet_char_t chi); +void dirichlet_fullchar_init(dirichlet_fullchar_t chi, const dirichlet_group_t G); +void dirichlet_fullchar_clear(dirichlet_fullchar_t chi); +void dirichlet_fullchar_print(const dirichlet_group_t G, const dirichlet_fullchar_t chi); DIRICHLET_INLINE void -dirichlet_char_set(dirichlet_char_t chi1, const dirichlet_group_t G, const dirichlet_char_t chi2) +dirichlet_fullchar_set(dirichlet_fullchar_t chi1, const dirichlet_group_t G, const dirichlet_fullchar_t chi2) { slong k; @@ -179,51 +178,51 @@ dirichlet_char_set(dirichlet_char_t chi1, const dirichlet_group_t G, const diric chi1->conductor = chi2->conductor; chi1->order = chi2->order; chi1->parity = chi2->parity; - dirichlet_conrey_set(chi1->x, G, chi2->x); + dirichlet_char_set(chi1->x, G, chi2->x); for (k = 0; k < G->num; k++) chi1->expo[k] = chi2->expo[k]; } DIRICHLET_INLINE int -dirichlet_char_eq(const dirichlet_char_t chi1, const dirichlet_char_t chi2) +dirichlet_fullchar_eq(const dirichlet_fullchar_t chi1, const dirichlet_fullchar_t chi2) { return (chi1->q == chi2->q && chi1->x->n == chi2->x->n); } -int dirichlet_char_eq_deep(const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2); +int dirichlet_fullchar_eq_deep(const dirichlet_group_t G, const dirichlet_fullchar_t chi1, const dirichlet_fullchar_t chi2); DIRICHLET_INLINE int -dirichlet_char_is_principal(const dirichlet_char_t chi) +dirichlet_fullchar_is_principal(const dirichlet_fullchar_t chi) { return (chi->x->n == 1); } DIRICHLET_INLINE int -dirichlet_char_is_real(const dirichlet_char_t chi) +dirichlet_fullchar_is_real(const dirichlet_fullchar_t chi) { return (chi->order.n <= 2); } -void dirichlet_char(dirichlet_char_t chi, const dirichlet_group_t G, ulong n); -void dirichlet_char_conrey(dirichlet_char_t chi, const dirichlet_group_t G, const dirichlet_conrey_t x); -void dirichlet_char_set_expo(dirichlet_char_t chi, const dirichlet_group_t G); -void dirichlet_char_normalize(dirichlet_char_t chi, const dirichlet_group_t G); -void dirichlet_char_denormalize(dirichlet_char_t chi, const dirichlet_group_t G); +void dirichlet_fullchar(dirichlet_fullchar_t chi, const dirichlet_group_t G, ulong n); +void dirichlet_fullchar_char(dirichlet_fullchar_t chi, const dirichlet_group_t G, const dirichlet_char_t x); +void dirichlet_fullchar_set_expo(dirichlet_fullchar_t chi, const dirichlet_group_t G); +void dirichlet_fullchar_normalize(dirichlet_fullchar_t chi, const dirichlet_group_t G); +void dirichlet_fullchar_denormalize(dirichlet_fullchar_t chi, const dirichlet_group_t G); -void dirichlet_char_mul(dirichlet_char_t chi12, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2); -void dirichlet_char_primitive(dirichlet_char_t chi0, const dirichlet_group_t G0, const dirichlet_group_t G, const dirichlet_char_t chi); +void dirichlet_fullchar_mul(dirichlet_fullchar_t chi12, const dirichlet_group_t G, const dirichlet_fullchar_t chi1, const dirichlet_fullchar_t chi2); +void dirichlet_fullchar_primitive(dirichlet_fullchar_t chi0, const dirichlet_group_t G0, const dirichlet_group_t G, const dirichlet_fullchar_t chi); -void dirichlet_char_one(dirichlet_char_t chi, const dirichlet_group_t G); -void dirichlet_char_first_primitive(dirichlet_char_t chi, const dirichlet_group_t G); +void dirichlet_fullchar_one(dirichlet_fullchar_t chi, const dirichlet_group_t G); +void dirichlet_fullchar_first_primitive(dirichlet_fullchar_t chi, const dirichlet_group_t G); -int dirichlet_char_next(dirichlet_char_t chi, const dirichlet_group_t G); -int dirichlet_char_next_primitive(dirichlet_char_t chi, const dirichlet_group_t G); +int dirichlet_fullchar_next(dirichlet_fullchar_t chi, const dirichlet_group_t G); +int dirichlet_fullchar_next_primitive(dirichlet_fullchar_t chi, const dirichlet_group_t G); -ulong dirichlet_ui_chi_conrey(const dirichlet_group_t G, const dirichlet_char_t chi, const dirichlet_conrey_t x); -ulong dirichlet_ui_chi(const dirichlet_group_t G, const dirichlet_char_t chi, ulong n); +ulong dirichlet_ui_chi_char(const dirichlet_group_t G, const dirichlet_fullchar_t chi, const dirichlet_char_t x); +ulong dirichlet_ui_chi(const dirichlet_group_t G, const dirichlet_fullchar_t chi, ulong n); void dirichlet_ui_vec_set_null(ulong *v, const dirichlet_group_t G, slong nv); -void dirichlet_ui_chi_vec_loop(ulong *v, const dirichlet_group_t G, const dirichlet_char_t chi, slong nv); -void dirichlet_ui_chi_vec_primeloop(ulong *v, const dirichlet_group_t G, const dirichlet_char_t chi, slong nv); -void dirichlet_ui_chi_vec(ulong *v, const dirichlet_group_t G, const dirichlet_char_t chi, slong nv); +void dirichlet_ui_chi_vec_loop(ulong *v, const dirichlet_group_t G, const dirichlet_fullchar_t chi, slong nv); +void dirichlet_ui_chi_vec_primeloop(ulong *v, const dirichlet_group_t G, const dirichlet_fullchar_t chi, slong nv); +void dirichlet_ui_chi_vec(ulong *v, const dirichlet_group_t G, const dirichlet_fullchar_t chi, slong nv); #ifdef __cplusplus } diff --git a/dirichlet/char.c b/dirichlet/char.c index 1cc00012..c8f57ad9 100644 --- a/dirichlet/char.c +++ b/dirichlet/char.c @@ -12,8 +12,8 @@ #include "dirichlet.h" void -dirichlet_char(dirichlet_char_t chi, const dirichlet_group_t G, ulong n) +dirichlet_fullchar(dirichlet_fullchar_t chi, const dirichlet_group_t G, ulong n) { - dirichlet_conrey_log(chi->x, G, n); - dirichlet_char_conrey(chi, G, NULL); + dirichlet_char_log(chi->x, G, n); + dirichlet_fullchar_char(chi, G, NULL); } diff --git a/dirichlet/char_clear.c b/dirichlet/char_clear.c index f5e28e26..f4432c79 100644 --- a/dirichlet/char_clear.c +++ b/dirichlet/char_clear.c @@ -12,8 +12,8 @@ #include "dirichlet.h" void -dirichlet_char_clear(dirichlet_char_t chi) +dirichlet_fullchar_clear(dirichlet_fullchar_t chi) { - dirichlet_conrey_clear(chi->x); + dirichlet_char_clear(chi->x); flint_free(chi->expo); } diff --git a/dirichlet/char_conrey.c b/dirichlet/char_conrey.c index 44dd304d..4f82fbfa 100644 --- a/dirichlet/char_conrey.c +++ b/dirichlet/char_conrey.c @@ -14,19 +14,19 @@ /* char n has exponents = log[k]*PHI[k] / gcd and order expo / gcd * so that log = expo[k] */ void -dirichlet_char_conrey(dirichlet_char_t chi, const dirichlet_group_t G, const dirichlet_conrey_t x) +dirichlet_fullchar_char(dirichlet_fullchar_t chi, const dirichlet_group_t G, const dirichlet_char_t x) { /* assume chi->x already set if x == NULL */ if (x == NULL) x = chi->x; else - dirichlet_conrey_set(chi->x, G, x); + dirichlet_char_set(chi->x, G, x); chi->q = G->q; - chi->parity = dirichlet_conrey_parity(G, x); - chi->conductor = dirichlet_conrey_conductor(G, x); + chi->parity = dirichlet_char_parity(G, x); + chi->conductor = dirichlet_char_conductor(G, x); - dirichlet_char_set_expo(chi, G); + dirichlet_fullchar_set_expo(chi, G); /* optional: divide by gcd to obtain true order */ - dirichlet_char_normalize(chi, G); + dirichlet_fullchar_normalize(chi, G); } diff --git a/dirichlet/char_eq_deep.c b/dirichlet/char_eq_deep.c index 2d02a69e..d4e845f6 100644 --- a/dirichlet/char_eq_deep.c +++ b/dirichlet/char_eq_deep.c @@ -12,9 +12,9 @@ #include "dirichlet.h" int -dirichlet_char_eq_deep(const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2) +dirichlet_fullchar_eq_deep(const dirichlet_group_t G, const dirichlet_fullchar_t chi1, const dirichlet_fullchar_t chi2) { - dirichlet_conrey_t x, y; + dirichlet_char_t x, y; if (chi1->q != chi2->q) return 0; @@ -25,13 +25,13 @@ dirichlet_char_eq_deep(const dirichlet_group_t G, const dirichlet_char_t chi1, c if (chi1->conductor != chi2->conductor) return 0; - if (!dirichlet_conrey_eq_deep(G, chi1->x, chi2->x)) + if (!dirichlet_char_eq_deep(G, chi1->x, chi2->x)) return 0; x->n = y->n = 1; x->log = chi1->expo; y->log = chi2->expo; - if (!dirichlet_conrey_eq_deep(G, x, y)) + if (!dirichlet_char_eq_deep(G, x, y)) return 0; return 1; diff --git a/dirichlet/char_first_primitive.c b/dirichlet/char_first_primitive.c index 8bddcd24..acf378a3 100644 --- a/dirichlet/char_first_primitive.c +++ b/dirichlet/char_first_primitive.c @@ -12,9 +12,9 @@ #include "dirichlet.h" void -dirichlet_char_first_primitive(dirichlet_char_t chi, const dirichlet_group_t G) +dirichlet_fullchar_first_primitive(dirichlet_fullchar_t chi, const dirichlet_group_t G) { - dirichlet_conrey_first_primitive(chi->x, G); - dirichlet_char_conrey(chi, G, NULL); - dirichlet_char_normalize(chi, G); + dirichlet_char_first_primitive(chi->x, G); + dirichlet_fullchar_char(chi, G, NULL); + dirichlet_fullchar_normalize(chi, G); } diff --git a/dirichlet/char_init.c b/dirichlet/char_init.c index cbef6829..67d5c9a6 100644 --- a/dirichlet/char_init.c +++ b/dirichlet/char_init.c @@ -12,10 +12,10 @@ #include "dirichlet.h" void -dirichlet_char_init(dirichlet_char_t chi, const dirichlet_group_t G) +dirichlet_fullchar_init(dirichlet_fullchar_t chi, const dirichlet_group_t G) { slong k; - dirichlet_conrey_init(chi->x, G); + dirichlet_char_init(chi->x, G); chi->expo = flint_malloc(G->num * sizeof(ulong)); chi->q = G->q; chi->conductor = 1; diff --git a/dirichlet/char_mul.c b/dirichlet/char_mul.c index e4b596cd..28ceee77 100644 --- a/dirichlet/char_mul.c +++ b/dirichlet/char_mul.c @@ -12,8 +12,8 @@ #include "dirichlet.h" void -dirichlet_char_mul(dirichlet_char_t chi12, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2) +dirichlet_fullchar_mul(dirichlet_fullchar_t chi12, const dirichlet_group_t G, const dirichlet_fullchar_t chi1, const dirichlet_fullchar_t chi2) { - dirichlet_conrey_mul(chi12->x, G, chi1->x, chi2->x); - dirichlet_char_conrey(chi12, G, NULL); + dirichlet_char_mul(chi12->x, G, chi1->x, chi2->x); + dirichlet_fullchar_char(chi12, G, NULL); } diff --git a/dirichlet/char_next.c b/dirichlet/char_next.c index 315d8525..f00206a0 100644 --- a/dirichlet/char_next.c +++ b/dirichlet/char_next.c @@ -12,11 +12,11 @@ #include "dirichlet.h" int -dirichlet_char_next(dirichlet_char_t chi, const dirichlet_group_t G) +dirichlet_fullchar_next(dirichlet_fullchar_t chi, const dirichlet_group_t G) { int k; - k = dirichlet_conrey_next(chi->x, G); - dirichlet_char_conrey(chi, G, NULL); + k = dirichlet_char_next(chi->x, G); + dirichlet_fullchar_char(chi, G, NULL); /* return last index modified */ return k; } diff --git a/dirichlet/char_next_primitive.c b/dirichlet/char_next_primitive.c index abfcc364..eba33457 100644 --- a/dirichlet/char_next_primitive.c +++ b/dirichlet/char_next_primitive.c @@ -12,11 +12,11 @@ #include "dirichlet.h" int -dirichlet_char_next_primitive(dirichlet_char_t chi, const dirichlet_group_t G) +dirichlet_fullchar_next_primitive(dirichlet_fullchar_t chi, const dirichlet_group_t G) { int k; - k = dirichlet_conrey_next_primitive(chi->x, G); - dirichlet_char_conrey(chi, G, NULL); + k = dirichlet_char_next_primitive(chi->x, G); + dirichlet_fullchar_char(chi, G, NULL); /* return last index modified */ return k; } diff --git a/dirichlet/char_normalize.c b/dirichlet/char_normalize.c index 9905a105..a7287c74 100644 --- a/dirichlet/char_normalize.c +++ b/dirichlet/char_normalize.c @@ -12,7 +12,7 @@ #include "dirichlet.h" void -dirichlet_char_set_expo(dirichlet_char_t chi, const dirichlet_group_t G) +dirichlet_fullchar_set_expo(dirichlet_fullchar_t chi, const dirichlet_group_t G) { slong k; for (k = 0; k < G->num; k++) @@ -21,7 +21,7 @@ dirichlet_char_set_expo(dirichlet_char_t chi, const dirichlet_group_t G) } void -dirichlet_char_normalize(dirichlet_char_t chi, const dirichlet_group_t G) +dirichlet_fullchar_normalize(dirichlet_fullchar_t chi, const dirichlet_group_t G) { ulong k, g; g = G->expo; @@ -36,7 +36,7 @@ dirichlet_char_normalize(dirichlet_char_t chi, const dirichlet_group_t G) } void -dirichlet_char_denormalize(dirichlet_char_t chi, const dirichlet_group_t G) +dirichlet_fullchar_denormalize(dirichlet_fullchar_t chi, const dirichlet_group_t G) { ulong k, g; g = G->expo / chi->order.n; diff --git a/dirichlet/char_one.c b/dirichlet/char_one.c index a133e7c3..7f872555 100644 --- a/dirichlet/char_one.c +++ b/dirichlet/char_one.c @@ -12,10 +12,10 @@ #include "dirichlet.h" void -dirichlet_char_one(dirichlet_char_t chi, const dirichlet_group_t G) +dirichlet_fullchar_one(dirichlet_fullchar_t chi, const dirichlet_group_t G) { slong k; - dirichlet_conrey_one(chi->x, G); + dirichlet_char_one(chi->x, G); chi->q = G->q; chi->conductor = 1; chi->parity = 0; diff --git a/dirichlet/char_primitive.c b/dirichlet/char_primitive.c index 3172a593..c8fc771f 100644 --- a/dirichlet/char_primitive.c +++ b/dirichlet/char_primitive.c @@ -12,13 +12,13 @@ #include "dirichlet.h" void -dirichlet_char_primitive(dirichlet_char_t chi0, const dirichlet_group_t G0, const dirichlet_group_t G, const dirichlet_char_t chi) +dirichlet_fullchar_primitive(dirichlet_fullchar_t chi0, const dirichlet_group_t G0, const dirichlet_group_t G, const dirichlet_fullchar_t chi) { chi0->q = chi->conductor; chi0->parity = chi->parity; chi0->conductor = chi->conductor; - dirichlet_conrey_primitive(chi0->x, G, chi->x, chi->conductor); - dirichlet_char_set_expo(chi0, G0); + dirichlet_char_primitive(chi0->x, G, chi->x, chi->conductor); + dirichlet_fullchar_set_expo(chi0, G0); /* optional: divide by gcd to obtain true order */ - dirichlet_char_normalize(chi0, G0); + dirichlet_fullchar_normalize(chi0, G0); } diff --git a/dirichlet/char_print.c b/dirichlet/char_print.c index 62031b0b..6898bfe2 100644 --- a/dirichlet/char_print.c +++ b/dirichlet/char_print.c @@ -12,12 +12,12 @@ #include "dirichlet.h" void -dirichlet_char_print(const dirichlet_group_t G, const dirichlet_char_t chi) +dirichlet_fullchar_print(const dirichlet_group_t G, const dirichlet_fullchar_t chi) { - dirichlet_conrey_t x; + dirichlet_char_t x; flint_printf("chi_%wu(%wu,.) of order %wu, parity %wd, index ", G->q, chi->x->n, chi->order, chi->parity); - dirichlet_conrey_print(G, chi->x); + dirichlet_char_print(G, chi->x); flint_printf(" and exponents "); x->log = chi->expo; - dirichlet_conrey_print(G, x); + dirichlet_char_print(G, x); } diff --git a/dirichlet/conrey.c b/dirichlet/conrey.c index 8c76683f..ec5b864b 100644 --- a/dirichlet/conrey.c +++ b/dirichlet/conrey.c @@ -12,12 +12,12 @@ #include "dirichlet.h" void -dirichlet_conrey_init(dirichlet_conrey_t x, const dirichlet_group_t G) { +dirichlet_char_init(dirichlet_char_t x, const dirichlet_group_t G) { x->log = flint_malloc(G->num * sizeof(ulong)); - dirichlet_conrey_one(x, G); + dirichlet_char_one(x, G); } void -dirichlet_conrey_clear(dirichlet_conrey_t x) { +dirichlet_char_clear(dirichlet_char_t x) { flint_free(x->log); } diff --git a/dirichlet/conrey_conductor.c b/dirichlet/conrey_conductor.c index f346432e..24afc2b9 100644 --- a/dirichlet/conrey_conductor.c +++ b/dirichlet/conrey_conductor.c @@ -12,7 +12,7 @@ #include "dirichlet.h" ulong -dirichlet_conrey_conductor(const dirichlet_group_t G, const dirichlet_conrey_t x) +dirichlet_char_conductor(const dirichlet_group_t G, const dirichlet_char_t x) { int k, f; ulong cond = 1; diff --git a/dirichlet/conrey_eq_deep.c b/dirichlet/conrey_eq_deep.c index 08950ca3..8c01650f 100644 --- a/dirichlet/conrey_eq_deep.c +++ b/dirichlet/conrey_eq_deep.c @@ -12,7 +12,7 @@ #include "dirichlet.h" int -dirichlet_conrey_eq_deep(const dirichlet_group_t G, const dirichlet_conrey_t x, const dirichlet_conrey_t y) +dirichlet_char_eq_deep(const dirichlet_group_t G, const dirichlet_char_t x, const dirichlet_char_t y) { slong k; diff --git a/dirichlet/conrey_exp.c b/dirichlet/conrey_exp.c index 12498a36..c978347d 100644 --- a/dirichlet/conrey_exp.c +++ b/dirichlet/conrey_exp.c @@ -12,7 +12,7 @@ #include "dirichlet.h" ulong -dirichlet_conrey_exp(dirichlet_conrey_t x, const dirichlet_group_t G) +dirichlet_char_exp(dirichlet_char_t x, const dirichlet_group_t G) { ulong k, n = 1; for (k = 0; k < G->num; k++) diff --git a/dirichlet/conrey_first_primitive.c b/dirichlet/conrey_first_primitive.c index 1415e764..fa0d1834 100644 --- a/dirichlet/conrey_first_primitive.c +++ b/dirichlet/conrey_first_primitive.c @@ -12,12 +12,12 @@ #include "dirichlet.h" void -dirichlet_conrey_first_primitive(dirichlet_conrey_t x, const dirichlet_group_t G) +dirichlet_char_first_primitive(dirichlet_char_t x, const dirichlet_group_t G) { ulong k; if (G->q % 4 == 2) { - flint_printf("Exception (dirichlet_conrey_first_primitive). No primitive element mod %wu.\n",G->q); + flint_printf("Exception (dirichlet_char_first_primitive). No primitive element mod %wu.\n",G->q); abort(); } x->n = 1; diff --git a/dirichlet/conrey_index.c b/dirichlet/conrey_index.c index e9acc235..ddea9463 100644 --- a/dirichlet/conrey_index.c +++ b/dirichlet/conrey_index.c @@ -26,7 +26,7 @@ #include "dirichlet.h" void -dirichlet_conrey_index(dirichlet_conrey_t x, const dirichlet_group_t G, ulong j) +dirichlet_char_index(dirichlet_char_t x, const dirichlet_group_t G, ulong j) { slong k; @@ -36,5 +36,5 @@ dirichlet_conrey_index(dirichlet_conrey_t x, const dirichlet_group_t G, ulong j) j = j / G->P[k].phi; } - dirichlet_conrey_exp(x, G); + dirichlet_char_exp(x, G); } diff --git a/dirichlet/conrey_log.c b/dirichlet/conrey_log.c index 15a640f6..e53245ad 100644 --- a/dirichlet/conrey_log.c +++ b/dirichlet/conrey_log.c @@ -16,7 +16,7 @@ /* assume m is invertible */ void -dirichlet_conrey_log(dirichlet_conrey_t x, const dirichlet_group_t G, ulong m) +dirichlet_char_log(dirichlet_char_t x, const dirichlet_group_t G, ulong m) { slong k; /* even part */ diff --git a/dirichlet/conrey_mul.c b/dirichlet/conrey_mul.c index df3a5376..a8071405 100644 --- a/dirichlet/conrey_mul.c +++ b/dirichlet/conrey_mul.c @@ -12,7 +12,7 @@ #include "dirichlet.h" void -dirichlet_conrey_mul(dirichlet_conrey_t c, const dirichlet_group_t G, const dirichlet_conrey_t a, const dirichlet_conrey_t b) +dirichlet_char_mul(dirichlet_char_t c, const dirichlet_group_t G, const dirichlet_char_t a, const dirichlet_char_t b) { ulong k; for (k = 0; k < G->num ; k++) diff --git a/dirichlet/conrey_next.c b/dirichlet/conrey_next.c index e9c7cc8f..4a1db3c1 100644 --- a/dirichlet/conrey_next.c +++ b/dirichlet/conrey_next.c @@ -12,7 +12,7 @@ #include "dirichlet.h" int -dirichlet_conrey_next(dirichlet_conrey_t x, const dirichlet_group_t G) +dirichlet_char_next(dirichlet_char_t x, const dirichlet_group_t G) { /* update index */ int k; diff --git a/dirichlet/conrey_next_primitive.c b/dirichlet/conrey_next_primitive.c index 521e161c..a39b6fc1 100644 --- a/dirichlet/conrey_next_primitive.c +++ b/dirichlet/conrey_next_primitive.c @@ -12,7 +12,7 @@ #include "dirichlet.h" int -dirichlet_conrey_next_primitive(dirichlet_conrey_t x, const dirichlet_group_t G) +dirichlet_char_next_primitive(dirichlet_char_t x, const dirichlet_group_t G) { /* update index avoiding multiples of p except for first component if 8|q */ diff --git a/dirichlet/conrey_one.c b/dirichlet/conrey_one.c index 252889d0..ed3c760b 100644 --- a/dirichlet/conrey_one.c +++ b/dirichlet/conrey_one.c @@ -12,7 +12,7 @@ #include "dirichlet.h" void -dirichlet_conrey_one(dirichlet_conrey_t x, const dirichlet_group_t G) +dirichlet_char_one(dirichlet_char_t x, const dirichlet_group_t G) { ulong k; for (k = 0; k < G->num ; k++) diff --git a/dirichlet/conrey_order.c b/dirichlet/conrey_order.c index 23008de9..d8da6fc7 100644 --- a/dirichlet/conrey_order.c +++ b/dirichlet/conrey_order.c @@ -12,7 +12,7 @@ #include "dirichlet.h" ulong -dirichlet_conrey_order(const dirichlet_group_t G, const dirichlet_conrey_t x) +dirichlet_char_order(const dirichlet_group_t G, const dirichlet_char_t x) { ulong k, g; g = G->expo; diff --git a/dirichlet/conrey_parity.c b/dirichlet/conrey_parity.c index 91a47b3f..3ba6d181 100644 --- a/dirichlet/conrey_parity.c +++ b/dirichlet/conrey_parity.c @@ -12,7 +12,7 @@ #include "dirichlet.h" int -dirichlet_conrey_parity(const dirichlet_group_t G, const dirichlet_conrey_t x) +dirichlet_char_parity(const dirichlet_group_t G, const dirichlet_char_t x) { int k, odd = 0; for (k = 0; k < G->num; k++) diff --git a/dirichlet/conrey_pow.c b/dirichlet/conrey_pow.c index 5a70aa8f..3a682bd7 100644 --- a/dirichlet/conrey_pow.c +++ b/dirichlet/conrey_pow.c @@ -12,7 +12,7 @@ #include "dirichlet.h" void -dirichlet_conrey_pow(dirichlet_conrey_t c, const dirichlet_group_t G, const dirichlet_conrey_t a, ulong n) +dirichlet_char_pow(dirichlet_char_t c, const dirichlet_group_t G, const dirichlet_char_t a, ulong n) { ulong k; for (k = 0; k < G->num ; k++) diff --git a/dirichlet/conrey_primitive.c b/dirichlet/conrey_primitive.c index 2c657576..2a73c64b 100644 --- a/dirichlet/conrey_primitive.c +++ b/dirichlet/conrey_primitive.c @@ -12,7 +12,7 @@ #include "dirichlet.h" void -dirichlet_conrey_primitive(dirichlet_conrey_t y, const dirichlet_group_t G, const dirichlet_conrey_t x, ulong cond) +dirichlet_char_primitive(dirichlet_char_t y, const dirichlet_group_t G, const dirichlet_char_t x, ulong cond) { slong k, l; diff --git a/dirichlet/conrey_print.c b/dirichlet/conrey_print.c index 3c5970f1..c90dc666 100644 --- a/dirichlet/conrey_print.c +++ b/dirichlet/conrey_print.c @@ -12,7 +12,7 @@ #include "dirichlet.h" void -dirichlet_conrey_print(const dirichlet_group_t G, const dirichlet_conrey_t x) +dirichlet_char_print(const dirichlet_group_t G, const dirichlet_char_t x) { slong k; if (G->num) diff --git a/dirichlet/index_conrey.c b/dirichlet/index_conrey.c index e55783f5..4747d4e4 100644 --- a/dirichlet/index_conrey.c +++ b/dirichlet/index_conrey.c @@ -26,7 +26,7 @@ #include "dirichlet.h" ulong -dirichlet_index_conrey(const dirichlet_group_t G, const dirichlet_conrey_t x) +dirichlet_index_char(const dirichlet_group_t G, const dirichlet_char_t x) { slong k; ulong j = 0; diff --git a/dirichlet/ui_chi.c b/dirichlet/ui_chi.c index 8166a0f1..7133e614 100644 --- a/dirichlet/ui_chi.c +++ b/dirichlet/ui_chi.c @@ -12,7 +12,7 @@ #include "dirichlet.h" ulong -dirichlet_ui_chi(const dirichlet_group_t G, const dirichlet_char_t chi, ulong n) +dirichlet_ui_chi(const dirichlet_group_t G, const dirichlet_fullchar_t chi, ulong n) { if (n_gcd(G->q, n) > 1) { @@ -21,13 +21,13 @@ dirichlet_ui_chi(const dirichlet_group_t G, const dirichlet_char_t chi, ulong n) else { ulong v; - dirichlet_conrey_t x; - dirichlet_conrey_init(x, G); - dirichlet_conrey_log(x, G, n); + dirichlet_char_t x; + dirichlet_char_init(x, G); + dirichlet_char_log(x, G, n); - v = dirichlet_ui_chi_conrey(G, chi, x); + v = dirichlet_ui_chi_char(G, chi, x); - dirichlet_conrey_clear(x); + dirichlet_char_clear(x); return v; } } diff --git a/dirichlet/ui_chi_conrey.c b/dirichlet/ui_chi_conrey.c index 37af059b..44f93fcc 100644 --- a/dirichlet/ui_chi_conrey.c +++ b/dirichlet/ui_chi_conrey.c @@ -12,7 +12,7 @@ #include "dirichlet.h" ulong -dirichlet_ui_chi_conrey(const dirichlet_group_t G, const dirichlet_char_t chi, const dirichlet_conrey_t x) +dirichlet_ui_chi_char(const dirichlet_group_t G, const dirichlet_fullchar_t chi, const dirichlet_char_t x) { ulong v = 0, k; diff --git a/dirichlet/ui_chi_vec.c b/dirichlet/ui_chi_vec.c index bc16cc75..92ca6817 100644 --- a/dirichlet/ui_chi_vec.c +++ b/dirichlet/ui_chi_vec.c @@ -12,7 +12,7 @@ #include "dirichlet.h" void -dirichlet_ui_chi_vec(ulong *v, const dirichlet_group_t G, const dirichlet_char_t chi, slong nv) +dirichlet_ui_chi_vec(ulong *v, const dirichlet_group_t G, const dirichlet_fullchar_t chi, slong nv) { if (2 * nv > G->q) dirichlet_ui_chi_vec_loop(v, G, chi, nv); diff --git a/dirichlet/ui_chi_vec_loop.c b/dirichlet/ui_chi_vec_loop.c index 2e71d6fd..8ff81d76 100644 --- a/dirichlet/ui_chi_vec_loop.c +++ b/dirichlet/ui_chi_vec_loop.c @@ -13,21 +13,21 @@ /* loop over whole group */ void -dirichlet_ui_chi_vec_loop(ulong *v, const dirichlet_group_t G, const dirichlet_char_t chi, slong nv) +dirichlet_ui_chi_vec_loop(ulong *v, const dirichlet_group_t G, const dirichlet_fullchar_t chi, slong nv) { int j; ulong t; slong k; - dirichlet_conrey_t x; - dirichlet_conrey_init(x, G); - dirichlet_conrey_one(x, G); + dirichlet_char_t x; + dirichlet_char_init(x, G); + dirichlet_char_one(x, G); for (k = 0; k < nv; k++) v[k] = DIRICHLET_CHI_NULL; t = v[1] = 0; - while ( (j = dirichlet_conrey_next(x, G)) >= 0 ) + while ( (j = dirichlet_char_next(x, G)) >= 0 ) { /* exponents were modified up to j */ for (k = G->num - 1; k >= j; k--) @@ -44,5 +44,5 @@ dirichlet_ui_chi_vec_loop(ulong *v, const dirichlet_group_t G, const dirichlet_c for (k = G->q; k < nv ; k++ ) v[k] = v[k - G->q]; - dirichlet_conrey_clear(x); + dirichlet_char_clear(x); } diff --git a/dirichlet/ui_chi_vec_primeloop.c b/dirichlet/ui_chi_vec_primeloop.c index 2d415537..31dd4ca7 100644 --- a/dirichlet/ui_chi_vec_primeloop.c +++ b/dirichlet/ui_chi_vec_primeloop.c @@ -12,7 +12,7 @@ #include "dirichlet.h" static void -chi_vec_evenpart(ulong *v, const dirichlet_group_t G, const dirichlet_char_t chi, slong nv) +chi_vec_evenpart(ulong *v, const dirichlet_group_t G, const dirichlet_fullchar_t chi, slong nv) { ulong c3, c4, x; @@ -47,7 +47,7 @@ chi_vec_evenpart(ulong *v, const dirichlet_group_t G, const dirichlet_char_t chi /* loop over primary components */ void -dirichlet_ui_chi_vec_primeloop(ulong *v, const dirichlet_group_t G, const dirichlet_char_t chi, slong nv) +dirichlet_ui_chi_vec_primeloop(ulong *v, const dirichlet_group_t G, const dirichlet_fullchar_t chi, slong nv) { slong k, l; diff --git a/dirichlet/ui_pairing.c b/dirichlet/ui_pairing.c index e6d21baf..4d572ff4 100644 --- a/dirichlet/ui_pairing.c +++ b/dirichlet/ui_pairing.c @@ -15,20 +15,20 @@ ulong dirichlet_ui_pairing(const dirichlet_group_t G, ulong m, ulong n) { ulong x; - dirichlet_conrey_t a, b; + dirichlet_char_t a, b; if (n_gcd(G->q, m) > 1 || n_gcd(G->q, n) > 1) return DIRICHLET_CHI_NULL; - dirichlet_conrey_init(a, G); - dirichlet_conrey_init(b, G); - dirichlet_conrey_log(a, G, m); - dirichlet_conrey_log(b, G, n); + dirichlet_char_init(a, G); + dirichlet_char_init(b, G); + dirichlet_char_log(a, G, m); + dirichlet_char_log(b, G, n); - x = dirichlet_ui_pairing_conrey(G, a, b); + x = dirichlet_ui_pairing_char(G, a, b); - dirichlet_conrey_clear(a); - dirichlet_conrey_clear(b); + dirichlet_char_clear(a); + dirichlet_char_clear(b); return x; } diff --git a/dirichlet/ui_pairing_conrey.c b/dirichlet/ui_pairing_conrey.c index cd6638e7..3488f873 100644 --- a/dirichlet/ui_pairing_conrey.c +++ b/dirichlet/ui_pairing_conrey.c @@ -13,10 +13,8 @@ #include "dirichlet.h" -/* todo: modular arithmetic */ - ulong -dirichlet_ui_pairing_conrey(const dirichlet_group_t G, const dirichlet_conrey_t a, const dirichlet_conrey_t b) +dirichlet_ui_pairing_char(const dirichlet_group_t G, const dirichlet_char_t a, const dirichlet_char_t b) { ulong x, k; x = 0;