# HG changeset patch
# User Martin Albrecht <malb@informatik.uni-bremen.de>
# Date 1201345112 0
# Node ID e1d15edce9a1a181024f7bb023e66667a915536e
# Parent 91998f13b187fc782b1f2ec71ecf8005a9c5f825
documentation fixes for LLL documentation (fixes #1937)
diff -r 91998f13b187 -r e1d15edce9a1 sage/matrix/matrix_integer_dense.pyx
a
|
b
|
cdef class Matrix_integer_dense(matrix_d |
1548 | 1548 | def LLL(self, delta=None, eta=None, algorithm=None, fp=None, prec=0, early_red = False, use_givens = False): |
1549 | 1549 | r""" |
1550 | 1550 | Returns LLL reduced or approximated LLL reduced lattice R for |
1551 | | self. |
| 1551 | this matrix interpreted as a lattice. |
1552 | 1552 | |
1553 | | A lattice is (delta, eta)-LLL-reduce if the two following |
1554 | | conditions hold: |
| 1553 | A lattice $(b_1, b_2, ..., b_d)$ is $(\delta, \eta)$-LLL-reduced |
| 1554 | if the two following conditions hold: |
1555 | 1555 | |
1556 | 1556 | (a) For any $i>j$, we have $|mu_{i, j}| <= \eta$, |
1557 | 1557 | (b) For any $i<d$, we have |
1558 | 1558 | $\delta |b_i^*|^2 <= |b_{i + 1}^* + mu_{i + 1, i} b_{i + 1}^* |^2$, |
1559 | 1559 | |
1560 | | The lattice is returned as a matrix. Also the rank (and the |
1561 | | determinant) of self are cached if those are computed during |
1562 | | the reduction. |
| 1560 | where $mu_{i,j} = <b_i, b_j^*>/<b_j^*,b_j^*>$ and $b_i^*$ is |
| 1561 | the $i$-th vector of the Gram-Schmidt orthogonalisation of |
| 1562 | $(b_1, b_2, ..., b_d)$. |
1563 | 1563 | |
1564 | 1564 | The default reduction parameters are $\delta=3/4$ and |
1565 | 1565 | $eta=0.501$. The parameters $\delta$ and $\eta$ must satisfy: |
1566 | | $0.25 < \delta <= 1.0$ and $0.5 <= \eta < sqrt(\delta)$. |
| 1566 | $0.25 < \delta <= 1.0$ and $0.5 <= \eta < |
| 1567 | sqrt(\delta)$. Polynomial time complexity is only guaranteed |
| 1568 | for $\delta < 1$. |
1567 | 1569 | |
1568 | | If we can compute the determinant of self using this method, |
1569 | | we also cache it. Note that in general this only happens when |
| 1570 | The lattice is returned as a matrix. Also the rank (and the |
| 1571 | determinant) of self are cached if those are computed during |
| 1572 | the reduction. Note that in general this only happens when |
1570 | 1573 | self.rank() == self.ncols() and the exact algorithm is used. |
1571 | 1574 | |
1572 | 1575 | INPUT: |
… |
… |
cdef class Matrix_integer_dense(matrix_d |
1585 | 1588 | use_givens -- use Givens orthogonalization (default: False) |
1586 | 1589 | only applicable to approximate reductions and NTL. |
1587 | 1590 | This is more stable but slower. |
1588 | | |
1589 | 1591 | |
1590 | 1592 | Also, if the verbose level is >= 2, some more verbose output |
1591 | 1593 | is printed during the calculation if NTL is used. |
… |
… |
cdef class Matrix_integer_dense(matrix_d |
1625 | 1627 | sage: add([Q[i]*M[i] for i in range(n)]) |
1626 | 1628 | -1 |
1627 | 1629 | |
1628 | | ALGORITHM: Uses NTL or fpLLL. |
| 1630 | ALGORITHM: Uses the NTL library by Victor Shoup or fpLLL |
| 1631 | library by Damien Stehle depending on the chosen algorithm. |
1629 | 1632 | |
1630 | | REFERENCES: |
1631 | | ntl.mat_ZZ or sage.libs.fplll.fplll for details on the |
1632 | | used algorithms. |
| 1633 | REFERENCES: \code{ntl.mat_ZZ} or \code{sage.libs.fplll.fplll} |
| 1634 | for details on the used algorithms. |
1633 | 1635 | """ |
1634 | 1636 | |
1635 | 1637 | import sage.libs.ntl.all |