Opened 5 years ago
Closed 5 years ago
#22997 closed enhancement (fixed)
Parse unevaluated integral from giac
Reported by:  Marcelo Forets  Owned by:  

Priority:  major  Milestone:  sage8.0 
Component:  calculus  Keywords:  integrate, interfaces, giac 
Cc:  Merged in:  
Authors:  Marcelo Forets  Reviewers:  Steven Trogdon 
Report Upstream:  N/A  Work issues:  
Branch:  0e5bdf0 (Commits, GitHub, GitLab)  Commit:  0e5bdf047579f58f169429ea00f8519d4bdb80b4 
Dependencies:  Stopgaps: 
Description
If integrate(..., algorithm='giac')
does not find a solution, Sage should return an unevaluated expression.
For example, consider integrate(exp(x^2)*log(x), x, algorithm='giac')
.
It returns either
Traceback (most recent call last): ... NotImplementedError: Unable to parse Giac output: integrate(ln(x)*exp(x^2),x)
or
integration(e^(x^2)*ln(x), x)
depending on the user's locale settings (EN and FR respectively).
OTOH, both Maxima and SymPy? return integrate(e^(x^2)*log(x), x)
.
Change History (15)
comment:1 Changed 5 years ago by
Branch:  → u/mforets/22997 

Commit:  → f3c9d15f97ebe44a4fa6fe83f3b56d62a34689ef 
comment:2 Changed 5 years ago by
Commit:  f3c9d15f97ebe44a4fa6fe83f3b56d62a34689ef → 2bba41df3121f7c1b14f9bc072aae8893e8494c9 

Branch pushed to git repo; I updated commit sha1. New commits:
2bba41d  parse result in giac_integrator

comment:3 Changed 5 years ago by
Status:  new → needs_review 

comment:4 Changed 5 years ago by
Status:  needs_review → needs_work 

Perhaps this exposes a bug in sympy_integrator
. These work
sage: integrate(e^(x^2)*log(x), x, algorithm='giac') integrate(e^(x^2)*log(x), x) sage: integrate(e^(x^2)*log(x), x, algorithm='maxima') integrate(e^(x^2)*log(x), x)
although algorithm='maxima'
was not doctested, but
integrate(e^(x^2)*log(x), x, algorithm='sympy')
just hangs.
comment:5 Changed 5 years ago by
here it works only after a looong time:
sage: integrate(e^(x^2)*log(x), x, algorithm='sympy') # 1520 minutes, processor intensive integrate(e^(x^2)*log(x), x)
comment:6 followup: 7 Changed 5 years ago by
Authors:  → Marcelo Forets 

Reviewers:  → Steven Trogdon 
Status:  needs_work → positive_review 
OK, I was impatient. It took 30+ minutes here.
comment:7 Changed 5 years ago by
comment:9 followup: 10 Changed 5 years ago by
This really should have depended on #22833 since src/sage/symbolic/integration/external.py
was touched there. I though I had that ticket merged when I tested things here, but apparently not, or else I would have noticed the conflict. #22833 is now in 8.0.beta7
and so this will have to be rebased. Just change it back to positive_review
when that is done.
comment:10 Changed 5 years ago by
Replying to strogdon:
This really should have depended on #22833 since
src/sage/symbolic/integration/external.py
was touched there.
my fault, thanks for pointing it out.
I though I had that ticket merged when I tested things here, but apparently not, or else I would have noticed the conflict. #22833 is now in
8.0.beta7
and so this will have to be rebased.
there's something that i don't understand. i do:
(in t/mforets/22997) $ git rebase develop (... solve the merge conflict manually ...) (in t/mforets/22997) $ git add src/sage/symbolic/integration/external.py (in t/mforets/22997) $ git status rebase in progress; onto 7a36941 You are currently rebasing branch 't/22997/22997' on '7a36941'. (all conflicts fixed: run "git rebase continue") Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: src/sage/symbolic/integration/external.py (in t/mforets/22997) $ git rebase continue Applying: parse result in giac_integrator
up to now everything seems to work fine, locally. however i try to push to the remote branch and it breaks:
(in t/mforets/22997) $ git push trac HEAD:u/mforets/22997 To trac.sagemath.org:sage.git ! [rejected] HEAD > u/mforets/22997 (nonfastforward) error: failed to push some refs to 'git@trac.sagemath.org:sage.git' hint: Updates were rejected because a pushed branch tip is behind its remote hint: counterpart. Check out this branch and integrate the remote changes hint: (e.g. 'git pull ...') before pushing again. hint: See the 'Note about fastforwards' in 'git push help' for details.
it also breaks if i use the automatic command:
(in t/mforets/22997) $ git trac push Pushing to Trac #22997... Guessed remote branch: u/mforets/22997 Traceback (most recent call last): File "/usr/local/bin/gittrac", line 18, in <module> cmdline.launch() File "/Users/forets/sagesrc/sage/gittraccommand/git_trac/cmdline.py", line 223, in launch app.push(ticket_number, remote=args.remote, force=args.force) File "/Users/forets/sagesrc/sage/gittraccommand/git_trac/app.py", line 216, in push self.repo.push(remote, force) File "/Users/forets/sagesrc/sage/gittraccommand/git_trac/git_repository.py", line 197, in push self.git.echo.push('trac', refspec) File "/Users/forets/sagesrc/sage/gittraccommand/git_trac/git_interface.py", line 341, in meth return self.execute(git_cmd, *args, **kwds) File "/Users/forets/sagesrc/sage/gittraccommand/git_trac/git_interface.py", line 98, in execute popen_stderr=subprocess.PIPE) File "/Users/forets/sagesrc/sage/gittraccommand/git_trac/git_interface.py", line 263, in _run raise GitError(result) git_trac.git_error.GitError: git returned with nonzero exit code (1) when executing "git push trac HEAD:refs/heads/u/mforets/22997" STDERR: To trac.sagemath.org:sage.git STDERR: ! [rejected] HEAD > u/mforets/22997 (nonfastforward) STDERR: error: failed to push some refs to 'git@trac.sagemath.org:sage.git' STDERR: hint: Updates were rejected because a pushed branch tip is behind its remote STDERR: hint: counterpart. Check out this branch and integrate the remote changes STDERR: hint: (e.g. 'git pull ...') before pushing again. STDERR: hint: See the 'Note about fastforwards' in 'git push help' for details.
comment:11 Changed 5 years ago by
Commit:  2bba41df3121f7c1b14f9bc072aae8893e8494c9 → 0e5bdf047579f58f169429ea00f8519d4bdb80b4 

Branch pushed to git repo; I updated commit sha1. New commits:
0e5bdf0  Merge branch 'develop' into t/mforets/22997

comment:13 Changed 5 years ago by
Status:  positive_review → needs_work 

The doctest is going to fail with the French locale:
sage: from sage.symbolic.integration.external import * sage: giac_integrator(e^(x^2)*log(x), x) integration(e^(x^2)*ln(x), x)
comment:15 Changed 5 years ago by
Branch:  u/mforets/22997 → 0e5bdf047579f58f169429ea00f8519d4bdb80b4 

Resolution:  → fixed 
Status:  positive_review → closed 
does it correspond at the level or
giac_integrator
(seesymbolic/integration/external.py
)? or at the level of the giac interface? (seedef _sage_(self, locals={})
).in the former case, is this correct?
New commits:
add one doctest