# HG changeset patch
# User Tom Boothby <boothby@u.washington.edu>
# Date 1247872854 25200
# Node ID 814f029deef260021f42f0d1188996a04c8a08a0
# Parent 16a632e998fe41f38736037a5ed4e599ac035edc
#6407 -- slight improvement to double-and-add algorithm
diff --git a/sage/schemes/elliptic_curves/formal_group.py b/sage/schemes/elliptic_curves/formal_group.py
|
a
|
b
|
|
| 568 | 568 | |
| 569 | 569 | - Hamish Ivey-Law (2009-06): double-and-add algorithm for |
| 570 | 570 | non char 0 field case. |
| | 571 | |
| | 572 | - Tom Boothby (2009-06): slight improvement to double-and-add |
| 571 | 573 | |
| 572 | 574 | EXAMPLES:: |
| 573 | 575 | |
| … |
… |
|
| 654 | 656 | g = F(g) |
| 655 | 657 | return R(g.add_bigoh(orig_prec)) |
| 656 | 658 | |
| 657 | | result = F.parent().base_ring()(0) |
| | 659 | if n&1: |
| | 660 | result = g |
| | 661 | else: |
| | 662 | result = F.parent().base_ring()(0) |
| | 663 | n = n >> 1 |
| | 664 | |
| 658 | 665 | while n > 0: |
| | 666 | g = F(g, g) |
| 659 | 667 | if n & 1: |
| 660 | 668 | result = F(result, g) |
| 661 | | g = F(g, g) |
| 662 | 669 | n = n >> 1 |
| 663 | 670 | |
| 664 | 671 | return R(result.add_bigoh(orig_prec)) |