67 if (
area > 0)
return true;
80 int* point=
new int [2];
200 int **
points=
new int* [n];
201 for (
int i= 0;
i < n;
i++)
304 int **
result=
new int* [n];
305 for (
int i= 0;
i < n;
i++)
363 int **
result=
new int* [n];
364 for (
int i= 0;
i < n;
i++)
388 buf [
i]=
new int [2];
408 if (
buf [0] [0] == point [0] &&
buf [0] [1] == point [1])
418 if (
buf [
i] [0] == point [0] &&
buf [
i] [1] == point [1])
430 buf [1] [0]= point [0];
431 buf [1] [1]= point [1];
666 else if (d +
h >
maxY)
782 for (;
j.hasTerms();
j++)
817 for (;
j.hasTerms();
j++)
836 for (
int i= 0;
i < n;
i++)
892 for (;
i.hasTerms();
i++)
919 for (
i= F;
i.hasTerms();
i++)
1005 for (;
j.hasTerms();
j++)
1365 for (
int j= 0;
j < 3;
j++)
Rational abs(const Rational &a)
const CanonicalForm CFMap CFMap & N
static void quickSort(int lo, int hi, int **points)
void lambda(int **points, int sizePoints)
static bool isLess(int *point1, int *point2)
bool modularIrredTest(const CanonicalForm &F)
modular absolute irreducibility test as described in "Modular Las Vegas Algorithms for Polynomial Abs...
void lambdaInverse(int **points, int sizePoints)
void mpz_mat_inv(mpz_t *&M)
static bool isConvex(int *point1, int *point2, int *point3)
int * getRightSide(int **polygon, int sizeOfPolygon, int &sizeOfOutput)
get the y-direction slopes of all edges with positive slope in y-direction of a convex polygon with a...
void convexDense(int **points, int sizePoints, mpz_t *&M, mpz_t *&A)
Algorithm 5 as described in Convex-Dense Bivariate Polynomial Factorization by Berthomieu,...
static void sort(int **points, int sizePoints)
bool modularIrredTestWithShift(const CanonicalForm &F)
modular absolute irreducibility test with shift as described in "Modular Las Vegas Algorithms for Pol...
bool irreducibilityTest(const CanonicalForm &F)
computes the Newton polygon of F and checks if it satisfies the irreducibility criterion from S....
void getMaxMin(int **points, int sizePoints, int &minDiff, int &minSum, int &maxDiff, int &maxSum, int &maxX, int &maxY)
bool absIrredTest(const CanonicalForm &F)
absolute irreducibility test as described in "Modular Las Vegas Algorithms for Polynomial Absolute Fa...
bool isInPolygon(int **points, int sizePoints, int *point)
check if point is inside a polygon described by points
CanonicalForm decompress(const CanonicalForm &F, const mpz_t *inverseM, const mpz_t *A)
decompress a bivariate poly
void tau(int **points, int sizePoints, int k)
int ** merge(int **points1, int sizePoints1, int **points2, int sizePoints2, int &sizeResult)
void mu(int **points, int sizePoints)
void mpz_mat_mul(const mpz_t *N, mpz_t *&M)
int ** getPoints(const CanonicalForm &F, int &n)
static int * getDegrees(const CanonicalForm &F, int &sizeOfOutput)
int grahamScan(int **points, int sizePoints)
CanonicalForm compress(const CanonicalForm &F, mpz_t *&M, mpz_t *&A, bool computeMA)
compress a bivariate poly
int ** newtonPolygon(const CanonicalForm &F, int &sizeOfNewtonPoly)
compute the Newton polygon of a bivariate polynomial
int polygon(int **points, int sizePoints)
compute a polygon
static void translate(int **points, int *point, int sizePoints)
static int smallestPointIndex(int **points, int sizePoints)
This file provides functions to compute the Newton polygon of a bivariate polynomial.
CanonicalForm bCommonDen(const CanonicalForm &f)
CanonicalForm bCommonDen ( const CanonicalForm & f )
CanonicalForm maxNorm(const CanonicalForm &f)
CanonicalForm maxNorm ( const CanonicalForm & f )
declarations of higher level algorithms.
CFFList FACTORY_PUBLIC factorize(const CanonicalForm &f, bool issqrfree=false)
factorization over or
#define ASSERT(expression, message)
static const int SW_RATIONAL
set to 1 for computations over Q
#define GaloisFieldDomain
Interface to generate InternalCF's over various domains from intrinsic types or mpz_t's.
Iterators for CanonicalForm's.
int cf_getNumSmallPrimes()
int cf_getSmallPrime(int i)
generate random evaluation points
class to iterate through CanonicalForm's
generate random elements in F_p
class to generate random evaluation points
factory's class for variables
const CanonicalForm int const CFList const Variable & y
REvaluation E(1, terms.length(), IntRandom(25))
const Variable & v
< [in] a sqrfree bivariate poly
static int min(int a, int b)
some useful template functions.
template CanonicalForm tmax(const CanonicalForm &, const CanonicalForm &)
template CanonicalForm tmin(const CanonicalForm &, const CanonicalForm &)
Operations in GF, where GF is a finite field of size less than 2^16 represented by a root of Conway p...
STATIC_VAR coordinates * points
static BOOLEAN length(leftv result, leftv arg)
STATIC_VAR gmp_float * diff
static int index(p_Length length, p_Ord ord)
int status int void size_t count
int status int void * buf