14 #include "factory/factory.h"
27 number nAEQMult (number a, number
b,
const coeffs r);
28 number nAEQSub (number a, number
b,
const coeffs r);
29 number nAEQAdd (number a, number
b,
const coeffs r);
30 number nAEQDiv (number a, number
b,
const coeffs r);
31 number nAEQIntMod (number a, number
b,
const coeffs r);
32 number nAEQExactDiv (number a, number
b,
const coeffs r);
33 number nAEQInit (
long i,
const coeffs r);
34 number nAEQInitMPZ (mpz_t
m,
const coeffs r);
35 int nAEQSize (number a,
const coeffs r);
36 long nAEQInt (number &a,
const coeffs r);
37 number nAEQMPZ (number a,
const coeffs r);
38 number nAEQNeg (number c,
const coeffs r);
39 number nAEQCopy (number a, number
b,
const coeffs r);
40 number nAEQRePart (number a, number
b,
const coeffs r);
41 number nAEQImPart (number a, number
b,
const coeffs r);
43 void nAEQWriteLong (number a,
const coeffs r);
44 void nAEQWriteShort (number a,
const coeffs r);
47 const char * nAEQRead (
const char *
s, number *a,
const coeffs r);
48 number nAEQNormalize (number a, number
b,
const coeffs r);
55 void nAEQPower (number a,
int i, number *
result,
const coeffs r);
56 number nAEQGetDenom (number &a,
const coeffs r);
57 number nAEQGetNumerator (number &a,
const coeffs r);
58 number nAEQGcd (number a, number
b,
const coeffs r);
59 number nAEQLcm (number a, number
b,
const coeffs r);
61 void nAEQDelete (number *a,
const coeffs r);
62 number nAEQSetMap (number a,
const coeffs r);
63 void nAEQInpMult (number &a ,number
b,
const coeffs r);
74 number nAEQAdd(number a, number
b,
const coeffs)
76 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
77 Q_poly*
g=
reinterpret_cast<Q_poly*
> (
b);
78 Q_poly *
res=
new Q_poly;
80 res->Q_poly_add_to(*
g);
84 number nAEQMult(number a, number
b,
const coeffs)
86 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
87 Q_poly*
g=
reinterpret_cast<Q_poly*
> (
b);
88 Q_poly *
res=
new Q_poly;
90 res->Q_poly_mult_n_to(*
g);
94 number nAEQSub(number a, number
b,
const coeffs)
96 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
97 Q_poly*
g=
reinterpret_cast<Q_poly*
> (
b);
98 Q_poly *
res=
new Q_poly;
100 res->Q_poly_sub_to(*
g);
105 number nAEQDiv(number a, number
b,
const coeffs)
107 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
108 Q_poly*
g=
reinterpret_cast<Q_poly*
> (
b);
109 Q_poly *
res=
new Q_poly;
110 Q_poly *
s=
new Q_poly;
117 number nAEQIntMod(number a, number,
const coeffs)
122 number nAEQExactDiv(number a, number
b,
const coeffs)
124 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
125 Q_poly*
g=
reinterpret_cast<Q_poly*
> (
b);
126 Q_poly *
res=
new Q_poly;
127 Q_poly *
s=
new Q_poly;
135 number nAEQInit(
long i,
const coeffs)
137 number
res = (number)
i;
141 number nAEQInitMPZ(mpz_t
m,
const coeffs)
143 number
res= (number)
m;
147 int nAEQSize (number a,
const coeffs)
149 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
153 long nAEQInt(number &,
const coeffs)
159 number nAEQMPZ(number a,
const coeffs)
165 number nAEQNeg(number c,
const coeffs)
167 Q_poly*
f=
reinterpret_cast<Q_poly*
> (c);
168 Q_poly *
res=
new Q_poly;
174 number nAEQCopy(number c,
const coeffs)
179 number nAEQRePart(number c,
const coeffs)
184 number nAEQImPart(number c,
const coeffs)
189 void nAEQWriteLong (number ,
const coeffs)
194 void nAEQWriteShort (number ,
const coeffs)
200 const char * nAEQRead (
const char *, number *,
const coeffs)
205 number nAEQNormalize (number a, number ,
const coeffs)
212 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
213 Q_poly*
g=
reinterpret_cast<Q_poly*
> (
b);
214 if (
f->deg >
g->deg) {
return FALSE;}
220 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
221 Q_poly*
g=
reinterpret_cast<Q_poly*
> (
b);
222 if (
f->is_equal(*
g) == 1) {
return FALSE;}
228 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
229 if (
f->is_zero() == 1) {
return FALSE;}
235 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
236 if (
f->is_one() == 1) {
return FALSE;}
242 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
243 if (
f->is_one() == 1) {
return FALSE;}
249 if (nAEQIsZero(a, r) ==
FALSE) {
return TRUE; }
250 else {
return FALSE; }
253 void nAEQPower (number,
int, number *,
const coeffs)
258 number nAEQGetDenom (number &,
const coeffs)
263 number nAEQGetNumerator (number &a,
const coeffs)
268 number nAEQGcd (number a, number
b,
const coeffs)
270 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
271 Q_poly*
g=
reinterpret_cast<Q_poly*
> (
b);
272 Q_poly *
res=
new Q_poly;
273 res->Q_poly_gcd(*
f,*
g);
277 number nAEQLcm (number a, number
b,
const coeffs)
279 Q_poly*
f=
reinterpret_cast<Q_poly*
> (a);
280 Q_poly*
g=
reinterpret_cast<Q_poly*
> (
b);
281 Q_poly *
gcd=
new Q_poly;
282 Q_poly *
res=
new Q_poly;
283 Q_poly *
s=
new Q_poly;
284 gcd->Q_poly_gcd(*
f,*
g);
285 res->Q_poly_mult_n(*
f,*
g);
290 void nAEQDelete (number *,
const coeffs)
302 void nAEQInpMult (number &, number,
const coeffs)
322 static char * n_QAECoeffName(
const coeffs r)
324 return (
char*)(
"QAE");
327 static char * n_QAECoeffString(
const coeffs r)
342 r->cfMult = nAEQMult;
346 r->cfIntMod= nAEQIntMod;
347 r->cfExactDiv= nAEQExactDiv;
348 r->cfInit = nAEQInit;
349 r->cfSize = nAEQSize;
351 r->cfCoeffName = n_QAECoeffName;
352 r->cfCoeffString = n_QAECoeffString;
360 r->cfInpNeg = nAEQNeg;
365 r->cfWriteLong = nAEQWriteLong;
366 r->cfRead = nAEQRead;
368 r->cfGreater = nAEQGreater;
369 r->cfEqual = nAEQEqual;
370 r->cfIsZero = nAEQIsZero;
371 r->cfIsOne = nAEQIsOne;
372 r->cfIsMOne = nAEQIsOne;
373 r->cfGreaterZero = nAEQGreaterZero;
374 r->cfPower = nAEQPower;
375 r->cfGetDenom = nAEQGetDenom;
376 r->cfGetNumerator = nAEQGetNumerator;
379 r->cfDelete= nAEQDelete;
383 r->cfInpMult=nAEQInpMult;
384 r->cfCoeffWrite=nAEQCoeffWrite;
388 r->has_simple_Alloc=
TRUE;
389 r->has_simple_Inverse=
TRUE;
Coefficient rings, fields and other domains suitable for Singular polynomials.
const CanonicalForm int s
nMapFunc npSetMap(const coeffs src, const coeffs dst)
The main handler for Singular numbers which are suitable for Singular polynomials.