14 typedef struct snumber * number;
43 #define pNext(p) ((p)->next)
44 #define pIter(p) (void)((p) = (p)->next)
57 #define p_GetCoeff(p,r) pGetCoeff(p)
67 #define pSetCoeff0(p,n) (p)->coef=(n)
68 #define p_SetCoeff0(p,n,r) pSetCoeff0(p,n)
71 #define __p_GetComp(p, r) (p)->exp[r->pCompIndex]
72 #define p_GetComp(p, r) ((long) (r->pCompIndex >= 0 ? __p_GetComp(p, r) : 0))
86 #define pAssumeReturn(cond) \
91 dPolyReportError(NULL, NULL, "pAssume violation of: %s", \
98 #define pAssume(cond) \
103 dPolyReportError(NULL, NULL, "pAssume violation of: %s", \
109 #define _pPolyAssumeReturn(cond, p, r) \
114 dPolyReportError(p, r, "pPolyAssume violation of: %s", \
121 #define _pPolyAssume(cond,p,r) \
126 dPolyReportError(p, r, "pPolyAssume violation of: %s", \
132 #define _pPolyAssumeReturnMsg(cond, msg, p, r) \
137 dPolyReportError(p, r, "%s ", msg); \
143 #define pPolyAssume(cond) _pPolyAssume(cond, p, r)
144 #define pPolyAssumeReturn(cond) _pPolyAssumeReturn(cond, p, r)
145 #define pPolyAssumeReturnMsg(cond, msg) _pPolyAssumeReturnMsg(cond, msg, p, r)
147 #define pFalseReturn(cond) do {if (! (cond)) return FALSE;} while (0)
148 #if (OM_TRACK > 2) && defined(OM_TRACK_CUSTOM)
149 #define p_SetRingOfLm(p, r) omSetCustomOfAddr(p, r)
152 #define p_SetRingOfLm(p, r) do {} while (0)
156 #else // ! defined(PDEBUG)
157 #define pFalseReturn(cond) do {} while (0)
158 #define pAssume(cond) do {} while (0)
159 #define pPolyAssume(cond) do {} while (0)
160 #define _pPolyAssume(cond, p,r) do {} while (0)
161 #define pAssumeReturn(cond) do {} while (0)
162 #define pPolyAssumeReturn(cond) do {} while (0)
163 #define _pPolyAssumeReturn(cond,p,r) do {} while (0)
164 #define p_SetRingOfLm(p, r) do {} while (0)
166 #endif // defined(PDEBUG)
169 #define pAssume1 pAssume
170 #define pPolyAssume1 pPolyAssume
171 #define _pPolyAssume1 _pPolyAssume
172 #define pAssumeReturn1 pAssumeReturn
173 #define pPolyAssumeReturn1 pPolyAssumeReturn
174 #define _pPolyAssumeReturn1 _pPolyAssumeReturn
175 #define p_LmCheckPolyRing1 p_LmCheckPolyRing
176 #define p_CheckRing1 p_CheckRing
177 #define pIfThen1 pIfThen
179 #define pAssume1(cond) do {} while (0)
180 #define pPolyAssume1(cond) do {} while (0)
181 #define _pPolyAssume1(cond,p,r) do {} while (0)
182 #define pAssumeReturn1(cond) do {} while (0)
183 #define pPolyAssumeReturn1(cond) do {} while (0)
184 #define _pPolyAssumeReturn1(cond,p,r)do {} while (0)
185 #define p_LmCheckPolyRing1(p,r) do {} while (0)
186 #define p_CheckRing1(r) do {} while (0)
187 #define pIfThen1(cond, check) do {} while (0)
188 #endif // PDEBUG >= 1
191 #define pAssume2 pAssume
192 #define pPolyAssume2 pPolyAssume
193 #define _pPolyAssume2 _pPolyAssume
194 #define pAssumeReturn2 pAssumeReturn
195 #define pPolyAssumeReturn2 pPolyAssumeReturn
196 #define _pPolyAssumeReturn2 _pPolyAssumeReturn
197 #define p_LmCheckPolyRing2 p_LmCheckPolyRing
198 #define p_CheckRing2 p_CheckRing
199 #define pIfThen2 pIfThen
201 #define pAssume2(cond) do {} while (0)
202 #define pPolyAssume2(cond) do {} while (0)
203 #define _pPolyAssume2(cond,p,r) do {} while (0)
204 #define pAssumeReturn2(cond) do {} while (0)
205 #define pPolyAssumeReturn2(cond) do {} while (0)
206 #define _pPolyAssumeReturn2(cond,p,r)do {} while (0)
207 #define p_LmCheckPolyRing2(p,r) do {} while (0)
208 #define p_CheckRing2(r) do {} while (0)
209 #define pIfThen2(cond, check) do {} while (0)
210 #endif // PDEBUG >= 2
218 #define p_AllocBin(p, bin, r) \
221 omTypeAllocBin(poly, p, bin); \
222 p_SetRingOfLm(p, r); \
225 #define p_FreeBinAddr(p, r) p_LmFree(p, r)
227 #define p_AllocBin(p, bin, r) omTypeAllocBin(poly, p, bin)
228 #define p_FreeBinAddr(p, r) omFreeBinAddr(p)
241 #define POLYSIZE (sizeof(poly) + sizeof(number))
242 #define POLYSIZEW (POLYSIZE / sizeof(long))
244 #define POLY_NEGWEIGHT_OFFSET (((long)0x80000000) << 32)
246 #define POLY_NEGWEIGHT_OFFSET ((long)0x80000000)
256 #define p_AllocBin(p, bin, r) \
259 omTypeAllocBin(poly, p, bin); \
260 p_SetRingOfLm(p, r); \
263 #define p_FreeBinAddr(p, r) p_LmFree(p, r)
265 #define p_AllocBin(p, bin, r) omTypeAllocBin(poly, p, bin)
266 #define p_FreeBinAddr(p, r) omFreeBinAddr(p)
274 #define rRing_has_Comp(r) (r->pCompIndex >= 0)
'SR_INT' is the type of those integers small enough to fit into 29 bits.
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
BOOLEAN dPolyReportError(poly p, ring r, const char *fmt,...)