13 #include "factory/factory.h" 28 number nAEMult (number a, number
b,
const coeffs r);
29 number nAESub (number a, number
b,
const coeffs r);
30 number nAEAdd (number a, number
b,
const coeffs r);
31 number nAEDiv (number a, number
b,
const coeffs r);
32 number nAEIntMod (number a, number
b,
const coeffs r);
33 number nAEExactDiv (number a, number
b,
const coeffs r);
34 number nAEInit (
long i,
const coeffs r);
35 number nAEInitMPZ (mpz_t
m,
const coeffs r);
36 int nAESize (number a,
const coeffs r);
37 long nAEInt (number &a,
const coeffs r);
38 number nAEMPZ (number a,
const coeffs r);
39 number nAENeg (number c,
const coeffs r);
40 number nAECopy (number a, number
b,
const coeffs r);
41 number nAERePart (number a, number
b,
const coeffs r);
42 number nAEImPart (number a, number
b,
const coeffs r);
44 void nAEWriteLong (number a,
const coeffs r);
45 void nAEWriteShort (number a,
const coeffs r);
48 const char * nAERead (
const char *
s, number *a,
const coeffs r);
49 number nAENormalize (number a, number
b,
const coeffs r);
56 void nAEPower (number a,
int i, number *
result,
const coeffs r);
57 number nAEGetDenom (number &a,
const coeffs r);
58 number nAEGetNumerator (number &a,
const coeffs r);
59 number nAEGcd (number a, number
b,
const coeffs r);
60 number nAELcm (number a, number
b,
const coeffs r);
62 void nAEDelete (number *a,
const coeffs r);
63 number nAESetMap (number a,
const coeffs r);
64 void nAEInpMult (number &a ,number
b,
const coeffs r);
75 number nAEAdd(number a, number
b,
const coeffs)
77 int_poly*
f=reinterpret_cast<int_poly*> (a);
78 int_poly*
g=reinterpret_cast<int_poly*> (
b);
79 int_poly *
res=
new int_poly;
85 number nAEMult(number a, number
b,
const coeffs)
87 int_poly*
f=reinterpret_cast<int_poly*> (a);
88 int_poly*
g=reinterpret_cast<int_poly*> (
b);
89 int_poly *
res=
new int_poly;
91 res->poly_mult_n_to(*
g);
95 number nAESub(number a, number
b,
const coeffs)
97 int_poly*
f=reinterpret_cast<int_poly*> (a);
98 int_poly*
g=reinterpret_cast<int_poly*> (
b);
99 int_poly *
res=
new int_poly;
101 res->poly_sub_to(*
g);
106 number nAEDiv(number a, number
b,
const coeffs)
108 int_poly*
f=reinterpret_cast<int_poly*> (a);
109 int_poly*
g=reinterpret_cast<int_poly*> (
b);
110 int_poly *
res=
new int_poly;
117 number nAEIntMod(number a, number,
const coeffs)
122 number nAEExactDiv(number a, number
b,
const coeffs)
124 int_poly*
f=reinterpret_cast<int_poly*> (a);
125 int_poly*
g=reinterpret_cast<int_poly*> (
b);
126 int_poly *
res=
new int_poly;
134 number nAEInit(
long i,
const coeffs)
137 mpz_init_set_ui(
m,
i);
138 int_poly*
res=
new int_poly;
140 number res1=reinterpret_cast<number>(
res);
144 number nAEInitMPZ(mpz_t
m,
const coeffs)
146 int_poly*
res=
new int_poly;
148 number res1=reinterpret_cast<number>(
res);
153 int nAESize (number a,
const coeffs)
155 int_poly*
f=reinterpret_cast<int_poly*> (a);
159 long nAEInt(number &,
const coeffs)
165 number nAEMPZ(number a,
const coeffs)
171 number nAENeg(number c,
const coeffs)
173 int_poly*
f=reinterpret_cast<int_poly*> (c);
174 int_poly *
res=
new int_poly;
180 number nAECopy(number c,
const coeffs)
185 number nAERePart(number c,
const coeffs)
190 number nAEImPart(number c,
const coeffs)
195 void nAEWriteLong (number a,
const coeffs)
197 int_poly*
f=reinterpret_cast <int_poly*>(a);
202 void nAEWriteShort (number a,
const coeffs)
204 int_poly*
f=reinterpret_cast <int_poly*>(a);
210 const char * nAERead (
const char *, number *,
const coeffs)
217 number nAENormalize (number a, number,
const coeffs)
224 int_poly*
f=reinterpret_cast<int_poly*> (a);
225 int_poly*
g=reinterpret_cast<int_poly*> (
b);
226 if (
f->deg >
g->deg) {
return FALSE;}
232 int_poly*
f=reinterpret_cast<int_poly*> (a);
233 int_poly*
g=reinterpret_cast<int_poly*> (
b);
234 if (
f->is_equal(*
g) == 1) {
return FALSE;}
240 int_poly*
f=reinterpret_cast<int_poly*> (a);
241 if (
f->is_zero() == 1) {
return FALSE;}
247 int_poly*
f=reinterpret_cast<int_poly*> (a);
248 if (
f->is_one() == 1) {
return FALSE;}
254 int_poly*
f=reinterpret_cast<int_poly*> (a);
255 if (
f->is_one() == 1) {
return FALSE;}
261 if (nAEIsZero(a, r) ==
FALSE) {
return TRUE; }
262 else {
return FALSE; }
265 void nAEPower (number,
int, number *,
const coeffs)
270 number nAEGetDenom (number &,
const coeffs)
275 number nAEGetNumerator (number &a,
const coeffs)
280 number nAEGcd (number a, number
b,
const coeffs)
282 int_poly*
f=reinterpret_cast<int_poly*> (a);
283 int_poly*
g=reinterpret_cast<int_poly*> (
b);
284 int_poly *
res=
new int_poly;
285 res->poly_gcd(*
f,*
g);
289 number nAELcm (number a, number
b,
const coeffs)
291 int_poly*
f=reinterpret_cast<int_poly*> (a);
292 int_poly*
g=reinterpret_cast<int_poly*> (
b);
293 int_poly *
gcd=
new int_poly;
294 int_poly *
res=
new int_poly;
295 gcd->poly_gcd(*
f,*
g);
296 res->poly_mult_n(*
f,*
g);
301 void nAEDelete (number *,
const coeffs)
312 void nAEInpMult (number &, number,
const coeffs)
332 static char * n_AECoeffName(
const coeffs r)
334 return (
char*)(
"AE");
337 static char * nAECoeffString(
const coeffs r)
355 r->cfIntMod= nAEIntMod;
356 r->cfExactDiv= nAEExactDiv;
360 r->cfCoeffName = n_AECoeffName;
368 r->cfInpNeg = nAENeg;
373 r->cfWriteLong = nAEWriteLong;
376 r->cfGreater = nAEGreater;
377 r->cfEqual = nAEEqual;
378 r->cfIsZero = nAEIsZero;
379 r->cfIsOne = nAEIsOne;
380 r->cfIsMOne = nAEIsOne;
381 r->cfGreaterZero = nAEGreaterZero;
382 r->cfPower = nAEPower;
383 r->cfGetDenom = nAEGetDenom;
384 r->cfGetNumerator = nAEGetNumerator;
387 r->cfDelete= nAEDelete;
388 r->cfCoeffString=nAECoeffString;
390 r->cfSetMap = nAESetMap;
392 r->cfInpMult=nAEInpMult;
393 r->cfCoeffWrite=nAECoeffWrite;
398 r->has_simple_Alloc=
TRUE;
399 r->has_simple_Inverse=
TRUE;
const CanonicalForm int s
number ndCopyMap(number a, const coeffs aRing, const coeffs r)
Coefficient rings, fields and other domains suitable for Singular polynomials.
The main handler for Singular numbers which are suitable for Singular polynomials.
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst