# HG changeset patch
# User Jean-Pierre Flori <jean-pierre.flor@ssi.gouv.fr>
# Date 1338366773 -7200
# Node ID ad444ad5da12d2b32bec33a70f43ae937d26e863
# Parent 66470af30f19d47d5af032b859136c0d3e63ab52
#12173: Fix formatting of different doctests
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 |
… |
… |
|
987 | 1003 | """ |
988 | 1004 | Returns a list of the Newton slopes of this polynomial. These are the valuations of the roots of this polynomial. |
989 | 1005 | |
990 | | EXAMPLES: |
991 | | sage: K = Qp(13) |
992 | | sage: R.<t> = K[] |
993 | | sage: f = t^4 + 13^5*t^2 + 4*13^2*t - 13^7 |
994 | | sage: f.newton_polygon() |
995 | | [(0, 7), (1, 2), (4, 0)] |
996 | | sage: f.newton_slopes() |
997 | | [5, 2/3, 2/3, 2/3] |
| 1006 | EXAMPLES:: |
| 1007 | |
| 1008 | sage: K = Qp(13) |
| 1009 | sage: R.<t> = K[] |
| 1010 | sage: f = t^4 + 13^5*t^2 + 4*13^2*t - 13^7 |
| 1011 | sage: f.newton_polygon() |
| 1012 | [(0, 7), (1, 2), (4, 0)] |
| 1013 | sage: f.newton_slopes() |
| 1014 | [5, 2/3, 2/3, 2/3] |
998 | 1015 | """ |
999 | 1016 | polygon = self.newton_polygon() |
1000 | 1017 | if polygon == []: |
… |
… |
|
1013 | 1030 | NOTES: |
1014 | 1031 | 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. |
1015 | 1032 | |
1016 | | EXAMPLES: |
1017 | | sage: K = Qp(13) |
1018 | | sage: R.<t> = K[] |
1019 | | sage: f = t^4 + 13^5*t^2 + 4*13^2*t - 13^7 |
1020 | | sage: f.newton_polygon() |
1021 | | [(0, 7), (1, 2), (4, 0)] |
| 1033 | EXAMPLES:: |
| 1034 | |
| 1035 | sage: K = Qp(13) |
| 1036 | sage: R.<t> = K[] |
| 1037 | sage: f = t^4 + 13^5*t^2 + 4*13^2*t - 13^7 |
| 1038 | sage: f.newton_polygon() |
| 1039 | [(0, 7), (1, 2), (4, 0)] |
1022 | 1040 | """ |
1023 | 1041 | if self._poly == 0: |
1024 | 1042 | return [] |
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) |