[4f684a] | 1 | #include "config.h" |
---|
| 2 | |
---|
[b27c052] | 3 | #include "common.h" |
---|
| 4 | using namespace std; |
---|
[4f684a] | 5 | |
---|
[17e473] | 6 | // the following headers are private... |
---|
| 7 | #include <coeffs/longrat.h> |
---|
| 8 | #include <coeffs/gnumpfl.h> |
---|
| 9 | #include <coeffs/gnumpc.h> |
---|
| 10 | #include <coeffs/shortfl.h> |
---|
| 11 | #include <coeffs/ffields.h> |
---|
| 12 | #include <coeffs/modulop.h> |
---|
| 13 | #include <coeffs/rmodulon.h> |
---|
| 14 | #include <coeffs/rmodulo2m.h> |
---|
| 15 | #include <coeffs/rintegers.h> |
---|
| 16 | |
---|
[fba6f18] | 17 | #include <polys/ext_fields/algext.h> |
---|
[de90c01] | 18 | #include <polys/ext_fields/transext.h> |
---|
[4f684a] | 19 | #include <polys/monomials/ring.h> |
---|
[b27c052] | 20 | #include <polys/monomials/p_polys.h> |
---|
[4f684a] | 21 | |
---|
[fba6f18] | 22 | #include <polys/simpleideals.h> |
---|
[48a994] | 23 | |
---|
[de90c01] | 24 | #if 0 //ifdef HAVE_FACTORY |
---|
[fd01a8] | 25 | #include <polys/clapsing.h> |
---|
[48a994] | 26 | #include <factory/factory.h> |
---|
| 27 | #endif |
---|
[4f684a] | 28 | |
---|
[b27c052] | 29 | class MyGlobalPrintingFixture : public GlobalPrintingFixture |
---|
[17e473] | 30 | { |
---|
| 31 | public: |
---|
[b27c052] | 32 | virtual bool setUpWorld() |
---|
| 33 | { |
---|
[7af488e] | 34 | |
---|
[b27c052] | 35 | GlobalPrintingFixture::setUpWorld(); |
---|
[7af488e] | 36 | |
---|
| 37 | |
---|
| 38 | //TS_ASSERT_EQUALS( nRegister( n_Zp, npInitChar), n_Zp ); |
---|
| 39 | //TS_ASSERT_EQUALS( nRegister( n_GF, nfInitChar), n_GF ); |
---|
| 40 | //TS_ASSERT_EQUALS( nRegister( n_R, nrInitChar), n_R ); |
---|
| 41 | //TS_ASSERT_EQUALS( nRegister( n_Q, nlInitChar), n_Q ); |
---|
| 42 | //TS_ASSERT_EQUALS( nRegister( n_R, nrInitChar), n_R ); |
---|
| 43 | |
---|
[17e473] | 44 | #ifdef HAVE_RINGS |
---|
[7af488e] | 45 | //TS_ASSERT_EQUALS( nRegister( n_Z, nrzInitChar), n_Z ); // these are UNusable at the moment! |
---|
[17e473] | 46 | #endif |
---|
[7af488e] | 47 | |
---|
[17e473] | 48 | return true; |
---|
| 49 | } |
---|
| 50 | }; |
---|
| 51 | |
---|
| 52 | |
---|
| 53 | // |
---|
| 54 | // We can rely on this file being included exactly once |
---|
| 55 | // and declare this global variable in the header file. |
---|
| 56 | // |
---|
[b27c052] | 57 | static MyGlobalPrintingFixture globalPrintingFixture; |
---|
[17e473] | 58 | |
---|
| 59 | |
---|
| 60 | namespace |
---|
| 61 | { |
---|
[7af488e] | 62 | |
---|
[17e473] | 63 | void PrintRing(const ring r) |
---|
| 64 | { |
---|
| 65 | rWrite(r); PrintLn(); |
---|
| 66 | #ifdef RDEBUG |
---|
| 67 | rDebugPrint(r); PrintLn(); |
---|
| 68 | #endif |
---|
| 69 | } |
---|
[b27c052] | 70 | |
---|
| 71 | static inline std::string _2S(poly a, const ring r) |
---|
| 72 | { |
---|
| 73 | p_Test(a,r); |
---|
[7af488e] | 74 | |
---|
[b27c052] | 75 | StringSetS(""); |
---|
| 76 | p_Write(a, r); |
---|
| 77 | |
---|
| 78 | const char* s = StringAppendS(""); |
---|
| 79 | |
---|
| 80 | std::stringstream ss; ss << s; |
---|
| 81 | |
---|
[7af488e] | 82 | StringSetS(""); |
---|
[b27c052] | 83 | return ss.str(); |
---|
| 84 | } |
---|
| 85 | |
---|
| 86 | static inline void PrintSized(/*const*/ poly a, const ring r, BOOLEAN eoln = TRUE) |
---|
| 87 | { |
---|
| 88 | std::clog << _2S(a, r) << ", of size: " << p_Size(a, r); |
---|
| 89 | |
---|
[7af488e] | 90 | if( eoln ) |
---|
| 91 | std::clog << std::endl; |
---|
[b27c052] | 92 | } |
---|
| 93 | |
---|
| 94 | static inline void Delete(poly &p, const ring r) |
---|
| 95 | { |
---|
| 96 | if( p != NULL ) |
---|
| 97 | p_Delete(&p, r); |
---|
| 98 | |
---|
| 99 | p = NULL; |
---|
| 100 | } |
---|
| 101 | |
---|
[b5b9dc] | 102 | void TestSum(const ring r, const int N) |
---|
[b27c052] | 103 | { |
---|
[bfde6c] | 104 | TS_ASSERT_DIFFERS( r , NULLp); |
---|
| 105 | TS_ASSERT_DIFFERS( r->cf, NULLp); |
---|
[7af488e] | 106 | |
---|
| 107 | |
---|
[b27c052] | 108 | clog << ( _2S("TEST: sum[0..") + _2S(N) + "]: "); |
---|
| 109 | clog << endl; |
---|
| 110 | |
---|
| 111 | assume( N > 0 ); // just for now... |
---|
| 112 | |
---|
[b5b9dc] | 113 | const int ssss = (N * (N+1)) / 2; |
---|
[7af488e] | 114 | |
---|
[b5b9dc] | 115 | poly sum1 = p_ISet(ssss, r); |
---|
[b27c052] | 116 | clog<< "poly(N*(N+1)/2) (int: " << ssss << "): "; PrintSized(sum1, r); |
---|
| 117 | |
---|
[b5b9dc] | 118 | poly s=NULL, ss=NULL, i=NULL, res=NULL; |
---|
[b27c052] | 119 | |
---|
[b5b9dc] | 120 | s = p_ISet(N , r); |
---|
| 121 | i = p_ISet(N+1, r); |
---|
[b27c052] | 122 | |
---|
| 123 | i = p_Mult_q(s, i, r); s = NULL; |
---|
| 124 | |
---|
[7af488e] | 125 | clog<< "poly(N)*poly(N+1): (int: "<< N*(N+1) << "): "; PrintSized(i, r); |
---|
[b27c052] | 126 | |
---|
| 127 | number t = n_Init(2, r->cf); |
---|
[7af488e] | 128 | clog<< "number(2): "; PrintSized(t, r->cf); |
---|
[b27c052] | 129 | |
---|
| 130 | if( !n_IsZero( t, r->cf) ) |
---|
| 131 | { |
---|
[bfde6c] | 132 | if( i != NULL ) |
---|
| 133 | { |
---|
| 134 | number ii = p_GetCoeff(i, r); |
---|
[7af488e] | 135 | clog<< "number(poly(N)*poly(N+1)): "; PrintSized(ii, r->cf); |
---|
[bfde6c] | 136 | |
---|
[6c5f32] | 137 | #ifdef HAVE_RINGS |
---|
[bfde6c] | 138 | TS_ASSERT( n_DivBy(ii, t, r->cf) ); |
---|
[6c5f32] | 139 | #endif |
---|
| 140 | res = p_Div_nn(i, t, r); i = NULL; |
---|
[bfde6c] | 141 | } |
---|
[7af488e] | 142 | |
---|
| 143 | |
---|
[bfde6c] | 144 | |
---|
| 145 | clog<< "(poly(N)*poly(N+1))/number(2): "; PrintSized(res, r); |
---|
| 146 | poly d = p_Sub(p_Copy(res, r), p_Copy(sum1, r), r); |
---|
| 147 | |
---|
[b27c052] | 148 | if( d != NULL ) |
---|
| 149 | TS_ASSERT( n_IsZeroDivisor(p_GetCoeff(d, r), r->cf) ); |
---|
[bfde6c] | 150 | |
---|
[b27c052] | 151 | Delete(d, r); |
---|
[bfde6c] | 152 | |
---|
[b27c052] | 153 | if( n_GetChar(r->cf) == 0 ) |
---|
| 154 | { |
---|
| 155 | TS_ASSERT( p_EqualPolys(sum1, res, r) ); |
---|
| 156 | TS_ASSERT( p_EqualPolys(res, sum1, r) ); |
---|
| 157 | } |
---|
| 158 | } else |
---|
| 159 | TS_ASSERT_EQUALS( n_GetChar(r->cf), 2); |
---|
[7af488e] | 160 | |
---|
[b27c052] | 161 | n_Delete(&t, r->cf); |
---|
| 162 | |
---|
| 163 | |
---|
[b5b9dc] | 164 | s = NULL; |
---|
| 165 | ss = NULL; |
---|
[b27c052] | 166 | for( int k = N; k >= 0; k-- ) |
---|
| 167 | { |
---|
[b5b9dc] | 168 | i = p_ISet(k, r); |
---|
[b27c052] | 169 | s = p_Add_q(s, i, r); // s += i |
---|
| 170 | |
---|
[b5b9dc] | 171 | i = p_Neg( p_ISet(k, r), r ); |
---|
[b27c052] | 172 | ss = p_Add_q(ss, i, r); // ss -= i |
---|
| 173 | } |
---|
[7af488e] | 174 | |
---|
| 175 | clog<< "ss(-sum): "; PrintSized(ss, r); |
---|
[b27c052] | 176 | |
---|
| 177 | ss = p_Neg(ss, r); // ss = -ss |
---|
[7af488e] | 178 | |
---|
[b27c052] | 179 | clog<< "real sum : "; PrintSized(s, r); |
---|
[7af488e] | 180 | clog<< "real sum(--): "; PrintSized(ss, r); |
---|
[b27c052] | 181 | |
---|
| 182 | TS_ASSERT( p_EqualPolys(s, ss, r) ); |
---|
| 183 | TS_ASSERT( p_EqualPolys(ss, s, r) ); |
---|
| 184 | |
---|
| 185 | TODO(somebody, fix the delete method!); |
---|
[b7d7eb] | 186 | |
---|
[7af488e] | 187 | Delete(sum1, r); |
---|
[b27c052] | 188 | Delete(res, r); |
---|
| 189 | |
---|
[7af488e] | 190 | Delete(s, r); |
---|
| 191 | Delete(ss, r); |
---|
[b7d7eb] | 192 | |
---|
[b27c052] | 193 | clog << ( " >>> TEST DONE!" ); |
---|
| 194 | clog << endl; |
---|
| 195 | |
---|
| 196 | } |
---|
[7af488e] | 197 | |
---|
[b27c052] | 198 | void Test(const ring r) |
---|
| 199 | { |
---|
[ae6d28] | 200 | if( r == NULL ) |
---|
| 201 | TS_FAIL("Could not get needed ring"); |
---|
| 202 | else |
---|
| 203 | { |
---|
| 204 | TestSum( r, 10 ); |
---|
| 205 | TestSum( r, 100 ); |
---|
| 206 | TestSum( r, 101 ); |
---|
| 207 | TestSum( r, 1001 ); |
---|
| 208 | TestSum( r, 9000 ); |
---|
| 209 | } |
---|
[b27c052] | 210 | } |
---|
| 211 | |
---|
[17e473] | 212 | } |
---|
| 213 | |
---|
[7af488e] | 214 | class PolysTestSuite : public CxxTest::TestSuite |
---|
[4f684a] | 215 | { |
---|
[c28ecf] | 216 | private: |
---|
[fd01a8] | 217 | /* replaces p by p + c * var(i)^exp (in-place); |
---|
[cfb500] | 218 | expects exp >= 0 */ |
---|
[fd01a8] | 219 | void plusTerm(poly &p, int c, int i, int exp, const ring r) |
---|
[cfb500] | 220 | { |
---|
[2d3091c] | 221 | poly t = p_ISet(c, r); |
---|
| 222 | if (exp > 0) { p_SetExp(t, i, exp, r); p_Setm(t, r); } |
---|
[fd01a8] | 223 | p = p_Add_q(p, t, r); |
---|
[cfb500] | 224 | } |
---|
[06df101] | 225 | /* assumes that r is over Q; |
---|
| 226 | replaces p by p + c1 / c2 * var(i)^exp (in-place); |
---|
| 227 | expects exp >= 0, and c2 != 0 */ |
---|
| 228 | void plusTermOverQ(poly &p, int c1, int c2, int i, int exp, const ring r) |
---|
| 229 | { |
---|
| 230 | number c1AsN = n_Init(c1, r->cf); |
---|
| 231 | number c2AsN = n_Init(c2, r->cf); |
---|
| 232 | number c = n_Div(c1AsN, c2AsN, r->cf); |
---|
| 233 | poly t = p_ISet(1, r); p_SetCoeff(t, c, r); |
---|
| 234 | if (exp > 0) { p_SetExp(t, i, exp, r); p_Setm(t, r); } |
---|
| 235 | p = p_Add_q(p, t, r); |
---|
| 236 | } |
---|
[2d3091c] | 237 | /* assumes r to represent Q(x)[y], for some variable names x and y; |
---|
| 238 | replaces p by p + (c1 * 1000000 + c2) * x^xExp * y^yExp (in-place); |
---|
| 239 | expects xExp, yExp >= 0 */ |
---|
| 240 | void specialPlusTerm(poly &p, int c1, int c2, int sign, |
---|
| 241 | int xExp, int yExp, const ring r) |
---|
| 242 | { |
---|
| 243 | poly c1p = p_ISet(c1, r->cf->extRing); |
---|
| 244 | poly c2p = p_ISet(c2, r->cf->extRing); |
---|
| 245 | poly c3p = p_ISet(1000000, r->cf->extRing); |
---|
| 246 | poly xterm = p_Mult_q(c1p, c3p, r->cf->extRing); |
---|
| 247 | xterm = p_Add_q(xterm, c2p, r->cf->extRing); |
---|
| 248 | if (sign == -1) xterm = p_Neg(xterm, r->cf->extRing); |
---|
| 249 | if (xExp > 0) |
---|
| 250 | { |
---|
| 251 | p_SetExp(xterm, 1, xExp, r->cf->extRing); |
---|
| 252 | p_Setm(xterm, r->cf->extRing); |
---|
| 253 | } |
---|
| 254 | number xtermAsN = toFractionNumber(xterm, r->cf); |
---|
| 255 | poly yterm = p_ISet(1, r); |
---|
| 256 | if (yExp > 0) |
---|
| 257 | { |
---|
| 258 | p_SetExp(yterm, 1, yExp, r); |
---|
| 259 | p_Setm(yterm, r); |
---|
| 260 | } |
---|
| 261 | p_SetCoeff(yterm, xtermAsN, r); |
---|
| 262 | p = p_Add_q(p, yterm, r); |
---|
| 263 | } |
---|
| 264 | /* defines a special test polynomial in Q(x)[y], for some variable |
---|
| 265 | names x and y, by excessively using specialPlusTerm */ |
---|
| 266 | void specialPoly(poly &p, const ring r) |
---|
| 267 | { |
---|
| 268 | p = NULL; |
---|
| 269 | specialPlusTerm(p, 0, 1, 1, 0, 17, r); |
---|
| 270 | specialPlusTerm(p, 0, 1, -1, 15, 16, r); |
---|
| 271 | specialPlusTerm(p, 0, 2, -1, 14, 16, r); |
---|
| 272 | specialPlusTerm(p, 0, 3, -1, 13, 16, r); |
---|
| 273 | specialPlusTerm(p, 0, 4, -1, 12, 16, r); |
---|
| 274 | specialPlusTerm(p, 0, 5, -1, 11, 16, r); |
---|
| 275 | specialPlusTerm(p, 0, 6, -1, 10, 16, r); |
---|
| 276 | specialPlusTerm(p, 0, 7, -1, 9, 16, r); |
---|
| 277 | specialPlusTerm(p, 0, 8, -1, 8, 16, r); |
---|
| 278 | specialPlusTerm(p, 0, 9, -1, 7, 16, r); |
---|
| 279 | specialPlusTerm(p, 0, 10, -1, 6, 16, r); |
---|
| 280 | specialPlusTerm(p, 0, 11, -1, 5, 16, r); |
---|
| 281 | specialPlusTerm(p, 0, 12, -1, 4, 16, r); |
---|
| 282 | specialPlusTerm(p, 0, 13, -1, 3, 16, r); |
---|
| 283 | specialPlusTerm(p, 0, 14, -1, 2, 16, r); |
---|
| 284 | specialPlusTerm(p, 0, 15, -1, 1, 16, r); |
---|
| 285 | specialPlusTerm(p, 0, 16, -1, 0, 16, r); |
---|
| 286 | specialPlusTerm(p, 0, 1, 1, 29, 15, r); |
---|
| 287 | specialPlusTerm(p, 0, 3, 1, 28, 15, r); |
---|
| 288 | specialPlusTerm(p, 0, 7, 1, 27, 15, r); |
---|
| 289 | specialPlusTerm(p, 0, 13, 1, 26, 15, r); |
---|
| 290 | specialPlusTerm(p, 0, 22, 1, 25, 15, r); |
---|
| 291 | specialPlusTerm(p, 0, 34, 1, 24, 15, r); |
---|
| 292 | specialPlusTerm(p, 0, 50, 1, 23, 15, r); |
---|
| 293 | specialPlusTerm(p, 0, 70, 1, 22, 15, r); |
---|
| 294 | specialPlusTerm(p, 0, 95, 1, 21, 15, r); |
---|
| 295 | specialPlusTerm(p, 0, 125, 1, 20, 15, r); |
---|
| 296 | specialPlusTerm(p, 0, 161, 1, 19, 15, r); |
---|
| 297 | specialPlusTerm(p, 0, 203, 1, 18, 15, r); |
---|
| 298 | specialPlusTerm(p, 0, 252, 1, 17, 15, r); |
---|
| 299 | specialPlusTerm(p, 0, 308, 1, 16, 15, r); |
---|
| 300 | specialPlusTerm(p, 0, 372, 1, 15, 15, r); |
---|
| 301 | specialPlusTerm(p, 0, 428, 1, 14, 15, r); |
---|
| 302 | specialPlusTerm(p, 0, 476, 1, 13, 15, r); |
---|
| 303 | specialPlusTerm(p, 0, 515, 1, 12, 15, r); |
---|
| 304 | specialPlusTerm(p, 0, 545, 1, 11, 15, r); |
---|
| 305 | specialPlusTerm(p, 0, 565, 1, 10, 15, r); |
---|
| 306 | specialPlusTerm(p, 0, 575, 1, 9, 15, r); |
---|
| 307 | specialPlusTerm(p, 0, 574, 1, 8, 15, r); |
---|
| 308 | specialPlusTerm(p, 0, 562, 1, 7, 15, r); |
---|
| 309 | specialPlusTerm(p, 0, 538, 1, 6, 15, r); |
---|
| 310 | specialPlusTerm(p, 0, 502, 1, 5, 15, r); |
---|
| 311 | specialPlusTerm(p, 0, 453, 1, 4, 15, r); |
---|
| 312 | specialPlusTerm(p, 0, 391, 1, 3, 15, r); |
---|
| 313 | specialPlusTerm(p, 0, 315, 1, 2, 15, r); |
---|
| 314 | specialPlusTerm(p, 0, 225, 1, 1, 15, r); |
---|
| 315 | specialPlusTerm(p, 0, 120, 1, 0, 15, r); |
---|
| 316 | specialPlusTerm(p, 0, 1, -1, 42, 14, r); |
---|
| 317 | specialPlusTerm(p, 0, 4, -1, 41, 14, r); |
---|
| 318 | specialPlusTerm(p, 0, 11, -1, 40, 14, r); |
---|
| 319 | specialPlusTerm(p, 0, 25, -1, 39, 14, r); |
---|
| 320 | specialPlusTerm(p, 0, 50, -1, 38, 14, r); |
---|
| 321 | specialPlusTerm(p, 0, 91, -1, 37, 14, r); |
---|
| 322 | specialPlusTerm(p, 0, 155, -1, 36, 14, r); |
---|
| 323 | specialPlusTerm(p, 0, 250, -1, 35, 14, r); |
---|
| 324 | specialPlusTerm(p, 0, 386, -1, 34, 14, r); |
---|
| 325 | specialPlusTerm(p, 0, 575, -1, 33, 14, r); |
---|
| 326 | specialPlusTerm(p, 0, 831, -1, 32, 14, r); |
---|
| 327 | specialPlusTerm(p, 0, 1170, -1, 31, 14, r); |
---|
| 328 | specialPlusTerm(p, 0, 1611, -1, 30, 14, r); |
---|
| 329 | specialPlusTerm(p, 0, 2175, -1, 29, 14, r); |
---|
| 330 | specialPlusTerm(p, 0, 2871, -1, 28, 14, r); |
---|
| 331 | specialPlusTerm(p, 0, 3710, -1, 27, 14, r); |
---|
| 332 | specialPlusTerm(p, 0, 4690, -1, 26, 14, r); |
---|
| 333 | specialPlusTerm(p, 0, 5810, -1, 25, 14, r); |
---|
| 334 | specialPlusTerm(p, 0, 7056, -1, 24, 14, r); |
---|
| 335 | specialPlusTerm(p, 0, 8414, -1, 23, 14, r); |
---|
| 336 | specialPlusTerm(p, 0, 9856, -1, 22, 14, r); |
---|
| 337 | specialPlusTerm(p, 0, 11354, -1, 21, 14, r); |
---|
| 338 | specialPlusTerm(p, 0, 12865, -1, 20, 14, r); |
---|
| 339 | specialPlusTerm(p, 0, 14345, -1, 19, 14, r); |
---|
| 340 | specialPlusTerm(p, 0, 15735, -1, 18, 14, r); |
---|
| 341 | specialPlusTerm(p, 0, 16974, -1, 17, 14, r); |
---|
| 342 | specialPlusTerm(p, 0, 17985, -1, 16, 14, r); |
---|
| 343 | specialPlusTerm(p, 0, 18689, -1, 15, 14, r); |
---|
| 344 | specialPlusTerm(p, 0, 18990, -1, 14, 14, r); |
---|
| 345 | specialPlusTerm(p, 0, 18909, -1, 13, 14, r); |
---|
| 346 | specialPlusTerm(p, 0, 18465, -1, 12, 14, r); |
---|
| 347 | specialPlusTerm(p, 0, 17689, -1, 11, 14, r); |
---|
| 348 | specialPlusTerm(p, 0, 16610, -1, 10, 14, r); |
---|
| 349 | specialPlusTerm(p, 0, 15270, -1, 9, 14, r); |
---|
| 350 | specialPlusTerm(p, 0, 13709, -1, 8, 14, r); |
---|
| 351 | specialPlusTerm(p, 0, 11980, -1, 7, 14, r); |
---|
| 352 | specialPlusTerm(p, 0, 10135, -1, 6, 14, r); |
---|
| 353 | specialPlusTerm(p, 0, 8239, -1, 5, 14, r); |
---|
| 354 | specialPlusTerm(p, 0, 6356, -1, 4, 14, r); |
---|
| 355 | specialPlusTerm(p, 0, 4564, -1, 3, 14, r); |
---|
| 356 | specialPlusTerm(p, 0, 2940, -1, 2, 14, r); |
---|
| 357 | specialPlusTerm(p, 0, 1575, -1, 1, 14, r); |
---|
| 358 | specialPlusTerm(p, 0, 560, -1, 0, 14, r); |
---|
| 359 | specialPlusTerm(p, 0, 1, 1, 54, 13, r); |
---|
| 360 | specialPlusTerm(p, 0, 5, 1, 53, 13, r); |
---|
| 361 | specialPlusTerm(p, 0, 16, 1, 52, 13, r); |
---|
| 362 | specialPlusTerm(p, 0, 41, 1, 51, 13, r); |
---|
| 363 | specialPlusTerm(p, 0, 92, 1, 50, 13, r); |
---|
| 364 | specialPlusTerm(p, 0, 187, 1, 49, 13, r); |
---|
| 365 | specialPlusTerm(p, 0, 353, 1, 48, 13, r); |
---|
| 366 | specialPlusTerm(p, 0, 628, 1, 47, 13, r); |
---|
| 367 | specialPlusTerm(p, 0, 1065, 1, 46, 13, r); |
---|
| 368 | specialPlusTerm(p, 0, 1735, 1, 45, 13, r); |
---|
| 369 | specialPlusTerm(p, 0, 2732, 1, 44, 13, r); |
---|
| 370 | specialPlusTerm(p, 0, 4177, 1, 43, 13, r); |
---|
| 371 | specialPlusTerm(p, 0, 6225, 1, 42, 13, r); |
---|
| 372 | specialPlusTerm(p, 0, 9056, 1, 41, 13, r); |
---|
| 373 | specialPlusTerm(p, 0, 12882, 1, 40, 13, r); |
---|
| 374 | specialPlusTerm(p, 0, 17939, 1, 39, 13, r); |
---|
| 375 | specialPlusTerm(p, 0, 24481, 1, 38, 13, r); |
---|
| 376 | specialPlusTerm(p, 0, 32771, 1, 37, 13, r); |
---|
| 377 | specialPlusTerm(p, 0, 43075, 1, 36, 13, r); |
---|
| 378 | specialPlusTerm(p, 0, 55639, 1, 35, 13, r); |
---|
| 379 | specialPlusTerm(p, 0, 70682, 1, 34, 13, r); |
---|
| 380 | specialPlusTerm(p, 0, 88372, 1, 33, 13, r); |
---|
| 381 | specialPlusTerm(p, 0, 108804, 1, 32, 13, r); |
---|
| 382 | specialPlusTerm(p, 0, 131974, 1, 31, 13, r); |
---|
| 383 | specialPlusTerm(p, 0, 157756, 1, 30, 13, r); |
---|
| 384 | specialPlusTerm(p, 0, 185860, 1, 29, 13, r); |
---|
| 385 | specialPlusTerm(p, 0, 215806, 1, 28, 13, r); |
---|
| 386 | specialPlusTerm(p, 0, 246985, 1, 27, 13, r); |
---|
| 387 | specialPlusTerm(p, 0, 278631, 1, 26, 13, r); |
---|
| 388 | specialPlusTerm(p, 0, 309893, 1, 25, 13, r); |
---|
| 389 | specialPlusTerm(p, 0, 339819, 1, 24, 13, r); |
---|
| 390 | specialPlusTerm(p, 0, 367427, 1, 23, 13, r); |
---|
| 391 | specialPlusTerm(p, 0, 391701, 1, 22, 13, r); |
---|
| 392 | specialPlusTerm(p, 0, 411675, 1, 21, 13, r); |
---|
| 393 | specialPlusTerm(p, 0, 426428, 1, 20, 13, r); |
---|
| 394 | specialPlusTerm(p, 0, 435181, 1, 19, 13, r); |
---|
| 395 | specialPlusTerm(p, 0, 437306, 1, 18, 13, r); |
---|
| 396 | specialPlusTerm(p, 0, 432423, 1, 17, 13, r); |
---|
| 397 | specialPlusTerm(p, 0, 420422, 1, 16, 13, r); |
---|
| 398 | specialPlusTerm(p, 0, 401575, 1, 15, 13, r); |
---|
| 399 | specialPlusTerm(p, 0, 376559, 1, 14, 13, r); |
---|
| 400 | specialPlusTerm(p, 0, 346582, 1, 13, 13, r); |
---|
| 401 | specialPlusTerm(p, 0, 312861, 1, 12, 13, r); |
---|
| 402 | specialPlusTerm(p, 0, 276645, 1, 11, 13, r); |
---|
| 403 | specialPlusTerm(p, 0, 239149, 1, 10, 13, r); |
---|
| 404 | specialPlusTerm(p, 0, 201578, 1, 9, 13, r); |
---|
| 405 | specialPlusTerm(p, 0, 165048, 1, 8, 13, r); |
---|
| 406 | specialPlusTerm(p, 0, 130611, 1, 7, 13, r); |
---|
| 407 | specialPlusTerm(p, 0, 99177, 1, 6, 13, r); |
---|
| 408 | specialPlusTerm(p, 0, 71526, 1, 5, 13, r); |
---|
| 409 | specialPlusTerm(p, 0, 48230, 1, 4, 13, r); |
---|
| 410 | specialPlusTerm(p, 0, 29666, 1, 3, 13, r); |
---|
| 411 | specialPlusTerm(p, 0, 15925, 1, 2, 13, r); |
---|
| 412 | specialPlusTerm(p, 0, 6825, 1, 1, 13, r); |
---|
| 413 | specialPlusTerm(p, 0, 1820, 1, 0, 13, r); |
---|
| 414 | specialPlusTerm(p, 0, 1, -1, 65, 12, r); |
---|
| 415 | specialPlusTerm(p, 0, 6, -1, 64, 12, r); |
---|
| 416 | specialPlusTerm(p, 0, 22, -1, 63, 12, r); |
---|
| 417 | specialPlusTerm(p, 0, 63, -1, 62, 12, r); |
---|
| 418 | specialPlusTerm(p, 0, 155, -1, 61, 12, r); |
---|
| 419 | specialPlusTerm(p, 0, 343, -1, 60, 12, r); |
---|
| 420 | specialPlusTerm(p, 0, 701, -1, 59, 12, r); |
---|
| 421 | specialPlusTerm(p, 0, 1345, -1, 58, 12, r); |
---|
| 422 | specialPlusTerm(p, 0, 2451, -1, 57, 12, r); |
---|
| 423 | specialPlusTerm(p, 0, 4278, -1, 56, 12, r); |
---|
| 424 | specialPlusTerm(p, 0, 7198, -1, 55, 12, r); |
---|
| 425 | specialPlusTerm(p, 0, 11733, -1, 54, 12, r); |
---|
| 426 | specialPlusTerm(p, 0, 18589, -1, 53, 12, r); |
---|
| 427 | specialPlusTerm(p, 0, 28699, -1, 52, 12, r); |
---|
| 428 | specialPlusTerm(p, 0, 43265, -1, 51, 12, r); |
---|
| 429 | specialPlusTerm(p, 0, 63799, -1, 50, 12, r); |
---|
| 430 | specialPlusTerm(p, 0, 92152, -1, 49, 12, r); |
---|
| 431 | specialPlusTerm(p, 0, 130543, -1, 48, 12, r); |
---|
| 432 | specialPlusTerm(p, 0, 181565, -1, 47, 12, r); |
---|
| 433 | specialPlusTerm(p, 0, 248179, -1, 46, 12, r); |
---|
| 434 | specialPlusTerm(p, 0, 333673, -1, 45, 12, r); |
---|
| 435 | specialPlusTerm(p, 0, 441596, -1, 44, 12, r); |
---|
| 436 | specialPlusTerm(p, 0, 575643, -1, 43, 12, r); |
---|
| 437 | specialPlusTerm(p, 0, 739501, -1, 42, 12, r); |
---|
| 438 | specialPlusTerm(p, 0, 936619, -1, 41, 12, r); |
---|
| 439 | specialPlusTerm(p, 1, 170014, -1, 40, 12, r); |
---|
| 440 | specialPlusTerm(p, 1, 441997, -1, 39, 12, r); |
---|
| 441 | specialPlusTerm(p, 1, 753919, -1, 38, 12, r); |
---|
| 442 | specialPlusTerm(p, 2, 105911, -1, 37, 12, r); |
---|
| 443 | specialPlusTerm(p, 2, 496652, -1, 36, 12, r); |
---|
| 444 | specialPlusTerm(p, 2, 923127, -1, 35, 12, r); |
---|
| 445 | specialPlusTerm(p, 3, 380499, -1, 34, 12, r); |
---|
| 446 | specialPlusTerm(p, 3, 861979, -1, 33, 12, r); |
---|
| 447 | specialPlusTerm(p, 4, 358819, -1, 32, 12, r); |
---|
| 448 | specialPlusTerm(p, 4, 860402, -1, 31, 12, r); |
---|
| 449 | specialPlusTerm(p, 5, 354477, -1, 30, 12, r); |
---|
| 450 | specialPlusTerm(p, 5, 827501, -1, 29, 12, r); |
---|
| 451 | specialPlusTerm(p, 6, 265239, -1, 28, 12, r); |
---|
| 452 | specialPlusTerm(p, 6, 653507, -1, 27, 12, r); |
---|
| 453 | specialPlusTerm(p, 6, 978743, -1, 26, 12, r); |
---|
| 454 | specialPlusTerm(p, 7, 228746, -1, 25, 12, r); |
---|
| 455 | specialPlusTerm(p, 7, 393190, -1, 24, 12, r); |
---|
| 456 | specialPlusTerm(p, 7, 464241, -1, 23, 12, r); |
---|
| 457 | specialPlusTerm(p, 7, 436963, -1, 22, 12, r); |
---|
| 458 | specialPlusTerm(p, 7, 309763, -1, 21, 12, r); |
---|
| 459 | specialPlusTerm(p, 7, 84549, -1, 20, 12, r); |
---|
| 460 | specialPlusTerm(p, 6, 766941, -1, 19, 12, r); |
---|
| 461 | specialPlusTerm(p, 6, 366119, -1, 18, 12, r); |
---|
| 462 | specialPlusTerm(p, 5, 894636, -1, 17, 12, r); |
---|
| 463 | specialPlusTerm(p, 5, 367870, -1, 16, 12, r); |
---|
| 464 | specialPlusTerm(p, 4, 803365, -1, 15, 12, r); |
---|
| 465 | specialPlusTerm(p, 4, 219710, -1, 14, 12, r); |
---|
| 466 | specialPlusTerm(p, 3, 635296, -1, 13, 12, r); |
---|
| 467 | specialPlusTerm(p, 3, 66522, -1, 12, 12, r); |
---|
| 468 | specialPlusTerm(p, 2, 527597, -1, 11, 12, r); |
---|
| 469 | specialPlusTerm(p, 2, 30222, -1, 10, 12, r); |
---|
| 470 | specialPlusTerm(p, 1, 583491, -1, 9, 12, r); |
---|
| 471 | specialPlusTerm(p, 1, 193660, -1, 8, 12, r); |
---|
| 472 | specialPlusTerm(p, 0, 864214, -1, 7, 12, r); |
---|
| 473 | specialPlusTerm(p, 0, 595790, -1, 6, 12, r); |
---|
| 474 | specialPlusTerm(p, 0, 386386, -1, 5, 12, r); |
---|
| 475 | specialPlusTerm(p, 0, 231504, -1, 4, 12, r); |
---|
| 476 | specialPlusTerm(p, 0, 124579, -1, 3, 12, r); |
---|
| 477 | specialPlusTerm(p, 0, 57330, -1, 2, 12, r); |
---|
| 478 | specialPlusTerm(p, 0, 20475, -1, 1, 12, r); |
---|
| 479 | specialPlusTerm(p, 0, 4368, -1, 0, 12, r); |
---|
| 480 | specialPlusTerm(p, 0, 1, 1, 75, 11, r); |
---|
| 481 | specialPlusTerm(p, 0, 7, 1, 74, 11, r); |
---|
| 482 | specialPlusTerm(p, 0, 29, 1, 73, 11, r); |
---|
| 483 | specialPlusTerm(p, 0, 92, 1, 72, 11, r); |
---|
| 484 | specialPlusTerm(p, 0, 247, 1, 71, 11, r); |
---|
| 485 | specialPlusTerm(p, 0, 590, 1, 70, 11, r); |
---|
| 486 | specialPlusTerm(p, 0, 1292, 1, 69, 11, r); |
---|
| 487 | specialPlusTerm(p, 0, 2643, 1, 68, 11, r); |
---|
| 488 | specialPlusTerm(p, 0, 5116, 1, 67, 11, r); |
---|
| 489 | specialPlusTerm(p, 0, 9457, 1, 66, 11, r); |
---|
| 490 | specialPlusTerm(p, 0, 16810, 1, 65, 11, r); |
---|
| 491 | specialPlusTerm(p, 0, 28874, 1, 64, 11, r); |
---|
| 492 | specialPlusTerm(p, 0, 48105, 1, 63, 11, r); |
---|
| 493 | specialPlusTerm(p, 0, 77963, 1, 62, 11, r); |
---|
| 494 | specialPlusTerm(p, 0, 123209, 1, 61, 11, r); |
---|
| 495 | specialPlusTerm(p, 0, 190245, 1, 60, 11, r); |
---|
| 496 | specialPlusTerm(p, 0, 287494, 1, 59, 11, r); |
---|
| 497 | specialPlusTerm(p, 0, 425804, 1, 58, 11, r); |
---|
| 498 | specialPlusTerm(p, 0, 618866, 1, 57, 11, r); |
---|
| 499 | specialPlusTerm(p, 0, 883609, 1, 56, 11, r); |
---|
| 500 | specialPlusTerm(p, 1, 240541, 1, 55, 11, r); |
---|
| 501 | specialPlusTerm(p, 1, 713978, 1, 54, 11, r); |
---|
| 502 | specialPlusTerm(p, 2, 332107, 1, 53, 11, r); |
---|
| 503 | specialPlusTerm(p, 3, 126867, 1, 52, 11, r); |
---|
| 504 | specialPlusTerm(p, 4, 133571, 1, 51, 11, r); |
---|
| 505 | specialPlusTerm(p, 5, 390227, 1, 50, 11, r); |
---|
| 506 | specialPlusTerm(p, 6, 936520, 1, 49, 11, r); |
---|
| 507 | specialPlusTerm(p, 8, 812464, 1, 48, 11, r); |
---|
| 508 | specialPlusTerm(p, 11, 56669, 1, 47, 11, r); |
---|
| 509 | specialPlusTerm(p, 13, 704280, 1, 46, 11, r); |
---|
| 510 | specialPlusTerm(p, 16, 784594, 1, 45, 11, r); |
---|
| 511 | specialPlusTerm(p, 20, 318470, 1, 44, 11, r); |
---|
| 512 | specialPlusTerm(p, 24, 315607, 1, 43, 11, r); |
---|
| 513 | specialPlusTerm(p, 28, 771888, 1, 42, 11, r); |
---|
| 514 | specialPlusTerm(p, 33, 666946, 1, 41, 11, r); |
---|
| 515 | specialPlusTerm(p, 38, 962309, 1, 40, 11, r); |
---|
| 516 | specialPlusTerm(p, 44, 600023, 1, 39, 11, r); |
---|
| 517 | specialPlusTerm(p, 50, 502149, 1, 38, 11, r); |
---|
| 518 | specialPlusTerm(p, 56, 571139, 1, 37, 11, r); |
---|
| 519 | specialPlusTerm(p, 62, 691244, 1, 36, 11, r); |
---|
| 520 | specialPlusTerm(p, 68, 730935, 1, 35, 11, r); |
---|
| 521 | specialPlusTerm(p, 74, 546533, 1, 34, 11, r); |
---|
| 522 | specialPlusTerm(p, 79, 986722, 1, 33, 11, r); |
---|
| 523 | specialPlusTerm(p, 84, 898120, 1, 32, 11, r); |
---|
| 524 | specialPlusTerm(p, 89, 131550, 1, 31, 11, r); |
---|
| 525 | specialPlusTerm(p, 92, 548805, 1, 30, 11, r); |
---|
| 526 | specialPlusTerm(p, 95, 29441, 1, 29, 11, r); |
---|
| 527 | specialPlusTerm(p, 96, 477351, 1, 28, 11, r); |
---|
| 528 | specialPlusTerm(p, 96, 826185, 1, 27, 11, r); |
---|
| 529 | specialPlusTerm(p, 96, 43174, 1, 26, 11, r); |
---|
| 530 | specialPlusTerm(p, 94, 131647, 1, 25, 11, r); |
---|
| 531 | specialPlusTerm(p, 91, 131660, 1, 24, 11, r); |
---|
| 532 | specialPlusTerm(p, 87, 119171, 1, 23, 11, r); |
---|
| 533 | specialPlusTerm(p, 82, 203392, 1, 22, 11, r); |
---|
| 534 | specialPlusTerm(p, 76, 522667, 1, 21, 11, r); |
---|
| 535 | specialPlusTerm(p, 70, 238707, 1, 20, 11, r); |
---|
| 536 | specialPlusTerm(p, 63, 529796, 1, 19, 11, r); |
---|
| 537 | specialPlusTerm(p, 56, 582713, 1, 18, 11, r); |
---|
| 538 | specialPlusTerm(p, 49, 584249, 1, 17, 11, r); |
---|
| 539 | specialPlusTerm(p, 42, 712395, 1, 16, 11, r); |
---|
| 540 | specialPlusTerm(p, 36, 128059, 1, 15, 11, r); |
---|
| 541 | specialPlusTerm(p, 29, 967652, 1, 14, 11, r); |
---|
| 542 | specialPlusTerm(p, 24, 337808, 1, 13, 11, r); |
---|
| 543 | specialPlusTerm(p, 19, 312634, 1, 12, 11, r); |
---|
| 544 | specialPlusTerm(p, 14, 935096, 1, 11, 11, r); |
---|
| 545 | specialPlusTerm(p, 11, 218988, 1, 10, 11, r); |
---|
| 546 | specialPlusTerm(p, 8, 151858, 1, 9, 11, r); |
---|
| 547 | specialPlusTerm(p, 5, 698407, 1, 8, 11, r); |
---|
| 548 | specialPlusTerm(p, 3, 804801, 1, 7, 11, r); |
---|
| 549 | specialPlusTerm(p, 2, 403115, 1, 6, 11, r); |
---|
| 550 | specialPlusTerm(p, 1, 416415, 1, 5, 11, r); |
---|
| 551 | specialPlusTerm(p, 0, 763763, 1, 4, 11, r); |
---|
| 552 | specialPlusTerm(p, 0, 365365, 1, 3, 11, r); |
---|
| 553 | specialPlusTerm(p, 0, 147147, 1, 2, 11, r); |
---|
| 554 | specialPlusTerm(p, 0, 45045, 1, 1, 11, r); |
---|
| 555 | specialPlusTerm(p, 0, 8008, 1, 0, 11, r); |
---|
| 556 | specialPlusTerm(p, 0, 1, -1, 84, 10, r); |
---|
| 557 | specialPlusTerm(p, 0, 8, -1, 83, 10, r); |
---|
| 558 | specialPlusTerm(p, 0, 37, -1, 82, 10, r); |
---|
| 559 | specialPlusTerm(p, 0, 129, -1, 81, 10, r); |
---|
| 560 | specialPlusTerm(p, 0, 376, -1, 80, 10, r); |
---|
| 561 | specialPlusTerm(p, 0, 966, -1, 79, 10, r); |
---|
| 562 | specialPlusTerm(p, 0, 2258, -1, 78, 10, r); |
---|
| 563 | specialPlusTerm(p, 0, 4902, -1, 77, 10, r); |
---|
| 564 | specialPlusTerm(p, 0, 10025, -1, 76, 10, r); |
---|
| 565 | specialPlusTerm(p, 0, 19511, -1, 75, 10, r); |
---|
| 566 | specialPlusTerm(p, 0, 36402, -1, 74, 10, r); |
---|
| 567 | specialPlusTerm(p, 0, 65457, -1, 73, 10, r); |
---|
| 568 | specialPlusTerm(p, 0, 113910, -1, 72, 10, r); |
---|
| 569 | specialPlusTerm(p, 0, 192472, -1, 71, 10, r); |
---|
| 570 | specialPlusTerm(p, 0, 316620, -1, 70, 10, r); |
---|
| 571 | specialPlusTerm(p, 0, 508215, -1, 69, 10, r); |
---|
| 572 | specialPlusTerm(p, 0, 797473, -1, 68, 10, r); |
---|
| 573 | specialPlusTerm(p, 1, 225306, -1, 67, 10, r); |
---|
| 574 | specialPlusTerm(p, 1, 846017, -1, 66, 10, r); |
---|
| 575 | specialPlusTerm(p, 2, 730299, -1, 65, 10, r); |
---|
| 576 | specialPlusTerm(p, 3, 968427, -1, 64, 10, r); |
---|
| 577 | specialPlusTerm(p, 5, 673536, -1, 63, 10, r); |
---|
| 578 | specialPlusTerm(p, 7, 984777, -1, 62, 10, r); |
---|
| 579 | specialPlusTerm(p, 11, 70116, -1, 61, 10, r); |
---|
| 580 | specialPlusTerm(p, 15, 128465, -1, 60, 10, r); |
---|
| 581 | specialPlusTerm(p, 20, 390819, -1, 59, 10, r); |
---|
| 582 | specialPlusTerm(p, 27, 120017, -1, 58, 10, r); |
---|
| 583 | specialPlusTerm(p, 35, 608761, -1, 57, 10, r); |
---|
| 584 | specialPlusTerm(p, 46, 175479, -1, 56, 10, r); |
---|
| 585 | specialPlusTerm(p, 59, 157726, -1, 55, 10, r); |
---|
| 586 | specialPlusTerm(p, 74, 902862, -1, 54, 10, r); |
---|
| 587 | specialPlusTerm(p, 93, 755945, -1, 53, 10, r); |
---|
| 588 | specialPlusTerm(p, 116, 44932, -1, 52, 10, r); |
---|
| 589 | specialPlusTerm(p, 142, 63382, -1, 51, 10, r); |
---|
| 590 | specialPlusTerm(p, 172, 51120, -1, 50, 10, r); |
---|
| 591 | specialPlusTerm(p, 206, 173563, -1, 49, 10, r); |
---|
| 592 | specialPlusTerm(p, 244, 500607, -1, 48, 10, r); |
---|
| 593 | specialPlusTerm(p, 286, 986083, -1, 47, 10, r); |
---|
| 594 | specialPlusTerm(p, 333, 449096, -1, 46, 10, r); |
---|
| 595 | specialPlusTerm(p, 383, 558571, -1, 45, 10, r); |
---|
| 596 | specialPlusTerm(p, 436, 822461, -1, 44, 10, r); |
---|
| 597 | specialPlusTerm(p, 492, 582939, -1, 43, 10, r); |
---|
| 598 | specialPlusTerm(p, 550, 18832, -1, 42, 10, r); |
---|
| 599 | specialPlusTerm(p, 608, 156141, -1, 41, 10, r); |
---|
| 600 | specialPlusTerm(p, 665, 887167, -1, 40, 10, r); |
---|
| 601 | specialPlusTerm(p, 721, 997807, -1, 39, 10, r); |
---|
| 602 | specialPlusTerm(p, 775, 202852, -1, 38, 10, r); |
---|
| 603 | specialPlusTerm(p, 824, 187996, -1, 37, 10, r); |
---|
| 604 | specialPlusTerm(p, 867, 657138, -1, 36, 10, r); |
---|
| 605 | specialPlusTerm(p, 904, 382945, -1, 35, 10, r); |
---|
| 606 | specialPlusTerm(p, 933, 258541, -1, 34, 10, r); |
---|
| 607 | specialPlusTerm(p, 953, 347368, -1, 33, 10, r); |
---|
| 608 | specialPlusTerm(p, 963, 928871, -1, 32, 10, r); |
---|
| 609 | specialPlusTerm(p, 964, 536834, -1, 31, 10, r); |
---|
| 610 | specialPlusTerm(p, 954, 987850, -1, 30, 10, r); |
---|
| 611 | specialPlusTerm(p, 935, 397536, -1, 29, 10, r); |
---|
| 612 | specialPlusTerm(p, 906, 183073, -1, 28, 10, r); |
---|
| 613 | specialPlusTerm(p, 868, 50862, -1, 27, 10, r); |
---|
| 614 | specialPlusTerm(p, 821, 970338, -1, 26, 10, r); |
---|
| 615 | specialPlusTerm(p, 769, 135827, -1, 25, 10, r); |
---|
| 616 | specialPlusTerm(p, 710, 918057, -1, 24, 10, r); |
---|
| 617 | specialPlusTerm(p, 648, 808233, -1, 23, 10, r); |
---|
| 618 | specialPlusTerm(p, 584, 357073, -1, 22, 10, r); |
---|
| 619 | specialPlusTerm(p, 519, 112032, -1, 21, 10, r); |
---|
| 620 | specialPlusTerm(p, 454, 555728, -1, 20, 10, r); |
---|
| 621 | specialPlusTerm(p, 392, 49009, -1, 19, 10, r); |
---|
| 622 | specialPlusTerm(p, 332, 781273, -1, 18, 10, r); |
---|
| 623 | specialPlusTerm(p, 277, 731388, -1, 17, 10, r); |
---|
| 624 | specialPlusTerm(p, 227, 641117, -1, 16, 10, r); |
---|
| 625 | specialPlusTerm(p, 183, 2853, -1, 15, 10, r); |
---|
| 626 | specialPlusTerm(p, 144, 62127, -1, 14, 10, r); |
---|
| 627 | specialPlusTerm(p, 110, 834647, -1, 13, 10, r); |
---|
| 628 | specialPlusTerm(p, 83, 135184, -1, 12, 10, r); |
---|
| 629 | specialPlusTerm(p, 60, 614741, -1, 11, 10, r); |
---|
| 630 | specialPlusTerm(p, 42, 799119, -1, 10, 10, r); |
---|
| 631 | specialPlusTerm(p, 29, 127956, -1, 9, 10, r); |
---|
| 632 | specialPlusTerm(p, 18, 992545, -1, 8, 10, r); |
---|
| 633 | specialPlusTerm(p, 11, 771474, -1, 7, 10, r); |
---|
| 634 | specialPlusTerm(p, 6, 862141, -1, 6, 10, r); |
---|
| 635 | specialPlusTerm(p, 3, 707704, -1, 5, 10, r); |
---|
| 636 | specialPlusTerm(p, 1, 817816, -1, 4, 10, r); |
---|
| 637 | specialPlusTerm(p, 0, 782782, -1, 3, 10, r); |
---|
| 638 | specialPlusTerm(p, 0, 280280, -1, 2, 10, r); |
---|
| 639 | specialPlusTerm(p, 0, 75075, -1, 1, 10, r); |
---|
| 640 | specialPlusTerm(p, 0, 11440, -1, 0, 10, r); |
---|
| 641 | specialPlusTerm(p, 0, 1, 1, 92, 9, r); |
---|
| 642 | specialPlusTerm(p, 0, 9, 1, 91, 9, r); |
---|
| 643 | specialPlusTerm(p, 0, 46, 1, 90, 9, r); |
---|
| 644 | specialPlusTerm(p, 0, 175, 1, 89, 9, r); |
---|
| 645 | specialPlusTerm(p, 0, 551, 1, 88, 9, r); |
---|
| 646 | specialPlusTerm(p, 0, 1517, 1, 87, 9, r); |
---|
| 647 | specialPlusTerm(p, 0, 3775, 1, 86, 9, r); |
---|
| 648 | specialPlusTerm(p, 0, 8677, 1, 85, 9, r); |
---|
| 649 | specialPlusTerm(p, 0, 18703, 1, 84, 9, r); |
---|
| 650 | specialPlusTerm(p, 0, 38212, 1, 83, 9, r); |
---|
| 651 | specialPlusTerm(p, 0, 74581, 1, 82, 9, r); |
---|
| 652 | specialPlusTerm(p, 0, 139877, 1, 81, 9, r); |
---|
| 653 | specialPlusTerm(p, 0, 253243, 1, 80, 9, r); |
---|
| 654 | specialPlusTerm(p, 0, 444211, 1, 79, 9, r); |
---|
| 655 | specialPlusTerm(p, 0, 757189, 1, 78, 9, r); |
---|
| 656 | specialPlusTerm(p, 1, 257386, 1, 77, 9, r); |
---|
| 657 | specialPlusTerm(p, 2, 38445, 1, 76, 9, r); |
---|
| 658 | specialPlusTerm(p, 3, 232029, 1, 75, 9, r); |
---|
| 659 | specialPlusTerm(p, 5, 19547, 1, 74, 9, r); |
---|
| 660 | specialPlusTerm(p, 7, 646140, 1, 73, 9, r); |
---|
| 661 | specialPlusTerm(p, 11, 436924, 1, 72, 9, r); |
---|
| 662 | specialPlusTerm(p, 16, 815312, 1, 71, 9, r); |
---|
| 663 | specialPlusTerm(p, 24, 323016, 1, 70, 9, r); |
---|
| 664 | specialPlusTerm(p, 34, 641066, 1, 69, 9, r); |
---|
| 665 | specialPlusTerm(p, 48, 610873, 1, 68, 9, r); |
---|
| 666 | specialPlusTerm(p, 67, 254061, 1, 67, 9, r); |
---|
| 667 | specialPlusTerm(p, 91, 789450, 1, 66, 9, r); |
---|
| 668 | specialPlusTerm(p, 123, 645277, 1, 65, 9, r); |
---|
| 669 | specialPlusTerm(p, 164, 464508, 1, 64, 9, r); |
---|
| 670 | specialPlusTerm(p, 216, 101017, 1, 63, 9, r); |
---|
| 671 | specialPlusTerm(p, 280, 604281, 1, 62, 9, r); |
---|
| 672 | specialPlusTerm(p, 360, 190441, 1, 61, 9, r); |
---|
| 673 | specialPlusTerm(p, 457, 197865, 1, 60, 9, r); |
---|
| 674 | specialPlusTerm(p, 574, 25922, 1, 59, 9, r); |
---|
| 675 | specialPlusTerm(p, 713, 56365, 1, 58, 9, r); |
---|
| 676 | specialPlusTerm(p, 876, 557703, 1, 57, 9, r); |
---|
| 677 | specialPlusTerm(p, 1066, 573992, 1, 56, 9, r); |
---|
| 678 | specialPlusTerm(p, 1284, 800887, 1, 55, 9, r); |
---|
| 679 | specialPlusTerm(p, 1532, 453056, 1, 54, 9, r); |
---|
| 680 | specialPlusTerm(p, 1810, 128450, 1, 53, 9, r); |
---|
| 681 | specialPlusTerm(p, 2117, 675954, 1, 52, 9, r); |
---|
| 682 | specialPlusTerm(p, 2454, 73820, 1, 51, 9, r); |
---|
| 683 | specialPlusTerm(p, 2817, 326941, 1, 50, 9, r); |
---|
| 684 | specialPlusTerm(p, 3204, 391243, 1, 49, 9, r); |
---|
| 685 | specialPlusTerm(p, 3611, 133043, 1, 48, 9, r); |
---|
| 686 | specialPlusTerm(p, 4032, 330356, 1, 47, 9, r); |
---|
| 687 | specialPlusTerm(p, 4461, 721846, 1, 46, 9, r); |
---|
| 688 | specialPlusTerm(p, 4892, 107024, 1, 45, 9, r); |
---|
| 689 | specialPlusTerm(p, 5315, 498836, 1, 44, 9, r); |
---|
| 690 | specialPlusTerm(p, 5723, 326840, 1, 43, 9, r); |
---|
| 691 | specialPlusTerm(p, 6106, 686025, 1, 42, 9, r); |
---|
| 692 | specialPlusTerm(p, 6456, 623000, 1, 41, 9, r); |
---|
| 693 | specialPlusTerm(p, 6764, 448368, 1, 40, 9, r); |
---|
| 694 | specialPlusTerm(p, 7022, 61523, 1, 39, 9, r); |
---|
| 695 | specialPlusTerm(p, 7222, 273135, 1, 38, 9, r); |
---|
| 696 | specialPlusTerm(p, 7359, 108966, 1, 37, 9, r); |
---|
| 697 | specialPlusTerm(p, 7428, 79054, 1, 36, 9, r); |
---|
| 698 | specialPlusTerm(p, 7426, 396980, 1, 35, 9, r); |
---|
| 699 | specialPlusTerm(p, 7353, 135921, 1, 34, 9, r); |
---|
| 700 | specialPlusTerm(p, 7209, 310506, 1, 33, 9, r); |
---|
| 701 | specialPlusTerm(p, 6997, 877688, 1, 32, 9, r); |
---|
| 702 | specialPlusTerm(p, 6723, 653256, 1, 31, 9, r); |
---|
| 703 | specialPlusTerm(p, 6393, 146079, 1, 30, 9, r); |
---|
| 704 | specialPlusTerm(p, 6014, 316858, 1, 29, 9, r); |
---|
| 705 | specialPlusTerm(p, 5596, 273275, 1, 28, 9, r); |
---|
| 706 | specialPlusTerm(p, 5148, 917160, 1, 27, 9, r); |
---|
| 707 | specialPlusTerm(p, 4682, 563401, 1, 26, 9, r); |
---|
| 708 | specialPlusTerm(p, 4207, 550601, 1, 25, 9, r); |
---|
| 709 | specialPlusTerm(p, 3733, 862769, 1, 24, 9, r); |
---|
| 710 | specialPlusTerm(p, 3270, 780702, 1, 23, 9, r); |
---|
| 711 | specialPlusTerm(p, 2826, 579105, 1, 22, 9, r); |
---|
| 712 | specialPlusTerm(p, 2408, 283186, 1, 21, 9, r); |
---|
| 713 | specialPlusTerm(p, 2021, 494926, 1, 20, 9, r); |
---|
| 714 | specialPlusTerm(p, 1670, 295297, 1, 19, 9, r); |
---|
| 715 | specialPlusTerm(p, 1357, 224099, 1, 18, 9, r); |
---|
| 716 | specialPlusTerm(p, 1083, 335088, 1, 17, 9, r); |
---|
| 717 | specialPlusTerm(p, 848, 318658, 1, 16, 9, r); |
---|
| 718 | specialPlusTerm(p, 650, 680536, 1, 15, 9, r); |
---|
| 719 | specialPlusTerm(p, 487, 961232, 1, 14, 9, r); |
---|
| 720 | specialPlusTerm(p, 356, 978589, 1, 13, 9, r); |
---|
| 721 | specialPlusTerm(p, 254, 74425, 1, 12, 9, r); |
---|
| 722 | specialPlusTerm(p, 175, 348338, 1, 11, 9, r); |
---|
| 723 | specialPlusTerm(p, 116, 865243, 1, 10, 9, r); |
---|
| 724 | specialPlusTerm(p, 74, 831757, 1, 9, 9, r); |
---|
| 725 | specialPlusTerm(p, 45, 737406, 1, 8, 9, r); |
---|
| 726 | specialPlusTerm(p, 26, 458575, 1, 7, 9, r); |
---|
| 727 | specialPlusTerm(p, 14, 324310, 1, 6, 9, r); |
---|
| 728 | specialPlusTerm(p, 7, 145853, 1, 5, 9, r); |
---|
| 729 | specialPlusTerm(p, 3, 212352, 1, 4, 9, r); |
---|
| 730 | specialPlusTerm(p, 1, 257828, 1, 3, 9, r); |
---|
| 731 | specialPlusTerm(p, 0, 405405, 1, 2, 9, r); |
---|
| 732 | specialPlusTerm(p, 0, 96525, 1, 1, 9, r); |
---|
| 733 | specialPlusTerm(p, 0, 12870, 1, 0, 9, r); |
---|
| 734 | specialPlusTerm(p, 0, 1, -1, 99, 8, r); |
---|
| 735 | specialPlusTerm(p, 0, 10, -1, 98, 8, r); |
---|
| 736 | specialPlusTerm(p, 0, 56, -1, 97, 8, r); |
---|
| 737 | specialPlusTerm(p, 0, 231, -1, 96, 8, r); |
---|
| 738 | specialPlusTerm(p, 0, 782, -1, 95, 8, r); |
---|
| 739 | specialPlusTerm(p, 0, 2299, -1, 94, 8, r); |
---|
| 740 | specialPlusTerm(p, 0, 6074, -1, 93, 8, r); |
---|
| 741 | specialPlusTerm(p, 0, 14751, -1, 92, 8, r); |
---|
| 742 | specialPlusTerm(p, 0, 33445, -1, 91, 8, r); |
---|
| 743 | specialPlusTerm(p, 0, 71586, -1, 90, 8, r); |
---|
| 744 | specialPlusTerm(p, 0, 145843, -1, 89, 8, r); |
---|
| 745 | specialPlusTerm(p, 0, 284605, -1, 88, 8, r); |
---|
| 746 | specialPlusTerm(p, 0, 534639, -1, 87, 8, r); |
---|
| 747 | specialPlusTerm(p, 0, 970707, -1, 86, 8, r); |
---|
| 748 | specialPlusTerm(p, 1, 709091, -1, 85, 8, r); |
---|
| 749 | specialPlusTerm(p, 2, 926134, -1, 84, 8, r); |
---|
| 750 | specialPlusTerm(p, 4, 883022, -1, 83, 8, r); |
---|
| 751 | specialPlusTerm(p, 7, 958118, -1, 82, 8, r); |
---|
| 752 | specialPlusTerm(p, 12, 688161, -1, 81, 8, r); |
---|
| 753 | specialPlusTerm(p, 19, 819543, -1, 80, 8, r); |
---|
| 754 | specialPlusTerm(p, 30, 370620, -1, 79, 8, r); |
---|
| 755 | specialPlusTerm(p, 45, 705588, -1, 78, 8, r); |
---|
| 756 | specialPlusTerm(p, 67, 619803, -1, 77, 8, r); |
---|
| 757 | specialPlusTerm(p, 98, 435565, -1, 76, 8, r); |
---|
| 758 | specialPlusTerm(p, 141, 106293, -1, 75, 8, r); |
---|
| 759 | specialPlusTerm(p, 199, 325748, -1, 74, 8, r); |
---|
| 760 | specialPlusTerm(p, 277, 637550, -1, 73, 8, r); |
---|
| 761 | specialPlusTerm(p, 381, 538692, -1, 72, 8, r); |
---|
| 762 | specialPlusTerm(p, 517, 569184, -1, 71, 8, r); |
---|
| 763 | specialPlusTerm(p, 693, 378528, -1, 70, 8, r); |
---|
| 764 | specialPlusTerm(p, 917, 758545, -1, 69, 8, r); |
---|
| 765 | specialPlusTerm(p, 1200, 631327, -1, 68, 8, r); |
---|
| 766 | specialPlusTerm(p, 1552, 980935, -1, 67, 8, r); |
---|
| 767 | specialPlusTerm(p, 1986, 718008, -1, 66, 8, r); |
---|
| 768 | specialPlusTerm(p, 2514, 467898, -1, 65, 8, r); |
---|
| 769 | specialPlusTerm(p, 3149, 275373, -1, 64, 8, r); |
---|
| 770 | specialPlusTerm(p, 3904, 222333, -1, 63, 8, r); |
---|
| 771 | specialPlusTerm(p, 4791, 959202, -1, 62, 8, r); |
---|
| 772 | specialPlusTerm(p, 5824, 155954, -1, 61, 8, r); |
---|
| 773 | specialPlusTerm(p, 7010, 884530, -1, 60, 8, r); |
---|
| 774 | specialPlusTerm(p, 8359, 950639, -1, 59, 8, r); |
---|
| 775 | specialPlusTerm(p, 9876, 199091, -1, 58, 8, r); |
---|
| 776 | specialPlusTerm(p, 11560, 822647, -1, 57, 8, r); |
---|
| 777 | specialPlusTerm(p, 13410, 709233, -1, 56, 8, r); |
---|
| 778 | specialPlusTerm(p, 15417, 866033, -1, 55, 8, r); |
---|
| 779 | specialPlusTerm(p, 17568, 960466, -1, 54, 8, r); |
---|
| 780 | specialPlusTerm(p, 19845, 17463, -1, 53, 8, r); |
---|
| 781 | specialPlusTerm(p, 22221, 309147, -1, 52, 8, r); |
---|
| 782 | specialPlusTerm(p, 24667, 467342, -1, 51, 8, r); |
---|
| 783 | specialPlusTerm(p, 27147, 841107, -1, 50, 8, r); |
---|
| 784 | specialPlusTerm(p, 29622, 110916, -1, 49, 8, r); |
---|
| 785 | specialPlusTerm(p, 32046, 158421, -1, 48, 8, r); |
---|
| 786 | specialPlusTerm(p, 34373, 176970, -1, 47, 8, r); |
---|
| 787 | specialPlusTerm(p, 36554, 993654, -1, 46, 8, r); |
---|
| 788 | specialPlusTerm(p, 38543, 559373, -1, 45, 8, r); |
---|
| 789 | specialPlusTerm(p, 40292, 550458, -1, 44, 8, r); |
---|
| 790 | specialPlusTerm(p, 41759, 14716, -1, 43, 8, r); |
---|
| 791 | specialPlusTerm(p, 42904, 987186, -1, 42, 8, r); |
---|
| 792 | specialPlusTerm(p, 43698, 997388, -1, 41, 8, r); |
---|
| 793 | specialPlusTerm(p, 44117, 391022, -1, 40, 8, r); |
---|
| 794 | specialPlusTerm(p, 44145, 394986, -1, 39, 8, r); |
---|
| 795 | specialPlusTerm(p, 43777, 865188, -1, 38, 8, r); |
---|
| 796 | specialPlusTerm(p, 43019, 670206, -1, 37, 8, r); |
---|
| 797 | specialPlusTerm(p, 41885, 681598, -1, 36, 8, r); |
---|
| 798 | specialPlusTerm(p, 40400, 361216, -1, 35, 8, r); |
---|
| 799 | specialPlusTerm(p, 38596, 956954, -1, 34, 8, r); |
---|
| 800 | specialPlusTerm(p, 36516, 339240, -1, 33, 8, r); |
---|
| 801 | specialPlusTerm(p, 34205, 530818, -1, 32, 8, r); |
---|
| 802 | specialPlusTerm(p, 31715, 999202, -1, 31, 8, r); |
---|
| 803 | specialPlusTerm(p, 29101, 795368, -1, 30, 8, r); |
---|
| 804 | specialPlusTerm(p, 26417, 630514, -1, 29, 8, r); |
---|
| 805 | specialPlusTerm(p, 23716, 985664, -1, 28, 8, r); |
---|
| 806 | specialPlusTerm(p, 21050, 345182, -1, 27, 8, r); |
---|
| 807 | specialPlusTerm(p, 18463, 636290, -1, 26, 8, r); |
---|
| 808 | specialPlusTerm(p, 15996, 940992, -1, 25, 8, r); |
---|
| 809 | specialPlusTerm(p, 13683, 529134, -1, 24, 8, r); |
---|
| 810 | specialPlusTerm(p, 11549, 242308, -1, 23, 8, r); |
---|
| 811 | specialPlusTerm(p, 9612, 238032, -1, 22, 8, r); |
---|
| 812 | specialPlusTerm(p, 7883, 84208, -1, 21, 8, r); |
---|
| 813 | specialPlusTerm(p, 6365, 175366, -1, 20, 8, r); |
---|
| 814 | specialPlusTerm(p, 5055, 425826, -1, 19, 8, r); |
---|
| 815 | specialPlusTerm(p, 3945, 181834, -1, 18, 8, r); |
---|
| 816 | specialPlusTerm(p, 3021, 285630, -1, 17, 8, r); |
---|
| 817 | specialPlusTerm(p, 2267, 219328, -1, 16, 8, r); |
---|
| 818 | specialPlusTerm(p, 1664, 257320, -1, 15, 8, r); |
---|
| 819 | specialPlusTerm(p, 1192, 561524, -1, 14, 8, r); |
---|
| 820 | specialPlusTerm(p, 832, 164102, -1, 13, 8, r); |
---|
| 821 | specialPlusTerm(p, 563, 796684, -1, 12, 8, r); |
---|
| 822 | specialPlusTerm(p, 369, 542514, -1, 11, 8, r); |
---|
| 823 | specialPlusTerm(p, 233, 304720, -1, 10, 8, r); |
---|
| 824 | specialPlusTerm(p, 141, 98386, -1, 9, 8, r); |
---|
| 825 | specialPlusTerm(p, 81, 180528, -1, 8, 8, r); |
---|
| 826 | specialPlusTerm(p, 44, 38137, -1, 7, 8, r); |
---|
| 827 | specialPlusTerm(p, 22, 259094, -1, 6, 8, r); |
---|
| 828 | specialPlusTerm(p, 10, 314447, -1, 5, 8, r); |
---|
| 829 | specialPlusTerm(p, 4, 281420, -1, 4, 8, r); |
---|
| 830 | specialPlusTerm(p, 1, 537107, -1, 3, 8, r); |
---|
| 831 | specialPlusTerm(p, 0, 450450, -1, 2, 8, r); |
---|
| 832 | specialPlusTerm(p, 0, 96525, -1, 1, 8, r); |
---|
| 833 | specialPlusTerm(p, 0, 11440, -1, 0, 8, r); |
---|
| 834 | specialPlusTerm(p, 0, 1, 1, 105, 7, r); |
---|
| 835 | specialPlusTerm(p, 0, 11, 1, 104, 7, r); |
---|
| 836 | specialPlusTerm(p, 0, 67, 1, 103, 7, r); |
---|
| 837 | specialPlusTerm(p, 0, 298, 1, 102, 7, r); |
---|
| 838 | specialPlusTerm(p, 0, 1080, 1, 101, 7, r); |
---|
| 839 | specialPlusTerm(p, 0, 3379, 1, 100, 7, r); |
---|
| 840 | specialPlusTerm(p, 0, 9453, 1, 99, 7, r); |
---|
| 841 | specialPlusTerm(p, 0, 24196, 1, 98, 7, r); |
---|
| 842 | specialPlusTerm(p, 0, 57569, 1, 97, 7, r); |
---|
| 843 | specialPlusTerm(p, 0, 128787, 1, 96, 7, r); |
---|
| 844 | specialPlusTerm(p, 0, 273231, 1, 95, 7, r); |
---|
| 845 | specialPlusTerm(p, 0, 553438, 1, 94, 7, r); |
---|
| 846 | specialPlusTerm(p, 1, 75997, 1, 93, 7, r); |
---|
| 847 | specialPlusTerm(p, 2, 16735, 1, 92, 7, r); |
---|
| 848 | specialPlusTerm(p, 3, 657192, 1, 91, 7, r); |
---|
| 849 | specialPlusTerm(p, 6, 436037, 1, 90, 7, r); |
---|
| 850 | specialPlusTerm(p, 11, 19717, 1, 89, 7, r); |
---|
| 851 | specialPlusTerm(p, 18, 397189, 1, 88, 7, r); |
---|
| 852 | specialPlusTerm(p, 30, 3973, 1, 87, 7, r); |
---|
| 853 | specialPlusTerm(p, 47, 880870, 1, 86, 7, r); |
---|
| 854 | specialPlusTerm(p, 74, 872383, 1, 85, 7, r); |
---|
| 855 | specialPlusTerm(p, 114, 869036, 1, 84, 7, r); |
---|
| 856 | specialPlusTerm(p, 173, 96283, 1, 83, 7, r); |
---|
| 857 | specialPlusTerm(p, 256, 450472, 1, 82, 7, r); |
---|
| 858 | specialPlusTerm(p, 373, 879259, 1, 81, 7, r); |
---|
| 859 | specialPlusTerm(p, 536, 799939, 1, 80, 7, r); |
---|
| 860 | specialPlusTerm(p, 759, 544391, 1, 79, 7, r); |
---|
| 861 | specialPlusTerm(p, 1059, 813880, 1, 78, 7, r); |
---|
| 862 | specialPlusTerm(p, 1459, 121011, 1, 77, 7, r); |
---|
| 863 | specialPlusTerm(p, 1983, 190069, 1, 76, 7, r); |
---|
| 864 | specialPlusTerm(p, 2662, 281192, 1, 75, 7, r); |
---|
| 865 | specialPlusTerm(p, 3531, 398853, 1, 74, 7, r); |
---|
| 866 | specialPlusTerm(p, 4630, 341477, 1, 73, 7, r); |
---|
| 867 | specialPlusTerm(p, 6003, 547268, 1, 72, 7, r); |
---|
| 868 | specialPlusTerm(p, 7699, 692101, 1, 71, 7, r); |
---|
| 869 | specialPlusTerm(p, 9770, 999253, 1, 70, 7, r); |
---|
| 870 | specialPlusTerm(p, 12272, 228155, 1, 69, 7, r); |
---|
| 871 | specialPlusTerm(p, 15259, 320516, 1, 68, 7, r); |
---|
| 872 | specialPlusTerm(p, 18787, 697047, 1, 67, 7, r); |
---|
| 873 | specialPlusTerm(p, 22910, 216326, 1, 66, 7, r); |
---|
| 874 | specialPlusTerm(p, 27674, 828551, 1, 65, 7, r); |
---|
| 875 | specialPlusTerm(p, 33121, 980096, 1, 64, 7, r); |
---|
| 876 | specialPlusTerm(p, 39281, 848637, 1, 63, 7, r); |
---|
| 877 | specialPlusTerm(p, 46171, 511745, 1, 62, 7, r); |
---|
| 878 | specialPlusTerm(p, 53792, 172793, 1, 61, 7, r); |
---|
| 879 | specialPlusTerm(p, 62126, 584715, 1, 60, 7, r); |
---|
| 880 | specialPlusTerm(p, 71136, 823074, 1, 59, 7, r); |
---|
| 881 | specialPlusTerm(p, 80762, 563409, 1, 58, 7, r); |
---|
| 882 | specialPlusTerm(p, 90920, 12755, 1, 57, 7, r); |
---|
| 883 | specialPlusTerm(p, 101501, 630586, 1, 56, 7, r); |
---|
| 884 | specialPlusTerm(p, 112376, 750037, 1, 55, 7, r); |
---|
| 885 | specialPlusTerm(p, 123393, 176185, 1, 54, 7, r); |
---|
| 886 | specialPlusTerm(p, 134379, 795971, 1, 53, 7, r); |
---|
| 887 | specialPlusTerm(p, 145150, 185558, 1, 52, 7, r); |
---|
| 888 | specialPlusTerm(p, 155507, 148257, 1, 51, 7, r); |
---|
| 889 | specialPlusTerm(p, 165248, 62169, 1, 50, 7, r); |
---|
| 890 | specialPlusTerm(p, 174170, 864688, 1, 49, 7, r); |
---|
| 891 | specialPlusTerm(p, 182080, 454274, 1, 48, 7, r); |
---|
| 892 | specialPlusTerm(p, 188795, 252141, 1, 47, 7, r); |
---|
| 893 | specialPlusTerm(p, 194153, 640367, 1, 46, 7, r); |
---|
| 894 | specialPlusTerm(p, 198019, 981033, 1, 45, 7, r); |
---|
| 895 | specialPlusTerm(p, 200289, 925212, 1, 44, 7, r); |
---|
| 896 | specialPlusTerm(p, 200894, 741748, 1, 43, 7, r); |
---|
| 897 | specialPlusTerm(p, 199804, 433264, 1, 42, 7, r); |
---|
| 898 | specialPlusTerm(p, 197029, 459520, 1, 41, 7, r); |
---|
| 899 | specialPlusTerm(p, 192620, 953188, 1, 40, 7, r); |
---|
| 900 | specialPlusTerm(p, 186669, 386562, 1, 39, 7, r); |
---|
| 901 | specialPlusTerm(p, 179301, 725204, 1, 38, 7, r); |
---|
| 902 | specialPlusTerm(p, 170677, 181240, 1, 37, 7, r); |
---|
| 903 | specialPlusTerm(p, 160981, 751274, 1, 36, 7, r); |
---|
| 904 | specialPlusTerm(p, 150421, 786460, 1, 35, 7, r); |
---|
| 905 | specialPlusTerm(p, 139216, 891710, 1, 34, 7, r); |
---|
| 906 | specialPlusTerm(p, 127592, 483930, 1, 33, 7, r); |
---|
| 907 | specialPlusTerm(p, 115772, 353582, 1, 32, 7, r); |
---|
| 908 | specialPlusTerm(p, 103971, 568098, 1, 31, 7, r); |
---|
| 909 | specialPlusTerm(p, 92390, 30732, 1, 30, 7, r); |
---|
| 910 | specialPlusTerm(p, 81206, 964790, 1, 29, 7, r); |
---|
| 911 | specialPlusTerm(p, 70576, 534794, 1, 28, 7, r); |
---|
| 912 | specialPlusTerm(p, 60624, 746714, 1, 27, 7, r); |
---|
| 913 | specialPlusTerm(p, 51447, 694586, 1, 26, 7, r); |
---|
| 914 | specialPlusTerm(p, 43111, 145244, 1, 25, 7, r); |
---|
| 915 | specialPlusTerm(p, 35651, 383472, 1, 24, 7, r); |
---|
| 916 | specialPlusTerm(p, 29077, 179220, 1, 23, 7, r); |
---|
| 917 | specialPlusTerm(p, 23372, 689230, 1, 22, 7, r); |
---|
| 918 | specialPlusTerm(p, 18501, 69995, 1, 21, 7, r); |
---|
| 919 | specialPlusTerm(p, 14408, 558395, 1, 20, 7, r); |
---|
| 920 | specialPlusTerm(p, 11028, 771237, 1, 19, 7, r); |
---|
| 921 | specialPlusTerm(p, 8286, 985223, 1, 18, 7, r); |
---|
| 922 | specialPlusTerm(p, 6104, 182964, 1, 17, 7, r); |
---|
| 923 | specialPlusTerm(p, 4400, 686554, 1, 16, 7, r); |
---|
| 924 | specialPlusTerm(p, 3099, 245270, 1, 15, 7, r); |
---|
| 925 | specialPlusTerm(p, 2127, 493720, 1, 14, 7, r); |
---|
| 926 | specialPlusTerm(p, 1419, 747120, 1, 13, 7, r); |
---|
| 927 | specialPlusTerm(p, 918, 147362, 1, 12, 7, r); |
---|
| 928 | specialPlusTerm(p, 573, 212794, 1, 11, 7, r); |
---|
| 929 | specialPlusTerm(p, 343, 872738, 1, 10, 7, r); |
---|
| 930 | specialPlusTerm(p, 197, 84030, 1, 9, 7, r); |
---|
| 931 | specialPlusTerm(p, 107, 132168, 1, 8, 7, r); |
---|
| 932 | specialPlusTerm(p, 54, 719808, 1, 7, 7, r); |
---|
| 933 | specialPlusTerm(p, 25, 940200, 1, 6, 7, r); |
---|
| 934 | specialPlusTerm(p, 11, 223212, 1, 5, 7, r); |
---|
| 935 | specialPlusTerm(p, 4, 327323, 1, 4, 7, r); |
---|
| 936 | specialPlusTerm(p, 1, 434433, 1, 3, 7, r); |
---|
| 937 | specialPlusTerm(p, 0, 385385, 1, 2, 7, r); |
---|
| 938 | specialPlusTerm(p, 0, 75075, 1, 1, 7, r); |
---|
| 939 | specialPlusTerm(p, 0, 8008, 1, 0, 7, r); |
---|
| 940 | specialPlusTerm(p, 0, 1, -1, 110, 6, r); |
---|
| 941 | specialPlusTerm(p, 0, 12, -1, 109, 6, r); |
---|
| 942 | specialPlusTerm(p, 0, 79, -1, 108, 6, r); |
---|
| 943 | specialPlusTerm(p, 0, 377, -1, 107, 6, r); |
---|
| 944 | specialPlusTerm(p, 0, 1457, -1, 106, 6, r); |
---|
| 945 | specialPlusTerm(p, 0, 4836, -1, 105, 6, r); |
---|
| 946 | specialPlusTerm(p, 0, 14282, -1, 104, 6, r); |
---|
| 947 | specialPlusTerm(p, 0, 38408, -1, 103, 6, r); |
---|
| 948 | specialPlusTerm(p, 0, 95585, -1, 102, 6, r); |
---|
| 949 | specialPlusTerm(p, 0, 222755, -1, 101, 6, r); |
---|
| 950 | specialPlusTerm(p, 0, 490512, -1, 100, 6, r); |
---|
| 951 | specialPlusTerm(p, 1, 27858, -1, 99, 6, r); |
---|
| 952 | specialPlusTerm(p, 2, 61348, -1, 98, 6, r); |
---|
| 953 | specialPlusTerm(p, 3, 974921, -1, 97, 6, r); |
---|
| 954 | specialPlusTerm(p, 7, 398548, -1, 96, 6, r); |
---|
| 955 | specialPlusTerm(p, 13, 335851, -1, 95, 6, r); |
---|
| 956 | specialPlusTerm(p, 23, 342939, -1, 94, 6, r); |
---|
| 957 | specialPlusTerm(p, 39, 772696, -1, 93, 6, r); |
---|
| 958 | specialPlusTerm(p, 66, 100395, -1, 92, 6, r); |
---|
| 959 | specialPlusTerm(p, 107, 347509, -1, 91, 6, r); |
---|
| 960 | specialPlusTerm(p, 170, 620609, -1, 90, 6, r); |
---|
| 961 | specialPlusTerm(p, 265, 780891, -1, 89, 6, r); |
---|
| 962 | specialPlusTerm(p, 406, 256761, -1, 88, 6, r); |
---|
| 963 | specialPlusTerm(p, 610, 6662, -1, 87, 6, r); |
---|
| 964 | specialPlusTerm(p, 900, 631638, -1, 86, 6, r); |
---|
| 965 | specialPlusTerm(p, 1308, 626820, -1, 85, 6, r); |
---|
| 966 | specialPlusTerm(p, 1872, 748088, -1, 84, 6, r); |
---|
| 967 | specialPlusTerm(p, 2641, 454830, -1, 83, 6, r); |
---|
| 968 | specialPlusTerm(p, 3674, 372459, -1, 82, 6, r); |
---|
| 969 | specialPlusTerm(p, 5043, 699859, -1, 81, 6, r); |
---|
| 970 | specialPlusTerm(p, 6835, 468267, -1, 80, 6, r); |
---|
| 971 | specialPlusTerm(p, 9150, 540598, -1, 79, 6, r); |
---|
| 972 | specialPlusTerm(p, 12105, 225506, -1, 78, 6, r); |
---|
| 973 | specialPlusTerm(p, 15831, 370284, -1, 77, 6, r); |
---|
| 974 | specialPlusTerm(p, 20475, 792894, -1, 76, 6, r); |
---|
| 975 | specialPlusTerm(p, 26198, 917672, -1, 75, 6, r); |
---|
| 976 | specialPlusTerm(p, 33172, 493074, -1, 74, 6, r); |
---|
| 977 | specialPlusTerm(p, 41576, 294268, -1, 73, 6, r); |
---|
| 978 | specialPlusTerm(p, 51593, 749027, -1, 72, 6, r); |
---|
| 979 | specialPlusTerm(p, 63406, 472134, -1, 71, 6, r); |
---|
| 980 | specialPlusTerm(p, 77187, 750422, -1, 70, 6, r); |
---|
| 981 | specialPlusTerm(p, 93095, 85649, -1, 69, 6, r); |
---|
| 982 | specialPlusTerm(p, 111261, 972846, -1, 68, 6, r); |
---|
| 983 | specialPlusTerm(p, 131789, 163843, -1, 67, 6, r); |
---|
| 984 | specialPlusTerm(p, 154735, 735031, -1, 66, 6, r); |
---|
| 985 | specialPlusTerm(p, 180110, 340164, -1, 65, 6, r); |
---|
| 986 | specialPlusTerm(p, 207863, 78032, -1, 64, 6, r); |
---|
| 987 | specialPlusTerm(p, 237878, 436148, -1, 63, 6, r); |
---|
| 988 | specialPlusTerm(p, 269969, 780853, -1, 62, 6, r); |
---|
| 989 | specialPlusTerm(p, 303875, 847919, -1, 61, 6, r); |
---|
| 990 | specialPlusTerm(p, 339259, 643405, -1, 60, 6, r); |
---|
| 991 | specialPlusTerm(p, 375710, 91709, -1, 59, 6, r); |
---|
| 992 | specialPlusTerm(p, 412746, 667621, -1, 58, 6, r); |
---|
| 993 | specialPlusTerm(p, 449827, 124838, -1, 57, 6, r); |
---|
| 994 | specialPlusTerm(p, 486358, 289884, -1, 56, 6, r); |
---|
| 995 | specialPlusTerm(p, 521709, 734617, -1, 55, 6, r); |
---|
| 996 | specialPlusTerm(p, 555229, 980825, -1, 54, 6, r); |
---|
| 997 | specialPlusTerm(p, 586264, 736452, -1, 53, 6, r); |
---|
| 998 | specialPlusTerm(p, 614176, 524327, -1, 52, 6, r); |
---|
| 999 | specialPlusTerm(p, 638364, 950461, -1, 51, 6, r); |
---|
| 1000 | specialPlusTerm(p, 658286, 778382, -1, 50, 6, r); |
---|
| 1001 | specialPlusTerm(p, 673474, 935703, -1, 49, 6, r); |
---|
| 1002 | specialPlusTerm(p, 683555, 584035, -1, 48, 6, r); |
---|
| 1003 | specialPlusTerm(p, 688262, 435939, -1, 47, 6, r); |
---|
| 1004 | specialPlusTerm(p, 687447, 601958, -1, 46, 6, r); |
---|
| 1005 | specialPlusTerm(p, 681088, 393321, -1, 45, 6, r); |
---|
| 1006 | specialPlusTerm(p, 669289, 685002, -1, 44, 6, r); |
---|
| 1007 | specialPlusTerm(p, 652281, 650056, -1, 43, 6, r); |
---|
| 1008 | specialPlusTerm(p, 630412, 897910, -1, 42, 6, r); |
---|
| 1009 | specialPlusTerm(p, 604139, 273828, -1, 41, 6, r); |
---|
| 1010 | specialPlusTerm(p, 574008, 790372, -1, 40, 6, r); |
---|
| 1011 | specialPlusTerm(p, 540643, 351434, -1, 39, 6, r); |
---|
| 1012 | specialPlusTerm(p, 504718, 83850, -1, 38, 6, r); |
---|
| 1013 | specialPlusTerm(p, 466939, 201686, -1, 37, 6, r); |
---|
| 1014 | specialPlusTerm(p, 428021, 387818, -1, 36, 6, r); |
---|
| 1015 | specialPlusTerm(p, 388665, 682772, -1, 35, 6, r); |
---|
| 1016 | specialPlusTerm(p, 349538, 822179, -1, 34, 6, r); |
---|
| 1017 | specialPlusTerm(p, 311254, 865006, -1, 33, 6, r); |
---|
| 1018 | specialPlusTerm(p, 274359, 811613, -1, 32, 6, r); |
---|
| 1019 | specialPlusTerm(p, 239319, 732987, -1, 31, 6, r); |
---|
| 1020 | specialPlusTerm(p, 206512, 732148, -1, 30, 6, r); |
---|
| 1021 | specialPlusTerm(p, 176224, 848533, -1, 29, 6, r); |
---|
| 1022 | specialPlusTerm(p, 148649, 810169, -1, 28, 6, r); |
---|
| 1023 | specialPlusTerm(p, 123892, 349306, -1, 27, 6, r); |
---|
| 1024 | specialPlusTerm(p, 101974, 636229, -1, 26, 6, r); |
---|
| 1025 | specialPlusTerm(p, 82845, 261439, -1, 25, 6, r); |
---|
| 1026 | specialPlusTerm(p, 66390, 113996, -1, 24, 6, r); |
---|
| 1027 | specialPlusTerm(p, 52444, 464455, -1, 23, 6, r); |
---|
| 1028 | specialPlusTerm(p, 40805, 563557, -1, 22, 6, r); |
---|
| 1029 | specialPlusTerm(p, 31245, 109466, -1, 21, 6, r); |
---|
| 1030 | specialPlusTerm(p, 23521, 11382, -1, 20, 6, r); |
---|
| 1031 | specialPlusTerm(p, 17387, 978784, -1, 19, 6, r); |
---|
| 1032 | specialPlusTerm(p, 12606, 585145, -1, 18, 6, r); |
---|
| 1033 | specialPlusTerm(p, 8950, 583389, -1, 17, 6, r); |
---|
| 1034 | specialPlusTerm(p, 6212, 378502, -1, 16, 6, r); |
---|
| 1035 | specialPlusTerm(p, 4206, 681655, -1, 15, 6, r); |
---|
| 1036 | specialPlusTerm(p, 2772, 472065, -1, 14, 6, r); |
---|
| 1037 | specialPlusTerm(p, 1773, 471986, -1, 13, 6, r); |
---|
| 1038 | specialPlusTerm(p, 1097, 393517, -1, 12, 6, r); |
---|
| 1039 | specialPlusTerm(p, 654, 242447, -1, 11, 6, r); |
---|
| 1040 | specialPlusTerm(p, 373, 966384, -1, 10, 6, r); |
---|
| 1041 | specialPlusTerm(p, 203, 716799, -1, 9, 6, r); |
---|
| 1042 | specialPlusTerm(p, 104, 963287, -1, 8, 6, r); |
---|
| 1043 | specialPlusTerm(p, 50, 659180, -1, 7, 6, r); |
---|
| 1044 | specialPlusTerm(p, 22, 613305, -1, 6, 6, r); |
---|
| 1045 | specialPlusTerm(p, 9, 176167, -1, 5, 6, r); |
---|
| 1046 | specialPlusTerm(p, 3, 303300, -1, 4, 6, r); |
---|
| 1047 | specialPlusTerm(p, 1, 17016, -1, 3, 6, r); |
---|
| 1048 | specialPlusTerm(p, 0, 252252, -1, 2, 6, r); |
---|
| 1049 | specialPlusTerm(p, 0, 45045, -1, 1, 6, r); |
---|
| 1050 | specialPlusTerm(p, 0, 4368, -1, 0, 6, r); |
---|
| 1051 | specialPlusTerm(p, 0, 1, 1, 114, 5, r); |
---|
| 1052 | specialPlusTerm(p, 0, 13, 1, 113, 5, r); |
---|
| 1053 | specialPlusTerm(p, 0, 92, 1, 112, 5, r); |
---|
| 1054 | specialPlusTerm(p, 0, 469, 1, 111, 5, r); |
---|
| 1055 | specialPlusTerm(p, 0, 1926, 1, 110, 5, r); |
---|
| 1056 | specialPlusTerm(p, 0, 6756, 1, 109, 5, r); |
---|
| 1057 | specialPlusTerm(p, 0, 20972, 1, 108, 5, r); |
---|
| 1058 | specialPlusTerm(p, 0, 58978, 1, 107, 5, r); |
---|
| 1059 | specialPlusTerm(p, 0, 152775, 1, 106, 5, r); |
---|
| 1060 | specialPlusTerm(p, 0, 369050, 1, 105, 5, r); |
---|
| 1061 | specialPlusTerm(p, 0, 839288, 1, 104, 5, r); |
---|
| 1062 | specialPlusTerm(p, 1, 810449, 1, 103, 5, r); |
---|
| 1063 | specialPlusTerm(p, 3, 726832, 1, 102, 5, r); |
---|
| 1064 | specialPlusTerm(p, 7, 357527, 1, 101, 5, r); |
---|
| 1065 | specialPlusTerm(p, 13, 988283, 1, 100, 5, r); |
---|
| 1066 | specialPlusTerm(p, 25, 701547, 1, 99, 5, r); |
---|
| 1067 | specialPlusTerm(p, 45, 773588, 1, 98, 5, r); |
---|
| 1068 | specialPlusTerm(p, 79, 222619, 1, 97, 5, r); |
---|
| 1069 | specialPlusTerm(p, 133, 546121, 1, 96, 5, r); |
---|
| 1070 | specialPlusTerm(p, 219, 688458, 1, 95, 5, r); |
---|
| 1071 | specialPlusTerm(p, 353, 280515, 1, 94, 5, r); |
---|
| 1072 | specialPlusTerm(p, 556, 190572, 1, 93, 5, r); |
---|
| 1073 | specialPlusTerm(p, 858, 418990, 1, 92, 5, r); |
---|
| 1074 | specialPlusTerm(p, 1300, 357646, 1, 91, 5, r); |
---|
| 1075 | specialPlusTerm(p, 1935, 417677, 1, 90, 5, r); |
---|
| 1076 | specialPlusTerm(p, 2833, 5498, 1, 89, 5, r); |
---|
| 1077 | specialPlusTerm(p, 4081, 797160, 1, 88, 5, r); |
---|
| 1078 | specialPlusTerm(p, 5793, 225338, 1, 87, 5, r); |
---|
| 1079 | specialPlusTerm(p, 8105, 52608, 1, 86, 5, r); |
---|
| 1080 | specialPlusTerm(p, 11184, 860904, 1, 85, 5, r); |
---|
| 1081 | specialPlusTerm(p, 15233, 242543, 1, 84, 5, r); |
---|
| 1082 | specialPlusTerm(p, 20486, 436025, 1, 83, 5, r); |
---|
| 1083 | specialPlusTerm(p, 27218, 113560, 1, 82, 5, r); |
---|
| 1084 | specialPlusTerm(p, 35740, 941, 1, 81, 5, r); |
---|
| 1085 | specialPlusTerm(p, 46400, 998184, 1, 80, 5, r); |
---|
| 1086 | specialPlusTerm(p, 59584, 475380, 1, 79, 5, r); |
---|
| 1087 | specialPlusTerm(p, 75703, 446044, 1, 78, 5, r); |
---|
| 1088 | specialPlusTerm(p, 95193, 372588, 1, 77, 5, r); |
---|
| 1089 | specialPlusTerm(p, 118502, 436837, 1, 76, 5, r); |
---|
| 1090 | specialPlusTerm(p, 146079, 212557, 1, 75, 5, r); |
---|
| 1091 | specialPlusTerm(p, 178357, 804753, 1, 74, 5, r); |
---|
| 1092 | specialPlusTerm(p, 215740, 667987, 1, 73, 5, r); |
---|
| 1093 | specialPlusTerm(p, 258579, 477117, 1, 72, 5, r); |
---|
| 1094 | specialPlusTerm(p, 307154, 590636, 1, 71, 5, r); |
---|
| 1095 | specialPlusTerm(p, 361653, 809467, 1, 70, 5, r); |
---|
| 1096 | specialPlusTerm(p, 422151, 281668, 1, 69, 5, r); |
---|
| 1097 | specialPlusTerm(p, 488587, 524562, 1, 68, 5, r); |
---|
| 1098 | specialPlusTerm(p, 560751, 619043, 1, 67, 5, r); |
---|
| 1099 | specialPlusTerm(p, 638266, 666013, 1, 66, 5, r); |
---|
| 1100 | specialPlusTerm(p, 720579, 573693, 1, 65, 5, r); |
---|
| 1101 | specialPlusTerm(p, 806956, 161270, 1, 64, 5, r); |
---|
| 1102 | specialPlusTerm(p, 896482, 416756, 1, 63, 5, r); |
---|
| 1103 | specialPlusTerm(p, 988072, 536828, 1, 62, 5, r); |
---|
| 1104 | specialPlusTerm(p, 1080484, 109735, 1, 61, 5, r); |
---|
| 1105 | specialPlusTerm(p, 1172340, 489345, 1, 60, 5, r); |
---|
| 1106 | specialPlusTerm(p, 1262160, 63390, 1, 59, 5, r); |
---|
| 1107 | specialPlusTerm(p, 1348391, 759522, 1, 58, 5, r); |
---|
| 1108 | specialPlusTerm(p, 1429455, 778912, 1, 57, 5, r); |
---|
| 1109 | specialPlusTerm(p, 1503788, 220123, 1, 56, 5, r); |
---|
| 1110 | specialPlusTerm(p, 1569887, 977111, 1, 55, 5, r); |
---|
| 1111 | specialPlusTerm(p, 1626364, 84113, 1, 54, 5, r); |
---|
| 1112 | specialPlusTerm(p, 1671981, 553512, 1, 53, 5, r); |
---|
| 1113 | specialPlusTerm(p, 1705703, 722632, 1, 52, 5, r); |
---|
| 1114 | specialPlusTerm(p, 1726729, 198623, 1, 51, 5, r); |
---|
| 1115 | specialPlusTerm(p, 1734521, 667786, 1, 50, 5, r); |
---|
| 1116 | specialPlusTerm(p, 1728831, 111168, 1, 49, 5, r); |
---|
| 1117 | specialPlusTerm(p, 1709705, 329909, 1, 48, 5, r); |
---|
| 1118 | specialPlusTerm(p, 1677491, 113716, 1, 47, 5, r); |
---|
| 1119 | specialPlusTerm(p, 1632824, 861010, 1, 46, 5, r); |
---|
| 1120 | specialPlusTerm(p, 1576612, 953462, 1, 45, 5, r); |
---|
| 1121 | specialPlusTerm(p, 1510002, 672602, 1, 44, 5, r); |
---|
| 1122 | specialPlusTerm(p, 1434344, 893769, 1, 43, 5, r); |
---|
| 1123 | specialPlusTerm(p, 1351150, 176624, 1, 42, 5, r); |
---|
| 1124 | specialPlusTerm(p, 1262040, 169393, 1, 41, 5, r); |
---|
| 1125 | specialPlusTerm(p, 1168696, 438727, 1, 40, 5, r); |
---|
| 1126 | specialPlusTerm(p, 1072808, 918138, 1, 39, 5, r); |
---|
| 1127 | specialPlusTerm(p, 976026, 132162, 1, 38, 5, r); |
---|
| 1128 | specialPlusTerm(p, 879909, 204828, 1, 37, 5, r); |
---|
| 1129 | specialPlusTerm(p, 785891, 410576, 1, 36, 5, r); |
---|
| 1130 | specialPlusTerm(p, 695244, 690346, 1, 35, 5, r); |
---|
| 1131 | specialPlusTerm(p, 609054, 157073, 1, 34, 5, r); |
---|
| 1132 | specialPlusTerm(p, 528201, 178547, 1, 33, 5, r); |
---|
| 1133 | specialPlusTerm(p, 453355, 178523, 1, 32, 5, r); |
---|
| 1134 | specialPlusTerm(p, 384973, 865967, 1, 31, 5, r); |
---|
| 1135 | specialPlusTerm(p, 323311, 212357, 1, 30, 5, r); |
---|
| 1136 | specialPlusTerm(p, 268432, 169189, 1, 29, 5, r); |
---|
| 1137 | specialPlusTerm(p, 220232, 868421, 1, 28, 5, r); |
---|
| 1138 | specialPlusTerm(p, 178464, 887323, 1, 27, 5, r); |
---|
| 1139 | specialPlusTerm(p, 142762, 89447, 1, 26, 5, r); |
---|
| 1140 | specialPlusTerm(p, 112668, 572043, 1, 25, 5, r); |
---|
| 1141 | specialPlusTerm(p, 87666, 348585, 1, 24, 5, r); |
---|
| 1142 | specialPlusTerm(p, 67201, 559745, 1, 23, 5, r); |
---|
| 1143 | specialPlusTerm(p, 50708, 221257, 1, 22, 5, r); |
---|
| 1144 | specialPlusTerm(p, 37628, 764983, 1, 21, 5, r); |
---|
| 1145 | specialPlusTerm(p, 27430, 891847, 1, 20, 5, r); |
---|
| 1146 | specialPlusTerm(p, 19620, 514504, 1, 19, 5, r); |
---|
| 1147 | specialPlusTerm(p, 13750, 807706, 1, 18, 5, r); |
---|
| 1148 | specialPlusTerm(p, 9427, 591898, 1, 17, 5, r); |
---|
| 1149 | specialPlusTerm(p, 6311, 440762, 1, 16, 5, r); |
---|
| 1150 | specialPlusTerm(p, 4117, 20228, 1, 15, 5, r); |
---|
| 1151 | specialPlusTerm(p, 2610, 233212, 1, 14, 5, r); |
---|
| 1152 | specialPlusTerm(p, 1603, 763552, 1, 13, 5, r); |
---|
| 1153 | specialPlusTerm(p, 951, 590329, 1, 12, 5, r); |
---|
| 1154 | specialPlusTerm(p, 542, 988511, 1, 11, 5, r); |
---|
| 1155 | specialPlusTerm(p, 296, 453834, 1, 10, 5, r); |
---|
| 1156 | specialPlusTerm(p, 153, 899291, 1, 9, 5, r); |
---|
| 1157 | specialPlusTerm(p, 75, 376496, 1, 8, 5, r); |
---|
| 1158 | specialPlusTerm(p, 34, 484437, 1, 7, 5, r); |
---|
| 1159 | specialPlusTerm(p, 14, 545453, 1, 6, 5, r); |
---|
| 1160 | specialPlusTerm(p, 5, 557552, 1, 5, 5, r); |
---|
| 1161 | specialPlusTerm(p, 1, 876238, 1, 4, 5, r); |
---|
| 1162 | specialPlusTerm(p, 0, 539266, 1, 3, 5, r); |
---|
| 1163 | specialPlusTerm(p, 0, 124215, 1, 2, 5, r); |
---|
| 1164 | specialPlusTerm(p, 0, 20475, 1, 1, 5, r); |
---|
| 1165 | specialPlusTerm(p, 0, 1820, 1, 0, 5, r); |
---|
| 1166 | specialPlusTerm(p, 0, 1, -1, 117, 4, r); |
---|
| 1167 | specialPlusTerm(p, 0, 14, -1, 116, 4, r); |
---|
| 1168 | specialPlusTerm(p, 0, 106, -1, 115, 4, r); |
---|
| 1169 | specialPlusTerm(p, 0, 575, -1, 114, 4, r); |
---|
| 1170 | specialPlusTerm(p, 0, 2496, -1, 113, 4, r); |
---|
| 1171 | specialPlusTerm(p, 0, 9192, -1, 112, 4, r); |
---|
| 1172 | specialPlusTerm(p, 0, 29769, -1, 111, 4, r); |
---|
| 1173 | specialPlusTerm(p, 0, 86862, -1, 110, 4, r); |
---|
| 1174 | specialPlusTerm(p, 0, 232352, -1, 109, 4, r); |
---|
| 1175 | specialPlusTerm(p, 0, 577237, -1, 108, 4, r); |
---|
| 1176 | specialPlusTerm(p, 1, 345280, -1, 107, 4, r); |
---|
| 1177 | specialPlusTerm(p, 2, 964694, -1, 106, 4, r); |
---|
| 1178 | specialPlusTerm(p, 6, 218071, -1, 105, 4, r); |
---|
| 1179 | specialPlusTerm(p, 12, 478024, -1, 104, 4, r); |
---|
| 1180 | specialPlusTerm(p, 24, 64445, -1, 103, 4, r); |
---|
| 1181 | specialPlusTerm(p, 44, 768554, -1, 102, 4, r); |
---|
| 1182 | specialPlusTerm(p, 80, 598456, -1, 101, 4, r); |
---|
| 1183 | specialPlusTerm(p, 140, 809905, -1, 100, 4, r); |
---|
| 1184 | specialPlusTerm(p, 239, 293294, -1, 99, 4, r); |
---|
| 1185 | specialPlusTerm(p, 396, 392192, -1, 98, 4, r); |
---|
| 1186 | specialPlusTerm(p, 641, 228471, -1, 97, 4, r); |
---|
| 1187 | specialPlusTerm(p, 1014, 602512, -1, 96, 4, r); |
---|
| 1188 | specialPlusTerm(p, 1572, 522451, -1, 95, 4, r); |
---|
| 1189 | specialPlusTerm(p, 2390, 392393, -1, 94, 4, r); |
---|
| 1190 | specialPlusTerm(p, 3567, 854826, -1, 93, 4, r); |
---|
| 1191 | specialPlusTerm(p, 5234, 236531, -1, 92, 4, r); |
---|
| 1192 | specialPlusTerm(p, 7554, 490334, -1, 91, 4, r); |
---|
| 1193 | specialPlusTerm(p, 10735, 458285, -1, 90, 4, r); |
---|
| 1194 | specialPlusTerm(p, 15032, 207608, -1, 89, 4, r); |
---|
| 1195 | specialPlusTerm(p, 20754, 112592, -1, 88, 4, r); |
---|
| 1196 | specialPlusTerm(p, 28270, 278236, -1, 87, 4, r); |
---|
| 1197 | specialPlusTerm(p, 38013, 830749, -1, 86, 4, r); |
---|
| 1198 | specialPlusTerm(p, 50484, 542623, -1, 85, 4, r); |
---|
| 1199 | specialPlusTerm(p, 66249, 223101, -1, 84, 4, r); |
---|
| 1200 | specialPlusTerm(p, 85939, 295631, -1, 83, 4, r); |
---|
| 1201 | specialPlusTerm(p, 110245, 8968, -1, 82, 4, r); |
---|
| 1202 | specialPlusTerm(p, 139905, 793448, -1, 81, 4, r); |
---|
| 1203 | specialPlusTerm(p, 175696, 382307, -1, 80, 4, r); |
---|
| 1204 | specialPlusTerm(p, 218408, 471011, -1, 79, 4, r); |
---|
| 1205 | specialPlusTerm(p, 268827, 883672, -1, 78, 4, r); |
---|
| 1206 | specialPlusTerm(p, 327707, 449671, -1, 77, 4, r); |
---|
| 1207 | specialPlusTerm(p, 395736, 57018, -1, 76, 4, r); |
---|
| 1208 | specialPlusTerm(p, 473504, 629765, -1, 75, 4, r); |
---|
| 1209 | specialPlusTerm(p, 561470, 59952, -1, 74, 4, r); |
---|
| 1210 | specialPlusTerm(p, 659918, 392736, -1, 73, 4, r); |
---|
| 1211 | specialPlusTerm(p, 768928, 797683, -1, 72, 4, r); |
---|
| 1212 | specialPlusTerm(p, 888340, 40490, -1, 71, 4, r); |
---|
| 1213 | specialPlusTerm(p, 1017721, 279436, -1, 70, 4, r); |
---|
| 1214 | specialPlusTerm(p, 1156349, 33848, -1, 69, 4, r); |
---|
| 1215 | specialPlusTerm(p, 1303192, 95883, -1, 68, 4, r); |
---|
| 1216 | specialPlusTerm(p, 1456905, 975122, -1, 67, 4, r); |
---|
| 1217 | specialPlusTerm(p, 1615838, 177110, -1, 66, 4, r); |
---|
| 1218 | specialPlusTerm(p, 1778045, 228075, -1, 65, 4, r); |
---|
| 1219 | specialPlusTerm(p, 1941321, 881690, -1, 64, 4, r); |
---|
| 1220 | specialPlusTerm(p, 2103242, 399767, -1, 63, 4, r); |
---|
| 1221 | specialPlusTerm(p, 2261213, 213104, -1, 62, 4, r); |
---|
| 1222 | specialPlusTerm(p, 2412535, 672007, -1, 61, 4, r); |
---|
| 1223 | specialPlusTerm(p, 2554477, 22053, -1, 60, 4, r); |
---|
| 1224 | specialPlusTerm(p, 2684347, 224260, -1, 59, 4, r); |
---|
| 1225 | specialPlusTerm(p, 2799578, 813532, -1, 58, 4, r); |
---|
| 1226 | specialPlusTerm(p, 2897806, 685056, -1, 57, 4, r); |
---|
| 1227 | specialPlusTerm(p, 2976944, 539523, -1, 56, 4, r); |
---|
| 1228 | specialPlusTerm(p, 3035254, 721183, -1, 55, 4, r); |
---|
| 1229 | specialPlusTerm(p, 3071408, 355156, -1, 54, 4, r); |
---|
| 1230 | specialPlusTerm(p, 3084533, 29299, -1, 53, 4, r); |
---|
| 1231 | specialPlusTerm(p, 3074245, 758101, -1, 52, 4, r); |
---|
| 1232 | specialPlusTerm(p, 3040669, 588583, -1, 51, 4, r); |
---|
| 1233 | specialPlusTerm(p, 2984432, 929416, -1, 50, 4, r); |
---|
| 1234 | specialPlusTerm(p, 2906651, 466023, -1, 49, 4, r); |
---|
| 1235 | specialPlusTerm(p, 2808893, 323361, -1, 48, 4, r); |
---|
| 1236 | specialPlusTerm(p, 2693128, 909640, -1, 47, 4, r); |
---|
| 1237 | specialPlusTerm(p, 2561667, 574760, -1, 46, 4, r); |
---|
| 1238 | specialPlusTerm(p, 2417083, 807115, -1, 45, 4, r); |
---|
| 1239 | specialPlusTerm(p, 2262136, 138608, -1, 44, 4, r); |
---|
| 1240 | specialPlusTerm(p, 2099682, 206060, -1, 43, 4, r); |
---|
| 1241 | specialPlusTerm(p, 1932593, 513922, -1, 42, 4, r); |
---|
| 1242 | specialPlusTerm(p, 1763673, 355846, -1, 41, 4, r); |
---|
| 1243 | specialPlusTerm(p, 1595581, 90061, -1, 40, 4, r); |
---|
| 1244 | specialPlusTerm(p, 1430765, 545095, -1, 39, 4, r); |
---|
| 1245 | specialPlusTerm(p, 1271409, 786637, -1, 38, 4, r); |
---|
| 1246 | specialPlusTerm(p, 1119388, 838595, -1, 37, 4, r); |
---|
| 1247 | specialPlusTerm(p, 976241, 261398, -1, 36, 4, r); |
---|
| 1248 | specialPlusTerm(p, 843154, 789753, -1, 35, 4, r); |
---|
| 1249 | specialPlusTerm(p, 720965, 560845, -1, 34, 4, r); |
---|
| 1250 | specialPlusTerm(p, 610169, 859179, -1, 33, 4, r); |
---|
| 1251 | specialPlusTerm(p, 510946, 796821, -1, 32, 4, r); |
---|
| 1252 | specialPlusTerm(p, 423189, 960892, -1, 31, 4, r); |
---|
| 1253 | specialPlusTerm(p, 346545, 808032, -1, 30, 4, r); |
---|
| 1254 | specialPlusTerm(p, 280456, 472902, -1, 29, 4, r); |
---|
| 1255 | specialPlusTerm(p, 224204, 680080, -1, 28, 4, r); |
---|
| 1256 | specialPlusTerm(p, 176958, 593014, -1, 27, 4, r); |
---|
| 1257 | specialPlusTerm(p, 137814, 680334, -1, 26, 4, r); |
---|
| 1258 | specialPlusTerm(p, 105837, 4252, -1, 25, 4, r); |
---|
| 1259 | specialPlusTerm(p, 80091, 710806, -1, 24, 4, r); |
---|
| 1260 | specialPlusTerm(p, 59675, 899582, -1, 23, 4, r); |
---|
| 1261 | specialPlusTerm(p, 43740, 445029, -1, 22, 4, r); |
---|
| 1262 | specialPlusTerm(p, 31506, 709211, -1, 21, 4, r); |
---|
| 1263 | specialPlusTerm(p, 22277, 407599, -1, 20, 4, r); |
---|
| 1264 | specialPlusTerm(p, 15442, 151129, -1, 19, 4, r); |
---|
| 1265 | specialPlusTerm(p, 10478, 380611, -1, 18, 4, r); |
---|
| 1266 | specialPlusTerm(p, 6948, 530664, -1, 17, 4, r); |
---|
| 1267 | specialPlusTerm(p, 4494, 312038, -1, 16, 4, r); |
---|
| 1268 | specialPlusTerm(p, 2828, 990461, -1, 15, 4, r); |
---|
| 1269 | specialPlusTerm(p, 1728, 477668, -1, 14, 4, r); |
---|
| 1270 | specialPlusTerm(p, 1021, 949004, -1, 13, 4, r); |
---|
| 1271 | specialPlusTerm(p, 582, 575810, -1, 12, 4, r); |
---|
| 1272 | specialPlusTerm(p, 318, 823114, -1, 11, 4, r); |
---|
| 1273 | specialPlusTerm(p, 166, 625848, -1, 10, 4, r); |
---|
| 1274 | specialPlusTerm(p, 82, 629352, -1, 9, 4, r); |
---|
| 1275 | specialPlusTerm(p, 38, 568972, -1, 8, 4, r); |
---|
| 1276 | specialPlusTerm(p, 16, 773120, -1, 7, 4, r); |
---|
| 1277 | specialPlusTerm(p, 6, 706050, -1, 6, 4, r); |
---|
| 1278 | specialPlusTerm(p, 2, 420964, -1, 5, 4, r); |
---|
| 1279 | specialPlusTerm(p, 0, 769496, -1, 4, 4, r); |
---|
| 1280 | specialPlusTerm(p, 0, 207389, -1, 3, 4, r); |
---|
| 1281 | specialPlusTerm(p, 0, 44590, -1, 2, 4, r); |
---|
| 1282 | specialPlusTerm(p, 0, 6825, -1, 1, 4, r); |
---|
| 1283 | specialPlusTerm(p, 0, 560, -1, 0, 4, r); |
---|
| 1284 | specialPlusTerm(p, 0, 1, 1, 119, 3, r); |
---|
| 1285 | specialPlusTerm(p, 0, 15, 1, 118, 3, r); |
---|
| 1286 | specialPlusTerm(p, 0, 121, 1, 117, 3, r); |
---|
| 1287 | specialPlusTerm(p, 0, 692, 1, 116, 3, r); |
---|
| 1288 | specialPlusTerm(p, 0, 3136, 1, 115, 3, r); |
---|
| 1289 | specialPlusTerm(p, 0, 11960, 1, 114, 3, r); |
---|
| 1290 | specialPlusTerm(p, 0, 39853, 1, 113, 3, r); |
---|
| 1291 | specialPlusTerm(p, 0, 119021, 1, 112, 3, r); |
---|
| 1292 | specialPlusTerm(p, 0, 324469, 1, 111, 3, r); |
---|
| 1293 | specialPlusTerm(p, 0, 818608, 1, 110, 3, r); |
---|
| 1294 | specialPlusTerm(p, 1, 931746, 1, 109, 3, r); |
---|
| 1295 | specialPlusTerm(p, 4, 299910, 1, 108, 3, r); |
---|
| 1296 | specialPlusTerm(p, 9, 90121, 1, 107, 3, r); |
---|
| 1297 | specialPlusTerm(p, 18, 353593, 1, 106, 3, r); |
---|
| 1298 | specialPlusTerm(p, 35, 558983, 1, 105, 3, r); |
---|
| 1299 | specialPlusTerm(p, 66, 370113, 1, 104, 3, r); |
---|
| 1300 | specialPlusTerm(p, 119, 744513, 1, 103, 3, r); |
---|
| 1301 | specialPlusTerm(p, 209, 439344, 1, 102, 3, r); |
---|
| 1302 | specialPlusTerm(p, 356, 18067, 1, 101, 3, r); |
---|
| 1303 | specialPlusTerm(p, 589, 452669, 1, 100, 3, r); |
---|
| 1304 | specialPlusTerm(p, 952, 410212, 1, 99, 3, r); |
---|
| 1305 | specialPlusTerm(p, 1504, 296795, 1, 98, 3, r); |
---|
| 1306 | specialPlusTerm(p, 2326, 104760, 1, 97, 3, r); |
---|
| 1307 | specialPlusTerm(p, 3526, 68612, 1, 96, 3, r); |
---|
| 1308 | specialPlusTerm(p, 5246, 80850, 1, 95, 3, r); |
---|
| 1309 | specialPlusTerm(p, 7668, 750896, 1, 94, 3, r); |
---|
| 1310 | specialPlusTerm(p, 11024, 909967, 1, 93, 3, r); |
---|
| 1311 | specialPlusTerm(p, 15601, 274876, 1, 92, 3, r); |
---|
| 1312 | specialPlusTerm(p, 21747, 888690, 1, 91, 3, r); |
---|
| 1313 | specialPlusTerm(p, 29884, 861708, 1, 90, 3, r); |
---|
| 1314 | specialPlusTerm(p, 40507, 849459, 1, 89, 3, r); |
---|
| 1315 | specialPlusTerm(p, 54191, 633482, 1, 88, 3, r); |
---|
| 1316 | specialPlusTerm(p, 71591, 124221, 1, 87, 3, r); |
---|
| 1317 | specialPlusTerm(p, 93439, 92109, 1, 86, 3, r); |
---|
| 1318 | specialPlusTerm(p, 120539, 960778, 1, 85, 3, r); |
---|
| 1319 | specialPlusTerm(p, 153759, 71799, 1, 84, 3, r); |
---|
| 1320 | specialPlusTerm(p, 194006, 957680, 1, 83, 3, r); |
---|
| 1321 | specialPlusTerm(p, 242218, 340335, 1, 82, 3, r); |
---|
| 1322 | specialPlusTerm(p, 299325, 803637, 1, 81, 3, r); |
---|
| 1323 | specialPlusTerm(p, 366228, 364763, 1, 80, 3, r); |
---|
| 1324 | specialPlusTerm(p, 443755, 479465, 1, 79, 3, r); |
---|
| 1325 | specialPlusTerm(p, 532627, 346793, 1, 78, 3, r); |
---|
| 1326 | specialPlusTerm(p, 633412, 711280, 1, 77, 3, r); |
---|
| 1327 | specialPlusTerm(p, 746485, 674616, 1, 76, 3, r); |
---|
| 1328 | specialPlusTerm(p, 871983, 302274, 1, 75, 3, r); |
---|
| 1329 | specialPlusTerm(p, 1009766, 21123, 1, 74, 3, r); |
---|
| 1330 | specialPlusTerm(p, 1159382, 930867, 1, 73, 3, r); |
---|
| 1331 | specialPlusTerm(p, 1320044, 177277, 1, 72, 3, r); |
---|
| 1332 | specialPlusTerm(p, 1490602, 445312, 1, 71, 3, r); |
---|
| 1333 | specialPlusTerm(p, 1669545, 418046, 1, 70, 3, r); |
---|
| 1334 | specialPlusTerm(p, 1855000, 712658, 1, 69, 3, r); |
---|
| 1335 | specialPlusTerm(p, 2044754, 355265, 1, 68, 3, r); |
---|
| 1336 | specialPlusTerm(p, 2236283, 307760, 1, 67, 3, r); |
---|
| 1337 | specialPlusTerm(p, 2426801, 935374, 1, 66, 3, r); |
---|
| 1338 | specialPlusTerm(p, 2613321, 633418, 1, 65, 3, r); |
---|
| 1339 | specialPlusTerm(p, 2792722, 150781, 1, 64, 3, r); |
---|
| 1340 | specialPlusTerm(p, 2961832, 494671, 1, 63, 3, r); |
---|
| 1341 | specialPlusTerm(p, 3117518, 715055, 1, 62, 3, r); |
---|
| 1342 | specialPlusTerm(p, 3256775, 385842, 1, 61, 3, r); |
---|
| 1343 | specialPlusTerm(p, 3376817, 256340, 1, 60, 3, r); |
---|
| 1344 | specialPlusTerm(p, 3475167, 367466, 1, 59, 3, r); |
---|
| 1345 | specialPlusTerm(p, 3549737, 930366, 1, 58, 3, r); |
---|
| 1346 | specialPlusTerm(p, 3598900, 457938, 1, 57, 3, r); |
---|
| 1347 | specialPlusTerm(p, 3621542, 18424, 1, 56, 3, r); |
---|
| 1348 | specialPlusTerm(p, 3617105, 29495, 1, 55, 3, r); |
---|
| 1349 | specialPlusTerm(p, 3585608, 705050, 1, 54, 3, r); |
---|
| 1350 | specialPlusTerm(p, 3527651, 69853, 1, 53, 3, r); |
---|
| 1351 | specialPlusTerm(p, 3444391, 326416, 1, 52, 3, r); |
---|
| 1352 | specialPlusTerm(p, 3337513, 246817, 1, 51, 3, r); |
---|
| 1353 | specialPlusTerm(p, 3209171, 120352, 1, 50, 3, r); |
---|
| 1354 | specialPlusTerm(p, 3061920, 568442, 1, 49, 3, r); |
---|
| 1355 | specialPlusTerm(p, 2898637, 197953, 1, 48, 3, r); |
---|
| 1356 | specialPlusTerm(p, 2722426, 567254, 1, 47, 3, r); |
---|
| 1357 | specialPlusTerm(p, 2536529, 259766, 1, 46, 3, r); |
---|
| 1358 | specialPlusTerm(p, 2344224, 982535, 1, 45, 3, r); |
---|
| 1359 | specialPlusTerm(p, 2148739, 529673, 1, 44, 3, r); |
---|
| 1360 | specialPlusTerm(p, 1953158, 181630, 1, 43, 3, r); |
---|
| 1361 | specialPlusTerm(p, 1760348, 671733, 1, 42, 3, r); |
---|
| 1362 | specialPlusTerm(p, 1572896, 271477, 1, 41, 3, r); |
---|
| 1363 | specialPlusTerm(p, 1393052, 863345, 1, 40, 3, r); |
---|
| 1364 | specialPlusTerm(p, 1222701, 126910, 1, 39, 3, r); |
---|
| 1365 | specialPlusTerm(p, 1063334, 204889, 1, 38, 3, r); |
---|
| 1366 | specialPlusTerm(p, 916050, 483828, 1, 37, 3, r); |
---|
| 1367 | specialPlusTerm(p, 781562, 458519, 1, 36, 3, r); |
---|
| 1368 | specialPlusTerm(p, 660218, 83241, 1, 35, 3, r); |
---|
| 1369 | specialPlusTerm(p, 552032, 571637, 1, 34, 3, r); |
---|
| 1370 | specialPlusTerm(p, 456728, 306449, 1, 33, 3, r); |
---|
| 1371 | specialPlusTerm(p, 373780, 366678, 1, 32, 3, r); |
---|
| 1372 | specialPlusTerm(p, 302465, 169735, 1, 31, 3, r); |
---|
| 1373 | specialPlusTerm(p, 241909, 847846, 1, 30, 3, r); |
---|
| 1374 | specialPlusTerm(p, 191140, 212177, 1, 29, 3, r); |
---|
| 1375 | specialPlusTerm(p, 149125, 480301, 1, 28, 3, r); |
---|
| 1376 | specialPlusTerm(p, 114818, 324960, 1, 27, 3, r); |
---|
| 1377 | specialPlusTerm(p, 87189, 215772, 1, 26, 3, r); |
---|
| 1378 | specialPlusTerm(p, 65254, 442815, 1, 25, 3, r); |
---|
| 1379 | specialPlusTerm(p, 48097, 606920, 1, 24, 3, r); |
---|
| 1380 | specialPlusTerm(p, 34884, 715247, 1, 23, 3, r); |
---|
| 1381 | specialPlusTerm(p, 24873, 316659, 1, 22, 3, r); |
---|
| 1382 | specialPlusTerm(p, 17416, 339482, 1, 21, 3, r); |
---|
| 1383 | specialPlusTerm(p, 11961, 450014, 1, 20, 3, r); |
---|
| 1384 | specialPlusTerm(p, 8046, 834503, 1, 19, 3, r); |
---|
| 1385 | specialPlusTerm(p, 5294, 325768, 1, 18, 3, r); |
---|
| 1386 | specialPlusTerm(p, 3400, 757398, 1, 17, 3, r); |
---|
| 1387 | specialPlusTerm(p, 2128, 345318, 1, 16, 3, r); |
---|
| 1388 | specialPlusTerm(p, 1294, 781596, 1, 15, 3, r); |
---|
| 1389 | specialPlusTerm(p, 763, 591975, 1, 14, 3, r); |
---|
| 1390 | specialPlusTerm(p, 435, 169111, 1, 13, 3, r); |
---|
| 1391 | specialPlusTerm(p, 238, 758463, 1, 12, 3, r); |
---|
| 1392 | specialPlusTerm(p, 125, 551459, 1, 11, 3, r); |
---|
| 1393 | specialPlusTerm(p, 62, 936621, 1, 10, 3, r); |
---|
| 1394 | specialPlusTerm(p, 29, 876893, 1, 9, 3, r); |
---|
| 1395 | specialPlusTerm(p, 13, 321355, 1, 8, 3, r); |
---|
| 1396 | specialPlusTerm(p, 5, 520901, 1, 7, 3, r); |
---|
| 1397 | specialPlusTerm(p, 2, 98067, 1, 6, 3, r); |
---|
| 1398 | specialPlusTerm(p, 0, 717871, 1, 5, 3, r); |
---|
| 1399 | specialPlusTerm(p, 0, 215565, 1, 4, 3, r); |
---|
| 1400 | specialPlusTerm(p, 0, 54691, 1, 3, 3, r); |
---|
| 1401 | specialPlusTerm(p, 0, 11025, 1, 2, 3, r); |
---|
| 1402 | specialPlusTerm(p, 0, 1575, 1, 1, 3, r); |
---|
| 1403 | specialPlusTerm(p, 0, 120, 1, 0, 3, r); |
---|
| 1404 | specialPlusTerm(p, 0, 1, -1, 120, 2, r); |
---|
| 1405 | specialPlusTerm(p, 0, 16, -1, 119, 2, r); |
---|
| 1406 | specialPlusTerm(p, 0, 134, -1, 118, 2, r); |
---|
| 1407 | specialPlusTerm(p, 0, 784, -1, 117, 2, r); |
---|
| 1408 | specialPlusTerm(p, 0, 3602, -1, 116, 2, r); |
---|
| 1409 | specialPlusTerm(p, 0, 13843, -1, 115, 2, r); |
---|
| 1410 | specialPlusTerm(p, 0, 46286, -1, 114, 2, r); |
---|
| 1411 | specialPlusTerm(p, 0, 138283, -1, 113, 2, r); |
---|
| 1412 | specialPlusTerm(p, 0, 376259, -1, 112, 2, r); |
---|
| 1413 | specialPlusTerm(p, 0, 945827, -1, 111, 2, r); |
---|
| 1414 | specialPlusTerm(p, 2, 220933, -1, 110, 2, r); |
---|
| 1415 | specialPlusTerm(p, 4, 914174, -1, 109, 2, r); |
---|
| 1416 | specialPlusTerm(p, 10, 318553, -1, 108, 2, r); |
---|
| 1417 | specialPlusTerm(p, 20, 680144, -1, 107, 2, r); |
---|
| 1418 | specialPlusTerm(p, 39, 750869, -1, 106, 2, r); |
---|
| 1419 | specialPlusTerm(p, 73, 579984, -1, 105, 2, r); |
---|
| 1420 | specialPlusTerm(p, 131, 610793, -1, 104, 2, r); |
---|
| 1421 | specialPlusTerm(p, 228, 154162, -1, 103, 2, r); |
---|
| 1422 | specialPlusTerm(p, 384, 310996, -1, 102, 2, r); |
---|
| 1423 | specialPlusTerm(p, 630, 410278, -1, 101, 2, r); |
---|
| 1424 | specialPlusTerm(p, 1009, 15895, -1, 100, 2, r); |
---|
| 1425 | specialPlusTerm(p, 1578, 532849, -1, 99, 2, r); |
---|
| 1426 | specialPlusTerm(p, 2417, 410542, -1, 98, 2, r); |
---|
| 1427 | specialPlusTerm(p, 3628, 897233, -1, 97, 2, r); |
---|
| 1428 | specialPlusTerm(p, 5346, 245930, -1, 96, 2, r); |
---|
| 1429 | specialPlusTerm(p, 7738, 209354, -1, 95, 2, r); |
---|
| 1430 | specialPlusTerm(p, 11014, 592780, -1, 94, 2, r); |
---|
| 1431 | specialPlusTerm(p, 15431, 562271, -1, 93, 2, r); |
---|
| 1432 | specialPlusTerm(p, 21296, 336917, -1, 92, 2, r); |
---|
| 1433 | specialPlusTerm(p, 28970, 832923, -1, 91, 2, r); |
---|
| 1434 | specialPlusTerm(p, 38873, 781118, -1, 90, 2, r); |
---|
| 1435 | specialPlusTerm(p, 51480, 814244, -1, 89, 2, r); |
---|
| 1436 | specialPlusTerm(p, 67322, 22502, -1, 88, 2, r); |
---|
| 1437 | specialPlusTerm(p, 86976, 510707, -1, 87, 2, r); |
---|
| 1438 | specialPlusTerm(p, 111063, 562039, -1, 86, 2, r); |
---|
| 1439 | specialPlusTerm(p, 140230, 123797, -1, 85, 2, r); |
---|
| 1440 | specialPlusTerm(p, 175134, 479331, -1, 84, 2, r); |
---|
| 1441 | specialPlusTerm(p, 216426, 154185, -1, 83, 2, r); |
---|
| 1442 | specialPlusTerm(p, 264722, 317163, -1, 82, 2, r); |
---|
| 1443 | specialPlusTerm(p, 320581, 169273, -1, 81, 2, r); |
---|
| 1444 | specialPlusTerm(p, 384473, 53329, -1, 80, 2, r); |
---|
| 1445 | specialPlusTerm(p, 456750, 250207, -1, 79, 2, r); |
---|
| 1446 | specialPlusTerm(p, 537616, 638714, -1, 78, 2, r); |
---|
| 1447 | specialPlusTerm(p, 627098, 568602, -1, 77, 2, r); |
---|
| 1448 | specialPlusTerm(p, 725018, 414915, -1, 76, 2, r); |
---|
| 1449 | specialPlusTerm(p, 830972, 332853, -1, 75, 2, r); |
---|
| 1450 | specialPlusTerm(p, 944313, 704873, -1, 74, 2, r); |
---|
| 1451 | specialPlusTerm(p, 1064143, 659019, -1, 73, 2, r); |
---|
| 1452 | specialPlusTerm(p, 1189309, 837532, -1, 72, 2, r); |
---|
| 1453 | specialPlusTerm(p, 1318414, 311129, -1, 71, 2, r); |
---|
| 1454 | specialPlusTerm(p, 1449831, 176128, -1, 70, 2, r); |
---|
| 1455 | specialPlusTerm(p, 1581733, 953526, -1, 69, 2, r); |
---|
| 1456 | specialPlusTerm(p, 1712132, 450851, -1, 68, 2, r); |
---|
| 1457 | specialPlusTerm(p, 1838918, 272730, -1, 67, 2, r); |
---|
| 1458 | specialPlusTerm(p, 1959917, 700931, -1, 66, 2, r); |
---|
| 1459 | specialPlusTerm(p, 2072950, 236513, -1, 65, 2, r); |
---|
| 1460 | specialPlusTerm(p, 2175890, 732337, -1, 64, 2, r); |
---|
| 1461 | specialPlusTerm(p, 2266732, 767744, -1, 63, 2, r); |
---|
| 1462 | specialPlusTerm(p, 2343650, 748669, -1, 62, 2, r); |
---|
| 1463 | specialPlusTerm(p, 2405058, 170088, -1, 61, 2, r); |
---|
| 1464 | specialPlusTerm(p, 2449659, 560856, -1, 60, 2, r); |
---|
| 1465 | specialPlusTerm(p, 2476493, 843437, -1, 59, 2, r); |
---|
| 1466 | specialPlusTerm(p, 2484967, 174656, -1, 58, 2, r); |
---|
| 1467 | specialPlusTerm(p, 2474873, 772785, -1, 57, 2, r); |
---|
| 1468 | specialPlusTerm(p, 2446403, 758673, -1, 56, 2, r); |
---|
| 1469 | specialPlusTerm(p, 2400137, 616515, -1, 55, 2, r); |
---|
| 1470 | specialPlusTerm(p, 2337027, 481818, -1, 54, 2, r); |
---|
| 1471 | specialPlusTerm(p, 2258366, 57059, -1, 53, 2, r); |
---|
| 1472 | specialPlusTerm(p, 2165744, 506758, -1, 52, 2, r); |
---|
| 1473 | specialPlusTerm(p, 2061001, 163040, -1, 51, 2, r); |
---|
| 1474 | specialPlusTerm(p, 1946163, 254505, -1, 50, 2, r); |
---|
| 1475 | specialPlusTerm(p, 1823384, 135692, -1, 49, 2, r); |
---|
| 1476 | specialPlusTerm(p, 1694878, 629195, -1, 48, 2, r); |
---|
| 1477 | specialPlusTerm(p, 1562859, 93097, -1, 47, 2, r); |
---|
| 1478 | specialPlusTerm(p, 1429474, 696453, -1, 46, 2, r); |
---|
| 1479 | specialPlusTerm(p, 1296756, 136371, -1, 45, 2, r); |
---|
| 1480 | specialPlusTerm(p, 1166567, 679850, -1, 44, 2, r); |
---|
| 1481 | specialPlusTerm(p, 1040567, 985354, -1, 43, 2, r); |
---|
| 1482 | specialPlusTerm(p, 920180, 680239, -1, 42, 2, r); |
---|
| 1483 | specialPlusTerm(p, 806575, 169521, -1, 41, 2, r); |
---|
| 1484 | specialPlusTerm(p, 700657, 657865, -1, 40, 2, r); |
---|
| 1485 | specialPlusTerm(p, 603071, 906907, -1, 39, 2, r); |
---|
| 1486 | specialPlusTerm(p, 514208, 847321, -1, 38, 2, r); |
---|
| 1487 | specialPlusTerm(p, 434223, 837763, -1, 37, 2, r); |
---|
| 1488 | specialPlusTerm(p, 363060, 123557, -1, 36, 2, r); |
---|
| 1489 | specialPlusTerm(p, 300476, 903127, -1, 35, 2, r); |
---|
| 1490 | specialPlusTerm(p, 246080, 359923, -1, 34, 2, r); |
---|
| 1491 | specialPlusTerm(p, 199356, 56374, -1, 33, 2, r); |
---|
| 1492 | specialPlusTerm(p, 159701, 203700, -1, 32, 2, r); |
---|
| 1493 | specialPlusTerm(p, 126455, 502830, -1, 31, 2, r); |
---|
| 1494 | specialPlusTerm(p, 98929, 480219, -1, 30, 2, r); |
---|
| 1495 | specialPlusTerm(p, 76429, 499829, -1, 29, 2, r); |
---|
| 1496 | specialPlusTerm(p, 58278, 900847, -1, 28, 2, r); |
---|
| 1497 | specialPlusTerm(p, 43834, 973084, -1, 27, 2, r); |
---|
| 1498 | specialPlusTerm(p, 32501, 723962, -1, 26, 2, r); |
---|
| 1499 | specialPlusTerm(p, 23738, 601098, -1, 25, 2, r); |
---|
| 1500 | specialPlusTerm(p, 17065, 504721, -1, 24, 2, r); |
---|
| 1501 | specialPlusTerm(p, 12064, 550062, -1, 23, 2, r); |
---|
| 1502 | specialPlusTerm(p, 8379, 120417, -1, 22, 2, r); |
---|
| 1503 | specialPlusTerm(p, 5710, 788839, -1, 21, 2, r); |
---|
| 1504 | specialPlusTerm(p, 3814, 684934, -1, 20, 2, r); |
---|
| 1505 | specialPlusTerm(p, 2493, 849460, -1, 19, 2, r); |
---|
| 1506 | specialPlusTerm(p, 1593, 60962, -1, 18, 2, r); |
---|
| 1507 | specialPlusTerm(p, 992, 543577, -1, 17, 2, r); |
---|
| 1508 | specialPlusTerm(p, 601, 881264, -1, 16, 2, r); |
---|
| 1509 | specialPlusTerm(p, 354, 378149, -1, 15, 2, r); |
---|
| 1510 | specialPlusTerm(p, 202, 23344, -1, 14, 2, r); |
---|
| 1511 | specialPlusTerm(p, 111, 145993, -1, 13, 2, r); |
---|
| 1512 | specialPlusTerm(p, 58, 785390, -1, 12, 2, r); |
---|
| 1513 | specialPlusTerm(p, 29, 753317, -1, 11, 2, r); |
---|
| 1514 | specialPlusTerm(p, 14, 331491, -1, 10, 2, r); |
---|
| 1515 | specialPlusTerm(p, 6, 525379, -1, 9, 2, r); |
---|
| 1516 | specialPlusTerm(p, 2, 785083, -1, 8, 2, r); |
---|
| 1517 | specialPlusTerm(p, 1, 102494, -1, 7, 2, r); |
---|
| 1518 | specialPlusTerm(p, 0, 399235, -1, 6, 2, r); |
---|
| 1519 | specialPlusTerm(p, 0, 129826, -1, 5, 2, r); |
---|
| 1520 | specialPlusTerm(p, 0, 36944, -1, 4, 2, r); |
---|
| 1521 | specialPlusTerm(p, 0, 8854, -1, 3, 2, r); |
---|
| 1522 | specialPlusTerm(p, 0, 1680, -1, 2, 2, r); |
---|
| 1523 | specialPlusTerm(p, 0, 225, -1, 1, 2, r); |
---|
| 1524 | specialPlusTerm(p, 0, 16, -1, 0, 2, r); |
---|
| 1525 | specialPlusTerm(p, 0, 1, 1, 120, 1, r); |
---|
| 1526 | specialPlusTerm(p, 0, 15, 1, 119, 1, r); |
---|
| 1527 | specialPlusTerm(p, 0, 119, 1, 118, 1, r); |
---|
| 1528 | specialPlusTerm(p, 0, 664, 1, 117, 1, r); |
---|
| 1529 | specialPlusTerm(p, 0, 2924, 1, 116, 1, r); |
---|
| 1530 | specialPlusTerm(p, 0, 10813, 1, 115, 1, r); |
---|
| 1531 | specialPlusTerm(p, 0, 34900, 1, 114, 1, r); |
---|
| 1532 | specialPlusTerm(p, 0, 100913, 1, 113, 1, r); |
---|
| 1533 | specialPlusTerm(p, 0, 266338, 1, 112, 1, r); |
---|
| 1534 | specialPlusTerm(p, 0, 650658, 1, 111, 1, r); |
---|
| 1535 | specialPlusTerm(p, 1, 487262, 1, 110, 1, r); |
---|
| 1536 | specialPlusTerm(p, 3, 208036, 1, 109, 1, r); |
---|
| 1537 | specialPlusTerm(p, 6, 574987, 1, 108, 1, r); |
---|
| 1538 | specialPlusTerm(p, 12, 876702, 1, 107, 1, r); |
---|
| 1539 | specialPlusTerm(p, 24, 210652, 1, 106, 1, r); |
---|
| 1540 | specialPlusTerm(p, 43, 874857, 1, 105, 1, r); |
---|
| 1541 | specialPlusTerm(p, 76, 893687, 1, 104, 1, r); |
---|
| 1542 | specialPlusTerm(p, 130, 701986, 1, 103, 1, r); |
---|
| 1543 | specialPlusTerm(p, 216, 8661, 1, 102, 1, r); |
---|
| 1544 | specialPlusTerm(p, 347, 854815, 1, 101, 1, r); |
---|
| 1545 | specialPlusTerm(p, 546, 871981, 1, 100, 1, r); |
---|
| 1546 | specialPlusTerm(p, 840, 732790, 1, 99, 1, r); |
---|
| 1547 | specialPlusTerm(p, 1265, 769513, 1, 98, 1, r); |
---|
| 1548 | specialPlusTerm(p, 1868, 715733, 1, 97, 1, r); |
---|
| 1549 | specialPlusTerm(p, 2708, 503701, 1, 96, 1, r); |
---|
| 1550 | specialPlusTerm(p, 3858, 25899, 1, 95, 1, r); |
---|
| 1551 | specialPlusTerm(p, 5405, 745562, 1, 94, 1, r); |
---|
| 1552 | specialPlusTerm(p, 7457, 19331, 1, 93, 1, r); |
---|
| 1553 | specialPlusTerm(p, 10134, 977992, 1, 92, 1, r); |
---|
| 1554 | specialPlusTerm(p, 13580, 800674, 1, 91, 1, r); |
---|
| 1555 | specialPlusTerm(p, 17953, 216130, 1, 90, 1, r); |
---|
| 1556 | specialPlusTerm(p, 23427, 73737, 1, 89, 1, r); |
---|
| 1557 | specialPlusTerm(p, 30190, 848078, 1, 88, 1, r); |
---|
| 1558 | specialPlusTerm(p, 38442, 975195, 1, 87, 1, r); |
---|
| 1559 | specialPlusTerm(p, 48386, 965771, 1, 86, 1, r); |
---|
| 1560 | specialPlusTerm(p, 60225, 299589, 1, 85, 1, r); |
---|
| 1561 | specialPlusTerm(p, 74152, 174574, 1, 84, 1, r); |
---|
| 1562 | specialPlusTerm(p, 90345, 259476, 1, 83, 1, r); |
---|
| 1563 | specialPlusTerm(p, 108956, 677797, 1, 82, 1, r); |
---|
| 1564 | specialPlusTerm(p, 130103, 527156, 1, 81, 1, r); |
---|
| 1565 | specialPlusTerm(p, 153858, 307693, 1, 80, 1, r); |
---|
| 1566 | specialPlusTerm(p, 180239, 689955, 1, 79, 1, r); |
---|
| 1567 | specialPlusTerm(p, 209204, 91832, 1, 78, 1, r); |
---|
| 1568 | specialPlusTerm(p, 240638, 550997, 1, 77, 1, r); |
---|
| 1569 | specialPlusTerm(p, 274355, 370450, 1, 76, 1, r); |
---|
| 1570 | specialPlusTerm(p, 310088, 978041, 1, 75, 1, r); |
---|
| 1571 | specialPlusTerm(p, 347495, 375766, 1, 74, 1, r); |
---|
| 1572 | specialPlusTerm(p, 386154, 462530, 1, 73, 1, r); |
---|
| 1573 | specialPlusTerm(p, 425575, 398166, 1, 72, 1, r); |
---|
| 1574 | specialPlusTerm(p, 465205, 41801, 1, 71, 1, r); |
---|
| 1575 | specialPlusTerm(p, 504439, 350762, 1, 70, 1, r); |
---|
| 1576 | specialPlusTerm(p, 542637, 474944, 1, 69, 1, r); |
---|
| 1577 | specialPlusTerm(p, 579138, 134521, 1, 68, 1, r); |
---|
| 1578 | specialPlusTerm(p, 613277, 734909, 1, 67, 1, r); |
---|
| 1579 | specialPlusTerm(p, 644409, 560477, 1, 66, 1, r); |
---|
| 1580 | specialPlusTerm(p, 671923, 305201, 1, 65, 1, r); |
---|
| 1581 | specialPlusTerm(p, 695264, 150336, 1, 64, 1, r); |
---|
| 1582 | specialPlusTerm(p, 713950, 590364, 1, 63, 1, r); |
---|
| 1583 | specialPlusTerm(p, 727590, 240796, 1, 62, 1, r); |
---|
| 1584 | specialPlusTerm(p, 735892, 934219, 1, 61, 1, r); |
---|
| 1585 | specialPlusTerm(p, 738680, 521142, 1, 60, 1, r); |
---|
| 1586 | specialPlusTerm(p, 735892, 934219, 1, 59, 1, r); |
---|
| 1587 | specialPlusTerm(p, 727590, 240796, 1, 58, 1, r); |
---|
| 1588 | specialPlusTerm(p, 713950, 590364, 1, 57, 1, r); |
---|
| 1589 | specialPlusTerm(p, 695264, 150336, 1, 56, 1, r); |
---|
| 1590 | specialPlusTerm(p, 671923, 305201, 1, 55, 1, r); |
---|
| 1591 | specialPlusTerm(p, 644409, 560477, 1, 54, 1, r); |
---|
| 1592 | specialPlusTerm(p, 613277, 734909, 1, 53, 1, r); |
---|
| 1593 | specialPlusTerm(p, 579138, 134521, 1, 52, 1, r); |
---|
| 1594 | specialPlusTerm(p, 542637, 474944, 1, 51, 1, r); |
---|
| 1595 | specialPlusTerm(p, 504439, 350762, 1, 50, 1, r); |
---|
| 1596 | specialPlusTerm(p, 465205, 41801, 1, 49, 1, r); |
---|
| 1597 | specialPlusTerm(p, 425575, 398166, 1, 48, 1, r); |
---|
| 1598 | specialPlusTerm(p, 386154, 462530, 1, 47, 1, r); |
---|
| 1599 | specialPlusTerm(p, 347495, 375766, 1, 46, 1, r); |
---|
| 1600 | specialPlusTerm(p, 310088, 978041, 1, 45, 1, r); |
---|
| 1601 | specialPlusTerm(p, 274355, 370450, 1, 44, 1, r); |
---|
| 1602 | specialPlusTerm(p, 240638, 550997, 1, 43, 1, r); |
---|
| 1603 | specialPlusTerm(p, 209204, 91832, 1, 42, 1, r); |
---|
| 1604 | specialPlusTerm(p, 180239, 689955, 1, 41, 1, r); |
---|
| 1605 | specialPlusTerm(p, 153858, 307693, 1, 40, 1, r); |
---|
| 1606 | specialPlusTerm(p, 130103, 527156, 1, 39, 1, r); |
---|
| 1607 | specialPlusTerm(p, 108956, 677797, 1, 38, 1, r); |
---|
| 1608 | specialPlusTerm(p, 90345, 259476, 1, 37, 1, r); |
---|
| 1609 | specialPlusTerm(p, 74152, 174574, 1, 36, 1, r); |
---|
| 1610 | specialPlusTerm(p, 60225, 299589, 1, 35, 1, r); |
---|
| 1611 | specialPlusTerm(p, 48386, 965771, 1, 34, 1, r); |
---|
| 1612 | specialPlusTerm(p, 38442, 975195, 1, 33, 1, r); |
---|
| 1613 | specialPlusTerm(p, 30190, 848078, 1, 32, 1, r); |
---|
| 1614 | specialPlusTerm(p, 23427, 73737, 1, 31, 1, r); |
---|
| 1615 | specialPlusTerm(p, 17953, 216130, 1, 30, 1, r); |
---|
| 1616 | specialPlusTerm(p, 13580, 800674, 1, 29, 1, r); |
---|
| 1617 | specialPlusTerm(p, 10134, 977992, 1, 28, 1, r); |
---|
| 1618 | specialPlusTerm(p, 7457, 19331, 1, 27, 1, r); |
---|
| 1619 | specialPlusTerm(p, 5405, 745562, 1, 26, 1, r); |
---|
| 1620 | specialPlusTerm(p, 3858, 25899, 1, 25, 1, r); |
---|
| 1621 | specialPlusTerm(p, 2708, 503701, 1, 24, 1, r); |
---|
| 1622 | specialPlusTerm(p, 1868, 715733, 1, 23, 1, r); |
---|
| 1623 | specialPlusTerm(p, 1265, 769513, 1, 22, 1, r); |
---|
| 1624 | specialPlusTerm(p, 840, 732790, 1, 21, 1, r); |
---|
| 1625 | specialPlusTerm(p, 546, 871981, 1, 20, 1, r); |
---|
| 1626 | specialPlusTerm(p, 347, 854815, 1, 19, 1, r); |
---|
| 1627 | specialPlusTerm(p, 216, 8661, 1, 18, 1, r); |
---|
| 1628 | specialPlusTerm(p, 130, 701986, 1, 17, 1, r); |
---|
| 1629 | specialPlusTerm(p, 76, 893687, 1, 16, 1, r); |
---|
| 1630 | specialPlusTerm(p, 43, 874857, 1, 15, 1, r); |
---|
| 1631 | specialPlusTerm(p, 24, 210652, 1, 14, 1, r); |
---|
| 1632 | specialPlusTerm(p, 12, 876702, 1, 13, 1, r); |
---|
| 1633 | specialPlusTerm(p, 6, 574987, 1, 12, 1, r); |
---|
| 1634 | specialPlusTerm(p, 3, 208036, 1, 11, 1, r); |
---|
| 1635 | specialPlusTerm(p, 1, 487262, 1, 10, 1, r); |
---|
| 1636 | specialPlusTerm(p, 0, 650658, 1, 9, 1, r); |
---|
| 1637 | specialPlusTerm(p, 0, 266338, 1, 8, 1, r); |
---|
| 1638 | specialPlusTerm(p, 0, 100913, 1, 7, 1, r); |
---|
| 1639 | specialPlusTerm(p, 0, 34900, 1, 6, 1, r); |
---|
| 1640 | specialPlusTerm(p, 0, 10813, 1, 5, 1, r); |
---|
| 1641 | specialPlusTerm(p, 0, 2924, 1, 4, 1, r); |
---|
| 1642 | specialPlusTerm(p, 0, 664, 1, 3, 1, r); |
---|
| 1643 | specialPlusTerm(p, 0, 119, 1, 2, 1, r); |
---|
| 1644 | specialPlusTerm(p, 0, 15, 1, 1, 1, r); |
---|
| 1645 | specialPlusTerm(p, 0, 1, 1, 0, 1, r); |
---|
| 1646 | } |
---|
[4a2260e] | 1647 | void checkInverse(number n, const coeffs cf) |
---|
| 1648 | { |
---|
[de90c01] | 1649 | clog << "n = "; p_Write((poly)n, cf->extRing); |
---|
[4a2260e] | 1650 | number n1 = n_Invers(n, cf); |
---|
[de90c01] | 1651 | clog << "==> n^(-1) = "; p_Write((poly)n1, cf->extRing); |
---|
[4a2260e] | 1652 | number n2 = n_Mult(n, n1, cf); |
---|
[de90c01] | 1653 | clog << "check: n * n^(-1) = "; p_Write((poly)n2, cf->extRing); |
---|
[cfb500] | 1654 | TS_ASSERT( n_IsOne(n2, cf) ); |
---|
[4a2260e] | 1655 | n_Delete(&n1, cf); n_Delete(&n2, cf); |
---|
| 1656 | } |
---|
[2d3091c] | 1657 | /* to be used over a rational function field, only! |
---|
| 1658 | assumes that cf represents a rational function field; |
---|
| 1659 | uses p inside the resulting number (and not a copy of it!) */ |
---|
[010f3b] | 1660 | number toFractionNumber(poly p, const coeffs cf) |
---|
| 1661 | { |
---|
| 1662 | number n = n_Init(1, cf); |
---|
| 1663 | fraction f = (fraction)n; |
---|
| 1664 | p_Delete(&(f->numerator), cf->extRing); |
---|
[2d3091c] | 1665 | f->numerator = p; |
---|
[010f3b] | 1666 | return n; |
---|
| 1667 | } |
---|
[c28ecf] | 1668 | void TestArithCf(const coeffs r) |
---|
| 1669 | { |
---|
| 1670 | clog << ("TEST: Simple Arithmetics: "); |
---|
| 1671 | clog << endl; |
---|
| 1672 | |
---|
| 1673 | number two = n_Init(2, r); |
---|
| 1674 | |
---|
[7af488e] | 1675 | number t = n_Init(1, r); |
---|
| 1676 | ndInpAdd(t, t, r); |
---|
[c28ecf] | 1677 | TS_ASSERT( n_Equal(two, t, r) ); |
---|
| 1678 | n_Delete(&t, r); |
---|
[7af488e] | 1679 | |
---|
[c28ecf] | 1680 | if( getCoeffType(r) == n_Q ) |
---|
| 1681 | { |
---|
[7af488e] | 1682 | number t = n_Init(1, r); |
---|
[c28ecf] | 1683 | nlInpAdd(t, t, r); |
---|
| 1684 | TS_ASSERT( n_Equal(two, t, r) ); |
---|
| 1685 | n_Delete(&t, r); |
---|
| 1686 | } |
---|
[7af488e] | 1687 | |
---|
[c28ecf] | 1688 | const int N = 66666; |
---|
| 1689 | |
---|
| 1690 | number a = n_Init(N, r); |
---|
[7af488e] | 1691 | |
---|
[c28ecf] | 1692 | clog<< "a: "; PrintSized(a, r); |
---|
| 1693 | |
---|
| 1694 | clog<< "two: "; PrintSized(two, r); |
---|
| 1695 | |
---|
| 1696 | number aa0 = n_Init(N*2, r); |
---|
| 1697 | |
---|
| 1698 | number aa = n_Add(a, a, r); |
---|
| 1699 | |
---|
| 1700 | clog<< "aa = a + a: "; PrintSized(aa, r); |
---|
[7af488e] | 1701 | |
---|
[c28ecf] | 1702 | number aa2 = n_Mult(a, two, r); |
---|
| 1703 | |
---|
| 1704 | clog<< "aa2 = a * 2: "; PrintSized(aa2, r); |
---|
| 1705 | |
---|
| 1706 | number aa1 = n_Mult(two, a, r); |
---|
[7af488e] | 1707 | |
---|
[c28ecf] | 1708 | clog<< "aa1 = 2 * a: "; PrintSized(aa1, r); |
---|
| 1709 | |
---|
| 1710 | n_Delete(&a, r); |
---|
| 1711 | n_Delete(&two, r); |
---|
| 1712 | |
---|
| 1713 | a = n_Sub( aa, aa1, r ); |
---|
[7af488e] | 1714 | |
---|
[c28ecf] | 1715 | clog<< "a = aa - aa1: "; PrintSized(a, r); |
---|
| 1716 | |
---|
| 1717 | TS_ASSERT( n_IsZero(a, r) ); |
---|
| 1718 | |
---|
| 1719 | n_Delete(&a, r); |
---|
| 1720 | |
---|
| 1721 | a = n_Sub( aa, aa2, r ); |
---|
| 1722 | |
---|
| 1723 | clog<< "a = aa - aa2: "; PrintSized(a, r); |
---|
| 1724 | |
---|
| 1725 | TS_ASSERT( n_IsZero(a, r) ); |
---|
| 1726 | |
---|
| 1727 | n_Delete(&a, r); |
---|
| 1728 | |
---|
| 1729 | a = n_Sub( aa1, aa2, r ); |
---|
| 1730 | |
---|
| 1731 | clog<< "a = aa1 - aa2: "; PrintSized(a, r); |
---|
| 1732 | |
---|
| 1733 | TS_ASSERT( n_IsZero(a, r) ); |
---|
| 1734 | |
---|
| 1735 | n_Delete(&a, r); |
---|
| 1736 | |
---|
| 1737 | TS_ASSERT( n_Equal(aa, aa1, r) ); |
---|
| 1738 | TS_ASSERT( n_Equal(aa, aa2, r) ); |
---|
| 1739 | TS_ASSERT( n_Equal(aa1, aa2, r) ); |
---|
[7af488e] | 1740 | |
---|
[c28ecf] | 1741 | TS_ASSERT( n_Equal(aa0, aa, r) ); |
---|
| 1742 | TS_ASSERT( n_Equal(aa0, aa1, r) ); |
---|
| 1743 | TS_ASSERT( n_Equal(aa0, aa2, r) ); |
---|
| 1744 | |
---|
| 1745 | n_Delete(&aa, r); |
---|
| 1746 | n_Delete(&aa1, r); |
---|
| 1747 | n_Delete(&aa2, r); |
---|
| 1748 | |
---|
| 1749 | n_Delete(&aa0, r); |
---|
| 1750 | |
---|
| 1751 | clog << ( " >>> TEST DONE!" ); |
---|
| 1752 | clog << endl; |
---|
| 1753 | } |
---|
| 1754 | void TestSumCf(const coeffs r, const unsigned long N) |
---|
| 1755 | { |
---|
| 1756 | clog << ( _2S("TEST: sum[0..") + _2S(N) + "]: "); |
---|
| 1757 | clog << endl; |
---|
| 1758 | |
---|
| 1759 | assume( N > 0 ); // just for now... |
---|
| 1760 | |
---|
| 1761 | const unsigned long ssss = (N * (N+1)) / 2; |
---|
[7af488e] | 1762 | |
---|
[c28ecf] | 1763 | number sum1 = n_Init(ssss, r); |
---|
| 1764 | clog<< "N*(N+1)/2 (int: " << ssss << "): "; PrintSized(sum1, r); |
---|
| 1765 | |
---|
| 1766 | number s, ss, i, res; |
---|
| 1767 | |
---|
| 1768 | s = n_Init(N , r); |
---|
| 1769 | i = n_Init(N+1, r); |
---|
| 1770 | ndInpMult(s, i, r); |
---|
| 1771 | n_Delete(&i, r); |
---|
[7af488e] | 1772 | |
---|
| 1773 | clog<< "N*(N+1): ("<< N*(N+1) << ")"; PrintSized(s, r); |
---|
| 1774 | |
---|
[c28ecf] | 1775 | i = n_Init(2, r); |
---|
[7af488e] | 1776 | clog<< "2: "; PrintSized(i, r); |
---|
[c28ecf] | 1777 | |
---|
| 1778 | if( !n_IsZero( i, r) ) |
---|
| 1779 | { |
---|
| 1780 | #ifdef HAVE_RINGS |
---|
| 1781 | TS_ASSERT( n_DivBy(s, i, r) ); |
---|
| 1782 | #endif |
---|
[7af488e] | 1783 | |
---|
[c28ecf] | 1784 | res = n_Div(s, i, r); |
---|
[7af488e] | 1785 | |
---|
[c28ecf] | 1786 | clog<< "N*(N+1)/2: "; PrintSized(res, r); |
---|
| 1787 | |
---|
| 1788 | |
---|
| 1789 | number d = n_Sub(res, sum1, r); |
---|
| 1790 | TS_ASSERT( n_IsZeroDivisor(d, r) ); |
---|
| 1791 | n_Delete(&d, r); |
---|
[7af488e] | 1792 | |
---|
[c28ecf] | 1793 | if( n_GetChar(r) == 0 ) |
---|
| 1794 | { |
---|
| 1795 | TS_ASSERT( n_Equal(sum1, res, r) ); |
---|
| 1796 | TS_ASSERT( n_Equal(res, sum1, r) ); |
---|
| 1797 | } |
---|
| 1798 | } else |
---|
| 1799 | TS_ASSERT_EQUALS( n_GetChar(r), 2); |
---|
[7af488e] | 1800 | |
---|
[c28ecf] | 1801 | |
---|
| 1802 | n_Delete(&s, r); n_Delete(&i, r); |
---|
[7af488e] | 1803 | |
---|
| 1804 | n_Delete(&sum1, r); n_Delete(&res, r); |
---|
| 1805 | |
---|
[c28ecf] | 1806 | |
---|
| 1807 | s = n_Init(0 , r); |
---|
| 1808 | ss = n_Init(0 , r); |
---|
| 1809 | for( int k = N; k >= 0; k-- ) |
---|
| 1810 | { |
---|
| 1811 | i = n_Init(k, r); |
---|
| 1812 | ndInpAdd(s, i, r); // s += i |
---|
| 1813 | |
---|
| 1814 | i = n_Neg(i, r); |
---|
| 1815 | ndInpAdd(ss, i, r); // ss -= i |
---|
[7af488e] | 1816 | |
---|
| 1817 | n_Delete(&i, r); |
---|
[c28ecf] | 1818 | } |
---|
[7af488e] | 1819 | clog<< "ss: "; PrintSized(ss, r); |
---|
[c28ecf] | 1820 | |
---|
| 1821 | ss = n_Neg(ss, r); // ss = -ss |
---|
[7af488e] | 1822 | |
---|
[c28ecf] | 1823 | clog<< "real sum : "; PrintSized(s, r); |
---|
[7af488e] | 1824 | clog<< "real sum(--): "; PrintSized(ss, r); |
---|
[c28ecf] | 1825 | |
---|
| 1826 | TS_ASSERT( n_Equal(s, ss, r) ); |
---|
| 1827 | TS_ASSERT( n_Equal(ss, s, r) ); |
---|
| 1828 | |
---|
[7af488e] | 1829 | n_Delete(&s, r); |
---|
| 1830 | n_Delete(&ss, r); |
---|
[c28ecf] | 1831 | |
---|
| 1832 | clog << ( " >>> TEST DONE!" ); |
---|
| 1833 | clog << endl; |
---|
| 1834 | |
---|
| 1835 | } |
---|
[4f684a] | 1836 | public: |
---|
[17e473] | 1837 | void test_Z13_t() |
---|
| 1838 | { |
---|
| 1839 | clog << "Creating Z/13[t]: " << endl; |
---|
| 1840 | |
---|
| 1841 | char* n[] = {"t"}; |
---|
[7af488e] | 1842 | ring r = rDefault( 13, 1, n); |
---|
[17e473] | 1843 | TS_ASSERT_DIFFERS( r, NULLp ); |
---|
| 1844 | |
---|
| 1845 | PrintRing(r); |
---|
| 1846 | |
---|
| 1847 | TS_ASSERT( rField_is_Domain(r) ); |
---|
| 1848 | TS_ASSERT( !rField_is_Q(r) ); |
---|
| 1849 | |
---|
| 1850 | TS_ASSERT( rField_is_Zp(r) ); |
---|
| 1851 | TS_ASSERT( !rField_is_Zp(r, 11) ); |
---|
| 1852 | TS_ASSERT( rField_is_Zp(r, 13) ); |
---|
| 1853 | |
---|
| 1854 | TS_ASSERT_EQUALS( rVar(r), 1); |
---|
| 1855 | |
---|
[b27c052] | 1856 | Test(r); |
---|
[7af488e] | 1857 | |
---|
[17e473] | 1858 | rDelete(r); |
---|
| 1859 | } |
---|
| 1860 | |
---|
| 1861 | void test_QQ_t() |
---|
| 1862 | { |
---|
| 1863 | clog << "Creating Q[s]: " << endl; |
---|
| 1864 | |
---|
| 1865 | char* n[] = {"s"}; |
---|
[7af488e] | 1866 | ring r = rDefault( 0, 1, n); |
---|
[17e473] | 1867 | TS_ASSERT_DIFFERS( r, NULLp ); |
---|
| 1868 | |
---|
| 1869 | PrintRing(r); |
---|
| 1870 | |
---|
| 1871 | TS_ASSERT( rField_is_Domain(r) ); |
---|
| 1872 | TS_ASSERT( rField_is_Q(r) ); |
---|
[7af488e] | 1873 | |
---|
[17e473] | 1874 | TS_ASSERT( !rField_is_Zp(r) ); |
---|
| 1875 | TS_ASSERT( !rField_is_Zp(r, 11) ); |
---|
| 1876 | |
---|
| 1877 | TS_ASSERT_EQUALS( rVar(r), 1); |
---|
| 1878 | |
---|
[b27c052] | 1879 | Test(r); |
---|
| 1880 | |
---|
[17e473] | 1881 | rDelete(r); |
---|
| 1882 | } |
---|
[7af488e] | 1883 | |
---|
[17e473] | 1884 | void test_Z11_x_y_z() |
---|
| 1885 | { |
---|
| 1886 | clog << "Creating Z/11[x, y, z]: " << endl; |
---|
[7af488e] | 1887 | |
---|
[17e473] | 1888 | char* n[] = {"x", "y", "z"}; |
---|
[7af488e] | 1889 | ring r = rDefault( 11, 3, n); |
---|
[4f684a] | 1890 | TS_ASSERT_DIFFERS( r, NULLp ); |
---|
| 1891 | |
---|
[17e473] | 1892 | PrintRing(r); |
---|
[7af488e] | 1893 | |
---|
[17e473] | 1894 | TS_ASSERT( rField_is_Domain(r) ); |
---|
| 1895 | TS_ASSERT( !rField_is_Q(r) ); |
---|
| 1896 | |
---|
| 1897 | TS_ASSERT( rField_is_Zp(r) ); |
---|
| 1898 | TS_ASSERT( rField_is_Zp(r, 11) ); |
---|
| 1899 | TS_ASSERT( !rField_is_Zp(r, 13) ); |
---|
| 1900 | |
---|
| 1901 | TS_ASSERT_EQUALS( rVar(r), 3); |
---|
| 1902 | |
---|
[b27c052] | 1903 | Test(r); |
---|
[7af488e] | 1904 | |
---|
[17e473] | 1905 | rDelete(r); |
---|
| 1906 | } |
---|
| 1907 | void test_QQ_x_y_z() |
---|
| 1908 | { |
---|
| 1909 | clog << "Creating QQ[x, y, z, u]: " << endl; |
---|
| 1910 | |
---|
| 1911 | char* n[] = {"x", "y", "z", "u"}; |
---|
[7af488e] | 1912 | ring r = rDefault( 0, 4, n); |
---|
[17e473] | 1913 | TS_ASSERT_DIFFERS( r, NULLp ); |
---|
| 1914 | |
---|
| 1915 | PrintRing(r); |
---|
| 1916 | |
---|
| 1917 | TS_ASSERT( rField_is_Domain(r) ); |
---|
| 1918 | TS_ASSERT( rField_is_Q(r) ); |
---|
| 1919 | |
---|
| 1920 | TS_ASSERT( !rField_is_Zp(r) ); |
---|
| 1921 | TS_ASSERT( !rField_is_Zp(r, 11) ); |
---|
| 1922 | |
---|
| 1923 | TS_ASSERT_EQUALS( rVar(r), 4); |
---|
| 1924 | |
---|
[b27c052] | 1925 | Test(r); |
---|
[7af488e] | 1926 | |
---|
[8c9912] | 1927 | rDelete(r); |
---|
[4f684a] | 1928 | } |
---|
[17e473] | 1929 | |
---|
| 1930 | |
---|
| 1931 | void test_Z13_t_GF() |
---|
| 1932 | { |
---|
| 1933 | clog << "Creating GF[t]: " << endl; |
---|
| 1934 | |
---|
| 1935 | char* n[] = {"t"}; |
---|
| 1936 | |
---|
| 1937 | GFInfo param; |
---|
| 1938 | |
---|
| 1939 | param.GFChar= 5; |
---|
| 1940 | param.GFDegree= 2; |
---|
| 1941 | param.GFPar_name= (const char*)"Q"; |
---|
| 1942 | |
---|
| 1943 | const coeffs cf = nInitChar( n_GF, ¶m ); |
---|
| 1944 | |
---|
[ae6d28] | 1945 | if( cf == NULL ) |
---|
| 1946 | TS_FAIL("Could not get needed coeff. domain"); |
---|
| 1947 | |
---|
[17e473] | 1948 | TS_ASSERT_DIFFERS( cf, NULLp ); |
---|
| 1949 | |
---|
| 1950 | ring r = rDefault( cf, 1, n); // now cf belongs to r! |
---|
| 1951 | TS_ASSERT_DIFFERS( r, NULLp ); |
---|
| 1952 | |
---|
| 1953 | PrintRing(r); |
---|
| 1954 | |
---|
| 1955 | TS_ASSERT( rField_is_Domain(r) ); |
---|
| 1956 | TS_ASSERT( !rField_is_Q(r) ); |
---|
| 1957 | |
---|
| 1958 | TS_ASSERT( !rField_is_Zp(r) ); |
---|
| 1959 | TS_ASSERT( !rField_is_Zp(r, 11) ); |
---|
| 1960 | TS_ASSERT( !rField_is_Zp(r, 13) ); |
---|
| 1961 | TS_ASSERT( rField_is_GF(r) ); |
---|
| 1962 | |
---|
[4f07ef] | 1963 | TS_ASSERT( rField_is_GF(r, 5) ); |
---|
| 1964 | TS_ASSERT( !rField_is_GF(r, 25) ); |
---|
[17e473] | 1965 | |
---|
| 1966 | TS_ASSERT_EQUALS( rVar(r), 1); |
---|
| 1967 | |
---|
[b27c052] | 1968 | Test(r); |
---|
| 1969 | |
---|
[17e473] | 1970 | rDelete(r); // kills 'cf' as well! |
---|
| 1971 | } |
---|
[7af488e] | 1972 | |
---|
[fba6f18] | 1973 | void test_Q_Ext_a() |
---|
| 1974 | { |
---|
| 1975 | clog << "Start by creating Q[a]..." << endl; |
---|
| 1976 | |
---|
| 1977 | char* n[] = {"a"}; |
---|
| 1978 | ring r = rDefault( 0, 1, n); // Q[a] |
---|
| 1979 | TS_ASSERT_DIFFERS( r, NULLp ); |
---|
| 1980 | |
---|
| 1981 | PrintRing(r); |
---|
| 1982 | |
---|
| 1983 | TS_ASSERT( rField_is_Domain(r) ); |
---|
| 1984 | TS_ASSERT( rField_is_Q(r) ); |
---|
[7af488e] | 1985 | |
---|
[fba6f18] | 1986 | TS_ASSERT( !rField_is_Zp(r) ); |
---|
| 1987 | TS_ASSERT( !rField_is_Zp(r, 11) ); |
---|
| 1988 | |
---|
| 1989 | TS_ASSERT_EQUALS( rVar(r), 1); |
---|
| 1990 | |
---|
| 1991 | poly minPoly = p_ISet(1, r); // minPoly = 1 |
---|
| 1992 | p_SetExp(minPoly, 1, 2, r); p_Setm(minPoly, r); // minPoly = a^2 |
---|
| 1993 | minPoly = p_Add_q(minPoly, p_ISet(1, r), r); // minPoly = a^2 + 1 |
---|
| 1994 | ideal minIdeal = idInit(1); // minIdeal = < 0 > |
---|
| 1995 | minIdeal->m[0] = minPoly; // minIdeal = < a^2 + 1 > |
---|
| 1996 | |
---|
[7af488e] | 1997 | n_coeffType type = nRegister(n_algExt, naInitChar); |
---|
[141342] | 1998 | TS_ASSERT(type == n_algExt); |
---|
[fba6f18] | 1999 | |
---|
[6ccdd3a] | 2000 | AlgExtInfo extParam; |
---|
[fba6f18] | 2001 | extParam.r = r; |
---|
| 2002 | extParam.i = minIdeal; |
---|
[7af488e] | 2003 | |
---|
[fba6f18] | 2004 | clog << "Next create the extension field Q[a]/<a2+1>..." << endl; |
---|
| 2005 | |
---|
| 2006 | const coeffs cf = nInitChar(type, &extParam); // Q[a]/<a2+1> |
---|
[7af488e] | 2007 | |
---|
[ae6d28] | 2008 | if( cf == NULL ) |
---|
| 2009 | TS_FAIL("Could not get needed coeff. domain"); |
---|
[fba6f18] | 2010 | |
---|
| 2011 | TS_ASSERT_DIFFERS( cf->cfCoeffWrite, NULLp ); |
---|
[7af488e] | 2012 | |
---|
[fba6f18] | 2013 | if( cf->cfCoeffWrite != NULL ) |
---|
| 2014 | { |
---|
[7af488e] | 2015 | clog << "Coeff-domain: " << endl; |
---|
[fba6f18] | 2016 | n_CoeffWrite(cf); PrintLn(); |
---|
| 2017 | } |
---|
[7af488e] | 2018 | |
---|
[141342] | 2019 | TS_ASSERT( nCoeff_is_algExt(cf) ); |
---|
| 2020 | TS_ASSERT( !nCoeff_is_transExt(cf) ); |
---|
[7af488e] | 2021 | |
---|
[c28ecf] | 2022 | // some tests for the coefficient field represented by cf: |
---|
| 2023 | TestArithCf(cf); |
---|
| 2024 | TestSumCf(cf, 10); |
---|
| 2025 | TestSumCf(cf, 100); |
---|
| 2026 | TestSumCf(cf, 101); |
---|
| 2027 | TestSumCf(cf, 1001); |
---|
[fd01a8] | 2028 | TestSumCf(cf, 2000); |
---|
[fba6f18] | 2029 | |
---|
| 2030 | clog << "Finally create the polynomial ring (Q[a]/<a2+1>)[x, y]..." |
---|
| 2031 | << endl; |
---|
[7af488e] | 2032 | |
---|
[fba6f18] | 2033 | char* m[] = {"x", "y"}; |
---|
| 2034 | ring s = rDefault(cf, 2, m); // (Q[a]/<a2+1>)[x, y] |
---|
| 2035 | TS_ASSERT_DIFFERS(s, NULLp); |
---|
[17e473] | 2036 | |
---|
[fba6f18] | 2037 | PrintRing(s); |
---|
| 2038 | |
---|
| 2039 | TS_ASSERT( rField_is_Domain(s) ); |
---|
| 2040 | TS_ASSERT( !rField_is_Q(s) ); |
---|
| 2041 | TS_ASSERT( !rField_is_Zp(s) ); |
---|
| 2042 | TS_ASSERT( !rField_is_Zp(s, 11) ); |
---|
| 2043 | TS_ASSERT( !rField_is_Zp(s, 13) ); |
---|
| 2044 | TS_ASSERT( !rField_is_GF(s) ); |
---|
| 2045 | TS_ASSERT( rField_is_Extension(s) ); |
---|
| 2046 | TS_ASSERT( !rField_is_GF(s, 25) ); |
---|
| 2047 | TS_ASSERT_EQUALS(rVar(s), 2); |
---|
| 2048 | |
---|
[c28ecf] | 2049 | Test(s); |
---|
[7af488e] | 2050 | |
---|
[4a2260e] | 2051 | clog << endl |
---|
[cfb500] | 2052 | << "Now let's compute some inverses in Q[a]/<a^2+1>..." |
---|
| 2053 | << endl; |
---|
[7af488e] | 2054 | |
---|
[fd01a8] | 2055 | poly u; |
---|
[6ccdd3a] | 2056 | u = NULL; plusTerm(u, 1, 1, 1, cf->extRing); |
---|
| 2057 | plusTerm(u, 1, 1, 0, cf->extRing); // a + 1 |
---|
| 2058 | checkInverse((number)u, cf); p_Delete(&u, cf->extRing); |
---|
| 2059 | u = NULL; plusTerm(u, 1, 1, 1, cf->extRing); |
---|
| 2060 | plusTerm(u, -1, 1, 0, cf->extRing); // a - 1 |
---|
| 2061 | checkInverse((number)u, cf); p_Delete(&u, cf->extRing); |
---|
| 2062 | u = NULL; plusTerm(u, 1, 1, 1, cf->extRing); |
---|
| 2063 | plusTerm(u, 5, 1, 0, cf->extRing); // a + 5 |
---|
| 2064 | checkInverse((number)u, cf); p_Delete(&u, cf->extRing); |
---|
| 2065 | u = NULL; plusTerm(u, 1, 1, 1, cf->extRing); |
---|
| 2066 | plusTerm(u, -5, 1, 0, cf->extRing); // a - 5 |
---|
| 2067 | checkInverse((number)u, cf); p_Delete(&u, cf->extRing); |
---|
| 2068 | u = NULL; plusTerm(u, 17, 1, 1, cf->extRing); |
---|
| 2069 | plusTerm(u, 5, 1, 0, cf->extRing); // 17a + 5 |
---|
| 2070 | checkInverse((number)u, cf); p_Delete(&u, cf->extRing); |
---|
[cfb500] | 2071 | |
---|
| 2072 | rDelete(s); // kills 'cf' and 'r' as well |
---|
| 2073 | } |
---|
| 2074 | void test_Q_Ext_b() |
---|
| 2075 | { |
---|
| 2076 | clog << "Start by creating Q[b]..." << endl; |
---|
| 2077 | |
---|
| 2078 | char* n[] = {"b"}; |
---|
| 2079 | ring r = rDefault( 0, 1, n); // Q[b] |
---|
| 2080 | TS_ASSERT_DIFFERS( r, NULLp ); |
---|
| 2081 | |
---|
| 2082 | PrintRing(r); |
---|
| 2083 | |
---|
| 2084 | TS_ASSERT( rField_is_Domain(r) ); |
---|
| 2085 | TS_ASSERT( rField_is_Q(r) ); |
---|
[7af488e] | 2086 | |
---|
[cfb500] | 2087 | TS_ASSERT( !rField_is_Zp(r) ); |
---|
| 2088 | TS_ASSERT( !rField_is_Zp(r, 11) ); |
---|
| 2089 | |
---|
| 2090 | TS_ASSERT_EQUALS( rVar(r), 1); |
---|
| 2091 | |
---|
| 2092 | poly minPoly = p_ISet(1, r); // minPoly = 1 |
---|
| 2093 | p_SetExp(minPoly, 1, 7, r); p_Setm(minPoly, r); // minPoly = b^7 |
---|
| 2094 | minPoly = p_Add_q(minPoly, p_ISet(17, r), r); // minPoly = b^7 + 17 |
---|
| 2095 | ideal minIdeal = idInit(1); // minIdeal = < 0 > |
---|
| 2096 | minIdeal->m[0] = minPoly; // minIdeal = < b^7 + 17 > |
---|
| 2097 | |
---|
[7af488e] | 2098 | n_coeffType type = nRegister(n_algExt, naInitChar); |
---|
[141342] | 2099 | TS_ASSERT(type == n_algExt); |
---|
[cfb500] | 2100 | |
---|
[6ccdd3a] | 2101 | AlgExtInfo extParam; |
---|
[cfb500] | 2102 | extParam.r = r; |
---|
| 2103 | extParam.i = minIdeal; |
---|
[7af488e] | 2104 | |
---|
[cfb500] | 2105 | clog << "Next create the extension field Q[b]/<b^7+17>..." << endl; |
---|
| 2106 | |
---|
| 2107 | const coeffs cf = nInitChar(type, &extParam); // Q[b]/<b^7+17> |
---|
[7af488e] | 2108 | |
---|
[cfb500] | 2109 | if( cf == NULL ) |
---|
| 2110 | TS_FAIL("Could not get needed coeff. domain"); |
---|
| 2111 | |
---|
| 2112 | TS_ASSERT_DIFFERS( cf->cfCoeffWrite, NULLp ); |
---|
[7af488e] | 2113 | |
---|
[cfb500] | 2114 | if( cf->cfCoeffWrite != NULL ) |
---|
| 2115 | { |
---|
[7af488e] | 2116 | clog << "Coeff-domain: " << endl; |
---|
[cfb500] | 2117 | n_CoeffWrite(cf); PrintLn(); |
---|
| 2118 | } |
---|
[7af488e] | 2119 | |
---|
[141342] | 2120 | TS_ASSERT( nCoeff_is_algExt(cf) ); |
---|
| 2121 | TS_ASSERT( !nCoeff_is_transExt(cf) ); |
---|
[7af488e] | 2122 | |
---|
[cfb500] | 2123 | // some tests for the coefficient field represented by cf: |
---|
| 2124 | TestArithCf(cf); |
---|
| 2125 | TestSumCf(cf, 10); |
---|
| 2126 | TestSumCf(cf, 100); |
---|
| 2127 | TestSumCf(cf, 101); |
---|
| 2128 | TestSumCf(cf, 1001); |
---|
| 2129 | TestSumCf(cf, 9000); |
---|
| 2130 | |
---|
| 2131 | clog << "Finally create the polynomial ring (Q[b]/<b^7+17>)[u, v, w]..." |
---|
| 2132 | << endl; |
---|
[7af488e] | 2133 | |
---|
[cfb500] | 2134 | char* m[] = {"u", "v", "w"}; |
---|
| 2135 | ring s = rDefault(cf, 3, m); // (Q[b]/<b^7+17>)[u, v, w] |
---|
| 2136 | TS_ASSERT_DIFFERS(s, NULLp); |
---|
| 2137 | |
---|
| 2138 | PrintRing(s); |
---|
| 2139 | |
---|
| 2140 | TS_ASSERT( rField_is_Domain(s) ); |
---|
| 2141 | TS_ASSERT( !rField_is_Q(s) ); |
---|
| 2142 | TS_ASSERT( !rField_is_Zp(s) ); |
---|
| 2143 | TS_ASSERT( !rField_is_Zp(s, 11) ); |
---|
| 2144 | TS_ASSERT( !rField_is_Zp(s, 13) ); |
---|
| 2145 | TS_ASSERT( !rField_is_GF(s) ); |
---|
| 2146 | TS_ASSERT( rField_is_Extension(s) ); |
---|
| 2147 | TS_ASSERT( !rField_is_GF(s, 25) ); |
---|
| 2148 | TS_ASSERT_EQUALS(rVar(s), 3); |
---|
| 2149 | |
---|
| 2150 | Test(s); |
---|
[7af488e] | 2151 | |
---|
[cfb500] | 2152 | clog << endl |
---|
| 2153 | << "Now let's compute some inverses in Q[b]/<b^7+17>..." |
---|
[4a2260e] | 2154 | << endl; |
---|
[7af488e] | 2155 | |
---|
[fd01a8] | 2156 | poly u; |
---|
[6ccdd3a] | 2157 | u = NULL; plusTerm(u, 1, 1, 2, cf->extRing); |
---|
| 2158 | plusTerm(u, 33, 1, 0, cf->extRing); // b^2 + 33 |
---|
| 2159 | checkInverse((number)u, cf); p_Delete(&u, cf->extRing); |
---|
| 2160 | u = NULL; plusTerm(u, 1, 1, 5, cf->extRing); |
---|
| 2161 | plusTerm(u, -137, 1, 0, cf->extRing); // b^5 - 137 |
---|
| 2162 | checkInverse((number)u, cf); p_Delete(&u, cf->extRing); |
---|
[cfb500] | 2163 | |
---|
| 2164 | clog << endl |
---|
| 2165 | << "Now let's check a gcd computation in Q[b]..." |
---|
| 2166 | << endl; |
---|
[7af488e] | 2167 | |
---|
[fd01a8] | 2168 | poly v; |
---|
[6ccdd3a] | 2169 | v = NULL; plusTerm(v, 1, 1, 2, cf->extRing); |
---|
| 2170 | plusTerm(v, 7, 1, 1, cf->extRing); |
---|
| 2171 | plusTerm(v, 1, 1, 0, cf->extRing); // b^2 + 7b + 1 |
---|
[fd01a8] | 2172 | number w = n_Mult((number)v, (number)v, cf); // (b^2 + 7b + 1)^2 |
---|
| 2173 | number y = n_Mult((number)v, (number)w, cf); // (b^2 + 7b + 1)^3 |
---|
[6ccdd3a] | 2174 | p_Delete(&v, cf->extRing); |
---|
| 2175 | v = NULL; plusTerm(v, 2, 1, 2, cf->extRing); |
---|
| 2176 | plusTerm(v, -61, 1, 1, cf->extRing); // 2b^2 - 61b |
---|
[fd01a8] | 2177 | number z = n_Mult((number)w, |
---|
| 2178 | (number)v, cf); // (b^2 + 7b + 1)^2 * (2b^2 - 61b) |
---|
[6ccdd3a] | 2179 | p_Delete(&v, cf->extRing); |
---|
[7af488e] | 2180 | |
---|
[6ccdd3a] | 2181 | clog << "z = "; p_Write((poly)z, cf->extRing); |
---|
| 2182 | clog << "y = "; p_Write((poly)y, cf->extRing); |
---|
[cfb500] | 2183 | number theGcd = n_Gcd(z, y, cf); // should yield w = (b^2 + 7b + 1)^2 |
---|
[6ccdd3a] | 2184 | clog << "gcd(z, y) = "; p_Write((poly)theGcd, cf->extRing); |
---|
[7af488e] | 2185 | |
---|
[fd01a8] | 2186 | v = (poly)n_Sub(theGcd, w, cf); |
---|
[cfb500] | 2187 | TS_ASSERT( v == NULL ); |
---|
[6ccdd3a] | 2188 | p_Delete(&v, cf->extRing); |
---|
[7af488e] | 2189 | |
---|
[cfb500] | 2190 | clog << endl |
---|
| 2191 | << "Now let's check an ext_gcd computation in Q[b]..." |
---|
| 2192 | << endl; |
---|
[7af488e] | 2193 | |
---|
[cfb500] | 2194 | poly zFactor; poly yFactor; |
---|
[6ccdd3a] | 2195 | poly ppp = p_ExtGcd((poly)z, zFactor, (poly)y, yFactor, cf->extRing); |
---|
[fd01a8] | 2196 | v = (poly)n_Sub(theGcd, (number)ppp, cf); |
---|
[cfb500] | 2197 | TS_ASSERT( v == NULL ); |
---|
[6ccdd3a] | 2198 | clog << "z = "; p_Write((poly)z, cf->extRing); |
---|
| 2199 | clog << "zFactor = "; p_Write(zFactor, cf->extRing); |
---|
| 2200 | clog << "y = "; p_Write((poly)y, cf->extRing); |
---|
| 2201 | clog << "yFactor = "; p_Write((poly)yFactor, cf->extRing); |
---|
[cfb500] | 2202 | number v1 = n_Mult(z, (number)zFactor, cf); |
---|
| 2203 | number v2 = n_Mult(y, (number)yFactor, cf); |
---|
| 2204 | number v3 = n_Add(v1, v2, cf); |
---|
[6ccdd3a] | 2205 | clog << "z * zFactor + y * yFactor = "; p_Write((poly)v3, cf->extRing); |
---|
| 2206 | clog << "gcd(z, y) = "; p_Write(ppp, cf->extRing); |
---|
[cfb500] | 2207 | number v4 = n_Sub(v3, w, cf); |
---|
| 2208 | TS_ASSERT( v4 == NULL ); |
---|
[7af488e] | 2209 | |
---|
[6ccdd3a] | 2210 | p_Delete(&ppp, cf->extRing); p_Delete(&zFactor, cf->extRing); |
---|
| 2211 | p_Delete(&yFactor, cf->extRing); |
---|
[cfb500] | 2212 | n_Delete(&z, cf); n_Delete(&y, cf); n_Delete(&w, cf); |
---|
[6ccdd3a] | 2213 | n_Delete(&theGcd, cf); p_Delete(&v, cf->extRing); n_Delete(&v1, cf); |
---|
[cfb500] | 2214 | n_Delete(&v2, cf); n_Delete(&v3, cf); n_Delete(&v4, cf); |
---|
[fba6f18] | 2215 | |
---|
[fd01a8] | 2216 | rDelete(s); // kills 'cf' and 'r' as well |
---|
| 2217 | } |
---|
| 2218 | void test_Z_17_Ext_a() |
---|
| 2219 | { |
---|
| 2220 | clog << "Start by creating Z_17[a]..." << endl; |
---|
| 2221 | |
---|
| 2222 | char* n[] = {"a"}; |
---|
| 2223 | ring r = rDefault( 17, 1, n); // Z/17Z[a] |
---|
| 2224 | TS_ASSERT_DIFFERS( r, NULLp ); |
---|
| 2225 | |
---|
| 2226 | PrintRing(r); |
---|
| 2227 | |
---|
| 2228 | TS_ASSERT( rField_is_Domain(r) ); |
---|
| 2229 | TS_ASSERT( !rField_is_Q(r) ); |
---|
[7af488e] | 2230 | |
---|
[fd01a8] | 2231 | TS_ASSERT( rField_is_Zp(r) ); |
---|
| 2232 | TS_ASSERT( rField_is_Zp(r, 17) ); |
---|
| 2233 | |
---|
| 2234 | TS_ASSERT_EQUALS( rVar(r), 1); |
---|
| 2235 | |
---|
| 2236 | poly minPoly = p_ISet(1, r); // minPoly = 1 |
---|
| 2237 | p_SetExp(minPoly, 1, 2, r); p_Setm(minPoly, r); // minPoly = a^2 |
---|
| 2238 | minPoly = p_Add_q(minPoly, p_ISet(3, r), r); // minPoly = a^2 + 3 |
---|
| 2239 | ideal minIdeal = idInit(1); // minIdeal = < 0 > |
---|
| 2240 | minIdeal->m[0] = minPoly; // minIdeal = < a^2 + 3 > |
---|
| 2241 | |
---|
[7af488e] | 2242 | n_coeffType type = nRegister(n_algExt, naInitChar); |
---|
[141342] | 2243 | TS_ASSERT(type == n_algExt); |
---|
[fd01a8] | 2244 | |
---|
[6ccdd3a] | 2245 | AlgExtInfo extParam; |
---|
[fd01a8] | 2246 | extParam.r = r; |
---|
| 2247 | extParam.i = minIdeal; |
---|
[7af488e] | 2248 | |
---|
[fd01a8] | 2249 | clog << "Next create the extension field Z_17[a]/<a^2+3>..." << endl; |
---|
| 2250 | |
---|
| 2251 | const coeffs cf = nInitChar(type, &extParam); // Z_17[a]/<a^2+3> |
---|
[7af488e] | 2252 | |
---|
[fd01a8] | 2253 | if( cf == NULL ) |
---|
| 2254 | TS_FAIL("Could not get needed coeff. domain"); |
---|
| 2255 | |
---|
| 2256 | TS_ASSERT_DIFFERS( cf->cfCoeffWrite, NULLp ); |
---|
[7af488e] | 2257 | |
---|
[fd01a8] | 2258 | if( cf->cfCoeffWrite != NULL ) |
---|
| 2259 | { |
---|
[7af488e] | 2260 | clog << "Coeff-domain: " << endl; |
---|
[fd01a8] | 2261 | n_CoeffWrite(cf); PrintLn(); |
---|
| 2262 | } |
---|
[7af488e] | 2263 | |
---|
[141342] | 2264 | TS_ASSERT( nCoeff_is_algExt(cf) ); |
---|
| 2265 | TS_ASSERT( !nCoeff_is_transExt(cf) ); |
---|
[7af488e] | 2266 | |
---|
[fd01a8] | 2267 | // some tests for the coefficient field represented by cf: |
---|
| 2268 | TestArithCf(cf); |
---|
| 2269 | TestSumCf(cf, 10); |
---|
| 2270 | TestSumCf(cf, 100); |
---|
| 2271 | TestSumCf(cf, 101); |
---|
| 2272 | TestSumCf(cf, 1001); |
---|
| 2273 | TestSumCf(cf, 9000); |
---|
| 2274 | |
---|
| 2275 | clog << "Finally create the polynomial ring (Z_17[a]/<a^2+3>)[u, v, w]..." |
---|
| 2276 | << endl; |
---|
[7af488e] | 2277 | |
---|
[fd01a8] | 2278 | char* m[] = {"u", "v", "w"}; |
---|
| 2279 | ring s = rDefault(cf, 3, m); // (Z_17[a]/<a^2+3>)[u, v, w] |
---|
| 2280 | TS_ASSERT_DIFFERS(s, NULLp); |
---|
| 2281 | |
---|
| 2282 | PrintRing(s); |
---|
| 2283 | |
---|
| 2284 | TS_ASSERT( rField_is_Domain(s) ); |
---|
| 2285 | TS_ASSERT( !rField_is_Q(s) ); |
---|
| 2286 | TS_ASSERT( !rField_is_Zp(s) ); |
---|
| 2287 | TS_ASSERT( !rField_is_Zp(s, 11) ); |
---|
| 2288 | TS_ASSERT( !rField_is_Zp(s, 17) ); |
---|
| 2289 | TS_ASSERT( !rField_is_GF(s) ); |
---|
| 2290 | TS_ASSERT( rField_is_Extension(s) ); |
---|
| 2291 | TS_ASSERT( !rField_is_GF(s, 25) ); |
---|
| 2292 | TS_ASSERT_EQUALS(rVar(s), 3); |
---|
| 2293 | |
---|
| 2294 | Test(s); |
---|
[de90c01] | 2295 | |
---|
| 2296 | rDelete(s); // kills 'cf' and 'r' as well |
---|
| 2297 | } |
---|
| 2298 | void test_Q_Ext_s_t() |
---|
| 2299 | { |
---|
| 2300 | clog << "Start by creating Q[s, t]..." << endl; |
---|
| 2301 | |
---|
| 2302 | char* n[] = {"s", "t"}; |
---|
| 2303 | ring r = rDefault( 0, 2, n); // Q[s, t] |
---|
| 2304 | TS_ASSERT_DIFFERS( r, NULLp ); |
---|
| 2305 | |
---|
| 2306 | PrintRing(r); |
---|
| 2307 | |
---|
| 2308 | TS_ASSERT( rField_is_Domain(r) ); |
---|
| 2309 | TS_ASSERT( rField_is_Q(r) ); |
---|
| 2310 | |
---|
| 2311 | TS_ASSERT( !rField_is_Zp(r) ); |
---|
| 2312 | TS_ASSERT( !rField_is_Zp(r, 17) ); |
---|
| 2313 | |
---|
| 2314 | TS_ASSERT_EQUALS( rVar(r), 2); |
---|
| 2315 | |
---|
| 2316 | n_coeffType type = nRegister(n_transExt, ntInitChar); |
---|
| 2317 | TS_ASSERT(type == n_transExt); |
---|
| 2318 | |
---|
| 2319 | TransExtInfo extParam; |
---|
| 2320 | extParam.r = r; |
---|
| 2321 | |
---|
| 2322 | clog << "Next create the rational function field Q(s, t)..." << endl; |
---|
| 2323 | |
---|
| 2324 | const coeffs cf = nInitChar(type, &extParam); // Q(s, t) |
---|
| 2325 | |
---|
| 2326 | if( cf == NULL ) |
---|
| 2327 | TS_FAIL("Could not get needed coeff. domain"); |
---|
| 2328 | |
---|
| 2329 | TS_ASSERT_DIFFERS( cf->cfCoeffWrite, NULLp ); |
---|
| 2330 | |
---|
| 2331 | if( cf->cfCoeffWrite != NULL ) |
---|
| 2332 | { |
---|
| 2333 | clog << "Coeff-domain: " << endl; |
---|
| 2334 | n_CoeffWrite(cf); PrintLn(); |
---|
| 2335 | } |
---|
| 2336 | |
---|
| 2337 | TS_ASSERT( !nCoeff_is_algExt(cf) ); |
---|
| 2338 | TS_ASSERT( nCoeff_is_transExt(cf) ); |
---|
| 2339 | |
---|
| 2340 | // some tests for the coefficient field represented by cf: |
---|
| 2341 | TestArithCf(cf); |
---|
| 2342 | TestSumCf(cf, 10); |
---|
| 2343 | TestSumCf(cf, 100); |
---|
| 2344 | TestSumCf(cf, 101); |
---|
| 2345 | TestSumCf(cf, 1001); |
---|
| 2346 | TestSumCf(cf, 9000); |
---|
| 2347 | |
---|
| 2348 | clog << "Finally create the polynomial ring Q(s, t)[x, y, z]..." |
---|
| 2349 | << endl; |
---|
| 2350 | |
---|
| 2351 | char* m[] = {"x", "y", "z"}; |
---|
| 2352 | ring s = rDefault(cf, 3, m); // Q(s, t)[x, y, z] |
---|
| 2353 | TS_ASSERT_DIFFERS(s, NULLp); |
---|
| 2354 | |
---|
| 2355 | PrintRing(s); |
---|
| 2356 | |
---|
| 2357 | TS_ASSERT( rField_is_Domain(s) ); |
---|
| 2358 | TS_ASSERT( !rField_is_Q(s) ); |
---|
| 2359 | TS_ASSERT( !rField_is_Zp(s) ); |
---|
| 2360 | TS_ASSERT( !rField_is_Zp(s, 11) ); |
---|
| 2361 | TS_ASSERT( !rField_is_Zp(s, 17) ); |
---|
| 2362 | TS_ASSERT( !rField_is_GF(s) ); |
---|
| 2363 | TS_ASSERT( rField_is_Extension(s) ); |
---|
| 2364 | TS_ASSERT( !rField_is_GF(s, 25) ); |
---|
| 2365 | TS_ASSERT_EQUALS(rVar(s), 3); |
---|
| 2366 | |
---|
| 2367 | Test(s); |
---|
| 2368 | |
---|
[010f3b] | 2369 | /* some special tests: */ |
---|
| 2370 | poly v1 = NULL; |
---|
| 2371 | plusTerm(v1, 1, 1, 1, cf->extRing); // s |
---|
| 2372 | plusTerm(v1, 1, 1, 0, cf->extRing); // s + 1 |
---|
| 2373 | poly v2 = NULL; |
---|
| 2374 | plusTerm(v2, 1, 1, 1, cf->extRing); // s |
---|
| 2375 | plusTerm(v2, 2, 2, 1, cf->extRing); // s + 2t |
---|
| 2376 | poly v = p_Mult_q(v1, v2, cf->extRing); // (s + 1) * (s + 2t) |
---|
| 2377 | number v_n = toFractionNumber(v, cf); |
---|
| 2378 | PrintSized(v_n, cf); |
---|
[e5d267] | 2379 | poly w1 = NULL; |
---|
| 2380 | plusTerm(w1, 1, 1, 1, cf->extRing); // s |
---|
| 2381 | plusTerm(w1, 1, 1, 0, cf->extRing); // s + 1 |
---|
| 2382 | poly w2 = NULL; |
---|
| 2383 | plusTerm(w2, 3, 1, 1, cf->extRing); // 3s |
---|
[2d3091c] | 2384 | plusTerm(w2, -7, 2, 1, cf->extRing); // 3s - 7t |
---|
[e5d267] | 2385 | poly w = p_Mult_q(w1, w2, cf->extRing); // (s + 1) * (3s - 7t) |
---|
[010f3b] | 2386 | number w_n = toFractionNumber(w, cf); |
---|
| 2387 | PrintSized(w_n, cf); |
---|
| 2388 | number vOverW_n = n_Div(v_n, w_n, cf); |
---|
| 2389 | PrintSized(vOverW_n, cf); |
---|
| 2390 | number wOverV_n = n_Invers(vOverW_n, cf); |
---|
| 2391 | PrintSized(wOverV_n, cf); |
---|
| 2392 | number prod = n_Mult(vOverW_n, wOverV_n, cf); |
---|
| 2393 | PrintSized(prod, cf); |
---|
| 2394 | number tmp; number nn = n_Copy(vOverW_n, cf); |
---|
[2d3091c] | 2395 | for (int i = 1; i <= 6; i++) |
---|
[010f3b] | 2396 | { |
---|
| 2397 | tmp = n_Div(nn, v_n, cf); |
---|
| 2398 | n_Delete(&nn, cf); |
---|
| 2399 | nn = tmp; |
---|
| 2400 | clog << i << ". "; PrintSized(nn, cf); |
---|
| 2401 | } |
---|
[e5d267] | 2402 | |
---|
[010f3b] | 2403 | n_Delete(&prod, cf); n_Delete(&nn, cf); |
---|
| 2404 | n_Delete(&v_n, cf); n_Delete(&w_n, cf); |
---|
| 2405 | n_Delete(&vOverW_n, cf); n_Delete(&wOverV_n, cf); |
---|
| 2406 | |
---|
[2d3091c] | 2407 | rDelete(s); // kills 'cf' and 'r' as well |
---|
| 2408 | } |
---|
| 2409 | void test_Q_Ext_Performance() |
---|
| 2410 | { |
---|
| 2411 | clog << "Start by creating Q[q]..." << endl; |
---|
| 2412 | |
---|
| 2413 | char* n[] = {"q"}; |
---|
| 2414 | ring r = rDefault( 0, 1, n); // Q[q] |
---|
| 2415 | r->order[0] = ringorder_dp; |
---|
| 2416 | TS_ASSERT_DIFFERS( r, NULLp ); |
---|
| 2417 | |
---|
| 2418 | PrintRing(r); |
---|
| 2419 | |
---|
| 2420 | TS_ASSERT( rField_is_Domain(r) ); |
---|
| 2421 | TS_ASSERT( rField_is_Q(r) ); |
---|
| 2422 | |
---|
| 2423 | TS_ASSERT( !rField_is_Zp(r) ); |
---|
| 2424 | TS_ASSERT( !rField_is_Zp(r, 17) ); |
---|
| 2425 | |
---|
| 2426 | TS_ASSERT_EQUALS( rVar(r), 1); |
---|
| 2427 | |
---|
| 2428 | n_coeffType type = nRegister(n_transExt, ntInitChar); |
---|
| 2429 | TS_ASSERT(type == n_transExt); |
---|
| 2430 | |
---|
| 2431 | TransExtInfo extParam; |
---|
| 2432 | extParam.r = r; |
---|
| 2433 | |
---|
| 2434 | clog << "Next create the rational function field Q(q)..." << endl; |
---|
| 2435 | |
---|
| 2436 | const coeffs cf = nInitChar(type, &extParam); // Q(q) |
---|
| 2437 | |
---|
| 2438 | if( cf == NULL ) |
---|
| 2439 | TS_FAIL("Could not get needed coeff. domain"); |
---|
| 2440 | |
---|
| 2441 | TS_ASSERT_DIFFERS( cf->cfCoeffWrite, NULLp ); |
---|
| 2442 | |
---|
| 2443 | if( cf->cfCoeffWrite != NULL ) |
---|
| 2444 | { |
---|
| 2445 | clog << "Coeff-domain: " << endl; |
---|
| 2446 | n_CoeffWrite(cf); PrintLn(); |
---|
| 2447 | } |
---|
| 2448 | |
---|
| 2449 | TS_ASSERT( !nCoeff_is_algExt(cf) ); |
---|
| 2450 | TS_ASSERT( nCoeff_is_transExt(cf) ); |
---|
| 2451 | |
---|
| 2452 | // some tests for the coefficient field represented by cf: |
---|
| 2453 | TestArithCf(cf); |
---|
| 2454 | TestSumCf(cf, 10); |
---|
| 2455 | TestSumCf(cf, 100); |
---|
| 2456 | TestSumCf(cf, 101); |
---|
| 2457 | TestSumCf(cf, 1001); |
---|
| 2458 | TestSumCf(cf, 9000); |
---|
| 2459 | |
---|
| 2460 | clog << "Finally create the polynomial ring Q(q)[t]..." |
---|
| 2461 | << endl; |
---|
| 2462 | |
---|
| 2463 | char* m[] = {"t"}; |
---|
| 2464 | ring s = rDefault(cf, 1, m); // Q(q)[t] |
---|
| 2465 | s->order[0] = ringorder_dp; |
---|
| 2466 | TS_ASSERT_DIFFERS(s, NULLp); |
---|
| 2467 | |
---|
| 2468 | PrintRing(s); |
---|
| 2469 | |
---|
| 2470 | TS_ASSERT( rField_is_Domain(s) ); |
---|
| 2471 | TS_ASSERT( !rField_is_Q(s) ); |
---|
| 2472 | TS_ASSERT( !rField_is_Zp(s) ); |
---|
| 2473 | TS_ASSERT( !rField_is_Zp(s, 11) ); |
---|
| 2474 | TS_ASSERT( !rField_is_Zp(s, 17) ); |
---|
| 2475 | TS_ASSERT( !rField_is_GF(s) ); |
---|
| 2476 | TS_ASSERT( rField_is_Extension(s) ); |
---|
| 2477 | TS_ASSERT( !rField_is_GF(s, 25) ); |
---|
| 2478 | TS_ASSERT_EQUALS(rVar(s), 1); |
---|
| 2479 | |
---|
| 2480 | Test(s); |
---|
| 2481 | |
---|
| 2482 | /* a special performance test: */ |
---|
| 2483 | poly entry = NULL; |
---|
| 2484 | for (int ti = 0; ti <= 20; ti++) |
---|
| 2485 | { |
---|
| 2486 | for (int qi = 0; qi <= 100; qi++) |
---|
| 2487 | { |
---|
| 2488 | int c = rand() % 1000000; |
---|
| 2489 | poly qterm = p_ISet(c, r); p_SetExp(qterm, 1, qi, r); |
---|
| 2490 | p_Setm(qterm, r); |
---|
| 2491 | number qtermAsN = toFractionNumber(qterm, cf); |
---|
| 2492 | poly tterm = p_ISet(1, s); p_SetExp(tterm, 1, ti, s); |
---|
| 2493 | p_Setm(tterm, r); p_SetCoeff(tterm, qtermAsN, s); |
---|
| 2494 | entry = p_Add_q(entry, tterm, s); |
---|
| 2495 | } |
---|
| 2496 | } |
---|
| 2497 | p_Write(entry, s); |
---|
| 2498 | poly qfactor = p_ISet(1, r); p_SetExp(qfactor, 1, 66, r); |
---|
| 2499 | p_Setm(qfactor, r); /* q^66 */ |
---|
| 2500 | number qfactorAsN = toFractionNumber(qfactor, cf); |
---|
| 2501 | number uuu = n_Invers(qfactorAsN, cf); /* 1 / q^66 */ |
---|
| 2502 | poly factor = p_ISet(1, s); p_SetCoeff(factor, uuu, s); /* 1 / q^66 */ |
---|
| 2503 | p_Write(factor, s); |
---|
| 2504 | clog << "starting multiplication..." << endl; |
---|
| 2505 | poly theProduct = p_Mult_q(entry, factor, s); |
---|
| 2506 | p_Write(theProduct, s); |
---|
[06df101] | 2507 | clog << "...ending multiplication" << endl; |
---|
[2d3091c] | 2508 | n_Delete(&qfactorAsN, cf); p_Delete(&theProduct, s); |
---|
| 2509 | |
---|
| 2510 | /* a very special performance test: */ |
---|
| 2511 | specialPoly(entry, s); |
---|
| 2512 | p_Write(entry, s); |
---|
| 2513 | qfactor = p_ISet(1, r); p_SetExp(qfactor, 1, 66, r); |
---|
| 2514 | p_Setm(qfactor, r); /* q^66 */ |
---|
| 2515 | qfactorAsN = toFractionNumber(qfactor, cf); |
---|
| 2516 | uuu = n_Invers(qfactorAsN, cf); /* 1 / q^66 */ |
---|
| 2517 | factor = p_ISet(1, s); p_SetCoeff(factor, uuu, s); /* 1 / q^66 */ |
---|
| 2518 | p_Write(factor, s); |
---|
| 2519 | clog << "starting very special multiplication..." << endl; |
---|
| 2520 | /* The following multiplication + output of the product is very slow |
---|
| 2521 | in the svn/trunk SINGULAR version; see trac ticket #308. |
---|
[06df101] | 2522 | Here, in the Spielwiese, the result is instantaneous. */ |
---|
[2d3091c] | 2523 | theProduct = p_Mult_q(entry, factor, s); |
---|
| 2524 | p_Write(theProduct, s); |
---|
[06df101] | 2525 | clog << "...ending very special multiplication" << endl; |
---|
[2d3091c] | 2526 | n_Delete(&qfactorAsN, cf); p_Delete(&theProduct, s); |
---|
[06df101] | 2527 | |
---|
| 2528 | rDelete(s); // kills 'cf' and 'r' as well |
---|
| 2529 | } |
---|
| 2530 | void test_Q_Ext_s_t_NestedFractions() |
---|
| 2531 | { |
---|
| 2532 | clog << "Start by creating Q[s, t]..." << endl; |
---|
| 2533 | |
---|
| 2534 | char* n[] = {"s", "t"}; |
---|
| 2535 | ring r = rDefault( 0, 2, n); // Q[s, t] |
---|
| 2536 | TS_ASSERT_DIFFERS( r, NULLp ); |
---|
| 2537 | |
---|
| 2538 | PrintRing(r); |
---|
| 2539 | |
---|
| 2540 | TS_ASSERT( rField_is_Domain(r) ); |
---|
| 2541 | TS_ASSERT( rField_is_Q(r) ); |
---|
| 2542 | |
---|
| 2543 | TS_ASSERT( !rField_is_Zp(r) ); |
---|
| 2544 | TS_ASSERT( !rField_is_Zp(r, 17) ); |
---|
| 2545 | |
---|
| 2546 | TS_ASSERT_EQUALS( rVar(r), 2); |
---|
| 2547 | |
---|
| 2548 | n_coeffType type = nRegister(n_transExt, ntInitChar); |
---|
| 2549 | TS_ASSERT(type == n_transExt); |
---|
| 2550 | |
---|
| 2551 | TransExtInfo extParam; |
---|
| 2552 | extParam.r = r; |
---|
| 2553 | |
---|
| 2554 | clog << "Next create the rational function field Q(s, t)..." << endl; |
---|
| 2555 | |
---|
| 2556 | const coeffs cf = nInitChar(type, &extParam); // Q(s, t) |
---|
| 2557 | |
---|
| 2558 | if( cf == NULL ) |
---|
| 2559 | TS_FAIL("Could not get needed coeff. domain"); |
---|
| 2560 | |
---|
| 2561 | TS_ASSERT_DIFFERS( cf->cfCoeffWrite, NULLp ); |
---|
| 2562 | |
---|
| 2563 | if( cf->cfCoeffWrite != NULL ) |
---|
| 2564 | { |
---|
| 2565 | clog << "Coeff-domain: " << endl; |
---|
| 2566 | n_CoeffWrite(cf); PrintLn(); |
---|
| 2567 | } |
---|
| 2568 | |
---|
| 2569 | TS_ASSERT( !nCoeff_is_algExt(cf) ); |
---|
| 2570 | TS_ASSERT( nCoeff_is_transExt(cf) ); |
---|
| 2571 | |
---|
| 2572 | clog << "Finally create the polynomial ring Q(s, t)[x, y, z]..." |
---|
| 2573 | << endl; |
---|
| 2574 | |
---|
| 2575 | char* m[] = {"x", "y", "z"}; |
---|
| 2576 | ring s = rDefault(cf, 3, m); // Q(s, t)[x, y, z] |
---|
| 2577 | TS_ASSERT_DIFFERS(s, NULLp); |
---|
| 2578 | |
---|
| 2579 | PrintRing(s); |
---|
| 2580 | |
---|
| 2581 | TS_ASSERT( rField_is_Domain(s) ); |
---|
| 2582 | TS_ASSERT( !rField_is_Q(s) ); |
---|
| 2583 | TS_ASSERT( !rField_is_Zp(s) ); |
---|
| 2584 | TS_ASSERT( !rField_is_Zp(s, 11) ); |
---|
| 2585 | TS_ASSERT( !rField_is_Zp(s, 17) ); |
---|
| 2586 | TS_ASSERT( !rField_is_GF(s) ); |
---|
| 2587 | TS_ASSERT( rField_is_Extension(s) ); |
---|
| 2588 | TS_ASSERT( !rField_is_GF(s, 25) ); |
---|
| 2589 | TS_ASSERT_EQUALS(rVar(s), 3); |
---|
| 2590 | |
---|
| 2591 | /* test 1 for nested fractions, i.e. fractional coefficients: */ |
---|
| 2592 | poly v1 = NULL; |
---|
| 2593 | plusTermOverQ(v1, 21, 2, 1, 1, cf->extRing); // 21/2*s |
---|
| 2594 | plusTermOverQ(v1, 14, 3, 1, 0, cf->extRing); // 21/2*s + 14/3 |
---|
| 2595 | number v1_n = toFractionNumber(v1, cf); |
---|
| 2596 | PrintSized(v1_n, cf); |
---|
| 2597 | poly v2 = NULL; |
---|
| 2598 | plusTermOverQ(v2, 7, 5, 1, 1, cf->extRing); // 7/5*s |
---|
| 2599 | plusTermOverQ(v2, -49, 6, 2, 1, cf->extRing); // 7/5*s - 49/6*t |
---|
| 2600 | number v2_n = toFractionNumber(v2, cf); |
---|
| 2601 | PrintSized(v2_n, cf); |
---|
| 2602 | number v3_n = n_Div(v1_n, v2_n, cf); // (45*s + 20) / (6s - 35*t) |
---|
| 2603 | PrintSized(v3_n, cf); |
---|
| 2604 | n_Delete(&v1_n, cf); n_Delete(&v2_n, cf); n_Delete(&v3_n, cf); |
---|
| 2605 | |
---|
| 2606 | /* test 2 for nested fractions, i.e. fractional coefficients: */ |
---|
| 2607 | v1 = NULL; |
---|
| 2608 | plusTermOverQ(v1, 1, 2, 1, 1, cf->extRing); // 1/2*s |
---|
| 2609 | plusTermOverQ(v1, 1, 1, 1, 0, cf->extRing); // 1/2*s + 1 |
---|
| 2610 | v2 = NULL; |
---|
| 2611 | plusTermOverQ(v2, 1, 1, 1, 1, cf->extRing); // s |
---|
| 2612 | plusTermOverQ(v2, 2, 3, 2, 1, cf->extRing); // s + 2/3*t |
---|
| 2613 | poly v3 = p_Mult_q(v1, v2, cf->extRing); // (1/2*s + 1) * (s + 2/3*t) |
---|
| 2614 | number v_n = toFractionNumber(v3, cf); |
---|
| 2615 | PrintSized(v_n, cf); |
---|
| 2616 | poly w1 = NULL; |
---|
| 2617 | plusTermOverQ(w1, 1, 2, 1, 1, cf->extRing); // 1/2*s |
---|
| 2618 | plusTermOverQ(w1, 1, 1, 1, 0, cf->extRing); // 1/2*s + 1 |
---|
| 2619 | poly w2 = NULL; |
---|
| 2620 | plusTermOverQ(w2, -7, 5, 1, 0, cf->extRing); // -7/5 |
---|
| 2621 | poly w3 = p_Mult_q(w1, w2, cf->extRing); // (1/2*s + 1) * (-7/5) |
---|
| 2622 | number w_n = toFractionNumber(w3, cf); |
---|
| 2623 | PrintSized(w_n, cf); |
---|
| 2624 | number z_n = n_Div(v_n, w_n, cf); // -5/7*s - 10/21*t |
---|
| 2625 | PrintSized(z_n, cf); |
---|
| 2626 | n_Delete(&v_n, cf); n_Delete(&w_n, cf); n_Delete(&z_n, cf); |
---|
[2d3091c] | 2627 | |
---|
[fba6f18] | 2628 | rDelete(s); // kills 'cf' and 'r' as well |
---|
| 2629 | } |
---|
[4f684a] | 2630 | }; |
---|
| 2631 | |
---|