![]() |
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 1612 of file algext.cc.
Definition at line 1632 of file algext.cc.
Definition at line 1587 of file algext.cc.
first check whether cf->extRing != NULL and delete old ring???
Definition at line 1687 of file algext.cc.
|
static |
|
static |
Definition at line 1162 of file algext.cc.
|
static |
Definition at line 1367 of file algext.cc.
|
static |
Definition at line 691 of file algext.cc.
Definition at line 1390 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 769 of file algext.cc.
Definition at line 950 of file algext.cc.
Initialize the coeffs object.
first check whether cf->extRing != NULL and delete old ring???
Definition at line 1433 of file algext.cc.
Definition at line 331 of file algext.cc.
Definition at line 831 of file algext.cc.
if m == var(i)/1 => return i,
|
static |
Definition at line 656 of file algext.cc.
return the specified parameter as a number in the given alg. field
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 1077 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.