Function: znchardecompose
Section: number_theoretical
C-Name: znchardecompose
Prototype: GGG
Help: znchardecompose(G, chi, Q): given a znstar G = (Z/NZ)^* and
 a Dirichlet character chi, return the product of local characters chi_p
 for p | (N,Q).
Doc: Let $N = \prod_p p^{e_p}$ and a Dirichlet character $\chi$,
 we have a decomposition $\chi = \prod_p \chi_p$ into character modulo $N$
 where the conductor of $\chi_p$ divides $p^{e_p}$; it equals $p^{e_p}$ for
 all $p$ if and only if $\chi$ is primitive.

 Given a \var{znstar} G describing a group $(\Z/N\Z)^*$, a Dirichlet
 character \kbd{chi} and an integer $Q$, return $\prod_{p \mid (Q,N)} \chi_p$.
 For instance, if $Q = p$ is a prime divisor of $N$, the function returns
 $\chi_p$ (as a character modulo $N$), given as a Conrey character (\typ{COL}).

 \bprog
 ? G = znstar(40, 1);
 ? G.cyc
 %2 = [4, 2, 2]
 ? chi = [2, 1, 1];
 ? chi2 = znchardecompose(G, chi, 2)
 %4 = [1, 1, 0]~
 ? chi5 = znchardecompose(G, chi, 5)
 %5 = [0, 0, 2]~
 ? znchardecompose(G, chi, 3)
 %6 = [0, 0, 0]~
 ? c = charmul(G, chi2, chi5)
 %7 = [1, 1, 2]~  \\ t_COL: in terms of Conrey generators !
 ? znconreychar(G,c)
 %8 = [2, 1, 1]   \\ t_VEC: in terms of SNF generators
 @eprog
