My Project
Loading...
Searching...
No Matches
algext.h
Go to the documentation of this file.
1#ifndef ALGEXT_H
2#define ALGEXT_H
3/****************************************
4* Computer Algebra System SINGULAR *
5****************************************/
6/*
7* ABSTRACT: numbers in an algebraic extension field K[a] / < f(a) >
8* Assuming that we have a coeffs object cf, then these numbers
9* are polynomials in the polynomial ring K[a] represented by
10* cf->extRing.
11* IMPORTANT ASSUMPTIONS:
12* 1.) So far we assume that cf->extRing is a valid polynomial
13* ring in exactly one variable, i.e., K[a], where K is allowed
14* to be any field (representable in SINGULAR and which may
15* itself be some extension field, thus allowing for extension
16* towers).
17* 2.) Moreover, this implementation assumes that
18* cf->extRing->qideal is not NULL but an ideal with at
19* least one non-zero generator which may be accessed by
20* cf->extRing->qideal->m[0] and which represents the minimal
21* polynomial f(a) of the extension variable 'a' in K[a].
22* 3.) As soon as an std method for polynomial rings becomes
23* availabe, all reduction steps modulo f(a) should be replaced
24* by a call to std. Moreover, in this situation one can finally
25* move from K[a] / < f(a) > to
26* K[a_1, ..., a_s] / I, with I some zero-dimensional ideal
27* in K[a_1, ..., a_s] given by a lex
28* Gröbner basis.
29* The code in algext.h and algext.cc is then capable of
30* computing in K[a_1, ..., a_s] / I.
31*/
32
33#include "coeffs/coeffs.h"
35
36/// struct for passing initialization parameters to naInitChar
37typedef struct { ring r; /*ideal i;*/ } AlgExtInfo; // `r.qideal` is supposed to be `i`
38
39/// Get a mapping function from src into the domain of this type (n_algExt)
40nMapFunc naSetMap(const coeffs src, const coeffs dst);
41
42/// Initialize the coeffs object
43BOOLEAN naInitChar(coeffs cf, void* infoStruct);
44BOOLEAN n2pInitChar(coeffs cf, void * infoStruct);
45
46/// if m == var(i)/1 => return i,
47int naIsParam(number, const coeffs);
48
49/// assumes that p and q are univariate polynomials in r,
50/// mentioning the same variable;
51/// assumes a global monomial ordering in r;
52/// assumes that not both p and q are NULL;
53/// returns the gcd of p and q;
54/// moreover, afterwards pFactor and qFactor contain appropriate
55/// factors such that gcd(p, q) = p * pFactor + q * qFactor;
56/// leaves p and q unmodified
57poly p_ExtGcd(poly p, poly &pFactor, poly q, poly &qFactor, ring r);
58
59char* naCoeffName(const coeffs r);
60#endif
61/* ALGEXT_H */
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 ...
Definition: algext.cc:216
ring r
Definition: algext.h:37
int naIsParam(number, const coeffs)
if m == var(i)/1 => return i,
Definition: algext.cc:1106
char * naCoeffName(const coeffs r)
Definition: algext.cc:1345
nMapFunc naSetMap(const coeffs src, const coeffs dst)
Get a mapping function from src into the domain of this type (n_algExt)
Definition: algext.cc:1032
BOOLEAN naInitChar(coeffs cf, void *infoStruct)
Initialize the coeffs object.
Definition: algext.cc:1388
BOOLEAN n2pInitChar(coeffs cf, void *infoStruct)
Definition: algext.cc:1642
struct for passing initialization parameters to naInitChar
Definition: algext.h:37
int BOOLEAN
Definition: auxiliary.h:87
int p
Definition: cfModGcd.cc:4078
CanonicalForm cf
Definition: cfModGcd.cc:4083
Coefficient rings, fields and other domains suitable for Singular polynomials.
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
Definition: coeffs.h:73
The main handler for Singular numbers which are suitable for Singular polynomials.