Loading...
Searching...
No Matches
bigintmat.h File Reference
`#include "coeffs/coeffs.h"`

Go to the source code of this file.

## Data Structures

class | bigintmat
| Matrices of numbers. More...

## Macros

#define | BIMATELEM(M, I, J)

## Functions

bool | operator== (const bigintmat &lhr, const bigintmat &rhr)
bool | operator!= (const bigintmat &lhr, const bigintmat &rhr)
bigintmat * | bimAdd (bigintmat *a, bigintmat *b)
| Matrix-Add/-Sub/-Mult so oder mit operator+/-/* ? @Note: NULL as a result means an error (non-compatible matrices?).
bigintmat * | bimAdd (bigintmat *a, long b)
bigintmat * | bimSub (bigintmat *a, bigintmat *b)
bigintmat * | bimSub (bigintmat *a, long b)
bigintmat * | bimMult (bigintmat *a, bigintmat *b)
bigintmat * | bimMult (bigintmat *a, long b)
bigintmat * | bimMult (bigintmat *a, number b, const coeffs cf)
bigintmat * | bimCopy (const bigintmat *b)
| same as copy constructor - apart from it being able to accept NULL as input
intvec * | bim2iv (bigintmat *b)
bigintmat * | iv2bim (intvec *b, const coeffs C)
bigintmat * | bimChangeCoeff (bigintmat *a, coeffs cnew)
| Liefert Kopier von Matrix a zurück, mit coeffs cnew statt den ursprünglichen.
void | bimMult (bigintmat *a, bigintmat *b, bigintmat *c)
| Multipliziert Matrix a und b und speichert Ergebnis in c.
number | solveAx (bigintmat *A, bigintmat *b, bigintmat *x)
| solve Ax=b*d. x needs to be pre-allocated to the same number of columns as b. the minimal denominator d is returned. Currently available for Z, Q and Z/nZ (and possibly for all fields: d=1 there) Beware that the internal functions can find the kernel as well - but the interface is lacking.
int | kernbase (bigintmat *a, bigintmat *c, number p, coeffs q)
| a basis for the nullspace of a mod p: only used internally in Round2. Don't use it.
bool | nCoeffs_are_equal (coeffs r, coeffs s)
void | diagonalForm (bigintmat *a, bigintmat **b, bigintmat **c)

## Macro Definition Documentation

## BIMATELEM

#define BIMATELEM | ( |  | M,
|  |  | I,
|  |  | J )

Value:
(M)[(I-1)*(M).cols()+J-1]
M
#define M
Definition sirandom.c:25

Definition at line 133 of file bigintmat.h.

## Function Documentation

## bim2iv()

intvec * bim2iv | ( | bigintmat * | b | ) |

Definition at line 339 of file bigintmat.cc.

{
intvec * iv = new intvec(b->rows(), b->cols(), 0);
for (int i=0; i<(b->rows())*(b->cols()); i++)
(*iv)[i] = n_Int((*b)[i], b->basecoeffs()); // Geht das so?
return iv;
}
i
int i
Definition cfEzgcd.cc:132
b
CanonicalForm b
Definition cfModGcd.cc:4111
intvec
Definition intvec.h:24
n_Int
static FORCE_INLINE long n_Int(number &n, const coeffs r)
conversion of n to an int; 0 if not possible in Z/pZ: the representing int lying in (-p/2 ....
Definition coeffs.h:550

## bimAdd() [1/2]

bigintmat * bimAdd | ( | bigintmat * | a,
|  | bigintmat * | b )

Matrix-Add/-Sub/-Mult so oder mit operator+/-/* ? @Note: NULL as a result means an error (non-compatible matrices?).

Definition at line 180 of file bigintmat.cc.

{
if (a->cols() != b->cols()) return NULL;
if (a->rows() != b->rows()) return NULL;
if (a->basecoeffs() != b->basecoeffs()) { return NULL; }
const coeffs basecoeffs = a->basecoeffs();
int i;
bigintmat * bim = new bigintmat(a->rows(), a->cols(), basecoeffs);
for (i=a->rows()*a->cols()-1;i>=0; i--)
bim->rawset(i, n_Add((*a)[i], (*b)[i], basecoeffs), basecoeffs);
return bim;
}
bigintmat
Matrices of numbers.
Definition bigintmat.h:51
bigintmat::cols
int cols() const
Definition bigintmat.h:144
bigintmat::rows
int rows() const
Definition bigintmat.h:145
bigintmat::rawset
void rawset(int i, number n, const coeffs C=NULL)
replace an entry with the given number n (only delete old). NOTE: starts at [0]. Should be named set_...
Definition bigintmat.h:196
bigintmat::basecoeffs
coeffs basecoeffs() const
Definition bigintmat.h:146
n_Add
static FORCE_INLINE number n_Add(number a, number b, const coeffs r)
return the sum of 'a' and 'b', i.e., a+b
Definition coeffs.h:653
coeffs
The main handler for Singular numbers which are suitable for Singular polynomials.
NULL
#define NULL
Definition omList.c:12

## bimAdd() [2/2]

bigintmat * bimAdd | ( | bigintmat * | a,
|  | long | b )

Definition at line 197 of file bigintmat.cc.

{
const int mn = si_min(a->rows(),a->cols());
const coeffs basecoeffs = a->basecoeffs();
number bb=n_Init(b,basecoeffs);
int i;
bigintmat * bim = new bigintmat(a->rows(),a->cols() , basecoeffs);
for (i=1; i<=mn; i++)
BIMATELEM(*bim,i,i)=n_Add(BIMATELEM(*a,i,i), bb, basecoeffs);
n_Delete(&bb,basecoeffs);
return bim;
}
si_min
static int si_min(const int a, const int b)
Definition auxiliary.h:126
BIMATELEM
#define BIMATELEM(M, I, J)
Definition bigintmat.h:133
n_Delete
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
Definition coeffs.h:461
n_Init
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition coeffs.h:541

## bimChangeCoeff()

bigintmat * bimChangeCoeff | ( | bigintmat * | a,
|  | coeffs | cnew )

Liefert Kopier von Matrix a zurück, mit coeffs cnew statt den ursprünglichen.

Definition at line 1797 of file bigintmat.cc.

{
coeffs cold = a->basecoeffs();
bigintmat *b = new bigintmat(a->rows(), a->cols(), cnew);
// Erzeugt Karte von alten coeffs nach neuen
nMapFunc f = n_SetMap(cold, cnew);
number t1;
number t2;
// apply map to all entries.
for (int i=1; i<=a->rows(); i++)
{
for (int j=1; j<=a->cols(); j++)
{
t1 = a->get(i, j);
t2 = f(t1, cold, cnew);
b->set(i, j, t2);
n_Delete(&t1, cold);
n_Delete(&t2, cnew);
}
}
return b;
}
f
FILE * f
Definition checklibs.c:9
bigintmat::get
number get(int i, int j) const
get a copy of an entry. NOTE: starts at [1,1]
Definition bigintmat.cc:117
n_SetMap
static FORCE_INLINE nMapFunc n_SetMap(const coeffs src, const coeffs dst)
set the mapping function pointers for translating numbers from src to dst
Definition coeffs.h:703
nMapFunc
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
Definition coeffs.h:80
j
int j
Definition facHensel.cc:110

## bimCopy()

bigintmat * bimCopy | ( | const bigintmat * | b | ) |

same as copy constructor - apart from it being able to accept NULL as input

Definition at line 403 of file bigintmat.cc.

{
if (b == NULL)
return NULL;
return new bigintmat(b);
}

## bimMult() [1/4]

bigintmat * bimMult | ( | bigintmat * | a,
|  | bigintmat * | b )

Definition at line 253 of file bigintmat.cc.

{
const int ca = a->cols();
const int cb = b->cols();
const int ra = a->rows();
const int rb = b->rows();
if (ca != rb)
{
#ifndef SING_NDEBUG
Werror("wrong bigintmat sizes at multiplication a * b: acols: %d != brows: %d\n", ca, rb);
#endif
return NULL;
}
assume (ca == rb);
if (a->basecoeffs() != b->basecoeffs()) { return NULL; }
const coeffs basecoeffs = a->basecoeffs();
int i, j, k;
number sum;
bigintmat * bim = new bigintmat(ra, cb, basecoeffs);
for (i=1; i<=ra; i++)
for (j=1; j<=cb; j++)
{
sum = n_Init(0, basecoeffs);
for (k=1; k<=ca; k++)
{
number prod = n_Mult( BIMATELEM(*a, i, k), BIMATELEM(*b, k, j), basecoeffs);
n_InpAdd(sum, prod, basecoeffs);
n_Delete(&prod, basecoeffs);
}
bim->rawset(i, j, sum, basecoeffs);
}
return bim;
}
k
int k
Definition cfEzgcd.cc:99
n_Mult
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
Definition coeffs.h:639
n_InpAdd
static FORCE_INLINE void n_InpAdd(number &a, number b, const coeffs r)
addition of 'a' and 'b'; replacement of 'a' by the sum a+b
Definition coeffs.h:649
prod
fq_nmod_poly_t prod
Definition facHensel.cc:100
assume
#define assume(x)
Definition mod2.h:389
Werror
void Werror(const char *fmt,...)
Definition reporter.cc:189

## bimMult() [2/4]

void bimMult | ( | bigintmat * | a,
|  | bigintmat * | b,
|  | bigintmat * | c )

Multipliziert Matrix a und b und speichert Ergebnis in c.

Definition at line 1922 of file bigintmat.cc.

{
if (!nCoeffs_are_equal(a->basecoeffs(), b->basecoeffs()))
{
WerrorS("Error in bimMult. Coeffs do not agree!");
return;
}
if ((a->rows() != c->rows()) || (b->cols() != c->cols()) || (a->cols() != b->rows()))
{
WerrorS("Error in bimMult. Dimensions do not agree!");
return;
}
bigintmat *tmp = bimMult(a, b);
c->copy(tmp);
delete tmp;
}
nCoeffs_are_equal
bool nCoeffs_are_equal(coeffs r, coeffs s)
Definition bigintmat.cc:2629
bimMult
bigintmat * bimMult(bigintmat *a, bigintmat *b)
Definition bigintmat.cc:253
bigintmat::copy
bool copy(bigintmat *b)
Kopiert Einträge von b auf Bigintmat.
Definition bigintmat.cc:1254
WerrorS
void WerrorS(const char *s)
Definition feFopen.cc:24

## bimMult() [3/4]

bigintmat * bimMult | ( | bigintmat * | a,
|  | long | b )

Definition at line 299 of file bigintmat.cc.

{
const int mn = a->rows()*a->cols();
const coeffs basecoeffs = a->basecoeffs();
number bb=n_Init(b,basecoeffs);
int i;
bigintmat * bim = new bigintmat(a->rows(),a->cols() , basecoeffs);
for (i=0; i<mn; i++)
bim->rawset(i, n_Mult((*a)[i], bb, basecoeffs), basecoeffs);
n_Delete(&bb,basecoeffs);
return bim;
}

## bimMult() [4/4]

bigintmat * bimMult | ( | bigintmat * | a,
|  | number | b,
|  | const coeffs | cf )

Definition at line 318 of file bigintmat.cc.

{
if (cf!=a->basecoeffs()) return NULL;
const int mn = a->rows()*a->cols();
const coeffs basecoeffs = a->basecoeffs();
int i;
bigintmat * bim = new bigintmat(a->rows(),a->cols() , basecoeffs);
for (i=0; i<mn; i++)
bim->rawset(i, n_Mult((*a)[i], b, basecoeffs), basecoeffs);
return bim;
}
cf
CanonicalForm cf
Definition cfModGcd.cc:4091

## bimSub() [1/2]

bigintmat * bimSub | ( | bigintmat * | a,
|  | bigintmat * | b )

Definition at line 216 of file bigintmat.cc.

{
if (a->cols() != b->cols()) return NULL;
if (a->rows() != b->rows()) return NULL;
if (a->basecoeffs() != b->basecoeffs()) { return NULL; }
const coeffs basecoeffs = a->basecoeffs();
int i;
bigintmat * bim = new bigintmat(a->rows(), a->cols(), basecoeffs);
for (i=a->rows()*a->cols()-1;i>=0; i--)
bim->rawset(i, n_Sub((*a)[i], (*b)[i], basecoeffs), basecoeffs);
return bim;
}
n_Sub
static FORCE_INLINE number n_Sub(number a, number b, const coeffs r)
return the difference of 'a' and 'b', i.e., a-b
Definition coeffs.h:658

## bimSub() [2/2]

bigintmat * bimSub | ( | bigintmat * | a,
|  | long | b )

Definition at line 234 of file bigintmat.cc.

{
const int mn = si_min(a->rows(),a->cols());
const coeffs basecoeffs = a->basecoeffs();
number bb=n_Init(b,basecoeffs);
int i;
bigintmat * bim = new bigintmat(a->rows(),a->cols() , basecoeffs);
for (i=1; i<=mn; i++)
BIMATELEM(*bim,i,i)=n_Sub(BIMATELEM(*a,i,i), bb, basecoeffs);
n_Delete(&bb,basecoeffs);
return bim;
}

## diagonalForm()

void diagonalForm | ( | bigintmat * | a,
|  | bigintmat ** | b,
|  | bigintmat ** | c )

Definition at line 2461 of file bigintmat.cc.

{
bigintmat * t, *s, *a=A;
coeffs R = a->basecoeffs();
if (T)
{
*T = new bigintmat(a->cols(), a->cols(), R),
(*T)->one();
t = new bigintmat(*T);
}
else
{
t = *T;
}
if (S)
{
*S = new bigintmat(a->rows(), a->rows(), R);
(*S)->one();
s = new bigintmat(*S);
}
else
{
s = *S;
}
int flip=0;
do
{
bigintmat * x, *X;
if (flip)
{
x = s;
X = *S;
}
else
{
x = t;
X = *T;
}
if (x)
{
x->one();
bigintmat * r = new bigintmat(a->rows()+a->cols(), a->cols(), R);
bigintmat * rw = new bigintmat(1, a->cols(), R);
for(int i=0; i<a->cols(); i++)
{
x->getrow(i+1, rw);
r->setrow(i+1, rw);
}
for (int i=0; i<a->rows(); i++)
{
a->getrow(i+1, rw);
r->setrow(i+a->cols()+1, rw);
}
r->hnf();
for(int i=0; i<a->cols(); i++)
{
r->getrow(i+1, rw);
x->setrow(i+1, rw);
}
for(int i=0; i<a->rows(); i++)
{
r->getrow(i+a->cols()+1, rw);
a->setrow(i+1, rw);
}
delete rw;
delete r;
#if 0
Print("X: %ld\n", X);
X->Print();
Print("\nx: %ld\n", x);
x->Print();
#endif
bimMult(X, x, X);
#if 0
Print("\n2:X: %ld %ld %ld\n", X, *S, *T);
X->Print();
Print("\n2:x: %ld\n", x);
x->Print();
PrintLn();
#endif
}
else
{
a->hnf();
}
int diag = 1;
for(int i=a->rows(); diag && i>0; i--)
{
for(int j=a->cols(); j>0; j--)
{
if ((a->rows()-i)!=(a->cols()-j) && !n_IsZero(a->view(i, j), R))
{
diag = 0;
break;
}
}
}
#if 0
PrintS("Diag ? %d\n", diag);
a->Print();
PrintLn();
#endif
if (diag) break;
a = a->transpose(); // leaks - I need to write inpTranspose
flip = 1-flip;
} while (1);
if (flip)
a = a->transpose();
if (S) *S = (*S)->transpose();
if (s) delete s;
if (t) delete t;
A->copy(a);
}
x
Variable x
Definition cfModGcd.cc:4090
bigintmat::Print
void Print()
IO: simply prints the matrix to the current output (screen?).
Definition bigintmat.cc:437
bigintmat::hnf
void hnf()
transforms INPLACE to HNF
Definition bigintmat.cc:1655
bigintmat::transpose
bigintmat * transpose()
Definition bigintmat.cc:35
bigintmat::setrow
void setrow(int i, bigintmat *m)
Setzt i-te Zeile gleich übergebenem Vektor (Matrix) m.
Definition bigintmat.cc:855
bigintmat::view
number view(int i, int j) const
view an entry an entry. NOTE: starts at [1,1]
Definition bigintmat.cc:125
bigintmat::one
void one()
Macht Matrix (Falls quadratisch) zu Einheitsmatrix.
Definition bigintmat.cc:1320
bigintmat::getrow
void getrow(int i, bigintmat *a)
Schreibt i-te Zeile in Vektor (Matrix) a.
Definition bigintmat.cc:786
n_IsZero
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff 'n' represents the zero element.
Definition coeffs.h:470
Print
#define Print
Definition emacs.cc:80
s
const CanonicalForm int s
Definition facAbsFact.cc:51
flip
std::pair< ideal, ring > flip(const ideal I, const ring r, const gfan::ZVector interiorPoint, const gfan::ZVector facetNormal, const gfan::ZVector adjustedInteriorPoint, const gfan::ZVector adjustedFacetNormal)
Definition flip.cc:17
T
STATIC_VAR jList * T
Definition janet.cc:30
PrintS
void PrintS(const char *s)
Definition reporter.cc:288
PrintLn
void PrintLn()
Definition reporter.cc:314
R
#define R
Definition sirandom.c:27
A
#define A
Definition sirandom.c:24

## iv2bim()

bigintmat * iv2bim | ( | intvec * | b,
|  | const coeffs | C )

Definition at line 347 of file bigintmat.cc.

{
const int l = (b->rows())*(b->cols());
bigintmat * bim = new bigintmat(b->rows(), b->cols(), C);
for (int i=0; i < l; i++)
bim->rawset(i, n_Init((*b)[i], C), C);
return bim;
}
l
int l
Definition cfEzgcd.cc:100

## kernbase()

int kernbase | ( | bigintmat * | a,
|  | bigintmat * | c,
|  | number | p,
|  | coeffs | q )

a basis for the nullspace of a mod p: only used internally in Round2. Don't use it.

Definition at line 2585 of file bigintmat.cc.

{
#if 0
PrintS("Kernel of ");
a->Print();
PrintS(" modulo ");
n_Print(p, q);
PrintLn();
#endif
coeffs coe = numbercoeffs(p, q);
bigintmat *m = bimChangeCoeff(a, coe), *U, *V;
diagonalForm(m, &U, &V);
#if 0
PrintS("\ndiag form: ");
m->Print();
PrintS("\nU:\n");
U->Print();
PrintS("\nV:\n");
V->Print();
PrintLn();
#endif
int rg = 0;
#undef MIN
#define MIN(a,b) (a < b ? a : b)
for(rg=0; rg<MIN(m->rows(), m->cols()) && !n_IsZero(m->view(m->rows()-rg,m->cols()-rg), coe); rg++);
bigintmat * k = new bigintmat(m->cols(), m->rows(), coe);
for(int i=0; i<rg; i++)
{
number A = n_Ann(m->view(m->rows()-i, m->cols()-i), coe);
k->set(m->cols()-i, i+1, A);
n_Delete(&A, coe);
}
for(int i=rg; i<m->cols(); i++)
{
k->set(m->cols()-i, i+1-rg, n_Init(1, coe));
}
bimMult(V, k, k);
c->copy(bimChangeCoeff(k, q));
return c->cols();
}
bimChangeCoeff
bigintmat * bimChangeCoeff(bigintmat *a, coeffs cnew)
Liefert Kopier von Matrix a zurück, mit coeffs cnew statt den ursprünglichen.
Definition bigintmat.cc:1797
MIN
#define MIN(a, b)
diagonalForm
void diagonalForm(bigintmat *A, bigintmat **S, bigintmat **T)
Definition bigintmat.cc:2461
numbercoeffs
static coeffs numbercoeffs(number n, coeffs c)
create Z/nA of type n_Zn
Definition bigintmat.cc:20
m
int m
Definition cfEzgcd.cc:128
p
int p
Definition cfModGcd.cc:4086
n_Ann
static FORCE_INLINE number n_Ann(number a, const coeffs r)
if r is a ring with zero divisors, return an annihilator!=0 of b otherwise return NULL
Definition coeffs.h:682
n_Print
void n_Print(number &a, const coeffs r)
print a number (BEWARE of string buffers!) mostly for debugging
Definition numbers.cc:662

## nCoeffs_are_equal()

bool nCoeffs_are_equal | ( | coeffs | r,
|  | coeffs | s )

Definition at line 2629 of file bigintmat.cc.

{
if ((r == NULL) || (s == NULL))
return false;
if (r == s)
return true;
if ((getCoeffType(r)==n_Z) && (getCoeffType(s)==n_Z))
return true;
if ((getCoeffType(r)==n_Zp) && (getCoeffType(s)==n_Zp))
{
if (r->ch == s->ch)
return true;
else
return false;
}
// n_Zn stimmt wahrscheinlich noch nicht
if ((getCoeffType(r)==n_Zn) && (getCoeffType(s)==n_Zn))
{
if (r->ch == s->ch)
return true;
else
return false;
}
if ((getCoeffType(r)==n_Q) && (getCoeffType(s)==n_Q))
return true;
// FALL n_Zn FEHLT NOCH!
//if ((getCoeffType(r)==n_Zn) && (getCoeffType(s)==n_Zn))
return false;
}
n_Q
@ n_Q
rational (GMP) numbers
Definition coeffs.h:30
n_Zn
@ n_Zn
only used if HAVE_RINGS is defined
Definition coeffs.h:44
n_Zp
@ n_Zp
\F{p < 2^31}
Definition coeffs.h:29
n_Z
@ n_Z
only used if HAVE_RINGS is defined
Definition coeffs.h:43
getCoeffType
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
Definition coeffs.h:431

## operator!=()

bool operator!= | ( | const bigintmat & | lhr,
|  | const bigintmat & | rhr )

Definition at line 174 of file bigintmat.cc.

{
return !(lhr==rhr);
}

## operator==()

bool operator== | ( | const bigintmat & | lhr,
|  | const bigintmat & | rhr )

Definition at line 157 of file bigintmat.cc.

{
if (&lhr == &rhr) { return true; }
if (lhr.cols() != rhr.cols()) { return false; }
if (lhr.rows() != rhr.rows()) { return false; }
if (lhr.basecoeffs() != rhr.basecoeffs()) { return false; }
const int l = (lhr.rows())*(lhr.cols());
for (int i=0; i < l; i++)
{
if (!n_Equal(lhr[i], rhr[i], lhr.basecoeffs())) { return false; }
}
return true;
}
n_Equal
static FORCE_INLINE BOOLEAN n_Equal(number a, number b, const coeffs r)
TRUE iff 'a' and 'b' represent the same number; they may have different representations.
Definition coeffs.h:466

## solveAx()

number solveAx | ( | bigintmat * | A,
|  | bigintmat * | b,
|  | bigintmat * | x )

solve Ax=b*d. x needs to be pre-allocated to the same number of columns as b. the minimal denominator d is returned. Currently available for Z, Q and Z/nZ (and possibly for all fields: d=1 there) Beware that the internal functions can find the kernel as well - but the interface is lacking.

Definition at line 2418 of file bigintmat.cc.

{
#if 0
PrintS("Solve Ax=b for A=\n");
A->Print();
PrintS("\nb = \n");
b->Print();
PrintS("\nx = \n");
x->Print();
PrintLn();
#endif
coeffs R = A->basecoeffs();
assume (R == b->basecoeffs());
assume (R == x->basecoeffs());
assume ((x->cols() == b->cols()) && (x->rows() == A->cols()) && (A->rows() == b->rows()));
switch (getCoeffType(R))
{
case n_Z:
return solveAx_dixon(A, b, x, NULL);
case n_Zn:
case n_Znm:
case n_Z2m:
return solveAx_howell(A, b, x, NULL);
case n_Zp:
case n_Q:
case n_GF:
case n_algExt:
case n_transExt:
WarnS("have field, should use Gauss or better");
break;
default:
if (R->cfXExtGcd && R->cfAnn)
{ //assume it's Euclidean
return solveAx_howell(A, b, x, NULL);
}
WerrorS("have no solve algorithm");
break;
}
return NULL;
}
solveAx_dixon
static number solveAx_dixon(bigintmat *A, bigintmat *B, bigintmat *x, bigintmat *kern)
Definition bigintmat.cc:2097
solveAx_howell
static number solveAx_howell(bigintmat *A, bigintmat *b, bigintmat *x, bigintmat *kern)
Definition bigintmat.cc:2286
n_GF
@ n_GF
\GF{p^n < 2^16}
Definition coeffs.h:32
n_Znm
@ n_Znm
only used if HAVE_RINGS is defined
Definition coeffs.h:45
n_algExt
@ n_algExt
used for all algebraic extensions, i.e., the top-most extension in an extension tower is algebraic
Definition coeffs.h:35
n_Z2m
@ n_Z2m
only used if HAVE_RINGS is defined
Definition coeffs.h:46
n_transExt
@ n_transExt
used for all transcendental extensions, i.e., the top-most extension in an extension tower is transce...
Definition coeffs.h:38
WarnS
#define WarnS
Definition emacs.cc:78