Hashing of QQbar elements seems to be quite inefficient:

sage: R.<x> = AA[]
sage: rho = QQbar.polynomial_root(
....:     x^5 - 1/3*x^4 + 1/30*x^3 - 1/600*x^2 + 1/24000*x - 1/2400000,
....:     CIF(RIF(0.02, 0.03), RIF(-0.009, -0.007)))
sage: %time hash(rho)
CPU times: user 14 s, sys: 36 ms, total: 14.1 s
Wall time: 14 s
-382033038487191199
sage: %time hash(rho)
CPU times: user 9.18 s, sys: 32 ms, total: 9.21 s
Wall time: 9.12 s
-382033038487191199

It seems that the hashing code at some stage exactifies the rho.imag() (which is
an algebraic number of degree 20).

In qqbar.py, we have the comment

        # All of this effort to avoid exact computation is probably wasted,
        # anyway... in almost all uses of hash codes, if the hash codes
        # match, the next step is to compare for equality; and comparing
        # for equality often requires exact computation. (If a==b,

However, IMHO, the unfortunate thing is that rho.real() and rho.imag() are
exactified instead of rho itself (so involving higher degree numbers) and that
these results are then lost.

Any thoughts?

Regards,

Clemens

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to