89 if (
den) n_Delete(&
den, C);
109 if (
B->isFractional()) {
111 s1->skalmult(
B->viewBasisDen(), C);
112 den = n_Copy(
B->viewBasisDen(), C);
116 if (
A->isFractional()) {
118 s2->skalmult(
A->viewBasisDen(), C);
120 number d = n_Mult(
den,
A->viewBasisDen(), C);
124 den = n_Copy(
A->viewBasisDen(), C);
131 if (
A->isFractional())
133 if (
B->isFractional())
137 if (!(modA =
A->viewMin())) {
138 modA =
A->viewNorm();
140 if (!(modB =
B->viewMin())) {
141 modB =
B->viewNorm();
145 number
mod = n_Gcd(modA, modB, C);
159 D->setBasisDenTransfer(
den);
162 D->setMinTransfer(t2->
get(1,1),
den ? n_Copy(
den, C) : n_Init(1, C));
163 D->setNormTransfer(t2->
det(),
den ? n_Copy(
den, C) : n_Init(1, C));
181 A->viewBasis()->getcol(
i+1, c);
197 if (!(modA =
A->viewMin())) {
198 modA =
A->viewNorm();
200 if (!(modB =
B->viewMin())) {
201 modB =
B->viewNorm();
207 number
mod = n_Mult(modA, modB, C);
217 if (
A->isFractional()) {
218 den =
A->viewBasisDen();
220 if (
B->isFractional()) {
222 den = n_Mult(
den,
B->viewBasisDen(), C);
224 den = n_Copy(
B->viewBasisDen(), C);
231 D->setBasisDenTransfer(
den);
234 D->setMinTransfer(t1->
get(1,1),
den ? n_Copy(
den, C) : n_Init(1, C));
235 D->setNormTransfer(t1->
det(),
den ? n_Copy(
den, C) : n_Init(1, C));
248 if (
A->isFractional()) {
249 number d = n_Copy(
A->viewBasisDen(), C);
250 s->simplifyContentDen(&d);
252 res->setBasisDenTransfer(d);
265 number I = n_Init(
i, C);
270 n_Power(I, ord->
getDim(), &n, C);
271 A->setNormTransfer(n, n_Init(1, C));
272 A->setMinTransfer(I, n_Init(1, C));
290 number bb = n_Init(
b, C);
294 if (
A->isFractional()) {
295 number d = n_Copy(
A->viewBasisDen(), C);
296 s->simplifyContentDen(&d);
298 res->setBasisDenTransfer(d);
bigintmat * bimMult(bigintmat *a, bigintmat *b)
number det()
det (via LaPlace in general, hnf for euc. rings)
void hnf()
transforms INPLACE to HNF
bigintmat * modhnf(number p, coeffs c)
computes HNF(this | p*I)
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
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)
void copySubmatInto(bigintmat *, int sr, int sc, int nr, int nc, int tr, int tc)
copy the submatrix of b, staring at (a,b) having n rows, m cols into the given matrix at pos....
void one()
Macht Matrix (Falls quadratisch) zu Einheitsmatrix.
nforder_ideal()
0 Konstruktoren/Destruktoren ///
void multmap(bigintmat *a, bigintmat *m)
coeffs basecoeffs() const
bigintmat * elRepMat(bigintmat *a)
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.
nforder_ideal * nf_idMult(nforder_ideal *A, nforder_ideal *B)
nforder_ideal * nf_idPower(nforder_ideal *A, int i)
nforder_ideal * nf_idInit(int i, coeffs O)
nforder_ideal * nf_idAdd(nforder_ideal *A, nforder_ideal *B)
void StringSetS(const char *st)
void StringAppendS(const char *st)
void PrintS(const char *s)
void Werror(const char *fmt,...)