Changeset bec902b in git
- Timestamp:
- Jun 23, 2010, 4:59:23 PM (13 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
- Children:
- ec997eb1e80a2da151d8d2d80c4034bc01febe72
- Parents:
- a0ce49c7c05b8b409237dc853e846599cae23aea
- git-author:
- Martin Lee <martinlee84@web.de>2010-06-23 16:59:23+02:00
- git-committer:
- Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 11:55:17+01:00
- Location:
- coeffs
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
coeffs/modulop.cc
ra0ce49 rbec902b 318 318 } 319 319 320 void npInitChar(coeffs r, int c) 321 { 320 void npInitChar(coeffs r, void* p) 321 { 322 int c= (int) (long) p; 322 323 int i, w; 323 324 -
coeffs/modulop.h
ra0ce49 rbec902b 24 24 extern int npGen; 25 25 26 void npInitChar(coeffs r, int ch);26 void npInitChar(coeffs r, void* p); 27 27 28 28 BOOLEAN npGreaterZero (number k, const coeffs r); -
coeffs/rintegers.cc
ra0ce49 rbec902b 28 28 * Multiply two numbers 29 29 */ 30 number nrzMult (number a, number b )30 number nrzMult (number a, number b, const coeffs r) 31 31 { 32 32 int_number erg = (int_number) omAllocBin(gmp_nrz_bin); … … 63 63 * a solution and r, s, s.t. k = s*a + t*b 64 64 */ 65 number nrzExtGcd (number a, number b, number *s, number *t )65 number nrzExtGcd (number a, number b, number *s, number *t, const coeffs r) 66 66 { 67 67 int_number erg = (int_number) omAllocBin(gmp_nrz_bin); … … 77 77 } 78 78 79 void nrzPower (number a, int i, number * result )79 void nrzPower (number a, int i, number * result, const coeffs r) 80 80 { 81 81 int_number erg = (int_number) omAllocBin(gmp_nrz_bin); … … 129 129 } 130 130 131 number nrzAdd (number a, number b )131 number nrzAdd (number a, number b, const coeffs r) 132 132 { 133 133 int_number erg = (int_number) omAllocBin(gmp_nrz_bin); … … 137 137 } 138 138 139 number nrzSub (number a, number b )139 number nrzSub (number a, number b, const coeffs r) 140 140 { 141 141 int_number erg = (int_number) omAllocBin(gmp_nrz_bin); … … 150 150 } 151 151 152 BOOLEAN nrzIsUnit (number a )152 BOOLEAN nrzIsUnit (number a, const coeffs r) 153 153 { 154 154 return 0 == mpz_cmpabs_ui((int_number) a, 1); 155 155 } 156 156 157 BOOLEAN nrzIsZero (number a )157 BOOLEAN nrzIsZero (number a, const coeffs r) 158 158 { 159 159 return 0 == mpz_cmpabs_ui((int_number) a, 0); 160 160 } 161 161 162 BOOLEAN nrzIsOne (number a )162 BOOLEAN nrzIsOne (number a, const coeffs r) 163 163 { 164 164 return (a!=NULL) && (0 == mpz_cmp_si((int_number) a, 1)); 165 165 } 166 166 167 BOOLEAN nrzIsMOne (number a )167 BOOLEAN nrzIsMOne (number a, const coeffs r) 168 168 { 169 169 return (a!=NULL) && (0 == mpz_cmp_si((int_number) a, -1)); 170 170 } 171 171 172 BOOLEAN nrzEqual (number a,number b )172 BOOLEAN nrzEqual (number a,number b, const coeffs r) 173 173 { 174 174 return 0 == mpz_cmp((int_number) a, (int_number) b); 175 175 } 176 176 177 BOOLEAN nrzGreater (number a,number b )177 BOOLEAN nrzGreater (number a,number b, const coeffs r) 178 178 { 179 179 return 0 < mpz_cmp((int_number) a, (int_number) b); 180 180 } 181 181 182 BOOLEAN nrzGreaterZero (number k )182 BOOLEAN nrzGreaterZero (number k, const coeffs r) 183 183 { 184 184 return 0 < mpz_cmp_si((int_number) k, 0); 185 185 } 186 186 187 int nrzDivComp(number a, number b )188 { 189 if (nrzDivBy(a, b ))190 { 191 if (nrzDivBy(b, a )) return 2;187 int nrzDivComp(number a, number b, const coeffs r) 188 { 189 if (nrzDivBy(a, b, r)) 190 { 191 if (nrzDivBy(b, a, r)) return 2; 192 192 return -1; 193 193 } 194 if (nrzDivBy(b, a )) return 1;194 if (nrzDivBy(b, a, r)) return 1; 195 195 return 0; 196 196 } 197 197 198 BOOLEAN nrzDivBy (number a,number b )198 BOOLEAN nrzDivBy (number a,number b, const coeffs r) 199 199 { 200 200 return mpz_divisible_p((int_number) a, (int_number) b) != 0; 201 201 } 202 202 203 number nrzDiv (number a,number b )203 number nrzDiv (number a,number b, const coeffs R) 204 204 { 205 205 int_number erg = (int_number) omAllocBin(gmp_nrz_bin); … … 208 208 mpz_init(r); 209 209 mpz_tdiv_qr(erg, r, (int_number) a, (int_number) b); 210 if (!nrzIsZero((number) r ))210 if (!nrzIsZero((number) r, R)) 211 211 { 212 212 WerrorS("Division by non divisible element."); … … 218 218 } 219 219 220 number nrzIntDiv (number a,number b )220 number nrzIntDiv (number a,number b, const coeffs r) 221 221 { 222 222 int_number erg = (int_number) omAllocBin(gmp_nrz_bin); … … 226 226 } 227 227 228 number nrzIntMod (number a,number b )228 number nrzIntMod (number a,number b, const coeffs R) 229 229 { 230 230 int_number erg = (int_number) omAllocBin(gmp_nrz_bin); … … 239 239 number nrzInvers (number c, const coeffs r) 240 240 { 241 if (!nrzIsUnit((number) c ))241 if (!nrzIsUnit((number) c, r)) 242 242 { 243 243 WerrorS("Non invertible element."); … … 247 247 } 248 248 249 number nrzNeg (number c )249 number nrzNeg (number c, const coeffs r) 250 250 { 251 251 // nNeg inplace !!! -
coeffs/rintegers.h
ra0ce49 rbec902b 17 17 int nrzSize (number a); 18 18 void nrzDelete (number *a, const coeffs r); 19 BOOLEAN nrzGreaterZero (number k );20 number nrzMult (number a, number b );19 BOOLEAN nrzGreaterZero (number k, const coeffs r); 20 number nrzMult (number a, number b, const coeffs r); 21 21 number nrzInit (int i, const coeffs r); 22 22 int nrzInt (number &n, const coeffs r); 23 number nrzAdd (number a, number b );24 number nrzSub (number a, number b );25 void nrzPower (number a, int i, number * result );26 BOOLEAN nrzIsZero (number a );27 BOOLEAN nrzIsOne (number a );28 BOOLEAN nrzIsMOne (number a );29 BOOLEAN nrzIsUnit (number a );30 number nrzGetUnit (number a );31 number nrzDiv (number a, number b );32 number nrzIntDiv (number a, number b );33 number nrzIntMod (number a, number b );34 number nrzNeg (number c );35 number nrzInvers (number c );36 BOOLEAN nrzGreater (number a, number b );37 BOOLEAN nrzDivBy (number a, number b );38 int nrzDivComp (number a, number b );39 BOOLEAN nrzEqual (number a, number b );40 number nrzLcm (number a,number b, co effs r);41 number nrzGcd (number a,number b, coeffs r);42 number nrzExtGcd (number a, number b, number *s, number *t );23 number nrzAdd (number a, number b, const coeffs r); 24 number nrzSub (number a, number b, const coeffs r); 25 void nrzPower (number a, int i, number * result, const coeffs r); 26 BOOLEAN nrzIsZero (number a, const coeffs r); 27 BOOLEAN nrzIsOne (number a, const coeffs r); 28 BOOLEAN nrzIsMOne (number a, const coeffs r); 29 BOOLEAN nrzIsUnit (number a, const coeffs r); 30 number nrzGetUnit (number a, const coeffs r); 31 number nrzDiv (number a, number b, const coeffs r); 32 number nrzIntDiv (number a, number b, const coeffs r); 33 number nrzIntMod (number a, number b, const coeffs r); 34 number nrzNeg (number c, const coeffs r); 35 number nrzInvers (number c, const coeffs r); 36 BOOLEAN nrzGreater (number a, number b, const coeffs r); 37 BOOLEAN nrzDivBy (number a, number b, const coeffs r); 38 int nrzDivComp (number a, number b, const coeffs r); 39 BOOLEAN nrzEqual (number a, number b, const coeffs r); 40 number nrzLcm (number a,number b, const coeffs r); 41 number nrzGcd (number a,number b, const coeffs r); 42 number nrzExtGcd (number a, number b, number *s, number *t, const coeffs r); 43 43 nMapFunc nrzSetMap (const coeffs src, const coeffs dst); 44 44 void nrzWrite (number &a, const coeffs r); -
coeffs/test.cc
ra0ce49 rbec902b 13 13 #include <shortfl.h> 14 14 #include <ffields.h> 15 15 #include <modulop.h> 16 16 #include <rmodulon.h> 17 17 #include <rmodulo2m.h> … … 125 125 n_coeffType type; 126 126 127 // TODO: n_Zp, n_GF,n_Zp_a, n_Q_a ?127 // rings needed for: n_Zp_a, n_Q_a ? 128 128 129 129 type = nRegister( n_Q, nlInitChar); assume( type == n_Q ); … … 143 143 c ++; 144 144 145 type = nRegister( n_Zp, npInitChar); assume( type == n_Zp ); 146 if( Test(type) ) 147 c ++; 148 145 149 #ifdef HAVE_RINGS 146 150 type = nRegister( n_Z2m, nr2mInitChar); assume( type == n_Z2m ); … … 153 157 154 158 // n_Z, // TODO? 155 // n_Zpn, // no longer exists?156 159 #endif 157 160
Note: See TracChangeset
for help on using the changeset viewer.