Opened 10 years ago
Last modified 6 years ago
#11543 new defect
Hashing algebraic numbers takes far too long
Reported by: | rbeezer | Owned by: | AlexGhitza |
---|---|---|---|
Priority: | major | Milestone: | sage-6.4 |
Component: | algebra | Keywords: | |
Cc: | Merged in: | ||
Authors: | Reviewers: | ||
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description
Hashing algebraic numbers can take a very long time. I've traced this to line 2421 of sage/rings/qqbar.py which can be re-created by the following code.
sage: A=matrix(QQ, 4, 4, [1, 2, -2, 2, 1, 0, -1, -1, 0, -1, 1, 1, -1, 2, 1/2, 0]) sage: e = A.eigenvalues()[3] sage: K = (A-e).kernel() sage: P = K.basis_matrix() sage: x = P.list()[3] sage: from sage.rings.qqbar import ANExtensionElement, AlgebraicGenerator, ANRoot, AAPoly sage: QQbar_I_nf = QuadraticField(-1, 'I', embedding=CC.gen()) sage: QQbar_I_generator = AlgebraicGenerator(QQbar_I_nf, ANRoot(AAPoly.gen()**2 + 1, CIF(0, 1))) sage: QQbar_hash_offset = AlgebraicNumber(ANExtensionElement(QQbar_I_generator, ~ZZ(123456789) + QQbar_I_nf.gen()/ZZ(987654321))) sage: time h = hash((x + QQbar_hash_offset).interval_exact(CIF)) Time: CPU 58.31 s, Wall: 58.48 s
Change History (4)
comment:1 Changed 7 years ago by
- Milestone changed from sage-5.11 to sage-5.12
comment:2 Changed 7 years ago by
- Milestone changed from sage-6.1 to sage-6.2
comment:3 Changed 7 years ago by
- Milestone changed from sage-6.2 to sage-6.3
comment:4 Changed 6 years ago by
- Milestone changed from sage-6.3 to sage-6.4
Note: See
TracTickets for help on using
tickets.