#include <stdbool.h>
#include <gmp.h>
#include "first_primes.h"
#include "array.h"
#include "lindep.h"
#include "smooth_filter.h"
#include "factoring_machine.h"
#include "exit_codes.h"
Go to the source code of this file.
Data Structures | |
struct | struct_cfrac_params_t |
Defines the variable parameters used in the CFRAC algorithm. More... | |
Defines | |
#define | _TIFA_CFRAC_H_ |
#define | CFRAC_DFLT_NPRIMES_IN_BASE (NFIRST_PRIMES/16) |
#define | CFRAC_DFLT_NPRIMES_TDIV (NFIRST_PRIMES/16) |
#define | CFRAC_DFLT_NRELATIONS 32 |
#define | CFRAC_DFLT_LINALG_METHOD SMART_GAUSS_ELIM |
#define | CFRAC_DFLT_USE_LARGE_PRIMES true |
Typedefs | |
typedef struct struct_cfrac_params_t | cfrac_params_t |
Equivalent to struct struct_cfrac_params_t . | |
Functions | |
void | set_cfrac_params_to_default (const mpz_t n, cfrac_params_t *const params) |
Fills a cfrac_params_t with "good" default values. | |
ecode_t | cfrac (mpz_array_t *const factors, uint32_array_t *const multis, const mpz_t n, const cfrac_params_t *const params, const factoring_mode_t mode) |
Integer factorization via the continued fraction (CFRAC) algorithm. |
Definition in file cfrac.h.
#define CFRAC_DFLT_LINALG_METHOD SMART_GAUSS_ELIM |
#define CFRAC_DFLT_NPRIMES_IN_BASE (NFIRST_PRIMES/16) |
#define CFRAC_DFLT_NPRIMES_TDIV (NFIRST_PRIMES/16) |
#define CFRAC_DFLT_NRELATIONS 32 |
#define CFRAC_DFLT_USE_LARGE_PRIMES true |
ecode_t cfrac | ( | mpz_array_t *const | factors, | |
uint32_array_t *const | multis, | |||
const mpz_t | n, | |||
const cfrac_params_t *const | params, | |||
const factoring_mode_t | mode | |||
) |
Integer factorization via the continued fraction (CFRAC) algorithm.
Attempts to factor the non perfect square integer n
with the CFRAC algorithm, using the set of parameters given by params
and the factoring mode given by mode
. Found factors are then stored in factors
. Additionally, if the factoring mode used is set to FIND_COMPLETE_FACTORIZATION, factors' multiplicities are stored in the array multis
.
multis
is allowed to be a NULL pointer. Otherwise, using a NULL pointer will lead to a fatal error.factors
and multis
arrays have not enough room to store the found factors (and the multiplicities, if any), they will be automatically resized to accommodate the data. This has to be kept in mind when trying to do ingenious stuff with memory management (hint: don't try to be clever here).The "no large primes" variant is currently disabled.
[out] | factors | Pointer to the found factors of n . |
[out] | multis | Pointer to the multiplicities of the found factors (only computed if mode is set to FIND_COMPLETE_FACTORIZATION). |
[in] | n | The non perfect square integer to factor. |
[in] | params | Pointer to the values of the parameters used in the CFRAC algorithm. |
[in] | mode | The factoring mode to use. |
void set_cfrac_params_to_default | ( | const mpz_t | n, | |
cfrac_params_t *const | params | |||
) |
Fills a cfrac_params_t
with "good" default values.
Fills a cfrac_params_t
with "good" default values choosen according to the size of the number n to factor.
[in] | n | The mpz_t integer to factor. |
[out] | params | A pointer to the cfrac_params_t structure to fill. |