![]() |
My Project
|
#include "misc/auxiliary.h"
#include "reporter/reporter.h"
#include "coeffs/coeffs.h"
#include "coeffs/numbers.h"
#include "coeffs/longrat.h"
#include "polys/monomials/ring.h"
#include "polys/monomials/p_polys.h"
#include "polys/simpleideals.h"
#include "polys/PolyEnumerator.h"
#include "factory/factory.h"
#include "polys/clapconv.h"
#include "polys/clapsing.h"
#include "polys/prCopy.h"
#include "polys/ext_fields/algext.h"
#include "polys/ext_fields/transext.h"
Go to the source code of this file.
Macros | |
#define | TRANSEXT_PRIVATES 1 |
ABSTRACT: numbers in an algebraic extension field K[a] / < f(a) > Assuming that we have a coeffs object cf, then these numbers are polynomials in the polynomial ring K[a] represented by cf->extRing. | |
#define | naTest(a) |
#define | naRing cf->extRing |
#define | naCoeffs cf->extRing->cf |
#define | naMinpoly naRing->qideal->m[0] |
#define | n2pTest(a) |
ABSTRACT: numbers as polys in the ring K[a] Assuming that we have a coeffs object cf, then these numbers are polynomials in the polynomial ring K[a] represented by cf->extRing. | |
#define | n2pRing cf->extRing |
#define | n2pCoeffs cf->extRing->cf |
Functions | |
static BOOLEAN | naDBTest (number a, const char *f, const int l, const coeffs r) |
static BOOLEAN | naGreaterZero (number a, const coeffs cf) |
forward declarations | |
static BOOLEAN | naGreater (number a, number b, const coeffs cf) |
static BOOLEAN | naEqual (number a, number b, const coeffs cf) |
static BOOLEAN | naIsOne (number a, const coeffs cf) |
static BOOLEAN | naIsMOne (number a, const coeffs cf) |
static number | naInit (long i, const coeffs cf) |
static number | naNeg (number a, const coeffs cf) |
this is in-place, modifies a | |
static number | naInvers (number a, const coeffs cf) |
static number | naAdd (number a, number b, const coeffs cf) |
static number | naSub (number a, number b, const coeffs cf) |
static number | naMult (number a, number b, const coeffs cf) |
static number | naDiv (number a, number b, const coeffs cf) |
static void | naPower (number a, int exp, number *b, const coeffs cf) |
static number | naCopy (number a, const coeffs cf) |
static void | naWriteLong (number a, const coeffs cf) |
static void | naWriteShort (number a, const coeffs cf) |
static number | naGcd (number a, number b, const coeffs cf) |
static void | naDelete (number *a, const coeffs cf) |
static void | naCoeffWrite (const coeffs cf, BOOLEAN details) |
static const char * | naRead (const char *s, number *a, const coeffs cf) |
static BOOLEAN | naCoeffIsEqual (const coeffs cf, n_coeffType n, void *param) |
static void | p_Monic (poly p, const ring r) |
returns NULL if p == NULL, otherwise makes p monic by dividing by its leading coefficient (only done if this is not already 1); this assumes that we are over a ground field so that division is well-defined; modifies p | |
static poly | p_GcdHelper (poly &p, poly &q, const ring r) |
see p_Gcd; additional assumption: deg(p) >= deg(q); must destroy p and q (unless one of them is returned) | |
static poly | p_Gcd (const poly p, const poly q, const ring r) |
static poly | p_ExtGcdHelper (poly &p, poly &pFactor, poly &q, poly &qFactor, ring r) |
poly | p_ExtGcd (poly p, poly &pFactor, poly q, poly &qFactor, ring r) |
assumes that p and q are univariate polynomials in r, mentioning the same variable; assumes a global monomial ordering in r; assumes that not both p and q are NULL; returns the gcd of p and q; moreover, afterwards pFactor and qFactor contain appropriate factors such that gcd(p, q) = p * pFactor + q * qFactor; leaves p and q unmodified | |
static void | heuristicReduce (poly &p, poly reducer, const coeffs cf) |
static void | definiteReduce (poly &p, poly reducer, const coeffs cf) |
static coeffs | nCoeff_bottom (const coeffs r, int &height) |
static BOOLEAN | naIsZero (number a, const coeffs cf) |
static number | naInitMPZ (mpz_t m, const coeffs r) |
static long | naInt (number &a, const coeffs cf) |
static void | naInpAdd (number &a, number b, const coeffs cf) |
static void | naInpMult (number &a, number b, const coeffs cf) |
static number | napNormalizeHelper (number b, const coeffs cf) |
static number | naLcmContent (number a, number b, const coeffs cf) |
static int | naSize (number a, const coeffs cf) |
static void | naNormalize (number &a, const coeffs cf) |
static number | naConvFactoryNSingN (const CanonicalForm n, const coeffs cf) |
static CanonicalForm | naConvSingNFactoryN (number n, BOOLEAN, const coeffs cf) |
static number | naMap00 (number a, const coeffs src, const coeffs dst) |
static number | naMapZ0 (number a, const coeffs src, const coeffs dst) |
static number | naMapP0 (number a, const coeffs src, const coeffs dst) |
static number | naCopyTrans2AlgExt (number a, const coeffs src, const coeffs dst) |
static number | naMap0P (number a, const coeffs src, const coeffs dst) |
static number | naMapPP (number a, const coeffs src, const coeffs dst) |
static number | naMapUP (number a, const coeffs src, const coeffs dst) |
static number | naGenMap (number a, const coeffs cf, const coeffs dst) |
static number | naGenTrans2AlgExt (number a, const coeffs cf, const coeffs dst) |
nMapFunc | naSetMap (const coeffs src, const coeffs dst) |
Get a mapping function from src into the domain of this type (n_algExt) | |
static int | naParDeg (number a, const coeffs cf) |
static number | naParameter (const int iParameter, const coeffs cf) |
return the specified parameter as a number in the given alg. field | |
int | naIsParam (number m, const coeffs cf) |
if m == var(i)/1 => return i, | |
static void | naClearContent (ICoeffsEnumerator &numberCollectionEnumerator, number &c, const coeffs cf) |
static void | naClearDenominators (ICoeffsEnumerator &numberCollectionEnumerator, number &c, const coeffs cf) |
static void | naKillChar (coeffs cf) |
char * | naCoeffName (const coeffs r) |
static number | naChineseRemainder (number *x, number *q, int rl, BOOLEAN, CFArray &inv_cache, const coeffs cf) |
static number | naFarey (number p, number n, const coeffs cf) |
BOOLEAN | naInitChar (coeffs cf, void *infoStruct) |
Initialize the coeffs object. | |
BOOLEAN | n2pDBTest (number a, const char *f, const int l, const coeffs r) |
void | n2pNormalize (number &a, const coeffs cf) |
number | n2pMult (number a, number b, const coeffs cf) |
number | n2pDiv (number a, number b, const coeffs cf) |
void | n2pPower (number a, int exp, number *b, const coeffs cf) |
const char * | n2pRead (const char *s, number *a, const coeffs cf) |
static BOOLEAN | n2pCoeffIsEqual (const coeffs cf, n_coeffType n, void *param) |
char * | n2pCoeffName (const coeffs cf) |
void | n2pCoeffWrite (const coeffs cf, BOOLEAN details) |
number | n2pInvers (number a, const coeffs cf) |
BOOLEAN | n2pInitChar (coeffs cf, void *infoStruct) |
#define n2pTest | ( | a | ) |
ABSTRACT: numbers as polys in the ring K[a] Assuming that we have a coeffs object cf, then these numbers are polynomials in the polynomial ring K[a] represented by cf->extRing.
IMPORTANT ASSUMPTIONS: 1.) So far we assume that cf->extRing is a valid polynomial ring
#define naTest | ( | a | ) |
#define TRANSEXT_PRIVATES 1 |
ABSTRACT: numbers in an algebraic extension field K[a] / < f(a) > Assuming that we have a coeffs object cf, then these numbers are polynomials in the polynomial ring K[a] represented by cf->extRing.
IMPORTANT ASSUMPTIONS: 1.) So far we assume that cf->extRing is a valid polynomial ring in exactly one variable, i.e., K[a], where K is allowed 0* to be any field (representable in SINGULAR and which may itself be some extension field, thus allowing for extension towers). 2.) Moreover, this implementation assumes that cf->extRing->qideal is not NULL but an ideal with at least one non-zero generator which may be accessed by cf->extRing->qideal->m[0] and which represents the minimal polynomial f(a) of the extension variable 'a' in K[a]. 3.) As soon as an std method for polynomial rings becomes available, all reduction steps modulo f(a) should be replaced by a call to std. Moreover, in this situation one can finally move from K[a] / < f(a) > to K[a_1, ..., a_s] / I, with I some zero-dimensional ideal in K[a_1, ..., a_s] given by a lex Gröbner basis. The code in algext.h and algext.cc is then capable of computing in K[a_1, ..., a_s] / I.
Definition at line 743 of file algext.cc.
Definition at line 573 of file algext.cc.
|
static |
Definition at line 1565 of file algext.cc.
Definition at line 1585 of file algext.cc.
Definition at line 1540 of file algext.cc.
first check whether cf->extRing != NULL and delete old ring???
Definition at line 1640 of file algext.cc.
Definition at line 1624 of file algext.cc.
|
static |
|
static |
Definition at line 1115 of file algext.cc.
|
static |
Definition at line 1320 of file algext.cc.
|
static |
Definition at line 691 of file algext.cc.
Definition at line 1343 of file algext.cc.
Definition at line 379 of file algext.cc.
|
static |
Definition at line 763 of file algext.cc.
|
static |
Definition at line 903 of file algext.cc.
Definition at line 783 of file algext.cc.
Definition at line 350 of file algext.cc.
Initialize the coeffs object.
first check whether cf->extRing != NULL and delete old ring???
Definition at line 1386 of file algext.cc.
Definition at line 331 of file algext.cc.
Definition at line 337 of file algext.cc.
Definition at line 831 of file algext.cc.
Definition at line 309 of file algext.cc.
if m == var(i)/1 => return i,
Definition at line 656 of file algext.cc.
Definition at line 861 of file algext.cc.
return the specified parameter as a number in the given alg. field
Definition at line 1089 of file algext.cc.
Definition at line 642 of file algext.cc.
Definition at line 506 of file algext.cc.
Get a mapping function from src into the domain of this type (n_algExt)
Q or Z --> Q(a)
Z --> Q(a)
Z/p --> Q(a)
Q --> Z/p(a)
Z --> Z/p(a)
Z/p --> Z/p(a)
Z/u --> Z/p(a)
default
Definition at line 1030 of file algext.cc.
Definition at line 583 of file algext.cc.
Definition at line 601 of file algext.cc.
Definition at line 256 of file algext.cc.
poly p_ExtGcd | ( | poly | p, |
poly & | pFactor, | ||
poly | q, | ||
poly & | qFactor, | ||
ring | r ) |
assumes that p and q are univariate polynomials in r, mentioning the same variable; assumes a global monomial ordering in r; assumes that not both p and q are NULL; returns the gcd of p and q; moreover, afterwards pFactor and qFactor contain appropriate factors such that gcd(p, q) = p * pFactor + q * qFactor; leaves p and q unmodified
Definition at line 214 of file algext.cc.
|
inlinestatic |
Definition at line 181 of file algext.cc.
Definition at line 163 of file algext.cc.
|
inlinestatic |
see p_Gcd; additional assumption: deg(p) >= deg(q); must destroy p and q (unless one of them is returned)
|
inlinestatic |
returns NULL if p == NULL, otherwise makes p monic by dividing by its leading coefficient (only done if this is not already 1); this assumes that we are over a ground field so that division is well-defined; modifies p
assumes that p and q are univariate polynomials in r, mentioning the same variable; assumes a global monomial ordering in r; assumes that not both p and q are NULL; returns the gcd of p and q; leaves p and q unmodified
Definition at line 118 of file algext.cc.