# HG changeset patch
# User Jean-Pierre Flori <jean-pierre.flor@ssi.gouv.fr>
# Date 1366023901 -7200
# Node ID 3c7e27b3171e0ec27b3e4ace438df1c0fd799397
# Parent 0b229842ac297897b5ce8a4decd380dd6a8fe1da
#12173: doctests
diff --git a/sage/combinat/q_bernoulli.pyx b/sage/combinat/q_bernoulli.pyx
a
|
b
|
|
29 | 29 | sage: q_bernoulli(0) |
30 | 30 | 1 |
31 | 31 | sage: q_bernoulli(1) |
32 | | 1/(-q - 1) |
| 32 | -1/(q + 1) |
33 | 33 | sage: q_bernoulli(2) |
34 | 34 | q/(q^3 + 2*q^2 + 2*q + 1) |
35 | 35 | sage: all(q_bernoulli(i)(q=1)==bernoulli(i) for i in range(12)) |
diff --git a/sage/combinat/sf/jack.py b/sage/combinat/sf/jack.py
a
|
b
|
|
334 | 334 | |
335 | 335 | sage: s = Sym.schur() |
336 | 336 | sage: JJ(s([3])) # indirect doctest |
337 | | ((-t^2+3*t-2)/(-6*t^2-18*t-12))*JackJ[1, 1, 1] + ((2*t-2)/(2*t^2+5*t+2))*JackJ[2, 1] + (1/(2*t^2+3*t+1))*JackJ[3] |
| 337 | ((t^2-3*t+2)/(6*t^2+18*t+12))*JackJ[1, 1, 1] + ((2*t-2)/(2*t^2+5*t+2))*JackJ[2, 1] + (1/(2*t^2+3*t+1))*JackJ[3] |
338 | 338 | sage: JJ(s([2,1])) |
339 | 339 | ((t-1)/(3*t+6))*JackJ[1, 1, 1] + (1/(t+2))*JackJ[2, 1] |
340 | 340 | sage: JJ(s([1,1,1])) |
… |
… |
|
367 | 367 | sage: a.scalar(JP([1,1])) |
368 | 368 | 0 |
369 | 369 | sage: JP(JQp([2])) # todo: missing auto normalization |
370 | | ((-t+1)/(-t-1))*JackP[1, 1] + JackP[2] |
| 370 | ((t-1)/(t+1))*JackP[1, 1] + JackP[2] |
371 | 371 | sage: JP._normalize(JP(JQp([2]))) |
372 | | ((-t+1)/(-t-1))*JackP[1, 1] + JackP[2] |
| 372 | ((t-1)/(t+1))*JackP[1, 1] + JackP[2] |
373 | 373 | """ |
374 | 374 | return JackPolynomials_qp(self) |
375 | 375 | |
… |
… |
|
572 | 572 | 0 |
573 | 573 | sage: s = P.realization_of().s() |
574 | 574 | sage: P(Qp([2])) # todo: missing auto normalization |
575 | | ((-t+1)/(-t-1))*JackP[1, 1] + JackP[2] |
| 575 | ((t-1)/(t+1))*JackP[1, 1] + JackP[2] |
576 | 576 | sage: P._normalize(P(Qp([2]))) |
577 | | ((-t+1)/(-t-1))*JackP[1, 1] + JackP[2] |
| 577 | ((t-1)/(t+1))*JackP[1, 1] + JackP[2] |
578 | 578 | """ |
579 | 579 | (R, t) = NoneConvention(R, t) |
580 | 580 | sage.misc.superseded.deprecation(5457, "Deprecation warning: In the future use SymmetricFunctions(R).jack(t=%s).Qp()"%(t)) |
… |
… |
|
943 | 943 | |
944 | 944 | sage: JJ = SymmetricFunctions(FractionField(QQ['t'])).jack().J() |
945 | 945 | sage: JJ([1])^2 # indirect doctest |
946 | | (-t/(-t-1))*JackJ[1, 1] + (1/(t+1))*JackJ[2] |
| 946 | (t/(t+1))*JackJ[1, 1] + (1/(t+1))*JackJ[2] |
947 | 947 | sage: JJ([2])^2 |
948 | | (-2*t^2/(-2*t^2-3*t-1))*JackJ[2, 2] + (-4*t/(-3*t^2-4*t-1))*JackJ[3, 1] + ((t+1)/(6*t^2+5*t+1))*JackJ[4] |
| 948 | (2*t^2/(2*t^2+3*t+1))*JackJ[2, 2] + (4*t/(3*t^2+4*t+1))*JackJ[3, 1] + ((t+1)/(6*t^2+5*t+1))*JackJ[4] |
949 | 949 | sage: JQ = SymmetricFunctions(FractionField(QQ['t'])).jack().Q() |
950 | 950 | sage: JQ([1])^2 # indirect doctest |
951 | 951 | JackQ[1, 1] + (2/(t+1))*JackQ[2] |
… |
… |
|
992 | 992 | |
993 | 993 | sage: Sym = SymmetricFunctions(QQ['t'].fraction_field()) |
994 | 994 | sage: Sym.jack().P()[2,2].coproduct() #indirect doctest |
995 | | JackP[] # JackP[2, 2] + (2/(t+1))*JackP[1] # JackP[2, 1] + ((-8*t-4)/(-t^3-4*t^2-5*t-2))*JackP[1, 1] # JackP[1, 1] + JackP[2] # JackP[2] + (2/(t+1))*JackP[2, 1] # JackP[1] + JackP[2, 2] # JackP[] |
| 995 | JackP[] # JackP[2, 2] + (2/(t+1))*JackP[1] # JackP[2, 1] + ((8*t+4)/(t^3+4*t^2+5*t+2))*JackP[1, 1] # JackP[1, 1] + JackP[2] # JackP[2] + (2/(t+1))*JackP[2, 1] # JackP[1] + JackP[2, 2] # JackP[] |
996 | 996 | """ |
997 | 997 | from sage.categories.tensor import tensor |
998 | 998 | s = self.realization_of().schur() |
… |
… |
|
1112 | 1112 | sage: l = lambda c: [ (i[0],[j for j in sorted(i[1].items())]) for i in sorted(c.items())] |
1113 | 1113 | sage: JP._m_cache(2) |
1114 | 1114 | sage: l(JP._self_to_m_cache[2]) |
1115 | | [([1, 1], [([1, 1], 1)]), ([2], [([1, 1], -2/(-t - 1)), ([2], 1)])] |
| 1115 | [([1, 1], [([1, 1], 1)]), ([2], [([1, 1], 2/(t + 1)), ([2], 1)])] |
1116 | 1116 | sage: l(JP._m_to_self_cache[2]) |
1117 | | [([1, 1], [([1, 1], 1)]), ([2], [([1, 1], 2/(-t - 1)), ([2], 1)])] |
| 1117 | [([1, 1], [([1, 1], 1)]), ([2], [([1, 1], -2/(t + 1)), ([2], 1)])] |
1118 | 1118 | sage: JP._m_cache(3) |
1119 | 1119 | sage: l(JP._m_to_self_cache[3]) |
1120 | 1120 | [([1, 1, 1], [([1, 1, 1], 1)]), |
1121 | 1121 | ([2, 1], [([1, 1, 1], -6/(t + 2)), ([2, 1], 1)]), |
1122 | | ([3], [([1, 1, 1], -6/(-t^2 - 3*t - 2)), ([2, 1], -3/(2*t + 1)), ([3], 1)])] |
| 1122 | ([3], [([1, 1, 1], 6/(t^2 + 3*t + 2)), ([2, 1], -3/(2*t + 1)), ([3], 1)])] |
1123 | 1123 | sage: l(JP._self_to_m_cache[3]) |
1124 | 1124 | [([1, 1, 1], [([1, 1, 1], 1)]), |
1125 | 1125 | ([2, 1], [([1, 1, 1], 6/(t + 2)), ([2, 1], 1)]), |
1126 | | ([3], [([1, 1, 1], -6/(-2*t^2 - 3*t - 1)), ([2, 1], 3/(2*t + 1)), ([3], 1)])] |
| 1126 | ([3], [([1, 1, 1], 6/(2*t^2 + 3*t + 1)), ([2, 1], 3/(2*t + 1)), ([3], 1)])] |
1127 | 1127 | """ |
1128 | 1128 | if n in self._self_to_m_cache: |
1129 | 1129 | return |
… |
… |
|
1190 | 1190 | sage: JP = SymmetricFunctions(FractionField(QQ['t'])).jack().P() |
1191 | 1191 | sage: m = JP.symmetric_function_ring().m() |
1192 | 1192 | sage: JP([1])^2 # indirect doctest |
1193 | | (-2*t/(-t-1))*JackP[1, 1] + JackP[2] |
| 1193 | (2*t/(t+1))*JackP[1, 1] + JackP[2] |
1194 | 1194 | sage: m(_) |
1195 | 1195 | 2*m[1, 1] + m[2] |
1196 | 1196 | sage: JP = SymmetricFunctions(QQ).jack(t=2).P() |
… |
… |
|
1390 | 1390 | sage: JQp = SymmetricFunctions(FractionField(QQ['t'])).jack().Qp() |
1391 | 1391 | sage: h = JQp.symmetric_function_ring().h() |
1392 | 1392 | sage: JQp([1])^2 # indirect doctest |
1393 | | JackQp[1, 1] + (-2/(-t-1))*JackQp[2] |
| 1393 | JackQp[1, 1] + (2/(t+1))*JackQp[2] |
1394 | 1394 | sage: h(_) |
1395 | 1395 | h[1, 1] |
1396 | 1396 | sage: JQp = SymmetricFunctions(QQ).jack(t=2).Qp() |
… |
… |
|
1419 | 1419 | sage: l = lambda c: [ (i[0],[j for j in sorted(i[1].items())]) for i in sorted(c.items())] |
1420 | 1420 | sage: JQp._h_cache(2) |
1421 | 1421 | sage: l(JQp._self_to_h_cache[2]) |
1422 | | [([1, 1], [([1, 1], 1), ([2], 2/(-t - 1))]), ([2], [([2], 1)])] |
| 1422 | [([1, 1], [([1, 1], 1), ([2], -2/(t + 1))]), ([2], [([2], 1)])] |
1423 | 1423 | sage: l(JQp._h_to_self_cache[2]) |
1424 | | [([1, 1], [([1, 1], 1), ([2], -2/(-t - 1))]), ([2], [([2], 1)])] |
| 1424 | [([1, 1], [([1, 1], 1), ([2], 2/(t + 1))]), ([2], [([2], 1)])] |
1425 | 1425 | sage: JQp._h_cache(3) |
1426 | 1426 | sage: l(JQp._h_to_self_cache[3]) |
1427 | | [([1, 1, 1], [([1, 1, 1], 1), ([2, 1], 6/(t + 2)), ([3], -6/(-2*t^2 - 3*t - 1))]), ([2, 1], [([2, 1], 1), ([3], 3/(2*t + 1))]), ([3], [([3], 1)])] |
| 1427 | [([1, 1, 1], [([1, 1, 1], 1), ([2, 1], 6/(t + 2)), ([3], 6/(2*t^2 + 3*t + 1))]), ([2, 1], [([2, 1], 1), ([3], 3/(2*t + 1))]), ([3], [([3], 1)])] |
1428 | 1428 | sage: l(JQp._self_to_h_cache[3]) |
1429 | | [([1, 1, 1], [([1, 1, 1], 1), ([2, 1], -6/(t + 2)), ([3], -6/(-t^2 - 3*t - 2))]), ([2, 1], [([2, 1], 1), ([3], -3/(2*t + 1))]), ([3], [([3], 1)])] |
| 1429 | [([1, 1, 1], [([1, 1, 1], 1), ([2, 1], -6/(t + 2)), ([3], 6/(t^2 + 3*t + 2))]), ([2, 1], [([2, 1], 1), ([3], -3/(2*t + 1))]), ([3], [([3], 1)])] |
1430 | 1430 | """ |
1431 | 1431 | if n in self._self_to_h_cache: |
1432 | 1432 | return |
… |
… |
|
1520 | 1520 | sage: Sym = SymmetricFunctions(QQ['t'].fraction_field()) |
1521 | 1521 | sage: JQp = Sym.jack().Qp() |
1522 | 1522 | sage: JQp[2,2].coproduct() #indirect doctest |
1523 | | JackQp[] # JackQp[2, 2] + (2*t/(t+1))*JackQp[1] # JackQp[2, 1] + JackQp[1, 1] # JackQp[1, 1] + ((-4*t^3-8*t^2)/(-2*t^3-5*t^2-4*t-1))*JackQp[2] # JackQp[2] + (2*t/(t+1))*JackQp[2, 1] # JackQp[1] + JackQp[2, 2] # JackQp[] |
| 1523 | JackQp[] # JackQp[2, 2] + (2*t/(t+1))*JackQp[1] # JackQp[2, 1] + JackQp[1, 1] # JackQp[1, 1] + ((4*t^3+8*t^2)/(2*t^3+5*t^2+4*t+1))*JackQp[2] # JackQp[2] + (2*t/(t+1))*JackQp[2, 1] # JackQp[1] + JackQp[2, 2] # JackQp[] |
1524 | 1524 | """ |
1525 | 1525 | h = elt.parent().realization_of().h() |
1526 | 1526 | parent = elt.parent() |
diff --git a/sage/rings/polynomial/padics/polynomial_padic_capped_relative_dense.py b/sage/rings/polynomial/padics/polynomial_padic_capped_relative_dense.py
a
|
b
|
|
27 | 27 | class Polynomial_padic_capped_relative_dense(Polynomial_generic_domain): |
28 | 28 | def __init__(self, parent, x=None, check=True, is_gen=False, construct = False, absprec = infinity, relprec = infinity): |
29 | 29 | """ |
30 | | TESTS: |
| 30 | TESTS:: |
| 31 | |
31 | 32 | sage: K = Qp(13,7) |
32 | 33 | sage: R.<t> = K[] |
33 | 34 | sage: R([K(13), K(1)]) |
… |
… |
|
183 | 184 | """ |
184 | 185 | Recomputes the list of coefficients. |
185 | 186 | |
186 | | EXAMPLES: |
187 | | sage: K = Qp(13,7) |
188 | | sage: R.<t> = K[] |
189 | | sage: a = t[0:1] |
190 | | sage: a._comp_list() |
191 | | sage: a |
192 | | 0 |
| 187 | EXAMPLES:: |
| 188 | |
| 189 | sage: K = Qp(13,7) |
| 190 | sage: R.<t> = K[] |
| 191 | sage: a = t[0:1] |
| 192 | sage: a._comp_list() |
| 193 | sage: a |
| 194 | 0 |
193 | 195 | """ |
194 | 196 | if self.degree() == -1 and self._valbase == infinity: |
195 | 197 | self._list = [] |
… |
… |
|
283 | 285 | than expected since it includes any leading zeros |
284 | 286 | that have finite absolute precision. |
285 | 287 | |
286 | | EXAMPLES: |
287 | | sage: K = Qp(13,7) |
288 | | sage: R.<t> = K[] |
289 | | sage: a = 2*t^3 + 169*t - 1 |
290 | | sage: a |
291 | | (2 + O(13^7))*t^3 + (13^2 + O(13^9))*t + (12 + 12*13 + 12*13^2 + 12*13^3 + 12*13^4 + 12*13^5 + 12*13^6 + O(13^7)) |
292 | | sage: a.list() |
293 | | [12 + 12*13 + 12*13^2 + 12*13^3 + 12*13^4 + 12*13^5 + 12*13^6 + O(13^7), |
294 | | 13^2 + O(13^9), |
295 | | 0, |
296 | | 2 + O(13^7)] |
| 288 | EXAMPLES:: |
| 289 | |
| 290 | sage: K = Qp(13,7) |
| 291 | sage: R.<t> = K[] |
| 292 | sage: a = 2*t^3 + 169*t - 1 |
| 293 | sage: a |
| 294 | (2 + O(13^7))*t^3 + (13^2 + O(13^9))*t + (12 + 12*13 + 12*13^2 + 12*13^3 + 12*13^4 + 12*13^5 + 12*13^6 + O(13^7)) |
| 295 | sage: a.list() |
| 296 | [12 + 12*13 + 12*13^2 + 12*13^3 + 12*13^4 + 12*13^5 + 12*13^6 + O(13^7), |
| 297 | 13^2 + O(13^9), |
| 298 | 0, |
| 299 | 2 + O(13^7)] |
297 | 300 | """ |
298 | 301 | |
299 | 302 | if self._list is None: |
… |
… |
|
302 | 305 | |
303 | 306 | def _repr(self, name=None): |
304 | 307 | """ |
305 | | TESTS: |
| 308 | TESTS:: |
| 309 | |
306 | 310 | sage: k = Qp(5,10) |
307 | 311 | sage: R.<x> = k[] |
308 | 312 | sage: f = R([k(0,-3), 0, k(0,-1)]); f |
… |
… |
|
349 | 353 | |
350 | 354 | The content of the exact zero polynomial is zero. |
351 | 355 | |
352 | | EXAMPLES: |
353 | | sage: K = Zp(13,7) |
354 | | sage: R.<t> = K[] |
355 | | sage: a = 13^7*t^3 + K(169,4)*t - 13^4 |
356 | | sage: a.content() |
357 | | 13^2 + O(13^9) |
358 | | sage: R(0).content() |
359 | | 0 |
360 | | sage: P.<x> = ZZ[] |
361 | | sage: f = x + 2 |
362 | | sage: f.content() |
363 | | 1 |
364 | | sage: fp = f.change_ring(pAdicRing(2, 10)) |
365 | | sage: fp |
366 | | (1 + O(2^10))*x + (2 + O(2^11)) |
367 | | sage: fp.content() |
368 | | 1 + O(2^10) |
369 | | sage: (2*fp).content() |
370 | | 2 + O(2^11) |
| 356 | EXAMPLES:: |
| 357 | |
| 358 | sage: K = Zp(13,7) |
| 359 | sage: R.<t> = K[] |
| 360 | sage: a = 13^7*t^3 + K(169,4)*t - 13^4 |
| 361 | sage: a.content() |
| 362 | 13^2 + O(13^9) |
| 363 | sage: R(0).content() |
| 364 | 0 |
| 365 | sage: P.<x> = ZZ[] |
| 366 | sage: f = x + 2 |
| 367 | sage: f.content() |
| 368 | 1 |
| 369 | sage: fp = f.change_ring(pAdicRing(2, 10)) |
| 370 | sage: fp |
| 371 | (1 + O(2^10))*x + (2 + O(2^11)) |
| 372 | sage: fp.content() |
| 373 | 1 + O(2^10) |
| 374 | sage: (2*fp).content() |
| 375 | 2 + O(2^11) |
371 | 376 | """ |
372 | 377 | if self.base_ring().is_field(): |
373 | 378 | raise TypeError, "ground ring is a field. Answer is only defined up to units." |
… |
… |
|
385 | 390 | the same coefficients (ie same values and precisions): it will depend on how |
386 | 391 | the polynomials are created. |
387 | 392 | |
388 | | EXAMPLES: |
389 | | sage: K = Qp(13,7) |
390 | | sage: R.<t> = K[] |
391 | | sage: a = 13^7*t^3 + K(169,4)*t - 13^4 |
392 | | sage: a.lift() |
393 | | 62748517*t^3 + 169*t - 28561 |
| 393 | EXAMPLES:: |
| 394 | |
| 395 | sage: K = Qp(13,7) |
| 396 | sage: R.<t> = K[] |
| 397 | sage: a = 13^7*t^3 + K(169,4)*t - 13^4 |
| 398 | sage: a.lift() |
| 399 | 62748517*t^3 + 169*t - 28561 |
394 | 400 | """ |
395 | 401 | return self.base_ring().prime_pow(self._valbase) * self._poly |
396 | 402 | |
… |
… |
|
401 | 407 | |
402 | 408 | EXAMPLES:: |
403 | 409 | |
404 | | sage: K = Qp(13,7) |
405 | | sage: R.<t> = K[] |
406 | | sage: a = 13^7*t^3 + K(169,4)*t - 13^4 |
407 | | sage: a[1] |
408 | | 13^2 + O(13^4) |
409 | | sage: a[1:2] |
410 | | (13^2 + O(13^4))*t |
| 410 | sage: K = Qp(13,7) |
| 411 | sage: R.<t> = K[] |
| 412 | sage: a = 13^7*t^3 + K(169,4)*t - 13^4 |
| 413 | sage: a[1] |
| 414 | 13^2 + O(13^4) |
| 415 | sage: a[1:2] |
| 416 | (13^2 + O(13^4))*t |
411 | 417 | """ |
412 | 418 | if isinstance(n, slice): |
413 | 419 | start, stop = n.start, n.stop |
… |
… |
|
445 | 451 | """ |
446 | 452 | Returns the sum of self and right. |
447 | 453 | |
448 | | EXAMPLES: |
449 | | sage: K = Qp(13,7) |
450 | | sage: R.<t> = K[] |
451 | | sage: a = t^4 + 17*t^2 + 1 |
452 | | sage: b = -t^4 + 9*t^2 + 13*t - 1 |
453 | | sage: c = a + b; c |
454 | | (O(13^7))*t^4 + (2*13 + O(13^7))*t^2 + (13 + O(13^8))*t + (O(13^7)) |
455 | | sage: c.list() |
456 | | [O(13^7), 13 + O(13^8), 2*13 + O(13^7), 0, O(13^7)] |
| 454 | EXAMPLES:: |
| 455 | |
| 456 | sage: K = Qp(13,7) |
| 457 | sage: R.<t> = K[] |
| 458 | sage: a = t^4 + 17*t^2 + 1 |
| 459 | sage: b = -t^4 + 9*t^2 + 13*t - 1 |
| 460 | sage: c = a + b; c |
| 461 | (O(13^7))*t^4 + (2*13 + O(13^7))*t^2 + (13 + O(13^8))*t + (O(13^7)) |
| 462 | sage: c.list() |
| 463 | [O(13^7), 13 + O(13^8), 2*13 + O(13^7), 0, O(13^7)] |
457 | 464 | """ |
458 | 465 | selfpoly = self._poly |
459 | 466 | rightpoly = right._poly |
… |
… |
|
478 | 485 | """ |
479 | 486 | Returns the sum of self and right. |
480 | 487 | |
481 | | EXAMPLES: |
482 | | sage: K = Qp(13,7) |
483 | | sage: R.<t> = K[] |
484 | | sage: a = t^4 + 17*t^2 + 1 |
485 | | sage: b = t^4 - 9*t^2 - 13*t + 1 |
486 | | sage: c = a - b; c |
487 | | (O(13^7))*t^4 + (2*13 + O(13^7))*t^2 + (13 + O(13^8))*t + (O(13^7)) |
488 | | sage: c.list() |
489 | | [O(13^7), 13 + O(13^8), 2*13 + O(13^7), 0, O(13^7)] |
| 488 | EXAMPLES:: |
| 489 | |
| 490 | sage: K = Qp(13,7) |
| 491 | sage: R.<t> = K[] |
| 492 | sage: a = t^4 + 17*t^2 + 1 |
| 493 | sage: b = t^4 - 9*t^2 - 13*t + 1 |
| 494 | sage: c = a - b; c |
| 495 | (O(13^7))*t^4 + (2*13 + O(13^7))*t^2 + (13 + O(13^8))*t + (O(13^7)) |
| 496 | sage: c.list() |
| 497 | [O(13^7), 13 + O(13^8), 2*13 + O(13^7), 0, O(13^7)] |
490 | 498 | """ |
491 | 499 | selfpoly = self._poly |
492 | 500 | rightpoly = right._poly |
… |
… |
|
549 | 557 | may very well change as we do more tests on the relative time |
550 | 558 | requirements of these operations. |
551 | 559 | |
552 | | EXAMPLES: |
553 | | sage: K = Qp(13,7) |
554 | | sage: R.<t> = K[] |
555 | | sage: a = t^4 + 17*t^2 + 1 |
556 | | sage: b = -t^4 + 9*t^2 + 13*t - 1 |
557 | | sage: c = a + b; c |
558 | | (O(13^7))*t^4 + (2*13 + O(13^7))*t^2 + (13 + O(13^8))*t + (O(13^7)) |
559 | | sage: d = R([K(1,4), K(2, 6), K(1, 5)]); d |
560 | | (1 + O(13^5))*t^2 + (2 + O(13^6))*t + (1 + O(13^4)) |
561 | | sage: e = c * d; e |
562 | | (O(13^7))*t^6 + (O(13^7))*t^5 + (2*13 + O(13^6))*t^4 + (5*13 + O(13^6))*t^3 + (4*13 + O(13^5))*t^2 + (13 + O(13^5))*t + (O(13^7)) |
563 | | sage: e.list() |
564 | | [O(13^7), |
565 | | 13 + O(13^5), |
566 | | 4*13 + O(13^5), |
567 | | 5*13 + O(13^6), |
568 | | 2*13 + O(13^6), |
569 | | O(13^7), |
570 | | O(13^7)] |
| 560 | EXAMPLES:: |
| 561 | |
| 562 | sage: K = Qp(13,7) |
| 563 | sage: R.<t> = K[] |
| 564 | sage: a = t^4 + 17*t^2 + 1 |
| 565 | sage: b = -t^4 + 9*t^2 + 13*t - 1 |
| 566 | sage: c = a + b; c |
| 567 | (O(13^7))*t^4 + (2*13 + O(13^7))*t^2 + (13 + O(13^8))*t + (O(13^7)) |
| 568 | sage: d = R([K(1,4), K(2, 6), K(1, 5)]); d |
| 569 | (1 + O(13^5))*t^2 + (2 + O(13^6))*t + (1 + O(13^4)) |
| 570 | sage: e = c * d; e |
| 571 | (O(13^7))*t^6 + (O(13^7))*t^5 + (2*13 + O(13^6))*t^4 + (5*13 + O(13^6))*t^3 + (4*13 + O(13^5))*t^2 + (13 + O(13^5))*t + (O(13^7)) |
| 572 | sage: e.list() |
| 573 | [O(13^7), |
| 574 | 13 + O(13^5), |
| 575 | 4*13 + O(13^5), |
| 576 | 5*13 + O(13^6), |
| 577 | 2*13 + O(13^6), |
| 578 | O(13^7), |
| 579 | O(13^7)] |
571 | 580 | """ |
572 | 581 | self._normalize() |
573 | 582 | right._normalize() |
… |
… |
|
591 | 600 | """ |
592 | 601 | Returns self multiplied by a constant |
593 | 602 | |
594 | | EXAMPLES: |
595 | | sage: K = Qp(13,7) |
596 | | sage: R.<t> = K[] |
597 | | sage: a = t^4 + K(13,5)*t^2 + 13 |
598 | | sage: K(13,7) * a |
599 | | (13 + O(13^7))*t^4 + (13^2 + O(13^6))*t^2 + (13^2 + O(13^8)) |
| 603 | EXAMPLES:: |
| 604 | |
| 605 | sage: K = Qp(13,7) |
| 606 | sage: R.<t> = K[] |
| 607 | sage: a = t^4 + K(13,5)*t^2 + 13 |
| 608 | sage: K(13,7) * a |
| 609 | (13 + O(13^7))*t^4 + (13^2 + O(13^6))*t^2 + (13^2 + O(13^8)) |
600 | 610 | """ |
601 | 611 | return None |
602 | 612 | # The code below has never been tested and is somehow subtly broken. |
… |
… |
|
617 | 627 | """ |
618 | 628 | Returns the negation of self. |
619 | 629 | |
620 | | EXAMPLES: |
621 | | sage: K = Qp(13,2) |
622 | | sage: R.<t> = K[] |
623 | | sage: a = t^4 + 13*t^2 + 4 |
624 | | sage: -a |
625 | | (12 + 12*13 + O(13^2))*t^4 + (12*13 + 12*13^2 + O(13^3))*t^2 + (9 + 12*13 + O(13^2)) |
| 630 | EXAMPLES:: |
| 631 | |
| 632 | sage: K = Qp(13,2) |
| 633 | sage: R.<t> = K[] |
| 634 | sage: a = t^4 + 13*t^2 + 4 |
| 635 | sage: -a |
| 636 | (12 + 12*13 + O(13^2))*t^4 + (12*13 + 12*13^2 + O(13^3))*t^2 + (9 + 12*13 + O(13^2)) |
626 | 637 | """ |
627 | 638 | return Polynomial_padic_capped_relative_dense(self.parent(), (-self._poly, self._valbase, self._relprecs, False, self._valaddeds, None), construct = True) |
628 | 639 | |
… |
… |
|
630 | 641 | """ |
631 | 642 | Returns a new polynomials whose coefficients are multiplied by p^shift. |
632 | 643 | |
633 | | EXAMPLES: |
634 | | sage: K = Qp(13, 4) |
635 | | sage: R.<t> = K[] |
636 | | sage: a = t + 52 |
637 | | sage: a.lshift_coeffs(3) |
638 | | (13^3 + O(13^7))*t + (4*13^4 + O(13^8)) |
| 644 | EXAMPLES:: |
| 645 | |
| 646 | sage: K = Qp(13, 4) |
| 647 | sage: R.<t> = K[] |
| 648 | sage: a = t + 52 |
| 649 | sage: a.lshift_coeffs(3) |
| 650 | (13^3 + O(13^7))*t + (4*13^4 + O(13^8)) |
639 | 651 | """ |
640 | 652 | if shift < 0: |
641 | 653 | return self.rshift_coeffs(-shift, no_list) |
… |
… |
|
651 | 663 | |
652 | 664 | NOTES: Type Qp(5)(0).__rshift__? for more information. |
653 | 665 | |
654 | | EXAMPLES: |
655 | | sage: K = Zp(13, 4) |
656 | | sage: R.<t> = K[] |
657 | | sage: a = t^2 + K(13,3)*t + 169; a |
658 | | (1 + O(13^4))*t^2 + (13 + O(13^3))*t + (13^2 + O(13^6)) |
659 | | sage: b = a.rshift_coeffs(1); b |
660 | | (O(13^3))*t^2 + (1 + O(13^2))*t + (13 + O(13^5)) |
661 | | sage: b.list() |
662 | | [13 + O(13^5), 1 + O(13^2), O(13^3)] |
663 | | sage: b = a.rshift_coeffs(2); b |
664 | | (O(13^2))*t^2 + (O(13))*t + (1 + O(13^4)) |
665 | | sage: b.list() |
666 | | [1 + O(13^4), O(13), O(13^2)] |
| 666 | EXAMPLES:: |
| 667 | |
| 668 | sage: K = Zp(13, 4) |
| 669 | sage: R.<t> = K[] |
| 670 | sage: a = t^2 + K(13,3)*t + 169; a |
| 671 | (1 + O(13^4))*t^2 + (13 + O(13^3))*t + (13^2 + O(13^6)) |
| 672 | sage: b = a.rshift_coeffs(1); b |
| 673 | (O(13^3))*t^2 + (1 + O(13^2))*t + (13 + O(13^5)) |
| 674 | sage: b.list() |
| 675 | [13 + O(13^5), 1 + O(13^2), O(13^3)] |
| 676 | sage: b = a.rshift_coeffs(2); b |
| 677 | (O(13^2))*t^2 + (O(13))*t + (1 + O(13^4)) |
| 678 | sage: b.list() |
| 679 | [1 + O(13^4), O(13), O(13^2)] |
667 | 680 | """ |
668 | 681 | if shift < 0: |
669 | 682 | return self.lshift_coeffs(-shift, no_list) # We can't just absorb this into the next if statement because we allow rshift to preserve _normalized |
… |
… |
|
763 | 776 | Returns the degree of self, i.e., the largest $n$ so that the |
764 | 777 | coefficient of $x^n$ does not compare equal to $0$. |
765 | 778 | |
766 | | EXAMPLES: |
| 779 | EXAMPLES:: |
| 780 | |
767 | 781 | sage: K = Qp(3,10) |
768 | 782 | sage: x = O(3^5) |
769 | 783 | sage: li =[3^i * x for i in range(0,5)]; li |
… |
… |
|
873 | 887 | If n is None, defaults to the degree of self. |
874 | 888 | If n is smaller than the degree of self, some coefficients will be discarded. |
875 | 889 | |
876 | | EXAMPLES: |
877 | | sage: K = Qp(13,7) |
878 | | sage: R.<t> = K[] |
879 | | sage: f = t^3 + 4*t; f |
880 | | (1 + O(13^7))*t^3 + (4 + O(13^7))*t |
881 | | sage: f.reverse() |
882 | | (4 + O(13^7))*t^2 + (1 + O(13^7)) |
883 | | sage: f.reverse(3) |
884 | | (4 + O(13^7))*t^2 + (1 + O(13^7)) |
885 | | sage: f.reverse(2) |
886 | | (4 + O(13^7))*t |
887 | | sage: f.reverse(4) |
888 | | (4 + O(13^7))*t^3 + (1 + O(13^7))*t |
889 | | sage: f.reverse(6) |
890 | | (4 + O(13^7))*t^5 + (1 + O(13^7))*t^3 |
| 890 | EXAMPLES:: |
| 891 | |
| 892 | sage: K = Qp(13,7) |
| 893 | sage: R.<t> = K[] |
| 894 | sage: f = t^3 + 4*t; f |
| 895 | (1 + O(13^7))*t^3 + (4 + O(13^7))*t |
| 896 | sage: f.reverse() |
| 897 | (4 + O(13^7))*t^2 + (1 + O(13^7)) |
| 898 | sage: f.reverse(3) |
| 899 | (4 + O(13^7))*t^2 + (1 + O(13^7)) |
| 900 | sage: f.reverse(2) |
| 901 | (4 + O(13^7))*t |
| 902 | sage: f.reverse(4) |
| 903 | (4 + O(13^7))*t^3 + (1 + O(13^7))*t |
| 904 | sage: f.reverse(6) |
| 905 | (4 + O(13^7))*t^5 + (1 + O(13^7))*t^3 |
891 | 906 | """ |
892 | 907 | if n is None: |
893 | 908 | n = self._poly.degree() |
… |
… |
|
913 | 928 | |
914 | 929 | NOTE: Need to write this function for integer polynomials before this works. |
915 | 930 | |
916 | | EXAMPLES: |
| 931 | EXAMPLES:: |
| 932 | |
917 | 933 | sage: K = Zp(13, 5) |
918 | 934 | sage: R.<t> = K[] |
919 | 935 | sage: f = t^3 + K(13, 3) * t |
… |
… |
|
990 | 1006 | """ |
991 | 1007 | Returns a list of the Newton slopes of this polynomial. These are the valuations of the roots of this polynomial. |
992 | 1008 | |
993 | | EXAMPLES: |
994 | | sage: K = Qp(13) |
995 | | sage: R.<t> = K[] |
996 | | sage: f = t^4 + 13^5*t^2 + 4*13^2*t - 13^7 |
997 | | sage: f.newton_polygon() |
998 | | [(0, 7), (1, 2), (4, 0)] |
999 | | sage: f.newton_slopes() |
1000 | | [5, 2/3, 2/3, 2/3] |
| 1009 | EXAMPLES:: |
| 1010 | |
| 1011 | sage: K = Qp(13) |
| 1012 | sage: R.<t> = K[] |
| 1013 | sage: f = t^4 + 13^5*t^2 + 4*13^2*t - 13^7 |
| 1014 | sage: f.newton_polygon() |
| 1015 | [(0, 7), (1, 2), (4, 0)] |
| 1016 | sage: f.newton_slopes() |
| 1017 | [5, 2/3, 2/3, 2/3] |
1001 | 1018 | """ |
1002 | 1019 | polygon = self.newton_polygon() |
1003 | 1020 | if polygon == []: |
… |
… |
|
1016 | 1033 | NOTES: |
1017 | 1034 | The vertices are listed so that the first coordinates are strictly increasing, up to the polynomial's degree (not the limit of available precision information). Also note that if some coefficients have very low precision an error is raised. |
1018 | 1035 | |
1019 | | EXAMPLES: |
1020 | | sage: K = Qp(13) |
1021 | | sage: R.<t> = K[] |
1022 | | sage: f = t^4 + 13^5*t^2 + 4*13^2*t - 13^7 |
1023 | | sage: f.newton_polygon() |
1024 | | [(0, 7), (1, 2), (4, 0)] |
| 1036 | EXAMPLES:: |
| 1037 | |
| 1038 | sage: K = Qp(13) |
| 1039 | sage: R.<t> = K[] |
| 1040 | sage: f = t^4 + 13^5*t^2 + 4*13^2*t - 13^7 |
| 1041 | sage: f.newton_polygon() |
| 1042 | [(0, 7), (1, 2), (4, 0)] |
1025 | 1043 | """ |
1026 | 1044 | if self._poly == 0: |
1027 | 1045 | return [] |
diff --git a/sage/rings/polynomial/polynomial_integer_dense_flint.pyx b/sage/rings/polynomial/polynomial_integer_dense_flint.pyx
a
|
b
|
|
260 | 260 | |
261 | 261 | def __call__(self, *x, **kwds): |
262 | 262 | """ |
263 | | Calls this polynomial with the given parameters, which can be |
264 | | interpreted as polynomial composition or evaluation by this |
| 263 | Calls this polynomial with the given parameters, which can be |
| 264 | interpreted as polynomial composition or evaluation by this |
265 | 265 | method. |
266 | 266 | |
267 | | If the argument is not simply an integer (``int``, ``long`` or |
268 | | ``Integer``) or a polynomial (of the same type as ``self``), |
269 | | the call is passed on to the generic implementation in the |
| 267 | If the argument is not simply an integer (``int``, ``long`` or |
| 268 | ``Integer``) or a polynomial (of the same type as ``self``), |
| 269 | the call is passed on to the generic implementation in the |
270 | 270 | ``Polynomial`` class. |
271 | 271 | |
272 | 272 | EXAMPLES: |
273 | 273 | |
274 | 274 | The first example illustrates polynomial composition:: |
275 | | |
| 275 | |
276 | 276 | sage: R.<t> = ZZ[] |
277 | 277 | sage: f = t^2 - 1 |
278 | 278 | sage: g = t + 1 |
279 | 279 | sage: f(g) # indirect doctest |
280 | 280 | t^2 + 2*t |
281 | | |
282 | | Now we illustrate how a polynomial can be evaluated at an |
| 281 | |
| 282 | Now we illustrate how a polynomial can be evaluated at an |
283 | 283 | integer:: |
284 | | |
| 284 | |
285 | 285 | sage: f(2) # indirect doctest |
286 | 286 | 3 |
287 | 287 | """ |
… |
… |
|
291 | 291 | cdef unsigned long limbs |
292 | 292 | cdef fmpz_t a_fmpz |
293 | 293 | cdef fmpz_t z_fmpz |
294 | | |
295 | | if len(x) == 1: |
| 294 | |
| 295 | if len(x) == 1: |
296 | 296 | x0 = x[0] |
297 | 297 | if isinstance(x, Polynomial_integer_dense_flint): |
298 | 298 | f = self._new() |
diff --git a/sage/rings/polynomial/polynomial_zmod_flint.pyx b/sage/rings/polynomial/polynomial_zmod_flint.pyx
a
|
b
|
|
497 | 497 | EXAMPLES:: |
498 | 498 | |
499 | 499 | sage: P.<a>=GF(7)[] |
500 | | sage: a = P(range(10)); b = P(range(5, 15)) |
501 | | sage: a._mul_trunc_opposite(b, 10) |
| 500 | sage: b = P(range(10)); c = P(range(5, 15)) |
| 501 | sage: (b._mul_trunc_opposite(c, 10))[10:18] |
502 | 502 | 5*a^17 + 2*a^16 + 6*a^15 + 4*a^14 + 4*a^13 + 5*a^10 |
503 | | sage: a._mul_trunc_opposite(b, 18) |
| 503 | sage: (b._mul_trunc_opposite(c, 18))[18:] |
504 | 504 | 0 |
505 | 505 | |
506 | 506 | TESTS:: |
diff --git a/sage/schemes/elliptic_curves/ell_padic_field.py b/sage/schemes/elliptic_curves/ell_padic_field.py
a
|
b
|
|
39 | 39 | def __init__(self, x, y=None): |
40 | 40 | """ |
41 | 41 | Constructor from [a1,a2,a3,a4,a6] or [a4,a6]. |
42 | | EXAMPLES: |
43 | | sage: Qp=pAdicField(17) |
44 | | sage: E=EllipticCurve(Qp,[2,3]); E |
45 | | Elliptic Curve defined by y^2 = x^3 + (2+O(17^20))*x + (3+O(17^20)) over 17-adic Field with capped relative precision 20 |
46 | | sage: E == loads(dumps(E)) |
47 | | True |
| 42 | |
| 43 | EXAMPLES:: |
| 44 | |
| 45 | sage: Qp=pAdicField(17) |
| 46 | sage: E=EllipticCurve(Qp,[2,3]); E |
| 47 | Elliptic Curve defined by y^2 = x^3 + (2+O(17^20))*x + (3+O(17^20)) over 17-adic Field with capped relative precision 20 |
| 48 | sage: E == loads(dumps(E)) |
| 49 | True |
48 | 50 | """ |
49 | 51 | if y is None: |
50 | 52 | if isinstance(x, list): |
… |
… |
|
71 | 73 | Returns the Frobenius as a function on the group of points of |
72 | 74 | this elliptic curve. |
73 | 75 | |
74 | | EXAMPLE: |
| 76 | EXAMPLE:: |
| 77 | |
75 | 78 | sage: Qp=pAdicField(13) |
76 | 79 | sage: E=EllipticCurve(Qp,[1,1]) |
77 | 80 | sage: type(E.frobenius()) |
… |
… |
|
86 | 89 | K = self.base_field() |
87 | 90 | p = K.prime() |
88 | 91 | x = PolynomialRing(K, 'x').gen(0) |
89 | | |
| 92 | |
90 | 93 | a1, a2, a3, a4, a6 = self.a_invariants() |
91 | 94 | if a1 != 0 or a2 != 0: |
92 | 95 | raise NotImplementedError, "Curve must be in weierstrass normal form." |
93 | | |
| 96 | |
94 | 97 | f = x*x*x + a2*x*x + a4*x + a6 |
95 | 98 | h = (f(x**p) - f**p) |
96 | 99 | |
… |
… |
|
104 | 107 | if (yres-y0).valuation() == 0: |
105 | 108 | yres=-yres |
106 | 109 | return self.point([xres,yres, K(1)]) |
107 | | |
| 110 | |
108 | 111 | self._frob = _frob |
109 | | |
| 112 | |
110 | 113 | if P is None: |
111 | 114 | return _frob |
112 | 115 | else: |
113 | | return _frob(P) |
| 116 | return _frob(P) |