#11888: Sage is missing the lambert_w function conversion from Maxima
------------------------------+---------------------------------------------
   Reporter:  benjaminfjones  |          Owner:  burcin                         
             
       Type:  defect          |         Status:  needs_review                   
             
   Priority:  minor           |      Milestone:  sage-4.8                       
             
  Component:  symbolics       |       Keywords:  lambert_w symbolics conversion 
maxima sd35.5
Work_issues:                  |       Upstream:  N/A                            
             
   Reviewer:                  |         Author:  Benjamin Jones                 
             
     Merged:                  |   Dependencies:                                 
             
------------------------------+---------------------------------------------

Old description:

> Maxima returns solutions to some exponential equations in terms of the
> `lambert_w` function. Sage is missing a conversion for this function:
>
> {{{
>
> sage: solve(e^(5*x)+x==0, x, to_poly_solve=True)
> [x == -1/5*lambert_w(5)]
> sage: S = solve(e^(5*x)+x==0, x, to_poly_solve=True)
> sage: z = S[0].rhs()
> sage: z
> -1/5*lambert_w(5)
> sage: N(z)
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call
> last)
>
> /Users/jonesbe/sage/sage-4.7.2.alpha2/devel/sage-test/sage/<ipython
> console> in <module>()
>
> /Users/jonesbe/sage/latest/local/lib/python2.6/site-
> packages/sage/misc/functional.pyc in numerical_approx(x, prec, digits)
>    1264             prec = int((digits+1) * 3.32192) + 1
>    1265     try:
> -> 1266         return x._numerical_approx(prec)
>    1267     except AttributeError:
>    1268         from sage.rings.complex_double import
> is_ComplexDoubleElement
>
> /Users/jonesbe/sage/latest/local/lib/python2.6/site-
> packages/sage/symbolic/expression.so in
> sage.symbolic.expression.Expression._numerical_approx
> (sage/symbolic/expression.cpp:17950)()
>
> TypeError: cannot evaluate symbolic expression numerically
> sage: lambert_w(5)
> ---------------------------------------------------------------------------
> NameError                                 Traceback (most recent call
> last)
>
> /Users/jonesbe/sage/sage-4.7.2.alpha2/devel/sage-test/sage/<ipython
> console> in <module>()
>
> NameError: name 'lambert_w' is not defined
> sage:
> }}}
>
> `mpmath` can evaluate the `lambert_w` function, so it should be easy to
> add a new symbolic function to Sage that will fix this issue.

New description:

 Maxima returns solutions to some exponential equations in terms of the
 `lambert_w` function. Sage is missing a conversion for this function:

 {{{

 sage: solve(e^(5*x)+x==0, x, to_poly_solve=True)
 [x == -1/5*lambert_w(5)]
 sage: S = solve(e^(5*x)+x==0, x, to_poly_solve=True)
 sage: z = S[0].rhs()
 sage: z
 -1/5*lambert_w(5)
 sage: N(z)
 ---------------------------------------------------------------------------
 TypeError                                 Traceback (most recent call
 last)

 /Users/jonesbe/sage/sage-4.7.2.alpha2/devel/sage-test/sage/<ipython
 console> in <module>()

 /Users/jonesbe/sage/latest/local/lib/python2.6/site-
 packages/sage/misc/functional.pyc in numerical_approx(x, prec, digits)
    1264             prec = int((digits+1) * 3.32192) + 1
    1265     try:
 -> 1266         return x._numerical_approx(prec)
    1267     except AttributeError:
    1268         from sage.rings.complex_double import
 is_ComplexDoubleElement

 /Users/jonesbe/sage/latest/local/lib/python2.6/site-
 packages/sage/symbolic/expression.so in
 sage.symbolic.expression.Expression._numerical_approx
 (sage/symbolic/expression.cpp:17950)()

 TypeError: cannot evaluate symbolic expression numerically
 sage: lambert_w(5)
 ---------------------------------------------------------------------------
 NameError                                 Traceback (most recent call
 last)

 /Users/jonesbe/sage/sage-4.7.2.alpha2/devel/sage-test/sage/<ipython
 console> in <module>()

 NameError: name 'lambert_w' is not defined
 sage:
 }}}

 `mpmath` can evaluate the `lambert_w` function, so it should be easy to
 add a new symbolic function to Sage that will fix this issue.

 ----

 Apply:

  1. [attachment:trac_11888.patch] to `$SAGE_ROOT/devel/sage`
  1. [attachment:trac_11888-doctests.patch] to `$SAGE_ROOT/devel/sage`

--

Comment(by kini):

 Running `make ptestlong` now. I fixed a couple of doctests that broke, and
 fixed some typos and rST syntax problems in your docstring.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11888#comment:3>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to