35 for (
int i=0;
i<
dim;
i++) {
161/*_______________-1_______________ */
324 Werror(
"Error in elMult");
347 ntmp = n_Mult(a->
view(
i, 1),
b->view(
j, 1), C);
382 number t = rep_mat->
trace();
390 number n = rep_mat->
det();
406 Werror(
"Error in multmap");
423 if (((
m->rows() == 1) && (
i <= m->cols())) || ((
m->cols() == 1) && (
i <= m->rows()))) {
425 number t1 = n_Init(0,
m->basecoeffs());
426 for (
int j=0; ((
j<
m->rows()) || (
j<m->cols()));
j++) {
430 n_Delete(&t1,
m->basecoeffs());
431 number t2 = n_Init(1,
m->basecoeffs());
433 n_Delete(&t2,
m->basecoeffs());
436 Werror(
"Error in basis_elt. Not a vector.");
454 if (n_Greater(
p, dimen, c)) {
466 while (n_Greater(dimen, ex, o->
basecoeffs())) {
481 for (
int i=1;
i<=n;
i++) {
485 for (; n_Greater(ex, klauf, o->
basecoeffs());) {
510 for (
int i=1;
i<=n;
i++) {
515 for (
int i=1;
i<=kdim;
i++) {
525 for (
int i=1;
i<=n;
i++) {
568 for (
int i=1;
i<=n;
i++) {
572 mm->
copy(nochnetemp);
617 if (basis->
isOne() && n_IsOne(divisor, c)) {
619 n_Delete(&divisor, c);
626 n_Delete(&divisor, c);
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.
bigintmat * bimMult(bigintmat *a, bigintmat *b)
number det()
det (via LaPlace in general, hnf for euc. rings)
int isOne()
is matrix is identity
number trace()
the trace ....
void hnf()
transforms INPLACE to HNF
bigintmat * modhnf(number p, coeffs c)
computes HNF(this | p*I)
void setcol(int j, bigintmat *m)
Setzt j-te Spalte gleich übergebenem Vektor (Matrix) m.
bool add(bigintmat *b)
Addiert zur Matrix die Matrix b dazu. Return false => an error occurred.
void Write()
IO: writes the matrix into the current internal string buffer which must be started/ allocated before...
bool skalmult(number b, coeffs c)
Multipliziert zur Matrix den Skalar b hinzu.
void simplifyContentDen(number *den)
ensures that Gcd(den, content)=1 enden hier wieder
void skaldiv(number b)
Macht Ganzzahldivision aller Matrixeinträge mit b.
bool copy(bigintmat *b)
Kopiert Einträge von b auf Bigintmat.
void getcol(int j, bigintmat *a)
copies the j-th column into the matrix a - which needs to be pre-allocated with the correct size.
number pseudoinv(bigintmat *a)
Speichert in Matrix a die Pseudoinverse, liefert den Nenner zurück.
number get(int i, int j) const
get a copy of an entry. NOTE: starts at [1,1]
void getColRange(int j, int no, bigintmat *a)
copies the no-columns staring by j (so j...j+no-1) into the pre-allocated a
void concatcol(bigintmat *a, bigintmat *b)
number view(int i, int j) const
view an entry an entry. NOTE: starts at [1,1]
void inpTranspose()
transpose in place
coeffs basecoeffs() const
void set(int i, int j, number n, const coeffs C=NULL)
replace an entry with a copy (delete old + copy new!). NOTE: starts at [1,1]
bool sub(bigintmat *b)
Subtrahiert ...
void createmulttable(bigintmat **a)
number elTrace(bigintmat *a)
void multmap(bigintmat *a, bigintmat *m)
void elSub(bigintmat *a, bigintmat *b)
void elMult(bigintmat *a, bigintmat *b)
coeffs basecoeffs() const
bool getMult(bigintmat **m)
nforder(int dim, bigintmat **m, const coeffs q)
0 Konstruktoren/Destruktoren ///
bigintmat * elRepMat(bigintmat *a)
number elNorm(bigintmat *a)
bigintmat * traceMatrix()
void elAdd(bigintmat *a, bigintmat *b)
Coefficient rings, fields and other domains suitable for Singular polynomials.
const CanonicalForm int s
The main handler for Singular numbers which are suitable for Singular polynomials.
void nforder_delete(nforder *o)
nforder * onestep(nforder *o, number p, coeffs c)
void basis_elt(bigintmat *m, int i)
nforder * pmaximal(nforder *o, number p)
bigintmat * radicalmodpbase(nforder *o, number p, coeffs c)
number multring(bigintmat *nbase, nforder *o, number p)
void rowhnf(bigintmat *b)
void nforder_delete(nforder *o)
void basis_elt(bigintmat *m, int i)
void StringSetS(const char *st)
void StringAppendS(const char *st)
void PrintS(const char *s)
void Werror(const char *fmt,...)