Hi again Alex,

Many thanks for the report.

On Wed, 7 Apr 2010 16:05:09 -0700 (PDT)
Alex Raichev <tortoise.s...@gmail.com> wrote:

> Hi all:
> 
> I ran into an error trying to evaluate the exponential function at an
> algebraic number.  Looks like there's a bug in substituting algebraic
> numbers for variables; see below.  While i was at it, i tried creating
> the expression QQbar(sqrt(2))*x and got a not implemented error.
> Wasn't symbolics with QQbar working in previous versions of Sage, or
> am i mistaken?

Most structures in Sage coerce to SR, so when you do

sage: 1 + x

the result in SR, even though 1 is in ZZ, and x in SR. This is not the
case for QQbar and AA. Copying from a comment in
sage/symbolic/function.pyx:

# There is no natural coercion from QQbar to the symbolic ring
# in order to support
#     sage: QQbar(sqrt(2)) + sqrt(3)
#     3.146264369941973?

I wrote that comment to document the current behavior, but I don't
necessarily agree with this policy.

Under these conditions,

sage: x*QQbar(sqrt(2))

cannot work. Since we cannot coerce QQbar(sqrt(2)) to SR, we try to
coerce x to QQbar.

I worked around this limitation for evaluating symbolic functions like
exp, but didn't think about substituting values. This can be fixed
easily by converting QQbar arguments to CC before we coerce them to SR.


I think we should reconsider the coercion policy though. For example

> sage: exp(QQbar(sqrt(2)))
> 4.11325037878293

this should remain exact, since QQbar keeps exact values. Then you can
evaluate to an arbitrary precision. Since sqrt(2) is converted to CC,
an inexact parent, we get a numerical evaluation in this case.


If we change the coercion policy the examples below will just work.
Otherwise

> sage: exp(x).subs({x:QQbar(sqrt(2))})
<boom>

> sage: x.subs({x:QQbar(sqrt(2))})
<boom>

These two are bugs, they will be equivalent to
sage: x.subs({x:CC(QQbar(sqrt(2)))})

after the fix.

This one cannot work with the current coercion direction SR -> QQbar.

> sage: QQbar(sqrt(2))*x
<boom>


Comments?

-- 
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org

To unsubscribe, reply using "remove me" as the subject.

Reply via email to