1 #if !defined  HAVE_NUMTHEORY_H__
2 #define       HAVE_NUMTHEORY_H__
3 // This file is part of the FXT library.
4 // Copyright (C) 2010, 2012 Joerg Arndt
5 // License: GNU General Public License version 3 or later,
6 // see the file COPYING.txt in the main directory.
7 
8 
9 #include "fxttypes.h"
10 #include "mod/mtypes.h"
11 //#include "mod/factor.h"
12 class factorization;
13 
14 
15 // mod/kronecker.cc:
16 int kronecker(umod_t a, umod_t b);
17 //int reciprocity(umod_t a, umod_t b);
18 
19 // mod/euler-phi.cc:
20 umod_t euler_phi(umod_t n);
21 umod_t euler_phi(umod_t pr, ulong ex);
22 umod_t euler_phi(const factorization &ff);
23 
24 // mod/chinese.cc:
25 umod_t chinese(const umod_t *x, const factorization &f);
26 
27 
28 // mod/cyclic.cc:
29 bool is_cyclic(const factorization &f);
30 
31 
32 // mod/order.cc:
33 umod_t order_mod(umod_t x, umod_t m, const factorization &phifact);
34 
35 // mod/maxorder.cc:
36 umod_t maxorder_mod(const factorization &mf);
37 umod_t maxorder_element_mod(const factorization &mf, const factorization &pf);
38 
39 // mod/quadresidue.cc:
40 bool is_quadratic_residue_2ex(umod_t a, ulong x);
41 bool is_quadratic_residue(umod_t a, const factorization &mf);
42 
43 
44 // mod/sqrtmod.cc:
45 umod_t sqrt_modp(umod_t a, umod_t p);
46 umod_t sqrt_modpp(umod_t a, umod_t p, long ex);
47 umod_t sqrt_modf(umod_t a, const factorization &mf);
48 
49 
50 #endif  // !defined HAVE_NUMTHEORY_H__
51