Opened 13 years ago
Closed 2 years ago
#2693 closed enhancement (fixed)
Sage should have generic resultant implementation for multivariate polynomials
Reported by:  cwitty  Owned by:  was 

Priority:  major  Milestone:  sage8.8 
Component:  algebraic geometry  Keywords:  resultant 
Cc:  tscrim, vdelecroix, vklein  Merged in:  
Authors:  Frédéric Chapoton  Reviewers:  Travis Scrimshaw 
Report Upstream:  N/A  Work issues:  
Branch:  30bd620 (Commits, GitHub, GitLab)  Commit:  30bd620a157659e603c855c76e6d8f87701c69dc 
Dependencies:  Stopgaps: 
Description
Consider this example, which fails:
R.<x,y> = RR[] p = x + y q = x*y p.resultant(q)
(as reported here: http://groups.google.com/group/sagesupport/browse_thread/thread/1d6289cead33d063#)
This is because multivariate resultants are implemented using the Singular pexpect interface, which does not support RR.
A workaround for this particular problem (and a possible basis for an improved version) is:
p.polynomial(x).resultant(q.polynomial(x))
That is, fall back to univariate resultants, which are implemented using Pari and are somewhat more generic. (This is still not truly generic, though, since there are Sage rings which have no Pari equivalent.)
Change History (14)
comment:1 Changed 8 years ago by
 Milestone changed from sage5.11 to sage5.12
comment:2 Changed 7 years ago by
 Milestone changed from sage6.1 to sage6.2
comment:3 Changed 7 years ago by
 Milestone changed from sage6.2 to sage6.3
comment:4 Changed 7 years ago by
 Milestone changed from sage6.3 to sage6.4
comment:5 Changed 7 years ago by
 Report Upstream set to N/A
comment:6 Changed 2 years ago by
 Keywords resultant added
comment:7 Changed 2 years ago by
 Branch set to u/chapoton/2693
 Commit set to add07d3bcb7521623ec1edd45f731213281f8b2d
 Milestone changed from sage6.4 to sage8.8
 Status changed from new to needs_review
New commits:
add07d3  trac 2693 resultants for polynomials over inexact rings

comment:9 Changed 2 years ago by
hmm, the second doctest is more about univariate polynomials. Maybe it should go there ?
comment:10 Changed 2 years ago by
 Commit changed from add07d3bcb7521623ec1edd45f731213281f8b2d to 30bd620a157659e603c855c76e6d8f87701c69dc
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
30bd620  trac 2693 resultants for polynomials over inexact rings

comment:11 Changed 2 years ago by
ok, test is now at the right place.
comment:13 Changed 2 years ago by
 Reviewers set to Travis Scrimshaw
 Status changed from needs_review to positive_review
LGTM.
comment:14 Changed 2 years ago by
 Branch changed from u/chapoton/2693 to 30bd620a157659e603c855c76e6d8f87701c69dc
 Resolution set to fixed
 Status changed from positive_review to closed
In fact, singular resultants are slow compared to other methods, so it would really be a good idea to write specific sage code for resultants.
See #16749 and #12174 for ideas about it.
Just something like:
Would be both general for any polynomial ring, and faster than the current implementation. And of course, there could be a lot of cases where things can be done much faster, using specific backends where they are better.