Opened 12 years ago
Closed 8 years ago
#9427 closed enhancement (fixed)
implement fricas integrator
Reported by: | Wilfried Huss | Owned by: | Burcin Erocal |
---|---|---|---|
Priority: | major | Milestone: | sage-6.5 |
Component: | symbolics | Keywords: | integrate, fricas |
Cc: | RalfHemmecke | Merged in: | |
Authors: | Wilfried Huss, Frédéric Chapoton | Reviewers: | Burcin Erocal, Ralf Stephan |
Report Upstream: | N/A | Work issues: | |
Branch: | c5bd849 (Commits, GitHub, GitLab) | Commit: | c5bd849b92b6a4ff3526218e9fb5817414dae60d |
Dependencies: | Stopgaps: |
Description
The attached patch adds the option algorithm="fricas" to the integrate command.
Attachments (2)
Change History (24)
Changed 12 years ago by
Attachment: | trac_9427-fricas-integrate.patch added |
---|
comment:1 Changed 12 years ago by
Status: | new → needs_review |
---|
comment:2 follow-ups: 3 17 Changed 12 years ago by
Authors: | whuss → Wilfried Huss |
---|---|
Reviewers: | → Burcin Erocal |
Status: | needs_review → needs_work |
Changed 12 years ago by
Attachment: | fricas_infinity.patch added |
---|
comment:3 follow-up: 6 Changed 12 years ago by
Replying to burcin:
- the conversion of different infinities on line 95-103 should be moved to the
_fricas_init_()
method of the corresponding classes. Then this would work:sage: infinity._fricas_init_() "%plusInfinity"
I tried this (see fricas_infinity.patch), but for some reason that I don't understand the output of _fricas_init_() changes into something which is not a valid fricas expression.
sage: oo._fricas_init_() '%plusInfinity'
but
sage: oo._fricas_() + infinity
I have no idea what is going on here.
comment:4 follow-ups: 5 14 Changed 12 years ago by
Is "algorithm" the most appropiate word here? To me, Fricas, Aximom, Maxima etc are software packages, not algorithms. They implement many differerent algorithms.
I'm not a mathmatician, but certainly my mathematical training would never have suggested that Fricas was an algorithm.
I would have thought something like
integrate(f(x), x, use="fricas") integrate(f(x), x, software="fricas") integrate(f(x), x, method="fricas")
would be better than
integrate(f(x), x, algorithm="fricas")
I don't claim any of my choices are optimal, but I think all of them are better than "algorithm".
Dave
comment:5 Changed 12 years ago by
Replying to drkirkby:
If I do
sage: search_def('algorithm=')
I get 150 results. So the 'algorithm' convention is widely used in Sage, I don't think it makes sense to change this at this point.
comment:6 Changed 11 years ago by
Cc: | RalfHemmecke added |
---|---|
Milestone: | sage-4.7 → sage-4.7.1 |
Replying to whuss:
Replying to burcin:
- the conversion of different infinities on line 95-103 should be moved to the
_fricas_init_()
method of the corresponding classes. Then this would work:
sage: infinity._fricas_init_() "%plusInfinity"
I tried this (see fricas_infinity.patch), but for some reason that I don't understand the output of _fricas_init_() changes into something which is not a valid fricas expression.
sage: oo._fricas_init_() '%plusInfinity'
but
sage: oo._fricas_() + infinityI have no idea what is going on here.
This seems to be how fricas prints %plusInfinity
. Ralf, can you help us with this?
comment:7 Changed 11 years ago by
Well, not quite right, as http://axiom-wiki.newsynthesis.org/PerCent shows. I've added
)set output algebra on
in order to also show the ascii output. Otherwise mathaction renders tex output of axiom. These things starting with a percent sign are only used for input. What exactly gets printed depends on the ')set output' settings.
comment:8 Changed 11 years ago by
Also look at the exports of OrderedCompletion?. https://github.com/hemmecke/fricas-svn/blob/master/src/algebra/complet.spad.pamphlet#L20 Obviously also 'plusInfinity()' and 'minusInfinity()' could be used as input.
The output is constructed in https://github.com/hemmecke/fricas-svn/blob/master/src/algebra/complet.spad.pamphlet#L59 How the symbol infinity appears is hidden inside OutputForm? and probably deeper.
)set output tex on (1) -> plusInfinity() (1) + infinity $$ +\infty \leqno(1) $$ Type: OrderedCompletion(Integer)
comment:9 Changed 11 years ago by
So the ascii output for plusInfinity is "+ infinity" and the _fricas_init_()
method in attachment:fricas_infinity.patch works as intended.
Wilfried, will you have time to revise the patch? Note that when #9880 is merged (almost) all symbolics patches will need to be rebased.
comment:10 Changed 9 years ago by
Milestone: | sage-5.11 → sage-5.12 |
---|
comment:11 Changed 9 years ago by
Milestone: | sage-6.1 → sage-6.2 |
---|
comment:12 Changed 8 years ago by
Milestone: | sage-6.2 → sage-6.3 |
---|
comment:13 Changed 8 years ago by
Milestone: | sage-6.3 → sage-6.4 |
---|
comment:14 follow-up: 16 Changed 8 years ago by
Replying to drkirkby:
Is "algorithm" the most appropiate word here? To me, Fricas, Aximom, Maxima etc are software packages, not algorithms. They implement many differerent algorithms.
I'm not a mathmatician, but certainly my mathematical training would never have suggested that Fricas was an algorithm.
I would have thought something like
integrate(f(x), x, use="fricas") integrate(f(x), x, software="fricas") integrate(f(x), x, method="fricas")would be better than
integrate(f(x), x, algorithm="fricas")I don't claim any of my choices are optimal, but I think all of them are better than "algorithm".
+1 for use
, software
or library
Moreover, in some situation, when we call the software (fricas, maxima, ...) we might want to feed it with an option algorithm
.
Vincent
comment:15 Changed 8 years ago by
Branch: | → public/ticket/9427 |
---|---|
Commit: | → 5db022485af30f54242c3c1dcb2c0622d09b13e8 |
comment:16 Changed 8 years ago by
Replying to vdelecroix:
Moreover, in some situation, when we call the software (fricas, maxima, ...) we might want to feed it with an option
algorithm
.
First I agreed with this, but now I think it would be easy to allow something like algorithm=fricas-risch
, and this would then be more convenient than software=fricas,algorithm=risch
. Whereas changing algorithm
to software
would be annoying as hell.
comment:17 Changed 8 years ago by
Replying to burcin:
- Similarly, I suggest moving the code for converting the result back to the
_sage_()
method of the fricas interface.
I know this is how Sympy does it but I think such a decision is up to the Fricas developers.
comment:18 Changed 8 years ago by
Commit: | 5db022485af30f54242c3c1dcb2c0622d09b13e8 → c5bd849b92b6a4ff3526218e9fb5817414dae60d |
---|
comment:19 Changed 8 years ago by
Authors: | Wilfried Huss → Wilfried Huss, Frédéric Chapoton |
---|---|
Reviewers: | Burcin Erocal → Burcin Erocal, Ralf Stephan |
Status: | needs_work → needs_review |
This looks good and tests OK in symbolic
and rings
.
comment:20 Changed 8 years ago by
Status: | needs_review → positive_review |
---|
comment:21 Changed 8 years ago by
Milestone: | sage-6.4 → sage-6.5 |
---|
comment:22 Changed 8 years ago by
Branch: | public/ticket/9427 → c5bd849b92b6a4ff3526218e9fb5817414dae60d |
---|---|
Resolution: | → fixed |
Status: | positive_review → closed |
This looks great. Thanks for the quick patch!
I have a few minor comments:
_fricas_init_()
method of the corresponding classes. Then this would work: and we can just do af = a._fricas_()._sage_()
method of the fricas interface.