8#include <M2/gc-include.h>
10#pragma GCC diagnostic push
11#pragma GCC diagnostic ignored "-Wconversion"
12#include <flint/fmpz.h>
13#include <flint/fmpz_factor.h>
14#pragma GCC diagnostic pop
23 auto ret = fmpz_is_prime(n);
26 ERROR(
"flint's is_prime failed");
27 std::cout <<
"fmpz_is_prime returned " << ret << std::endl;
37 int ret = fmpz_is_probabprime(n);
53 fmpz_factor_init(factor);
54 fmpz_factor(factor,n);
55 int len = factor->num;
62 mpz_set_si(tmp, factor->sign);
65 for (
int i=0; i<len; i++) {
69 fmpz_get_mpz(tmp,factor->p + i);
71 result->array[2*i+1] = tmp;
75 fmpz_get_mpz(tmp,(fmpz *)(factor->exp + i));
77 result->array[2*i+2] = tmp;
79 fmpz_factor_clear(factor);
Engine error-reporting primitives: ERROR, INTERNAL_ERROR, error, error_message.
gmp_arrayZZ flintToFrontend(std::vector< fmpz_t >)
gmp_arrayZZ rawZZfactor(gmp_ZZ x)
M2_bool rawZZisPrime(gmp_ZZ a)
M2_bool rawZZisProbablePrime(gmp_ZZ a)
Engine-boundary C API exposing FLINT's integer primality and factorisation services.
void mpz_reallocate_limbs(mpz_ptr _z)
Inline helpers that move GMP / MPFR / MPFI limbs from malloc-managed storage into the bdwgc heap.
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define getmemarraytype(S, len)