Opened 6 years ago
Last modified 10 months ago
#17753 new enhancement
move pexpectmaxima code to maxima_lib
Reported by:  rws  Owned by:  

Priority:  major  Milestone:  sagewishlist 
Component:  interfaces  Keywords:  
Cc:  Merged in:  
Authors:  Reviewers:  
Report Upstream:  N/A  Work issues:  
Branch:  Commit:  
Dependencies:  Stopgaps: 
Description (last modified by )
This metaticket tracks efforts to remove the usage of pexpect for calling maxima, either by using maxima_lib
or replacing it altogether. Code that is dependent on the maxima expect interface is in:

doc/
and other places usingmaxima.eval()
(see #30071) calculus/desolvers.py
:desolve_*()
functions/piecewise.py
:piecewise.convolution()
matrix/matrix1.pyx
:Matrix._maxima_init_()
matrix/matrix_symbolic_dense.pyx
:Matrix_symbolic_dense.exp()
structure/sage_object.pyx
:SageObject._maxima_()
,_maxima_init_()
symbolic/assumptions.py
:GenericDeclaration.assume()
symbolic/expression.pyx
:Ex.assume()
,forget()
,assume_str()
,assert()
,expand_trig()
,reduce_trig()
,maxima_methods()
,rectform()
,simplify()
,simplify_real()
,simplify_rational()
(#21335),simplify_log()
,expand_log()
,factor()
(#23835),solve()
,sum()
symbolic/maxima_wrapper.py
: *calculus/calculus.py
:symbolic_expression_from_maxima_string()
called byfactor()
(#23835) and indirectly bysolve()
Already done:
Expression.coefficients()
andpoly()
: (both #20455)functions/orthogonal_polys.py
(#22325):hermite()
(#20297),jacobi_P()
(#22326),laguerre()
(#17151),legendre_P/Q()
(#16813),ultraspherical()
(#20428)functions/special.py
:SphericalHarmonic._eval_()
(#20939)combinat/combinat.py
:euler_number()
(see #17770 and #20763)geometry/lattice_polytope.py
:positive_integer_relations()
#20766
This can be considered part of the metaticket #16688. See also http://trac.sagemath.org/wiki/symbolics/maxima
Change History (21)
comment:1 Changed 6 years ago by
 Description modified (diff)
comment:2 Changed 6 years ago by
 Milestone changed from sage6.5 to sagewishlist
comment:3 Changed 5 years ago by
 Description modified (diff)
comment:4 Changed 5 years ago by
 Description modified (diff)
comment:5 Changed 5 years ago by
 Description modified (diff)
comment:6 Changed 5 years ago by
 Description modified (diff)
comment:7 Changed 5 years ago by
 Description modified (diff)
comment:8 Changed 5 years ago by
 Description modified (diff)
comment:9 Changed 5 years ago by
 Description modified (diff)
comment:10 Changed 5 years ago by
 Description modified (diff)
comment:11 Changed 4 years ago by
 Description modified (diff)
comment:12 Changed 4 years ago by
 Description modified (diff)
comment:13 Changed 4 years ago by
 Description modified (diff)
comment:14 Changed 4 years ago by
 Description modified (diff)
comment:15 Changed 3 years ago by
 Description modified (diff)
comment:16 Changed 3 years ago by
 Description modified (diff)
comment:17 Changed 3 years ago by
comment:18 Changed 3 years ago by
As far as I recall, I named that code optional that I thought is only executed when certain nondefault keywords are given. Looking at the three items,
symbolic_expression_from_maxima_string
is only used in doctests ofcalculs.py
but is absolutely imported byex.factor()
and inrelation.py:string_to_list_of_solutions()
which is used bysolve()
so the assessment was wrongstirling_number2
incombinat/combinat.py
: default is not Maxima, okayintegration/*
: certainly Maxima is called, so it's wrong
Thanks for asking, I'm changing it.
comment:19 Changed 3 years ago by
 Description modified (diff)
comment:20 Changed 10 months ago by
there are places where maxima.eval
instead of considerably faster maxima_calculus.eval
is used for no good reason, e.g. in src/doc
, see #30071.
comment:21 Changed 10 months ago by
 Description modified (diff)
I am confused about the meaning of Absolute vs Optional dependencies mentioned on the wiki, could you elaborate?