-
Notifications
You must be signed in to change notification settings - Fork 0
/
factor.h
35 lines (27 loc) · 1.23 KB
/
factor.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef MPU_FACTOR_H
#define MPU_FACTOR_H
#include <gmp.h>
#include "ptypes.h"
extern void _init_factor(void);
extern int factor(mpz_t n, mpz_t* factors[], int* exponents[]);
extern void clear_factors(int nfactors, mpz_t* pfactors[], int* pexponents[]);
extern void sigma(mpz_t res, mpz_t n, UV k);
extern int moebius(mpz_t n);
extern int liouville(mpz_t n);
extern int is_semiprime(mpz_t n);
extern void totient(mpz_t totient, mpz_t n);
extern void jordan_totient(mpz_t tot, mpz_t n, unsigned long k);
extern void carmichael_lambda(mpz_t lambda, mpz_t n);
extern void znorder(mpz_t res, mpz_t a, mpz_t n);
extern void znprimroot(mpz_t root, mpz_t n);
extern void ramanujan_tau(mpz_t res, mpz_t n);
extern UV _GMP_trial_factor(mpz_t n, UV from_n, UV to_n);
extern int _GMP_prho_factor(mpz_t n, mpz_t f, UV a, UV rounds);
extern int _GMP_pbrent_factor(mpz_t n, mpz_t f, UV a, UV rounds);
extern int _GMP_pminus1_factor(mpz_t n, mpz_t f, UV B1, UV B2);
extern int _GMP_pplus1_factor(mpz_t n, mpz_t f, UV P0, UV B1, UV B2);
extern int _GMP_holf_factor(mpz_t n, mpz_t f, UV rounds);
extern int _GMP_squfof_factor(mpz_t n, mpz_t f, UV rounds);
extern UV power_factor(mpz_t n, mpz_t f);
extern mpz_t* divisor_list(int* ndivisors, mpz_t n);
#endif