# Evaluation fail

hello,

when running "0^0" the result is "1", but when defining "f(x)=0^x" and evaluating "f(0)" the evaluation fails with "ValueError: power::eval(): pow(0,0) is undefined". I guess this one is easy to fix... :)

version: Sage Version 6.5, Release Date: 2015-02-17

regards, manfred

edit retag close merge delete

Using a python lambda function, this will work. That is, f = lambda x: 0^x will give a function that does what you want. So, this indicates that it is a matter of how Sage is defining its functions.

( 2015-03-29 08:15:25 -0600 )edit

Sort by » oldest newest most voted

When you write:

sage: f(x)=0^x


You define a "symbolic function":

sage: type(f)
<type 'sage.symbolic.expression.Expression'>
sage: f.parent()
Callable function ring with argument x


This is a kind of mathematical formula (like exp(cos(pi)) + log(x)). This is an object you can derivate, integrate, and so on.

Instead you can define a Python function:

sage: def f(x):
....:     return 0^x
sage: f(0)
1
sage: type(f)
<type 'function'>


For such easy-to-define function, you can be shorter, by typing:

sage: f = lambda x : 0^x
sage: f(0)
1
sage: type(f)
<type 'function'>


EDIT

According to your comment, it seems i misunderstood your question. Actually, the problem is not about evaluating the symbolic function f but about SR(0)^SR(0) being not defined. Thanks for reporting, @kcrisman opened trac ticket 18088.

more

( 2015-07-06 10:50:31 -0600 )edit

well thanks for the fast answer but i already knew this "workarround" ;)

i reported this problem as i thought that this was a (very small) bug since pow(0,0) evaluates to 1. hence, it does not make any sense at all that the exception "pow(0,0) is undefined" is thrown.

more