Changeset 7bbbef in git for coeffs/coeffs.h
- Timestamp:
- May 31, 2010, 3:09:00 PM (14 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- a98f56d0b08e7bf18c6536ebf73eecb1db4bc4eb
- Parents:
- b695dd84dfeeea2e9ac126f42fc4eb453f454056
- git-author:
- Hans Schoenemann <hannes@mathematik.uni-kl.de>2010-05-31 15:09:00+02:00
- git-committer:
- Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 11:54:59+01:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
coeffs/coeffs.h
rb695dd r7bbbef 78 78 // or NULL 79 79 // general stuff 80 numberfunc nMult, nSub ,nAdd ,nDiv, nIntDiv, nIntMod, nExactDiv;80 numberfunc cfMult, cfSub ,cfAdd ,cfDiv, cfIntDiv, cfIntMod, cfExactDiv; 81 81 /// init with an integer 82 82 number (*cfInit)(int i,const coeffs r); 83 number (* nPar)(int i, const coeffs r);84 int (* nParDeg)(number n, const coeffs r);83 number (*cfPar)(int i, const coeffs r); 84 int (*cfParDeg)(number n, const coeffs r); 85 85 /// how complicated, (0) => 0, or positive 86 int (* nSize)(number n, const coeffs r);86 int (*cfSize)(number n, const coeffs r); 87 87 /// convertion, 0 if impossible 88 int (* n_Int)(number &n, const coeffs r);88 int (*cfInt)(number &n, const coeffs r); 89 89 #ifdef HAVE_RINGS 90 int (* nDivComp)(number a,number b,const coeffs r);91 BOOLEAN (* nIsUnit)(number a,const coeffs r);92 number (* nGetUnit)(number a,const coeffs r);93 number (* nExtGcd)(number a, number b, number *s, number *t,const coeffs r);90 int (*cfDivComp)(number a,number b,const coeffs r); 91 BOOLEAN (*cfIsUnit)(number a,const coeffs r); 92 number (*cfGetUnit)(number a,const coeffs r); 93 number (*cfExtGcd)(number a, number b, number *s, number *t,const coeffs r); 94 94 #endif 95 95 /// changes argument inline: a:= -a 96 number (* nNeg)(number a, const coeffs r);96 number (*cfNeg)(number a, const coeffs r); 97 97 /// return 1/a 98 number (* nInvers)(number a, const coeffs r);98 number (*cfInvers)(number a, const coeffs r); 99 99 /// return a copy of a 100 100 number (*cfCopy)(number a, const coeffs r); 101 number (* nRePart)(number a, const coeffs r);102 number (* nImPart)(number a, const coeffs r);101 number (*cfRePart)(number a, const coeffs r); 102 number (*cfImPart)(number a, const coeffs r); 103 103 void (*cfWrite)(number &a, const coeffs r); 104 const char * (* nRead)(const char * s, number * a, const coeffs r);105 void (* nNormalize)(number &a, const coeffs r);106 BOOLEAN (* nGreater)(number a,number b, const coeffs r),104 const char * (*cfRead)(const char * s, number * a, const coeffs r); 105 void (*cfNormalize)(number &a, const coeffs r); 106 BOOLEAN (*cfGreater)(number a,number b, const coeffs r), 107 107 #ifdef HAVE_RINGS 108 (* nDivBy)(number a, number b, const coeffs r),108 (*cfDivBy)(number a, number b, const coeffs r), 109 109 #endif 110 110 /// tests 111 (* nEqual)(number a,number b, const coeffs r),112 (* nIsZero)(number a, const coeffs r),113 (* nIsOne)(number a, const coeffs r),114 (* nIsMOne)(number a, const coeffs r),115 (* nGreaterZero)(number a, const coeffs r);116 void (* nPower)(number a, int i, number * result, const coeffs r);111 (*cfEqual)(number a,number b, const coeffs r), 112 (*cfIsZero)(number a, const coeffs r), 113 (*cfIsOne)(number a, const coeffs r), 114 (*cfIsMOne)(number a, const coeffs r), 115 (*cfGreaterZero)(number a, const coeffs r); 116 void (*cfPower)(number a, int i, number * result, const coeffs r); 117 117 number (*cfGetDenom)(number &n, const coeffs r); 118 118 number (*cfGetNumerator)(number &n, const coeffs r); 119 number (* nGcd)(number a, number b, const coeffs r);120 number (* nLcm)(number a, number b, const coeffs r);119 number (*cfGcd)(number a, number b, const coeffs r); 120 number (*cfLcm)(number a, number b, const coeffs r); 121 121 void (*cfDelete)(number * a, const coeffs r); 122 122 nMapFunc (*cfSetMap)(const coeffs src, const coeffs dst); 123 123 124 124 /// For extensions (writes into global string buffer) 125 char * (* nName)(number n, const coeffs r);125 char * (*cfName)(number n, const coeffs r); 126 126 127 127 /// Inline: a := b 128 void (* nInpMult)(number &a, number b, const coeffs r);128 void (*cfInpMult)(number &a, number b, const coeffs r); 129 129 /// maps the bigint i (from dummy) into the coeffs dst 130 number (* nInit_bigint)(number i, const coeffs dummy, const coeffs dst);130 number (*cfInit_bigint)(number i, const coeffs dummy, const coeffs dst); 131 131 132 132 #ifdef LDEBUG 133 133 /// Test: is "a" a correct number? 134 BOOLEAN (* nDBTest)(number a, const char *f,const int l,const coeffs r);134 BOOLEAN (*cfDBTest)(number a, const char *f,const int l,const coeffs r); 135 135 #endif 136 136 … … 157 157 158 158 }; 159 160 #endif 161 159 // 160 // test properties and type 161 /// Returns the type of coeffs domain 162 static inline n_coeffType getCoeffType(const coeffs r) 163 { 164 return r->type; 165 } 166 167 static inline int nInternalChar(const coeffs r) 168 { 169 return r->ch; 170 } 171 172 /// one-time initialisations for new coeffs 173 coeffs nInitChar(n_coeffType t, void * parameter); 174 /// undo all initialisations 175 void nKillChar(coeffs r); 176 /// initialisations after each ring change 177 inline void nSetChar(coeffs r) 178 { 179 if ((r!=NULL) && (r->cfSetChar!=NULL)) r->cfSetChar(r); 180 } 181 182 // 183 // the access macros: 184 185 #define n_Copy(n, r) (r)->cfCopy(n,r) 186 #define n_Delete(n, r) (r)->cfDelete(n,r) 187 #define n_Mult(n1, n2, r) (r)->cfMult(n1, n2,r) 188 #define n_Add(n1, n2, r) (r)->cfAdd(n1, n2,r) 189 #define n_IsZero(n, r) (r)->cfIsZero(n,r) 190 #define n_Equal(n1, n2, r) (r)->cfEqual(n1, n2,r) 191 #define n_Neg(n, r) (r)->cfNeg(n,r) 192 #define n_Sub(n1, n2, r) (r)->cfSub(n1, n2,r) 193 #define n_GetChar(r) nInternalChar(r) 194 #define n_Init(i, r) (r)->cfInit(i,r) 195 #define n_IsOne(n, r) (r)->cfIsOne(n,r) 196 #define n_IsMOne(n, r) (r)->cfIsMOne(n,r) 197 #define n_GreaterZero(n, r) (r)->cfGreaterZero(n,r) 198 #define n_Write(n, r) (r)->cfWrite(n,r) 199 #define n_Normalize(n, r) (r)->cfNormalize(n,r) 200 #define n_Gcd(a, b, r) (r)->cfGcd(a,b,r) 201 #define n_IntDiv(a, b, r) (r)->cfIntDiv(a,b,r) 202 #define n_Div(a, b, r) (r)->cfDiv(a,b,r) 203 #define n_Invers(a, r) (r)->cfInvers(a,r) 204 #define n_ExactDiv(a, b, r) (r)->cfExactDiv(a,b,r) 205 #define n_Test(a,r) (r)->cfDBTest(a,r,__FILE__,__LINE__) 206 207 #define n_InpMult(a, b, r) (r)->cfInpMult(a,b,r) 208 #define n_Power(a, b, res, r) (r)->cfPower(a,b,res,r) 209 #define n_Size(n,r) (r)->cfSize(n,r) 210 #define n_GetDenom(N,r) (r)->cfGetDenom((N),r) 211 #define n_GetNumerator(N,r) (r)->cfGetNumerator((N),r) 212 213 #define n_New(n, r) nNew(n) 214 215 216 // and the routines w.r.t. currRing: 217 // (should only be used in the context of currRing, i.e. in the interpreter) 218 void nNew(number * a); 219 #define nCopy(n) (currRing->cf)->cfCopy(n,currRing->cf) 220 #define nDelete(n) (currRing->cf)->cfDelete(n,currRing->cf) 221 #define nMult(n1, n2) (currRing->cf)->nMult(n1, n2,currRing->cf) 222 #define nAdd(n1, n2) (currRing->cf)->nAdd(n1, n2,currRing->cf) 223 #define nIsZero(n) (currRing->cf)->nIsZero(n,currRing->cf) 224 #define nEqual(n1, n2) (currRing->cf)->nEqual(n1, n2,currRing->cf) 225 #define nNeg(n) (currRing->cf)->nNeg(n,currRing->cf) 226 #define nSub(n1, n2) (currRing->cf)->nSub(n1, n2,currRing->cf) 227 #define nGetChar() nInternalChar(currRing->cf) 228 #define nInit(i) (currRing->cf)->cfInit(i,currRing->cf) 229 #define nIsOne(n) (currRing->cf)->nIsOne(n,currRing->cf) 230 #define nIsMOne(n) (currRing->cf)->nIsMOne(n,currRing->cf) 231 #define nGreaterZero(n) (currRing->cf)->nGreaterZero(n,currRing->cf) 232 #define nWrite(n) (currRing->cf)->cfWrite(n,currRing->cf) 233 #define nNormalize(n) (currRing->cf)->nNormalize(n,currRing->cf) 234 #define nGcd(a, b) (currRing->cf)->nGcd(a,b,currRing->cf) 235 #define nIntDiv(a, b) (currRing->cf)->nIntDiv(a,b,currRing->cf) 236 #define nDiv(a, b) (currRing->cf)->nDiv(a,b,currRing->cf) 237 #define nInvers(a) (currRing->cf)->nInvers(a,currRing->cf) 238 #define nExactDiv(a, b) (currRing->cf)->nExactDiv(a,b,currRing->cf) 239 #define nTest(a) (currRing->cf)->nDBTest(a,currRing->cf,__FILE__,__LINE__) 240 241 #define nInpMult(a, b) (currRing->cf)->nInpMult(a,b,currRing->cf) 242 #define nPower(a, b, res) (currRing->cf)->nPower(a,b,res,currRing->cf) 243 #define nSize(n) (currRing->cf)->nSize(n,currRing->cf) 244 #define nGetDenom(N) (currRing->cf)->cfGetDenom((N),currRing->cf) 245 #define nGetNumerator(N) (currRing->cf)->cfGetNumerator((N),currRing->cf) 246 247 #define nSetMap(R) (currRing->cf->cfSetMap(R,currRing)) 248 249 #endif 250
Note: See TracChangeset
for help on using the changeset viewer.